From c1073bc8d142ccd46915d77427980ba2a205441f Mon Sep 17 00:00:00 2001 From: Alexandru Vasile <60601340+lexnv@users.noreply.github.com> Date: Wed, 31 Jan 2024 11:53:33 +0200 Subject: [PATCH 01/66] ci: Better job parallelism, cancel pipeline on failure and extra clippy checks (#1409) * ci: Change CI order for better parallelism Signed-off-by: Alexandru Vasile * ci: Cancel ongoing jobs Signed-off-by: Alexandru Vasile * TO REVERT: Check early termination due to clipp/check Signed-off-by: Alexandru Vasile * ci/clippy: Extend clippy checks for lightclient and web feature flags Signed-off-by: Alexandru Vasile * ci: Use cancel-action@3 Signed-off-by: Alexandru Vasile * lightclient: Derive Default Signed-off-by: Alexandru Vasile * subxt/rpc: Resolve redundant closure Signed-off-by: Alexandru Vasile * tests: Fix clippy Signed-off-by: Alexandru Vasile * lightclient: Fix clippy warnings Signed-off-by: Alexandru Vasile * ci: Extend clippy rules Signed-off-by: Alexandru Vasile * lightclient: Remove redundant clone Signed-off-by: Alexandru Vasile * ci: Use subxt instead of subxt-lightclient Signed-off-by: Alexandru Vasile * ci: Add wasm clippy step Signed-off-by: Alexandru Vasile * ci: Simplify the clippy step into a single run command Signed-off-by: Alexandru Vasile * ci: Pin version for cancel-action Signed-off-by: Alexandru Vasile * ci: Fix pinned version Signed-off-by: Alexandru Vasile --------- Signed-off-by: Alexandru Vasile --- .github/workflows/rust.yml | 135 +++++++++++++----- lightclient/src/platform/wasm_platform.rs | 4 +- lightclient/src/platform/wasm_socket.rs | 2 +- subxt/src/client/light_client/builder.rs | 11 +- subxt/src/client/light_client/rpc.rs | 3 +- .../integration-tests/src/utils/node_proc.rs | 2 +- 6 files changed, 107 insertions(+), 50 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 20c5479d4e..fdfc639a35 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -46,10 +46,44 @@ jobs: command: fmt args: --all -- --check + - if: "failure()" + uses: "andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1" # v0.3 + + machete: + name: "Check unused dependencies" + runs-on: ubuntu-latest + steps: + - name: Checkout sources + uses: actions/checkout@v4 + + - name: Use substrate-node binary + uses: ./.github/workflows/actions/use-substrate + + - name: Install Rust stable toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + + - name: Rust Cache + uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 + + - name: Install cargo-machete + run: cargo install cargo-machete + + - name: Check unused dependencies + uses: actions-rs/cargo@v1.0.3 + with: + command: machete + + - if: "failure()" + uses: "andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1" # v0.3 + clippy: name: Cargo clippy runs-on: ubuntu-latest - needs: fmt + needs: [fmt, machete] steps: - name: Checkout sources uses: actions/checkout@v4 @@ -68,16 +102,51 @@ jobs: - name: Rust Cache uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 + - name: Run clippy + run: | + cargo clippy --all-targets --features unstable-light-client -- -D warnings + cargo clippy -p subxt-lightclient --no-default-features --features web -- -D warnings + cargo clippy -p subxt --no-default-features --features web -- -D warnings + cargo clippy -p subxt --no-default-features --features web,unstable-light-client -- -D warnings + + - if: "failure()" + uses: "andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1" # v0.3 + + wasm_clippy: + name: Cargo clippy (WASM) + runs-on: ubuntu-latest + needs: [fmt, machete] + steps: + - name: Checkout sources + uses: actions/checkout@v4 + + - name: Use substrate-node binary + uses: ./.github/workflows/actions/use-substrate + + - name: Install Rust stable toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + target: wasm32-unknown-unknown + override: true + + - name: Rust Cache + uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 + - name: Run clippy uses: actions-rs/cargo@v1 with: command: clippy - args: --all-targets -- -D warnings + args: -p subxt --no-default-features --features web,unstable-light-client,jsonrpsee --target wasm32-unknown-unknown -- -D warnings + + - if: "failure()" + uses: "andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1" # v0.3 check: name: Cargo check runs-on: ubuntu-latest - needs: [fmt, clippy] + needs: [fmt, machete] steps: - name: Checkout sources uses: actions/checkout@v4 @@ -133,10 +202,13 @@ jobs: - name: Cargo check parachain-example run: cargo check --manifest-path examples/parachain-example/Cargo.toml + - if: "failure()" + uses: "andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1" # v0.3 + wasm_check: name: Cargo check (WASM) runs-on: ubuntu-latest - needs: [fmt, clippy] + needs: [fmt, machete] steps: - name: Checkout sources uses: actions/checkout@v4 @@ -157,39 +229,13 @@ jobs: run: | cargo check --manifest-path examples/wasm-example/Cargo.toml --target wasm32-unknown-unknown - machete: - name: "Check unused dependencies" - runs-on: ubuntu-latest - needs: [check, wasm_check] - steps: - - name: Checkout sources - uses: actions/checkout@v4 - - - name: Use substrate-node binary - uses: ./.github/workflows/actions/use-substrate - - - name: Install Rust stable toolchain - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - override: true - - - name: Rust Cache - uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 - - - name: Install cargo-machete - run: cargo install cargo-machete - - - name: Check unused dependencies - uses: actions-rs/cargo@v1.0.3 - with: - command: machete + - if: "failure()" + uses: "andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1" # v0.3 docs: name: Check documentation and run doc tests runs-on: ubuntu-latest - needs: [check, wasm_check] + needs: [fmt, machete] steps: - name: Checkout sources uses: actions/checkout@v4 @@ -216,10 +262,13 @@ jobs: command: test args: --doc + - if: "failure()" + uses: "andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1" # v0.3 + tests: name: "Test (Native)" runs-on: ubuntu-latest-16-cores - needs: [machete, docs] + needs: [clippy, wasm_clippy, check, wasm_check, docs] timeout-minutes: 30 steps: - name: Checkout sources @@ -247,10 +296,13 @@ jobs: command: nextest args: run --workspace + - if: "failure()" + uses: "andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1" # v0.3 + unstable_backend_tests: name: "Test (Unstable Backend)" runs-on: ubuntu-latest-16-cores - needs: [machete, docs] + needs: [clippy, wasm_clippy, check, wasm_check, docs] timeout-minutes: 30 steps: - name: Checkout sources @@ -278,10 +330,13 @@ jobs: command: nextest args: run --workspace --features unstable-backend-client + - if: "failure()" + uses: "andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1" # v0.3 + light_client_tests: name: "Test (Light Client)" runs-on: ubuntu-latest - needs: [machete, docs] + needs: [clippy, wasm_clippy, check, wasm_check, docs] timeout-minutes: 15 steps: - name: Checkout sources @@ -306,10 +361,13 @@ jobs: command: test args: --release --package integration-tests --features unstable-light-client + - if: "failure()" + uses: "andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1" # v0.3 + wasm_tests: name: Test (WASM) runs-on: ubuntu-latest - needs: [machete, docs] + needs: [clippy, wasm_clippy, check, wasm_check, docs] timeout-minutes: 30 env: # Set timeout for wasm tests to be much bigger than the default 20 secs. @@ -358,3 +416,6 @@ jobs: wasm-pack test --headless --firefox wasm-pack test --headless --chrome working-directory: signer/wasm-tests + + - if: "failure()" + uses: "andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1" # v0.3 diff --git a/lightclient/src/platform/wasm_platform.rs b/lightclient/src/platform/wasm_platform.rs index edc5fe2558..ebebff5532 100644 --- a/lightclient/src/platform/wasm_platform.rs +++ b/lightclient/src/platform/wasm_platform.rs @@ -124,14 +124,14 @@ impl PlatformRef for SubxtPlatform { port, } => { let addr = SocketAddr::from((ip, port)); - format!("ws://{}", addr.to_string()) + format!("ws://{}", addr) } Address::WebSocketIp { ip: IpAddr::V6(ip), port, } => { let addr = SocketAddr::from((ip, port)); - format!("ws://{}", addr.to_string()) + format!("ws://{}", addr) } // The API user of the `PlatformRef` trait is never supposed to open connections of diff --git a/lightclient/src/platform/wasm_socket.rs b/lightclient/src/platform/wasm_socket.rs index abe67e7c2d..74bb6b8c08 100644 --- a/lightclient/src/platform/wasm_socket.rs +++ b/lightclient/src/platform/wasm_socket.rs @@ -111,7 +111,7 @@ impl WasmSocket { let mut inner = inner.lock().expect("Mutex is poised; qed"); let bytes = js_sys::Uint8Array::new(&buffer).to_vec(); - inner.data.extend(bytes.into_iter()); + inner.data.extend(bytes); if let Some(waker) = inner.waker.take() { waker.wake(); diff --git a/subxt/src/client/light_client/builder.rs b/subxt/src/client/light_client/builder.rs index 2733fd4bb4..68db1631e1 100644 --- a/subxt/src/client/light_client/builder.rs +++ b/subxt/src/client/light_client/builder.rs @@ -6,11 +6,13 @@ use super::{rpc::LightClientRpc, LightClient, LightClientError}; use crate::backend::rpc::RpcClient; use crate::client::RawLightClient; use crate::macros::{cfg_jsonrpsee_native, cfg_jsonrpsee_web}; -use crate::utils::validate_url_is_secure; use crate::{config::Config, error::Error, OnlineClient}; use std::num::NonZeroU32; use subxt_lightclient::{smoldot, AddedChain}; +#[cfg(feature = "jsonrpsee")] +use crate::utils::validate_url_is_secure; + /// Builder for [`LightClient`]. #[derive(Clone, Debug)] pub struct LightClientBuilder { @@ -186,16 +188,11 @@ impl LightClientBuilder { } /// Raw builder for [`RawLightClient`]. +#[derive(Default)] pub struct RawLightClientBuilder { chains: Vec, } -impl Default for RawLightClientBuilder { - fn default() -> Self { - Self { chains: Vec::new() } - } -} - impl RawLightClientBuilder { /// Create a new [`RawLightClientBuilder`]. pub fn new() -> RawLightClientBuilder { diff --git a/subxt/src/client/light_client/rpc.rs b/subxt/src/client/light_client/rpc.rs index ca4fb2f664..ea9fe996ba 100644 --- a/subxt/src/client/light_client/rpc.rs +++ b/subxt/src/client/light_client/rpc.rs @@ -56,8 +56,7 @@ impl LightClientRpc { pub fn new( config: smoldot::AddChainConfig<'_, (), impl Iterator>, ) -> Result { - let rpc = subxt_lightclient::LightClientRpc::new(config) - .map_err(|err| LightClientError::Rpc(err))?; + let rpc = subxt_lightclient::LightClientRpc::new(config).map_err(LightClientError::Rpc)?; Ok(LightClientRpc(rpc)) } diff --git a/testing/integration-tests/src/utils/node_proc.rs b/testing/integration-tests/src/utils/node_proc.rs index 1b812fff46..d3ac752fec 100644 --- a/testing/integration-tests/src/utils/node_proc.rs +++ b/testing/integration-tests/src/utils/node_proc.rs @@ -258,5 +258,5 @@ async fn build_light_client(proc: &SubstrateNode) -> Result Date: Thu, 1 Feb 2024 21:54:30 +0100 Subject: [PATCH 02/66] Build Polkadot Nodes in CI - fixes artifact generation (#1410) * new workflow and adjust node builder * fix examples by fixing artifacts script * use-nodes instead of use-substrate * update yamls * build polkadot * remove the on-push trigger again, now that polkadot built in the CI * add default implementation again --- .github/workflows/actions/use-nodes/README.md | 3 + .../workflows/actions/use-nodes/action.yml | 33 + .../workflows/actions/use-substrate/README.md | 3 - .../actions/use-substrate/action.yml | 19 - .../{build-substrate.yml => build-nodes.yml} | 21 +- .github/workflows/nightly.yml | 4 +- .github/workflows/rust.yml | 36 +- .github/workflows/update-artifacts.yml | 4 +- artifacts/demo_chain_specs/polkadot.json | 12 +- artifacts/polkadot_metadata_full.scale | Bin 288657 -> 305434 bytes artifacts/polkadot_metadata_small.scale | Bin 59353 -> 60492 bytes artifacts/polkadot_metadata_tiny.scale | Bin 37631 -> 37934 bytes scripts/artifacts/src/main.rs | 6 +- .../src/full_client/codegen/polkadot.rs | 4671 +++++++++++++---- testing/substrate-runner/src/lib.rs | 16 +- 15 files changed, 3776 insertions(+), 1052 deletions(-) create mode 100644 .github/workflows/actions/use-nodes/README.md create mode 100644 .github/workflows/actions/use-nodes/action.yml delete mode 100644 .github/workflows/actions/use-substrate/README.md delete mode 100644 .github/workflows/actions/use-substrate/action.yml rename .github/workflows/{build-substrate.yml => build-nodes.yml} (65%) diff --git a/.github/workflows/actions/use-nodes/README.md b/.github/workflows/actions/use-nodes/README.md new file mode 100644 index 0000000000..d78115a46f --- /dev/null +++ b/.github/workflows/actions/use-nodes/README.md @@ -0,0 +1,3 @@ +# use-nodes + +This action downloads the substrate and polkadot binaries produced from the `build-nodes` workflow and puts them into the `$PATH`. \ No newline at end of file diff --git a/.github/workflows/actions/use-nodes/action.yml b/.github/workflows/actions/use-nodes/action.yml new file mode 100644 index 0000000000..afbfe7584d --- /dev/null +++ b/.github/workflows/actions/use-nodes/action.yml @@ -0,0 +1,33 @@ +name: Use substrate and polkadot binaries +description: Downloads and configures the substrate and polkadot binaries built with `build-nodes` +runs: + using: composite + steps: + - name: Download substrate-node binary + id: download-substrate-binary + uses: dawidd6/action-download-artifact@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e # v2.28.0 + with: + workflow: build-nodes.yml + name: nightly-substrate-binary + + - name: Download polkadot binary + id: download-polkadot-binary + uses: dawidd6/action-download-artifact@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e # v2.28.0 + with: + workflow: build-nodes.yml + name: nightly-polkadot-binary + + - name: Prepare binaries + shell: bash + run: | + chmod u+x ./substrate-node + chmod u+x ./polkadot + chmod u+x ./polkadot-execute-worker + chmod u+x ./polkadot-prepare-worker + ./substrate-node --version + ./polkadot --version + mkdir -p ~/.local/bin + cp ./substrate-node ~/.local/bin + cp ./polkadot ~/.local/bin + cp ./polkadot-execute-worker ~/.local/bin + cp ./polkadot-prepare-worker ~/.local/bin diff --git a/.github/workflows/actions/use-substrate/README.md b/.github/workflows/actions/use-substrate/README.md deleted file mode 100644 index 71f0a55fbf..0000000000 --- a/.github/workflows/actions/use-substrate/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# use-substrate - -This action downloads the substrate binary produced from the `build-substrate` workflow and puts it into the `$PATH`. \ No newline at end of file diff --git a/.github/workflows/actions/use-substrate/action.yml b/.github/workflows/actions/use-substrate/action.yml deleted file mode 100644 index b3bffcd314..0000000000 --- a/.github/workflows/actions/use-substrate/action.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Use substrate binary -description: Downloads and configures the substrate binary built with build-substrate -runs: - using: composite - steps: - - name: Download substrate-node binary - id: download-artifact - uses: dawidd6/action-download-artifact@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e # v2.28.0 - with: - workflow: build-substrate.yml - name: nightly-substrate-binary - - - name: Prepare substrate-node binary - shell: bash - run: | - chmod u+x ./substrate-node - ./substrate-node --version - mkdir -p ~/.local/bin - cp ./substrate-node ~/.local/bin diff --git a/.github/workflows/build-substrate.yml b/.github/workflows/build-nodes.yml similarity index 65% rename from .github/workflows/build-substrate.yml rename to .github/workflows/build-nodes.yml index 4cadcc7200..045355e8ea 100644 --- a/.github/workflows/build-substrate.yml +++ b/.github/workflows/build-nodes.yml @@ -1,4 +1,4 @@ -name: Build Substrate Binary +name: Build Substrate and Polkadot Binaries on: # Allow it to be manually ran to rebuild binary when needed: @@ -9,7 +9,7 @@ on: jobs: tests: - name: Build Substrate + name: Build Substrate and Polkadot Binaries runs-on: ubuntu-latest-16-cores steps: - name: checkout polkadot-sdk @@ -42,3 +42,20 @@ jobs: path: target/release/substrate-node retention-days: 2 if-no-files-found: error + + - name: build polkadot binary + uses: actions-rs/cargo@v1 + with: + command: build + args: --release --manifest-path polkadot/Cargo.toml + + - name: upload polkadot binary + uses: actions/upload-artifact@v3 + with: + name: nightly-polkadot-binary + path: | + target/release/polkadot + target/release/polkadot-execute-worker + target/release/polkadot-prepare-worker + retention-days: 2 + if-no-files-found: error diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 2add781112..e19296d1da 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -16,8 +16,8 @@ jobs: - name: Checkout sources uses: actions/checkout@v4 - - name: Use substrate-node binary - uses: ./.github/workflows/actions/use-substrate + - name: Use substrate and polkadot node binaries + uses: ./.github/workflows/actions/use-nodes - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index fdfc639a35..1ae0289609 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -56,8 +56,8 @@ jobs: - name: Checkout sources uses: actions/checkout@v4 - - name: Use substrate-node binary - uses: ./.github/workflows/actions/use-substrate + - name: Use substrate and polkadot node binaries + uses: ./.github/workflows/actions/use-nodes - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 @@ -88,8 +88,8 @@ jobs: - name: Checkout sources uses: actions/checkout@v4 - - name: Use substrate-node binary - uses: ./.github/workflows/actions/use-substrate + - name: Use substrate and polkadot node binaries + uses: ./.github/workflows/actions/use-nodes - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 @@ -120,8 +120,8 @@ jobs: - name: Checkout sources uses: actions/checkout@v4 - - name: Use substrate-node binary - uses: ./.github/workflows/actions/use-substrate + - name: Use substrate and polkadot node binaries + uses: ./.github/workflows/actions/use-nodes - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 @@ -151,8 +151,8 @@ jobs: - name: Checkout sources uses: actions/checkout@v4 - - name: Use substrate-node binary - uses: ./.github/workflows/actions/use-substrate + - name: Use substrate and polkadot node binaries + uses: ./.github/workflows/actions/use-nodes - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 @@ -240,8 +240,8 @@ jobs: - name: Checkout sources uses: actions/checkout@v4 - - name: Use substrate-node binary - uses: ./.github/workflows/actions/use-substrate + - name: Use substrate and polkadot node binaries + uses: ./.github/workflows/actions/use-nodes - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 @@ -274,8 +274,8 @@ jobs: - name: Checkout sources uses: actions/checkout@v4 - - name: Use substrate-node binary - uses: ./.github/workflows/actions/use-substrate + - name: Use substrate and polkadot node binaries + uses: ./.github/workflows/actions/use-nodes - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 @@ -308,8 +308,8 @@ jobs: - name: Checkout sources uses: actions/checkout@v4 - - name: Use substrate-node binary - uses: ./.github/workflows/actions/use-substrate + - name: Use substrate and polkadot node binaries + uses: ./.github/workflows/actions/use-nodes - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 @@ -342,8 +342,8 @@ jobs: - name: Checkout sources uses: actions/checkout@v4 - - name: Use substrate-node binary - uses: ./.github/workflows/actions/use-substrate + - name: Use substrate and polkadot node binaries + uses: ./.github/workflows/actions/use-nodes - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 @@ -388,8 +388,8 @@ jobs: - name: Rust Cache uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 - - name: Use substrate-node binary - uses: ./.github/workflows/actions/use-substrate + - name: Use substrate and polkadot node binaries + uses: ./.github/workflows/actions/use-nodes - name: Run subxt WASM tests run: | diff --git a/.github/workflows/update-artifacts.yml b/.github/workflows/update-artifacts.yml index fc60c801f6..a8f4d03812 100644 --- a/.github/workflows/update-artifacts.yml +++ b/.github/workflows/update-artifacts.yml @@ -21,8 +21,8 @@ jobs: uses: actions/checkout@v4 # We run this (up-to-date) node locally to fetch metadata from it for the artifacts - - name: Use substrate-node binary - uses: ./.github/workflows/actions/use-substrate + - name: Use substrate and polkadot node binaries + uses: ./.github/workflows/actions/use-nodes - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 diff --git a/artifacts/demo_chain_specs/polkadot.json b/artifacts/demo_chain_specs/polkadot.json index 984506f6bc..0b5bec371c 100644 --- a/artifacts/demo_chain_specs/polkadot.json +++ b/artifacts/demo_chain_specs/polkadot.json @@ -32,7 +32,9 @@ "/dns/dot-bootnode.stakeworld.io/tcp/30311/ws/p2p/12D3KooWAb5MyC1UJiEQJk4Hg4B2Vi3AJdqSUhTGYUqSnEqCFMFg", "/dns/dot-bootnode.stakeworld.io/tcp/30312/wss/p2p/12D3KooWAb5MyC1UJiEQJk4Hg4B2Vi3AJdqSUhTGYUqSnEqCFMFg", "/dns/dot14.rotko.net/tcp/35214/wss/p2p/12D3KooWPyEvPEXghnMC67Gff6PuZiSvfx3fmziKiPZcGStZ5xff", - "/dns/dot14.rotko.net/tcp/33214/p2p/12D3KooWPyEvPEXghnMC67Gff6PuZiSvfx3fmziKiPZcGStZ5xff" + "/dns/dot14.rotko.net/tcp/33214/p2p/12D3KooWPyEvPEXghnMC67Gff6PuZiSvfx3fmziKiPZcGStZ5xff", + "/dns/ibp-boot-polkadot.luckyfriday.io/tcp/30333/p2p/12D3KooWEjk6QXrZJ26fLpaajisJGHiz6WiQsR8k7mkM9GmWKnRZ", + "/dns/ibp-boot-polkadot.luckyfriday.io/tcp/30334/wss/p2p/12D3KooWEjk6QXrZJ26fLpaajisJGHiz6WiQsR8k7mkM9GmWKnRZ" ], "chainType": "Live", "forkBlocks": null, @@ -41,10 +43,10 @@ }, "id": "polkadot", "lightSyncState": { - "babeEpochChanges": "0x044736295f5ace57cb8f84fd667e8ed439db12f470d45736d046f67f54bccaada2b69c16010153bae41000000000b3c3e41000000000046646627e2646c3b728990fc968ec647c2170e66b55fbe48365e54557ae43756916a6160101b3c3e4100000000013cde41000000000086441c5d73eef491062ed18d31770e3f8a95eba0a9e78b407d28c706c6f06332775af16010113cde4100000000073d6e41000000000007494065a1f61226b66736add1b00a214e14611c3f78e1ab4d3e0d9c69ae732f875af16010113cde4100000000073d6e410000000000000104736295f5ace57cb8f84fd667e8ed439db12f470d45736d046f67f54bccaada2b69c160101da1d00000000000053bae410000000006009000000000000a50474a0fc84f72a4a9b8493379b7dfc59ca58a261a2e94997600d14b6b444c1475901000000000000009c40155989f6072e82caba245d7db7e40a60f866b403257976b89aba6be2b55b010000000000000014b0a3a620f70ada506d6ef1b7ab099219f2f05689523af7eebc81f9ba258e6001000000000000007067d4c5b492b11e2052a2bb0b4f729a52b3667afbca7dfefa863011254b5272010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec2145417501000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b92001000000000000003ae9dfa8b24faaf16407328ff38a89b25fc7c673c44f9de3de0c011233d4226d01000000000000009e47382505cd1a803bdbe7803d36a61413e58697bd9396ce1607c89a48d1e051010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000000c78c9dfc0033ff87657c56b7ab8cec4d1249be2de18729f743f385343af0f160100000000000000002e496e564f088a075525d2f9155aadd1a7eb017fa36f9e16096e9db7e169330100000000000000ae40860237c8f606dfb6974046eaa6b6b96f8d0aef56fbe3ce4865f66646bd260100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000c48c594bb4e173544a0379055b65d995af53256f653d04f2cf4fdf8f3548943901000000000000003a80d898638dccd4aaa472e7948e7394969cc443335c494159948915c097c036010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000466c0e97d043a4b0f4c3ac4849e11f901e9b31b28f8b3e40b7cdb0ba7f77480801000000000000002049288b4dbfb741109778c602f9308daf2e31b3b66e9aa550065e73c6787d7c0100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae6036820010000000000000078c88041bbca9b2bebd62fde7c46f4dc5e55d8877a113d063a6b525dfd6f7f2a01000000000000002e85d3d2c07aaf1c0a5f63f544c34b87cfa90a98c4f6167e86cee0b74a20cb120100000000000000723f3865d97a772459da8942cbb4757164f1fe7485cbcefb4b206e157ee5ed0201000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b01000000000000001822493200c35242a149070784dca5e7012a8a52b61cd218ec7d65e469e8cc56010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000d8f30bc2ee88e69f60d0278998414c80f4a130b8e1738e873bcd14ef31e58d36010000000000000042e377034ce6b2a582bfd66c465252ab10ce790e4f0d3bbe99a42ff86b29965c01000000000000000e164f314984e9a172a3a1526d853ff70bd11f3c596f17accbbebe2f7820833c01000000000000007e91ca522b14cbb71b45348c699b7d65c3198516ee771079b672ee3d7cfc577501000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b74010000000000000098faca5e78664fd082bf47f0079de33a5021415c8f5f912941e651a0b7071d1f0100000000000000ca6e63cec4c0801ecd740073da08be68b9cf4c7ff76b740fb6a522a63e838b5a010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc19010000000000000012a64d79e44f1adb33c85c4f2bdfcd8d8b38a34d984604f39289c9a7624a442d0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a670100000000000000e297620b731b4958e3c6aa06611c6aa5a45f7e116362d64954a0a330d2a98f330100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000000e5e5f8e89cd8d58ef83abddd3d1c2079691dec4f6965af70436e84411c31f3901000000000000007c21799f6143fa837a8c18bebe3368d60f4e009b114f61490b54e6344034040d0100000000000000e2f4efaa91da8465ac7d109cd80be5c02b9ba7a0603ff372cd77824de17f6c4201000000000000000ef6f09a9e310abb5c57dd7050a94d56d766772b80789b997cbb40f3b40f625d0100000000000000a88864a0dc9e292aa7cc8eddaa8dd8b6be2a4bc7e8f290023c6604e5c4ad1a7a0100000000000000dc68569b46a09aebabe8fc4452e293fac635e4a2889739809b32e4e2303e3f71010000000000000034ffee048e511f4187a6f40339650ec60a3d99ac5a1158ae162c5729b59d51740100000000000000be7c58318c49ff328d53a6d67830a8a046a41f5124824d3ce2e72cc9965ef57e0100000000000000b06e3ee1ea6420fb73ebd502988420f51b977a83074e1aa5daf0121f4a8b6b1e01000000000000003843abe933fa3ce63f3a5e422e13ec05dc9c0e8f150b93a0fa97f1b193cfba2d01000000000000009cdd57a06bd22d104d539527a19033620becff73dd267f0c2f9f13bc37b0d32c0100000000000000e020b5e946e4c6b0603ceac71b44c330fa7d9cb3e79791ebe1e16bedbb9c71000100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf7101000000000000005a63824687de4f60534ee18a430396b95263f75a077655c751bc2045ca2ec84d010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000f23d1b22d1b03c9fb6eb203c85761fe429a60c38d6591d215e873d62f5d2e4010100000000000000283a77cab50b96f99a8e8287c1488ebbcf31fc3daa953ffa99ac16db982f1e1201000000000000007c3526dc5579f1ef841101b573c655c20f4346fa4a6b0b6ed773d147c3ad6d7f0100000000000000ee579514d7f544fc9fb8d6383ed7d109ee98a411bb4b0b45b9354b0f73fed9720100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d120010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b640100000000000000ec56243ac035f65b377444e20bc8fa7e3e75242a59b5ffa5f44270f451315f2b01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e660100000000000000c0e36251f9ce24d6fe429ecf14bc9599285e3e27c0a541d5ac0ad1902d7ad614010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000005620922a6765fd47abc96615ef5b8b8575f18aaf8507f6afb86129bc1080994f0100000000000000b4b145ce385b4a3d83f2daac46a61874f80e58c468dd624acc09a558be02c27d0100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a010000000000000072183c2429e4966be5cb14c9cb84d6e4092b4e55d8ebe2534cbfa179b6f85325010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c360100000000000000ae272f5ae4e197a1fc8e670d3aa7bcab325a39d1653b5440bb7593788d0526280100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d87081320100000000000000421f3fea780f04810915479b2b72ba55591d1db37a425cae170548a50127f83001000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000d08dade453078ef481107714d602bafaa5f1247ec053c3fb62fa8ce53c1df4700100000000000000c02283aab385e82cd28d831cd1ba21381597e0ed3b193f6aa22d7588434c24160100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000b47377c358164a12a68a76035ac0479022018f5e9a3fd8fc915b265f92b74d4a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c0100000000000000c01b5bef9653fd67a8b11907f4c2a9b12cb24237768ad9188330794e9242a723010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a520100000000000000783134a08ea27221e873043cd0ee52a9f79c2eb14d5cd25afed24d7c82cb2246010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000343d27f7f66355f47054ee18bfe7df92bdd8b1aaf9391ba3b8b022905f95f94e0100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b351501000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000402a67126cd160c84edcb39374164f3a39aec59ae72cb66dd9fbd1e9891aa27c010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000c63dfd97609d6fbdd6300bb957b3feba86755bbd5a36d6b4ca40bea6a1b2517001000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d4540100000000000000941f291e924d50ffa173fb0a86b37e11915b06910a54d418b0a20998d0303a6901000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd555801000000000000001e825121b8beecb30e9962a555ce06b9e2c65fcf3b0023178556330d565bcb4c01000000000000001682c3264fc0b2a36eff3a5864cdacfe726bf5972ca8f4c5cad6f18bd450d23e0100000000000000dcbaae9e44c778fd2914d5940c24033575b5b0ef13d0157a667e4a52d9e719070100000000000000d412fb5e47b946e69918a6391ac30283949ba6d99c491d78fc5014aaa2144b590100000000000000ce323186d64f267b11e6dd0bef533ae85d282b40f90e38eef37f191a7927663f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000b013a8307c3572f939c1a9759a832f35babc847cc022588903572c8def43267d0100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c0100000000000000dc5dac973975ef5f4edef722e9727d0c05a73e4e45f7e524a8d216d2a691a6710100000000000000a0887bd2c2058519096e8dcebf495f2ef274490994e969063f72a41b3fab80720100000000000000d2838a30fd86f5f19aa80481630ecd0ee0fe5aa565ea15786f37a22a87cc1b7d01000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b25101000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000c09be470dab56a2b45b94ba6dac8ed9d515f1d3785cb4eacab40d0a80aa42b1c01000000000000007878535e43226cf81c42183db4bbef4b1eed2a460f6cd423c03af9e86674647a0100000000000000526e1fca7613776cab9c7b4ef9b4577b35adbac416c48529b6058a5f9d133210010000000000000052c9327ca5c1ca830f8ff712d813a8cdc2a8be122f16bf0d1d9e77b7a9789372010000000000000026f2af62a2f0d847e3d2cccc93ec7f98c80a7b6d1bcca4cf1c4a6fc7f81775010100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d7101000000000000009c576fccaf2ffb4885a0ac8ed7ba0b80ee5fd060856fb9f80bdd3219e5d7800d010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000000481a58bfdafecabbc96bd170a0ec04cc35100f1f928cca3ecc63b3639e476790100000000000000607fc085eaca16b6a51e44ac9f61a689e869efe15b4da37be15b78c17b193b0301000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000e4be18b8f5905bc41fe3cba2e5350d405e76036328042ae7edfbb6b6a9b43d5a0100000000000000824792c3ed55b88805009230d67bd8059eb9958dc23900e4b1a6efe61dc0e96b01000000000000008c73f71ea9e64834a5e048824978864a96c5c600f42f8a7350dd10ac088ecd2101000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b14020100000000000000507e2aa1a2409b289b89c80f7ccb129e91a32e8d44c98723f8a97307f54a2d0601000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000078d986932e680d7bebce126a5aedae3e11ba0f4e28c03d63a491e8bcbd05ad2201000000000000007c552599ae2d251c1fb693009a0f904e41e59183027af5adfb8bba4133fc13620100000000000000502c19c77976b8cb0c47b08cd465a75bd7d25734fac0048342c697501533ee2101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca22010000000000000092239fbae2557ff2ea3952c962e478e6ac2a5b3e3cfffb0eb40e8d41860ab0470100000000000000524c4d2a0ab6f9687123f9c8a9ab4fe2c70f9fc3b1863b4fde16f4dfaddc7d570100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d26273010000000000000000e2ef06613c993996e6eddf381c0f035659593515d10d664fb6bc1002bb921a0100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d465010000000000000044c47763e8f2f1675b480c01304c4da58c8d276b5ecee722e45d17afdc3d391d01000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000007873ecedbae63dfbe5594da935e52c14dbd0e131b12879d573b9c002c6e5c4400100000000000000fc53d15453457faadc5540c5853f54324eec395d3647fbf99d5e6e97ef3876760100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce007601000000000000001049c5c0f0493537f48c6b122d697f28cf8ea36ab772591ae875da8aae1198520100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000864cbd281011a154d93d0320865ad67ae442bf0985f0ec220e2c7db4b09599310100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e25290100000000000000d2fb72b7c3d020239ba45289122d0ae3fb560d01d0cb3caec01efa0c8701d45e0100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000052a0f4ee4ffddedc5b9fd2154ca213cf3f49df94f4b5c36c2d8f877f5a7010220100000000000000c2041cb909e2a314df816d3234a893c1d387f4d4f9a4379d11400963b134a753010000000000000028702457fd7ea52bb88284bfcd721493ceae3ea984492a1b82c55efa1b62fa390100000000000000484b6b8012254027636d95e66c5ea7ee68dbdf9ef6ad3c2fc00cfe5c39fdaf7c010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da720100000000000000e816e2e76f7ccbdefdfd484aa8b5f904d293ae8694e21a92990da54f17e244090100000000000000c664c419396f160467b184251d893f1a1d468e0d230691dd0123d60d446c5b6201000000000000006ef86d4533f47ffd133c63b9575c17234309ab6e16f487ae7cd8914169183c660100000000000000ce60d2c987bbeeaceff8463484b717ce80cbcf3d8f8b2102e95effc88000d95d010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c0100000000000000060edf92540ed4cbb944b399cabc91a7b9641bfd553bae0479b442f9d5bc7c2101000000000000002abc6a5d748978a4023c3597c49178db2349ea6af5a9b61783095af8e427027c010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f010000000000000050f5f5863f99e896975813fda8768c72ff25fb54e25385a4263d1ff9a19152500100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f5259050100000000000000540926fefa2d0424fd451bfca39a01c0e1a3fc811406e127d1dbfdc6cf9e9770010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e85290100000000000000e20f692ef4d1cdecf74a65aed29a64a001ca7a83f01f8440c5725ccaa8fb8e2f01000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000009a53749c83cc06460148d884f1ea5b71897466b237cf16baa45395d78ce48c1a010000000000000064615e1323ea003b7c5a63ba2c8bed2023103458eeee7cf45244580d3ca59b6a01000000000000000c68512e2e5dca7783df908fa702dce48d67a439655fe52de6d29cb07890445a010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000048afb25f7981cc67a66853ec05675d83a2d99e6318a6a7a135ed2916cb70a26e01000000000000008a0e2d0af87ffb812f6e6ec229d02056e812cc4f5f5743cc638a7d3f279f0153010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe083721560010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac5610100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000078fb9f8411552c70290a09cdc6a0e235c74364d37204ec06ab62a4d45201233e010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000004a547dfc28e6730b12b365a1cb7dbca5199e04d75aeb07c7b5da4b0245daff5d0100000000000000bc62cca37518b73aa22efed6a88147f84af5db7b82ef7671d9bbf03c76d22b490100000000000000163a52c9bc0e859d814e742b7b5c8ad8e9c603d3d1f2b896256df27320290f050100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000e063e31ccdf34c3372902f92ec915f213538370658d9272f9ba6d8d6943ccd130100000000000000f6d56c6aaa5121b6a63f13af233d5233b608d53eb7f789a3db3749a4cea2f34f010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d6401000000000000008e0b3a52dae8c17703f7093d386f5fd8fb1c35a585e7830ca06fa84ba489f2610100000000000000b4e86264fd55571f5016e82a1eeba2476b1d0349fdd175d2443ea30bee0b5207010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec1720100000000000000bec182c65eec6dbc4d89c474a6f6fc6cb6853946eacfc93762cc3616ecd3c47f0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a01000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee1901000000000000002271d61469f9f1e5a0832af7de453015b89979fd740526080116295f4a4a516d0100000000000000645077cf303943059891df150649d1d828052ea4249bf50ca3b6d29c6ef1984c010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe20010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e7993300100000000000000ea03f9dc29ae9b7a053c12b6079664592d2cf46a30b43edbb2d2d980223deb11010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe83233001000000000000003c8330f5d7f34fbec333663bab066cbac4403f892df7659b1c118c185c4f16220100000000000000b20050395fc81aa60508e362f02c75faebe3e4909c7a23721182ce791bb701130100000000000000aa92f32eab7cb844bfce67787d5921e9eb63368577d9c46e9c276dbd2288064c0100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d69010000000000000068147c36d367eb1a203b303c65ab3d32fe777cabbca8d39e08ffcfd624b3614d0100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f0100000000000000c4687b6d8e527d1ad3be71f2b242bed92eac25b159d9e142e6922ace2dfe5f2101000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f01000000000000009ea2cb3e6c59685087e59d6d45fdccdd5e6fd4f77fd90b4749f65113e23f086f01000000000000000a43fe86fb05c4f76c85474f9867e987d7f894b0f7fdba0b85c323c3103d3b4a0100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a01000000000000004a7791775365fadbb61f37a0d2f6d298c0c7c3a4c9402821ec909972fd5f8a4c01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000126a7f10393da0379401ed5fc6945ed0cc3a795c2a192b0bbc3708d24ada404401000000000000005ee252f56786ec8e512d233a09c3bbda21d0bd3a6ed7e8e8c0fe035dfe7989330100000000000000e0d28dc9623e77eeff6b0aee79793b3a00cf8b1c46fb79c8e6ff8cfeecc4af120100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa350201000000000000001e1f47deab3e4083f7d353b746b719a9f5aaee3ae2cf6b37a4d710f95d489a6101000000000000006638aad1c437c5f2f2ab4c46b786db51bb8c7e6af2ee745934811712f8d83e0601000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd932571210100000000000000aa8727e4b0a95c761b5f2506159a25195d3efca5dafa334f871c3cf262fcc56e01000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f0768520100000000000000c88d83d7927e1c1dff61de6b8321ee64746d983173bfb3a03c3d4789ae3f202701000000000000001a8de0dd57069c2986c48b25cd40c13d2acb62fad487a82f4f13738e34418c1f01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba620100000000000000102ed4107066f497e13d3c484a9fa60e506587e19541069dd4555a91d63f27040100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000003afb6b0dac3a05453f125943b8a26269202d297b991e054ca851fa68bb4c0853010000000000000048970bde717a65371534a2b878995c8bc6c230d556035fa003da1c523092332a01000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e4601000000000000002234e01370aa10159040ac893ffebe3eb28540b8eebe03f5ca658b20866de36e0100000000000000bc3bebcbf6142977fdbe8492bd2c5947a16d38925d56f09db1ef164b608b912601000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009265e7be28a8f56a974027b630bc37703b7ef21b1b1e4253c54d605f4d10da1e010000000000000046b14e55053a02087c957664d32fdcae6ba1c96051239191c63df564d784e1720100000000000000aac332418d8cd5cc9a903a06cbc8f639d32b32163713dd60d065b949abf83679010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e2101000000000000009c4d874baeccbb19733cf93f6ffb2f44d9b9f5191ead84f3550c7b767a75061f0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000662f5ccb0a265c7438d4166b72c2d0106b74f928e995dcd24004c67ad715217e0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000a49dbb103be9a66d67ad5c0d11032866488f39d0a106de579d913dc7099a09260100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000547c6a159db6eb46da71179d0d15dad5691617fc7f3c6a672864655997035c2d010000000000000040884e6b9876fe866d109aae2a5a6f1a18bfe3655ec9c1fee848ca92734468720100000000000000f7cff79458978cd2bff24aae8998623a56cd921ea318c40201b4fe2cd3fb781601000000000000000400000000000000026441c5d73eef491062ed18d31770e3f8a95eba0a9e78b407d28c706c6f06332775af160101dc1d00000000000013cde410000000006009000000000000a50474a0fc84f72a4a9b8493379b7dfc59ca58a261a2e94997600d14b6b444c1475901000000000000009c40155989f6072e82caba245d7db7e40a60f866b403257976b89aba6be2b55b010000000000000014b0a3a620f70ada506d6ef1b7ab099219f2f05689523af7eebc81f9ba258e6001000000000000007067d4c5b492b11e2052a2bb0b4f729a52b3667afbca7dfefa863011254b5272010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec2145417501000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b92001000000000000003ae9dfa8b24faaf16407328ff38a89b25fc7c673c44f9de3de0c011233d4226d0100000000000000e84529a1a5d90df032f8a38981b1e973b2551ffd11eba49d54e278499708473201000000000000009e47382505cd1a803bdbe7803d36a61413e58697bd9396ce1607c89a48d1e0510100000000000000e07446ce5f2219527928039f41b43de71567e0d247a53064b32a1732a9bab306010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000000c78c9dfc0033ff87657c56b7ab8cec4d1249be2de18729f743f385343af0f160100000000000000002e496e564f088a075525d2f9155aadd1a7eb017fa36f9e16096e9db7e169330100000000000000ae40860237c8f606dfb6974046eaa6b6b96f8d0aef56fbe3ce4865f66646bd260100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000c48c594bb4e173544a0379055b65d995af53256f653d04f2cf4fdf8f3548943901000000000000003a80d898638dccd4aaa472e7948e7394969cc443335c494159948915c097c036010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000466c0e97d043a4b0f4c3ac4849e11f901e9b31b28f8b3e40b7cdb0ba7f77480801000000000000002049288b4dbfb741109778c602f9308daf2e31b3b66e9aa550065e73c6787d7c0100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae6036820010000000000000078c88041bbca9b2bebd62fde7c46f4dc5e55d8877a113d063a6b525dfd6f7f2a01000000000000002e85d3d2c07aaf1c0a5f63f544c34b87cfa90a98c4f6167e86cee0b74a20cb120100000000000000723f3865d97a772459da8942cbb4757164f1fe7485cbcefb4b206e157ee5ed0201000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b01000000000000001822493200c35242a149070784dca5e7012a8a52b61cd218ec7d65e469e8cc56010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000d8f30bc2ee88e69f60d0278998414c80f4a130b8e1738e873bcd14ef31e58d36010000000000000042e377034ce6b2a582bfd66c465252ab10ce790e4f0d3bbe99a42ff86b29965c01000000000000000e164f314984e9a172a3a1526d853ff70bd11f3c596f17accbbebe2f7820833c01000000000000007e91ca522b14cbb71b45348c699b7d65c3198516ee771079b672ee3d7cfc577501000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b74010000000000000098faca5e78664fd082bf47f0079de33a5021415c8f5f912941e651a0b7071d1f0100000000000000ca6e63cec4c0801ecd740073da08be68b9cf4c7ff76b740fb6a522a63e838b5a010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc19010000000000000012a64d79e44f1adb33c85c4f2bdfcd8d8b38a34d984604f39289c9a7624a442d0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a670100000000000000e297620b731b4958e3c6aa06611c6aa5a45f7e116362d64954a0a330d2a98f330100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000000e5e5f8e89cd8d58ef83abddd3d1c2079691dec4f6965af70436e84411c31f3901000000000000007c21799f6143fa837a8c18bebe3368d60f4e009b114f61490b54e6344034040d0100000000000000e2f4efaa91da8465ac7d109cd80be5c02b9ba7a0603ff372cd77824de17f6c4201000000000000000ef6f09a9e310abb5c57dd7050a94d56d766772b80789b997cbb40f3b40f625d0100000000000000a88864a0dc9e292aa7cc8eddaa8dd8b6be2a4bc7e8f290023c6604e5c4ad1a7a010000000000000034ffee048e511f4187a6f40339650ec60a3d99ac5a1158ae162c5729b59d51740100000000000000be7c58318c49ff328d53a6d67830a8a046a41f5124824d3ce2e72cc9965ef57e0100000000000000b06e3ee1ea6420fb73ebd502988420f51b977a83074e1aa5daf0121f4a8b6b1e01000000000000003843abe933fa3ce63f3a5e422e13ec05dc9c0e8f150b93a0fa97f1b193cfba2d01000000000000009cdd57a06bd22d104d539527a19033620becff73dd267f0c2f9f13bc37b0d32c0100000000000000e020b5e946e4c6b0603ceac71b44c330fa7d9cb3e79791ebe1e16bedbb9c71000100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf7101000000000000005a63824687de4f60534ee18a430396b95263f75a077655c751bc2045ca2ec84d010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000f23d1b22d1b03c9fb6eb203c85761fe429a60c38d6591d215e873d62f5d2e4010100000000000000283a77cab50b96f99a8e8287c1488ebbcf31fc3daa953ffa99ac16db982f1e1201000000000000007c3526dc5579f1ef841101b573c655c20f4346fa4a6b0b6ed773d147c3ad6d7f0100000000000000ee579514d7f544fc9fb8d6383ed7d109ee98a411bb4b0b45b9354b0f73fed9720100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d12001000000000000004052e492aef88954afd9666ecb54ef5303a87394cb0690610841955f3dab1175010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b640100000000000000ec56243ac035f65b377444e20bc8fa7e3e75242a59b5ffa5f44270f451315f2b01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e660100000000000000c0e36251f9ce24d6fe429ecf14bc9599285e3e27c0a541d5ac0ad1902d7ad614010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000005620922a6765fd47abc96615ef5b8b8575f18aaf8507f6afb86129bc1080994f0100000000000000b4b145ce385b4a3d83f2daac46a61874f80e58c468dd624acc09a558be02c27d0100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a010000000000000072183c2429e4966be5cb14c9cb84d6e4092b4e55d8ebe2534cbfa179b6f85325010000000000000062d976890a75034b16ddf5c2cfe9e50620782336e19159bb0a11b585b5920f71010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c360100000000000000ae272f5ae4e197a1fc8e670d3aa7bcab325a39d1653b5440bb7593788d0526280100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d87081320100000000000000421f3fea780f04810915479b2b72ba55591d1db37a425cae170548a50127f83001000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000c02283aab385e82cd28d831cd1ba21381597e0ed3b193f6aa22d7588434c24160100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000b47377c358164a12a68a76035ac0479022018f5e9a3fd8fc915b265f92b74d4a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c0100000000000000c01b5bef9653fd67a8b11907f4c2a9b12cb24237768ad9188330794e9242a723010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000343d27f7f66355f47054ee18bfe7df92bdd8b1aaf9391ba3b8b022905f95f94e0100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b351501000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000402a67126cd160c84edcb39374164f3a39aec59ae72cb66dd9fbd1e9891aa27c010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000ea7a085eb85651e30b4420daeb2935d87931349e62728f7329b46755d424c2320100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000c63dfd97609d6fbdd6300bb957b3feba86755bbd5a36d6b4ca40bea6a1b2517001000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d4540100000000000000941f291e924d50ffa173fb0a86b37e11915b06910a54d418b0a20998d0303a6901000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd555801000000000000001e825121b8beecb30e9962a555ce06b9e2c65fcf3b0023178556330d565bcb4c01000000000000001682c3264fc0b2a36eff3a5864cdacfe726bf5972ca8f4c5cad6f18bd450d23e0100000000000000d412fb5e47b946e69918a6391ac30283949ba6d99c491d78fc5014aaa2144b590100000000000000ce323186d64f267b11e6dd0bef533ae85d282b40f90e38eef37f191a7927663f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000b013a8307c3572f939c1a9759a832f35babc847cc022588903572c8def43267d0100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c0100000000000000a0887bd2c2058519096e8dcebf495f2ef274490994e969063f72a41b3fab80720100000000000000d2838a30fd86f5f19aa80481630ecd0ee0fe5aa565ea15786f37a22a87cc1b7d01000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000de5f9f5ad3209502cf429630c2038b8818b6f8ce5685c2730077349802c5792501000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000c09be470dab56a2b45b94ba6dac8ed9d515f1d3785cb4eacab40d0a80aa42b1c01000000000000007878535e43226cf81c42183db4bbef4b1eed2a460f6cd423c03af9e86674647a0100000000000000526e1fca7613776cab9c7b4ef9b4577b35adbac416c48529b6058a5f9d133210010000000000000052c9327ca5c1ca830f8ff712d813a8cdc2a8be122f16bf0d1d9e77b7a9789372010000000000000026f2af62a2f0d847e3d2cccc93ec7f98c80a7b6d1bcca4cf1c4a6fc7f81775010100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d71010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000000481a58bfdafecabbc96bd170a0ec04cc35100f1f928cca3ecc63b3639e476790100000000000000607fc085eaca16b6a51e44ac9f61a689e869efe15b4da37be15b78c17b193b0301000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000e4be18b8f5905bc41fe3cba2e5350d405e76036328042ae7edfbb6b6a9b43d5a0100000000000000824792c3ed55b88805009230d67bd8059eb9958dc23900e4b1a6efe61dc0e96b01000000000000008c73f71ea9e64834a5e048824978864a96c5c600f42f8a7350dd10ac088ecd2101000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b14020100000000000000507e2aa1a2409b289b89c80f7ccb129e91a32e8d44c98723f8a97307f54a2d0601000000000000008c6d9a2bb472764af439b9dd83d68dd0a0c1a77fbf1025a0e6bbfa3e9c8e857401000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000078d986932e680d7bebce126a5aedae3e11ba0f4e28c03d63a491e8bcbd05ad2201000000000000007c552599ae2d251c1fb693009a0f904e41e59183027af5adfb8bba4133fc136201000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca22010000000000000092239fbae2557ff2ea3952c962e478e6ac2a5b3e3cfffb0eb40e8d41860ab0470100000000000000524c4d2a0ab6f9687123f9c8a9ab4fe2c70f9fc3b1863b4fde16f4dfaddc7d570100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d26273010000000000000000e2ef06613c993996e6eddf381c0f035659593515d10d664fb6bc1002bb921a0100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d465010000000000000044c47763e8f2f1675b480c01304c4da58c8d276b5ecee722e45d17afdc3d391d01000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000007873ecedbae63dfbe5594da935e52c14dbd0e131b12879d573b9c002c6e5c4400100000000000000fc53d15453457faadc5540c5853f54324eec395d3647fbf99d5e6e97ef3876760100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000864cbd281011a154d93d0320865ad67ae442bf0985f0ec220e2c7db4b09599310100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e25290100000000000000d2fb72b7c3d020239ba45289122d0ae3fb560d01d0cb3caec01efa0c8701d45e0100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000052a0f4ee4ffddedc5b9fd2154ca213cf3f49df94f4b5c36c2d8f877f5a7010220100000000000000c2041cb909e2a314df816d3234a893c1d387f4d4f9a4379d11400963b134a753010000000000000028702457fd7ea52bb88284bfcd721493ceae3ea984492a1b82c55efa1b62fa390100000000000000484b6b8012254027636d95e66c5ea7ee68dbdf9ef6ad3c2fc00cfe5c39fdaf7c010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da720100000000000000e816e2e76f7ccbdefdfd484aa8b5f904d293ae8694e21a92990da54f17e244090100000000000000c664c419396f160467b184251d893f1a1d468e0d230691dd0123d60d446c5b6201000000000000006ef86d4533f47ffd133c63b9575c17234309ab6e16f487ae7cd8914169183c660100000000000000ce60d2c987bbeeaceff8463484b717ce80cbcf3d8f8b2102e95effc88000d95d010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c0100000000000000060edf92540ed4cbb944b399cabc91a7b9641bfd553bae0479b442f9d5bc7c2101000000000000002abc6a5d748978a4023c3597c49178db2349ea6af5a9b61783095af8e427027c010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f010000000000000050f5f5863f99e896975813fda8768c72ff25fb54e25385a4263d1ff9a19152500100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000540926fefa2d0424fd451bfca39a01c0e1a3fc811406e127d1dbfdc6cf9e9770010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e85290100000000000000e20f692ef4d1cdecf74a65aed29a64a001ca7a83f01f8440c5725ccaa8fb8e2f01000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000009a53749c83cc06460148d884f1ea5b71897466b237cf16baa45395d78ce48c1a010000000000000064615e1323ea003b7c5a63ba2c8bed2023103458eeee7cf45244580d3ca59b6a010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000048afb25f7981cc67a66853ec05675d83a2d99e6318a6a7a135ed2916cb70a26e01000000000000008a0e2d0af87ffb812f6e6ec229d02056e812cc4f5f5743cc638a7d3f279f0153010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe083721560010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac5610100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000004a547dfc28e6730b12b365a1cb7dbca5199e04d75aeb07c7b5da4b0245daff5d0100000000000000bc62cca37518b73aa22efed6a88147f84af5db7b82ef7671d9bbf03c76d22b490100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000e063e31ccdf34c3372902f92ec915f213538370658d9272f9ba6d8d6943ccd13010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d6401000000000000008e0b3a52dae8c17703f7093d386f5fd8fb1c35a585e7830ca06fa84ba489f2610100000000000000b4e86264fd55571f5016e82a1eeba2476b1d0349fdd175d2443ea30bee0b5207010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec17201000000000000006ac767a27a7c0d66cc9493e93dc9d37a114b8a05ef7ee4b22db346661446e6280100000000000000bec182c65eec6dbc4d89c474a6f6fc6cb6853946eacfc93762cc3616ecd3c47f0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a01000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee1901000000000000002271d61469f9f1e5a0832af7de453015b89979fd740526080116295f4a4a516d0100000000000000645077cf303943059891df150649d1d828052ea4249bf50ca3b6d29c6ef1984c01000000000000006cb06d06d7955ca5e61897e7f2c4576469e09185f010d96e9bcc84533d1a036b010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe20010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e7993300100000000000000ea03f9dc29ae9b7a053c12b6079664592d2cf46a30b43edbb2d2d980223deb11010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe83233001000000000000003c8330f5d7f34fbec333663bab066cbac4403f892df7659b1c118c185c4f16220100000000000000b20050395fc81aa60508e362f02c75faebe3e4909c7a23721182ce791bb701130100000000000000aa92f32eab7cb844bfce67787d5921e9eb63368577d9c46e9c276dbd2288064c0100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d69010000000000000068147c36d367eb1a203b303c65ab3d32fe777cabbca8d39e08ffcfd624b3614d0100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f0100000000000000c4687b6d8e527d1ad3be71f2b242bed92eac25b159d9e142e6922ace2dfe5f2101000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f0100000000000000d80eba00fd45442e9305434d637564baed7a12136c89734e4ca850db419f0c3a01000000000000009ea2cb3e6c59685087e59d6d45fdccdd5e6fd4f77fd90b4749f65113e23f086f01000000000000000a43fe86fb05c4f76c85474f9867e987d7f894b0f7fdba0b85c323c3103d3b4a0100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a01000000000000004a7791775365fadbb61f37a0d2f6d298c0c7c3a4c9402821ec909972fd5f8a4c01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a01000000000000005ee252f56786ec8e512d233a09c3bbda21d0bd3a6ed7e8e8c0fe035dfe7989330100000000000000e0d28dc9623e77eeff6b0aee79793b3a00cf8b1c46fb79c8e6ff8cfeecc4af120100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa350201000000000000001e1f47deab3e4083f7d353b746b719a9f5aaee3ae2cf6b37a4d710f95d489a6101000000000000006638aad1c437c5f2f2ab4c46b786db51bb8c7e6af2ee745934811712f8d83e0601000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd932571210100000000000000aa8727e4b0a95c761b5f2506159a25195d3efca5dafa334f871c3cf262fcc56e01000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f0768520100000000000000c88d83d7927e1c1dff61de6b8321ee64746d983173bfb3a03c3d4789ae3f202701000000000000001a8de0dd57069c2986c48b25cd40c13d2acb62fad487a82f4f13738e34418c1f01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba620100000000000000102ed4107066f497e13d3c484a9fa60e506587e19541069dd4555a91d63f27040100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000003afb6b0dac3a05453f125943b8a26269202d297b991e054ca851fa68bb4c0853010000000000000048970bde717a65371534a2b878995c8bc6c230d556035fa003da1c523092332a01000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e4601000000000000006edcddd44823f4f48b53a4172c3bbe239842ac1e663eeb0222fd715d050d7a5101000000000000002234e01370aa10159040ac893ffebe3eb28540b8eebe03f5ca658b20866de36e0100000000000000bc3bebcbf6142977fdbe8492bd2c5947a16d38925d56f09db1ef164b608b912601000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009265e7be28a8f56a974027b630bc37703b7ef21b1b1e4253c54d605f4d10da1e010000000000000046b14e55053a02087c957664d32fdcae6ba1c96051239191c63df564d784e1720100000000000000aac332418d8cd5cc9a903a06cbc8f639d32b32163713dd60d065b949abf8367901000000000000007011cf9db6405d2a4b0ffe11b6a6f9de0c8919d0f70e980d6c6e221e98590e0a010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e21010000000000000038ab6c4b18e1c86176cf53301ea990f1cdddcdc3f2c3e0f8dde126fa59f60b2f01000000000000009c4d874baeccbb19733cf93f6ffb2f44d9b9f5191ead84f3550c7b767a75061f0100000000000000dc9fce160b2cd9c97257b75c861d32348337de685c69042659eec13a0055b4500100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000662f5ccb0a265c7438d4166b72c2d0106b74f928e995dcd24004c67ad715217e0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000a49dbb103be9a66d67ad5c0d11032866488f39d0a106de579d913dc7099a09260100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000547c6a159db6eb46da71179d0d15dad5691617fc7f3c6a672864655997035c2d010000000000000040884e6b9876fe866d109aae2a5a6f1a18bfe3655ec9c1fee848ca9273446872010000000000000049e7432ee40ede3d43ba6ed37822ac124d32bd6605844c728e889df99472bc1501000000000000000400000000000000026646627e2646c3b728990fc968ec647c2170e66b55fbe48365e54557ae43756916a6160101db1d000000000000b3c3e410000000006009000000000000a50474a0fc84f72a4a9b8493379b7dfc59ca58a261a2e94997600d14b6b444c1475901000000000000009c40155989f6072e82caba245d7db7e40a60f866b403257976b89aba6be2b55b010000000000000014b0a3a620f70ada506d6ef1b7ab099219f2f05689523af7eebc81f9ba258e6001000000000000007067d4c5b492b11e2052a2bb0b4f729a52b3667afbca7dfefa863011254b5272010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec2145417501000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b92001000000000000003ae9dfa8b24faaf16407328ff38a89b25fc7c673c44f9de3de0c011233d4226d01000000000000009e47382505cd1a803bdbe7803d36a61413e58697bd9396ce1607c89a48d1e051010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000000c78c9dfc0033ff87657c56b7ab8cec4d1249be2de18729f743f385343af0f160100000000000000002e496e564f088a075525d2f9155aadd1a7eb017fa36f9e16096e9db7e169330100000000000000ae40860237c8f606dfb6974046eaa6b6b96f8d0aef56fbe3ce4865f66646bd260100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000c48c594bb4e173544a0379055b65d995af53256f653d04f2cf4fdf8f3548943901000000000000003a80d898638dccd4aaa472e7948e7394969cc443335c494159948915c097c036010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000466c0e97d043a4b0f4c3ac4849e11f901e9b31b28f8b3e40b7cdb0ba7f77480801000000000000002049288b4dbfb741109778c602f9308daf2e31b3b66e9aa550065e73c6787d7c0100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae6036820010000000000000078c88041bbca9b2bebd62fde7c46f4dc5e55d8877a113d063a6b525dfd6f7f2a01000000000000002e85d3d2c07aaf1c0a5f63f544c34b87cfa90a98c4f6167e86cee0b74a20cb120100000000000000723f3865d97a772459da8942cbb4757164f1fe7485cbcefb4b206e157ee5ed0201000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b01000000000000001822493200c35242a149070784dca5e7012a8a52b61cd218ec7d65e469e8cc56010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000d8f30bc2ee88e69f60d0278998414c80f4a130b8e1738e873bcd14ef31e58d36010000000000000042e377034ce6b2a582bfd66c465252ab10ce790e4f0d3bbe99a42ff86b29965c01000000000000000e164f314984e9a172a3a1526d853ff70bd11f3c596f17accbbebe2f7820833c01000000000000007e91ca522b14cbb71b45348c699b7d65c3198516ee771079b672ee3d7cfc577501000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b74010000000000000098faca5e78664fd082bf47f0079de33a5021415c8f5f912941e651a0b7071d1f0100000000000000ca6e63cec4c0801ecd740073da08be68b9cf4c7ff76b740fb6a522a63e838b5a010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc19010000000000000012a64d79e44f1adb33c85c4f2bdfcd8d8b38a34d984604f39289c9a7624a442d0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a670100000000000000e297620b731b4958e3c6aa06611c6aa5a45f7e116362d64954a0a330d2a98f330100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000000e5e5f8e89cd8d58ef83abddd3d1c2079691dec4f6965af70436e84411c31f3901000000000000007c21799f6143fa837a8c18bebe3368d60f4e009b114f61490b54e6344034040d0100000000000000e2f4efaa91da8465ac7d109cd80be5c02b9ba7a0603ff372cd77824de17f6c4201000000000000000ef6f09a9e310abb5c57dd7050a94d56d766772b80789b997cbb40f3b40f625d0100000000000000a88864a0dc9e292aa7cc8eddaa8dd8b6be2a4bc7e8f290023c6604e5c4ad1a7a0100000000000000dc68569b46a09aebabe8fc4452e293fac635e4a2889739809b32e4e2303e3f71010000000000000034ffee048e511f4187a6f40339650ec60a3d99ac5a1158ae162c5729b59d51740100000000000000be7c58318c49ff328d53a6d67830a8a046a41f5124824d3ce2e72cc9965ef57e0100000000000000b06e3ee1ea6420fb73ebd502988420f51b977a83074e1aa5daf0121f4a8b6b1e01000000000000003843abe933fa3ce63f3a5e422e13ec05dc9c0e8f150b93a0fa97f1b193cfba2d01000000000000009cdd57a06bd22d104d539527a19033620becff73dd267f0c2f9f13bc37b0d32c0100000000000000e020b5e946e4c6b0603ceac71b44c330fa7d9cb3e79791ebe1e16bedbb9c71000100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf7101000000000000005a63824687de4f60534ee18a430396b95263f75a077655c751bc2045ca2ec84d010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000f23d1b22d1b03c9fb6eb203c85761fe429a60c38d6591d215e873d62f5d2e4010100000000000000283a77cab50b96f99a8e8287c1488ebbcf31fc3daa953ffa99ac16db982f1e1201000000000000007c3526dc5579f1ef841101b573c655c20f4346fa4a6b0b6ed773d147c3ad6d7f0100000000000000ee579514d7f544fc9fb8d6383ed7d109ee98a411bb4b0b45b9354b0f73fed9720100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d120010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b640100000000000000ec56243ac035f65b377444e20bc8fa7e3e75242a59b5ffa5f44270f451315f2b01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e660100000000000000c0e36251f9ce24d6fe429ecf14bc9599285e3e27c0a541d5ac0ad1902d7ad614010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000005620922a6765fd47abc96615ef5b8b8575f18aaf8507f6afb86129bc1080994f0100000000000000b4b145ce385b4a3d83f2daac46a61874f80e58c468dd624acc09a558be02c27d0100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a010000000000000072183c2429e4966be5cb14c9cb84d6e4092b4e55d8ebe2534cbfa179b6f85325010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c360100000000000000ae272f5ae4e197a1fc8e670d3aa7bcab325a39d1653b5440bb7593788d0526280100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d87081320100000000000000421f3fea780f04810915479b2b72ba55591d1db37a425cae170548a50127f83001000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000d08dade453078ef481107714d602bafaa5f1247ec053c3fb62fa8ce53c1df4700100000000000000c02283aab385e82cd28d831cd1ba21381597e0ed3b193f6aa22d7588434c24160100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000b47377c358164a12a68a76035ac0479022018f5e9a3fd8fc915b265f92b74d4a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c0100000000000000c01b5bef9653fd67a8b11907f4c2a9b12cb24237768ad9188330794e9242a723010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a520100000000000000783134a08ea27221e873043cd0ee52a9f79c2eb14d5cd25afed24d7c82cb2246010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000343d27f7f66355f47054ee18bfe7df92bdd8b1aaf9391ba3b8b022905f95f94e0100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b351501000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000402a67126cd160c84edcb39374164f3a39aec59ae72cb66dd9fbd1e9891aa27c010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000c63dfd97609d6fbdd6300bb957b3feba86755bbd5a36d6b4ca40bea6a1b2517001000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d4540100000000000000941f291e924d50ffa173fb0a86b37e11915b06910a54d418b0a20998d0303a6901000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd555801000000000000001e825121b8beecb30e9962a555ce06b9e2c65fcf3b0023178556330d565bcb4c01000000000000001682c3264fc0b2a36eff3a5864cdacfe726bf5972ca8f4c5cad6f18bd450d23e0100000000000000dcbaae9e44c778fd2914d5940c24033575b5b0ef13d0157a667e4a52d9e719070100000000000000d412fb5e47b946e69918a6391ac30283949ba6d99c491d78fc5014aaa2144b590100000000000000ce323186d64f267b11e6dd0bef533ae85d282b40f90e38eef37f191a7927663f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000b013a8307c3572f939c1a9759a832f35babc847cc022588903572c8def43267d0100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c0100000000000000dc5dac973975ef5f4edef722e9727d0c05a73e4e45f7e524a8d216d2a691a6710100000000000000a0887bd2c2058519096e8dcebf495f2ef274490994e969063f72a41b3fab80720100000000000000d2838a30fd86f5f19aa80481630ecd0ee0fe5aa565ea15786f37a22a87cc1b7d01000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b25101000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000c09be470dab56a2b45b94ba6dac8ed9d515f1d3785cb4eacab40d0a80aa42b1c01000000000000007878535e43226cf81c42183db4bbef4b1eed2a460f6cd423c03af9e86674647a0100000000000000526e1fca7613776cab9c7b4ef9b4577b35adbac416c48529b6058a5f9d133210010000000000000052c9327ca5c1ca830f8ff712d813a8cdc2a8be122f16bf0d1d9e77b7a9789372010000000000000026f2af62a2f0d847e3d2cccc93ec7f98c80a7b6d1bcca4cf1c4a6fc7f81775010100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d7101000000000000009c576fccaf2ffb4885a0ac8ed7ba0b80ee5fd060856fb9f80bdd3219e5d7800d010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000000481a58bfdafecabbc96bd170a0ec04cc35100f1f928cca3ecc63b3639e476790100000000000000607fc085eaca16b6a51e44ac9f61a689e869efe15b4da37be15b78c17b193b0301000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000e4be18b8f5905bc41fe3cba2e5350d405e76036328042ae7edfbb6b6a9b43d5a0100000000000000824792c3ed55b88805009230d67bd8059eb9958dc23900e4b1a6efe61dc0e96b01000000000000008c73f71ea9e64834a5e048824978864a96c5c600f42f8a7350dd10ac088ecd2101000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b14020100000000000000507e2aa1a2409b289b89c80f7ccb129e91a32e8d44c98723f8a97307f54a2d0601000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000078d986932e680d7bebce126a5aedae3e11ba0f4e28c03d63a491e8bcbd05ad2201000000000000007c552599ae2d251c1fb693009a0f904e41e59183027af5adfb8bba4133fc13620100000000000000502c19c77976b8cb0c47b08cd465a75bd7d25734fac0048342c697501533ee2101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca22010000000000000092239fbae2557ff2ea3952c962e478e6ac2a5b3e3cfffb0eb40e8d41860ab0470100000000000000524c4d2a0ab6f9687123f9c8a9ab4fe2c70f9fc3b1863b4fde16f4dfaddc7d570100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d26273010000000000000000e2ef06613c993996e6eddf381c0f035659593515d10d664fb6bc1002bb921a0100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d465010000000000000044c47763e8f2f1675b480c01304c4da58c8d276b5ecee722e45d17afdc3d391d01000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000007873ecedbae63dfbe5594da935e52c14dbd0e131b12879d573b9c002c6e5c4400100000000000000fc53d15453457faadc5540c5853f54324eec395d3647fbf99d5e6e97ef3876760100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce007601000000000000001049c5c0f0493537f48c6b122d697f28cf8ea36ab772591ae875da8aae1198520100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000864cbd281011a154d93d0320865ad67ae442bf0985f0ec220e2c7db4b09599310100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e25290100000000000000d2fb72b7c3d020239ba45289122d0ae3fb560d01d0cb3caec01efa0c8701d45e0100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000052a0f4ee4ffddedc5b9fd2154ca213cf3f49df94f4b5c36c2d8f877f5a7010220100000000000000c2041cb909e2a314df816d3234a893c1d387f4d4f9a4379d11400963b134a753010000000000000028702457fd7ea52bb88284bfcd721493ceae3ea984492a1b82c55efa1b62fa390100000000000000484b6b8012254027636d95e66c5ea7ee68dbdf9ef6ad3c2fc00cfe5c39fdaf7c010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da720100000000000000e816e2e76f7ccbdefdfd484aa8b5f904d293ae8694e21a92990da54f17e244090100000000000000c664c419396f160467b184251d893f1a1d468e0d230691dd0123d60d446c5b6201000000000000006ef86d4533f47ffd133c63b9575c17234309ab6e16f487ae7cd8914169183c660100000000000000ce60d2c987bbeeaceff8463484b717ce80cbcf3d8f8b2102e95effc88000d95d010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c0100000000000000060edf92540ed4cbb944b399cabc91a7b9641bfd553bae0479b442f9d5bc7c2101000000000000002abc6a5d748978a4023c3597c49178db2349ea6af5a9b61783095af8e427027c010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f010000000000000050f5f5863f99e896975813fda8768c72ff25fb54e25385a4263d1ff9a19152500100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f5259050100000000000000540926fefa2d0424fd451bfca39a01c0e1a3fc811406e127d1dbfdc6cf9e9770010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e85290100000000000000e20f692ef4d1cdecf74a65aed29a64a001ca7a83f01f8440c5725ccaa8fb8e2f01000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000009a53749c83cc06460148d884f1ea5b71897466b237cf16baa45395d78ce48c1a010000000000000064615e1323ea003b7c5a63ba2c8bed2023103458eeee7cf45244580d3ca59b6a01000000000000000c68512e2e5dca7783df908fa702dce48d67a439655fe52de6d29cb07890445a010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000048afb25f7981cc67a66853ec05675d83a2d99e6318a6a7a135ed2916cb70a26e01000000000000008a0e2d0af87ffb812f6e6ec229d02056e812cc4f5f5743cc638a7d3f279f0153010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe083721560010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac5610100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000078fb9f8411552c70290a09cdc6a0e235c74364d37204ec06ab62a4d45201233e010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000004a547dfc28e6730b12b365a1cb7dbca5199e04d75aeb07c7b5da4b0245daff5d0100000000000000bc62cca37518b73aa22efed6a88147f84af5db7b82ef7671d9bbf03c76d22b490100000000000000163a52c9bc0e859d814e742b7b5c8ad8e9c603d3d1f2b896256df27320290f050100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000e063e31ccdf34c3372902f92ec915f213538370658d9272f9ba6d8d6943ccd130100000000000000f6d56c6aaa5121b6a63f13af233d5233b608d53eb7f789a3db3749a4cea2f34f010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d6401000000000000008e0b3a52dae8c17703f7093d386f5fd8fb1c35a585e7830ca06fa84ba489f2610100000000000000b4e86264fd55571f5016e82a1eeba2476b1d0349fdd175d2443ea30bee0b5207010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec1720100000000000000bec182c65eec6dbc4d89c474a6f6fc6cb6853946eacfc93762cc3616ecd3c47f0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a01000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee1901000000000000002271d61469f9f1e5a0832af7de453015b89979fd740526080116295f4a4a516d0100000000000000645077cf303943059891df150649d1d828052ea4249bf50ca3b6d29c6ef1984c010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe20010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e7993300100000000000000ea03f9dc29ae9b7a053c12b6079664592d2cf46a30b43edbb2d2d980223deb11010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe83233001000000000000003c8330f5d7f34fbec333663bab066cbac4403f892df7659b1c118c185c4f16220100000000000000b20050395fc81aa60508e362f02c75faebe3e4909c7a23721182ce791bb701130100000000000000aa92f32eab7cb844bfce67787d5921e9eb63368577d9c46e9c276dbd2288064c0100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d69010000000000000068147c36d367eb1a203b303c65ab3d32fe777cabbca8d39e08ffcfd624b3614d0100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f0100000000000000c4687b6d8e527d1ad3be71f2b242bed92eac25b159d9e142e6922ace2dfe5f2101000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f01000000000000009ea2cb3e6c59685087e59d6d45fdccdd5e6fd4f77fd90b4749f65113e23f086f01000000000000000a43fe86fb05c4f76c85474f9867e987d7f894b0f7fdba0b85c323c3103d3b4a0100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a01000000000000004a7791775365fadbb61f37a0d2f6d298c0c7c3a4c9402821ec909972fd5f8a4c01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000126a7f10393da0379401ed5fc6945ed0cc3a795c2a192b0bbc3708d24ada404401000000000000005ee252f56786ec8e512d233a09c3bbda21d0bd3a6ed7e8e8c0fe035dfe7989330100000000000000e0d28dc9623e77eeff6b0aee79793b3a00cf8b1c46fb79c8e6ff8cfeecc4af120100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa350201000000000000001e1f47deab3e4083f7d353b746b719a9f5aaee3ae2cf6b37a4d710f95d489a6101000000000000006638aad1c437c5f2f2ab4c46b786db51bb8c7e6af2ee745934811712f8d83e0601000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd932571210100000000000000aa8727e4b0a95c761b5f2506159a25195d3efca5dafa334f871c3cf262fcc56e01000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f0768520100000000000000c88d83d7927e1c1dff61de6b8321ee64746d983173bfb3a03c3d4789ae3f202701000000000000001a8de0dd57069c2986c48b25cd40c13d2acb62fad487a82f4f13738e34418c1f01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba620100000000000000102ed4107066f497e13d3c484a9fa60e506587e19541069dd4555a91d63f27040100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000003afb6b0dac3a05453f125943b8a26269202d297b991e054ca851fa68bb4c0853010000000000000048970bde717a65371534a2b878995c8bc6c230d556035fa003da1c523092332a01000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e4601000000000000002234e01370aa10159040ac893ffebe3eb28540b8eebe03f5ca658b20866de36e0100000000000000bc3bebcbf6142977fdbe8492bd2c5947a16d38925d56f09db1ef164b608b912601000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009265e7be28a8f56a974027b630bc37703b7ef21b1b1e4253c54d605f4d10da1e010000000000000046b14e55053a02087c957664d32fdcae6ba1c96051239191c63df564d784e1720100000000000000aac332418d8cd5cc9a903a06cbc8f639d32b32163713dd60d065b949abf83679010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e2101000000000000009c4d874baeccbb19733cf93f6ffb2f44d9b9f5191ead84f3550c7b767a75061f0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000662f5ccb0a265c7438d4166b72c2d0106b74f928e995dcd24004c67ad715217e0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000a49dbb103be9a66d67ad5c0d11032866488f39d0a106de579d913dc7099a09260100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000547c6a159db6eb46da71179d0d15dad5691617fc7f3c6a672864655997035c2d010000000000000040884e6b9876fe866d109aae2a5a6f1a18bfe3655ec9c1fee848ca92734468720100000000000000f4751bb25e58daf18770161b19fc3c544f5b5d3986275612bfaeba70d882887101000000000000000400000000000000027494065a1f61226b66736add1b00a214e14611c3f78e1ab4d3e0d9c69ae732f875af160101dc1d00000000000013cde410000000006009000000000000a50474a0fc84f72a4a9b8493379b7dfc59ca58a261a2e94997600d14b6b444c1475901000000000000009c40155989f6072e82caba245d7db7e40a60f866b403257976b89aba6be2b55b010000000000000014b0a3a620f70ada506d6ef1b7ab099219f2f05689523af7eebc81f9ba258e6001000000000000007067d4c5b492b11e2052a2bb0b4f729a52b3667afbca7dfefa863011254b5272010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec2145417501000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b92001000000000000003ae9dfa8b24faaf16407328ff38a89b25fc7c673c44f9de3de0c011233d4226d0100000000000000e84529a1a5d90df032f8a38981b1e973b2551ffd11eba49d54e278499708473201000000000000009e47382505cd1a803bdbe7803d36a61413e58697bd9396ce1607c89a48d1e0510100000000000000e07446ce5f2219527928039f41b43de71567e0d247a53064b32a1732a9bab306010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000000c78c9dfc0033ff87657c56b7ab8cec4d1249be2de18729f743f385343af0f160100000000000000002e496e564f088a075525d2f9155aadd1a7eb017fa36f9e16096e9db7e169330100000000000000ae40860237c8f606dfb6974046eaa6b6b96f8d0aef56fbe3ce4865f66646bd260100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000c48c594bb4e173544a0379055b65d995af53256f653d04f2cf4fdf8f3548943901000000000000003a80d898638dccd4aaa472e7948e7394969cc443335c494159948915c097c036010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000466c0e97d043a4b0f4c3ac4849e11f901e9b31b28f8b3e40b7cdb0ba7f77480801000000000000002049288b4dbfb741109778c602f9308daf2e31b3b66e9aa550065e73c6787d7c0100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae6036820010000000000000078c88041bbca9b2bebd62fde7c46f4dc5e55d8877a113d063a6b525dfd6f7f2a01000000000000002e85d3d2c07aaf1c0a5f63f544c34b87cfa90a98c4f6167e86cee0b74a20cb120100000000000000723f3865d97a772459da8942cbb4757164f1fe7485cbcefb4b206e157ee5ed0201000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b01000000000000001822493200c35242a149070784dca5e7012a8a52b61cd218ec7d65e469e8cc56010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000d8f30bc2ee88e69f60d0278998414c80f4a130b8e1738e873bcd14ef31e58d36010000000000000042e377034ce6b2a582bfd66c465252ab10ce790e4f0d3bbe99a42ff86b29965c01000000000000000e164f314984e9a172a3a1526d853ff70bd11f3c596f17accbbebe2f7820833c01000000000000007e91ca522b14cbb71b45348c699b7d65c3198516ee771079b672ee3d7cfc577501000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b74010000000000000098faca5e78664fd082bf47f0079de33a5021415c8f5f912941e651a0b7071d1f0100000000000000ca6e63cec4c0801ecd740073da08be68b9cf4c7ff76b740fb6a522a63e838b5a010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc19010000000000000012a64d79e44f1adb33c85c4f2bdfcd8d8b38a34d984604f39289c9a7624a442d0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a670100000000000000e297620b731b4958e3c6aa06611c6aa5a45f7e116362d64954a0a330d2a98f330100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000000e5e5f8e89cd8d58ef83abddd3d1c2079691dec4f6965af70436e84411c31f3901000000000000007c21799f6143fa837a8c18bebe3368d60f4e009b114f61490b54e6344034040d0100000000000000e2f4efaa91da8465ac7d109cd80be5c02b9ba7a0603ff372cd77824de17f6c4201000000000000000ef6f09a9e310abb5c57dd7050a94d56d766772b80789b997cbb40f3b40f625d0100000000000000a88864a0dc9e292aa7cc8eddaa8dd8b6be2a4bc7e8f290023c6604e5c4ad1a7a010000000000000034ffee048e511f4187a6f40339650ec60a3d99ac5a1158ae162c5729b59d51740100000000000000be7c58318c49ff328d53a6d67830a8a046a41f5124824d3ce2e72cc9965ef57e0100000000000000b06e3ee1ea6420fb73ebd502988420f51b977a83074e1aa5daf0121f4a8b6b1e01000000000000003843abe933fa3ce63f3a5e422e13ec05dc9c0e8f150b93a0fa97f1b193cfba2d01000000000000009cdd57a06bd22d104d539527a19033620becff73dd267f0c2f9f13bc37b0d32c0100000000000000e020b5e946e4c6b0603ceac71b44c330fa7d9cb3e79791ebe1e16bedbb9c71000100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf7101000000000000005a63824687de4f60534ee18a430396b95263f75a077655c751bc2045ca2ec84d010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000f23d1b22d1b03c9fb6eb203c85761fe429a60c38d6591d215e873d62f5d2e4010100000000000000283a77cab50b96f99a8e8287c1488ebbcf31fc3daa953ffa99ac16db982f1e1201000000000000007c3526dc5579f1ef841101b573c655c20f4346fa4a6b0b6ed773d147c3ad6d7f0100000000000000ee579514d7f544fc9fb8d6383ed7d109ee98a411bb4b0b45b9354b0f73fed9720100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d12001000000000000004052e492aef88954afd9666ecb54ef5303a87394cb0690610841955f3dab1175010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b640100000000000000ec56243ac035f65b377444e20bc8fa7e3e75242a59b5ffa5f44270f451315f2b01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e660100000000000000c0e36251f9ce24d6fe429ecf14bc9599285e3e27c0a541d5ac0ad1902d7ad614010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000005620922a6765fd47abc96615ef5b8b8575f18aaf8507f6afb86129bc1080994f0100000000000000b4b145ce385b4a3d83f2daac46a61874f80e58c468dd624acc09a558be02c27d0100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a010000000000000072183c2429e4966be5cb14c9cb84d6e4092b4e55d8ebe2534cbfa179b6f85325010000000000000062d976890a75034b16ddf5c2cfe9e50620782336e19159bb0a11b585b5920f71010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c360100000000000000ae272f5ae4e197a1fc8e670d3aa7bcab325a39d1653b5440bb7593788d0526280100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d87081320100000000000000421f3fea780f04810915479b2b72ba55591d1db37a425cae170548a50127f83001000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000c02283aab385e82cd28d831cd1ba21381597e0ed3b193f6aa22d7588434c24160100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000b47377c358164a12a68a76035ac0479022018f5e9a3fd8fc915b265f92b74d4a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c0100000000000000c01b5bef9653fd67a8b11907f4c2a9b12cb24237768ad9188330794e9242a723010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000343d27f7f66355f47054ee18bfe7df92bdd8b1aaf9391ba3b8b022905f95f94e0100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b351501000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000402a67126cd160c84edcb39374164f3a39aec59ae72cb66dd9fbd1e9891aa27c010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000ea7a085eb85651e30b4420daeb2935d87931349e62728f7329b46755d424c2320100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000c63dfd97609d6fbdd6300bb957b3feba86755bbd5a36d6b4ca40bea6a1b2517001000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d4540100000000000000941f291e924d50ffa173fb0a86b37e11915b06910a54d418b0a20998d0303a6901000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd555801000000000000001e825121b8beecb30e9962a555ce06b9e2c65fcf3b0023178556330d565bcb4c01000000000000001682c3264fc0b2a36eff3a5864cdacfe726bf5972ca8f4c5cad6f18bd450d23e0100000000000000d412fb5e47b946e69918a6391ac30283949ba6d99c491d78fc5014aaa2144b590100000000000000ce323186d64f267b11e6dd0bef533ae85d282b40f90e38eef37f191a7927663f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000b013a8307c3572f939c1a9759a832f35babc847cc022588903572c8def43267d0100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c0100000000000000a0887bd2c2058519096e8dcebf495f2ef274490994e969063f72a41b3fab80720100000000000000d2838a30fd86f5f19aa80481630ecd0ee0fe5aa565ea15786f37a22a87cc1b7d01000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000de5f9f5ad3209502cf429630c2038b8818b6f8ce5685c2730077349802c5792501000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000c09be470dab56a2b45b94ba6dac8ed9d515f1d3785cb4eacab40d0a80aa42b1c01000000000000007878535e43226cf81c42183db4bbef4b1eed2a460f6cd423c03af9e86674647a0100000000000000526e1fca7613776cab9c7b4ef9b4577b35adbac416c48529b6058a5f9d133210010000000000000052c9327ca5c1ca830f8ff712d813a8cdc2a8be122f16bf0d1d9e77b7a9789372010000000000000026f2af62a2f0d847e3d2cccc93ec7f98c80a7b6d1bcca4cf1c4a6fc7f81775010100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d71010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000000481a58bfdafecabbc96bd170a0ec04cc35100f1f928cca3ecc63b3639e476790100000000000000607fc085eaca16b6a51e44ac9f61a689e869efe15b4da37be15b78c17b193b0301000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000e4be18b8f5905bc41fe3cba2e5350d405e76036328042ae7edfbb6b6a9b43d5a0100000000000000824792c3ed55b88805009230d67bd8059eb9958dc23900e4b1a6efe61dc0e96b01000000000000008c73f71ea9e64834a5e048824978864a96c5c600f42f8a7350dd10ac088ecd2101000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b14020100000000000000507e2aa1a2409b289b89c80f7ccb129e91a32e8d44c98723f8a97307f54a2d0601000000000000008c6d9a2bb472764af439b9dd83d68dd0a0c1a77fbf1025a0e6bbfa3e9c8e857401000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000078d986932e680d7bebce126a5aedae3e11ba0f4e28c03d63a491e8bcbd05ad2201000000000000007c552599ae2d251c1fb693009a0f904e41e59183027af5adfb8bba4133fc136201000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca22010000000000000092239fbae2557ff2ea3952c962e478e6ac2a5b3e3cfffb0eb40e8d41860ab0470100000000000000524c4d2a0ab6f9687123f9c8a9ab4fe2c70f9fc3b1863b4fde16f4dfaddc7d570100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d26273010000000000000000e2ef06613c993996e6eddf381c0f035659593515d10d664fb6bc1002bb921a0100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d465010000000000000044c47763e8f2f1675b480c01304c4da58c8d276b5ecee722e45d17afdc3d391d01000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000007873ecedbae63dfbe5594da935e52c14dbd0e131b12879d573b9c002c6e5c4400100000000000000fc53d15453457faadc5540c5853f54324eec395d3647fbf99d5e6e97ef3876760100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000864cbd281011a154d93d0320865ad67ae442bf0985f0ec220e2c7db4b09599310100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e25290100000000000000d2fb72b7c3d020239ba45289122d0ae3fb560d01d0cb3caec01efa0c8701d45e0100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000052a0f4ee4ffddedc5b9fd2154ca213cf3f49df94f4b5c36c2d8f877f5a7010220100000000000000c2041cb909e2a314df816d3234a893c1d387f4d4f9a4379d11400963b134a753010000000000000028702457fd7ea52bb88284bfcd721493ceae3ea984492a1b82c55efa1b62fa390100000000000000484b6b8012254027636d95e66c5ea7ee68dbdf9ef6ad3c2fc00cfe5c39fdaf7c010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da720100000000000000e816e2e76f7ccbdefdfd484aa8b5f904d293ae8694e21a92990da54f17e244090100000000000000c664c419396f160467b184251d893f1a1d468e0d230691dd0123d60d446c5b6201000000000000006ef86d4533f47ffd133c63b9575c17234309ab6e16f487ae7cd8914169183c660100000000000000ce60d2c987bbeeaceff8463484b717ce80cbcf3d8f8b2102e95effc88000d95d010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c0100000000000000060edf92540ed4cbb944b399cabc91a7b9641bfd553bae0479b442f9d5bc7c2101000000000000002abc6a5d748978a4023c3597c49178db2349ea6af5a9b61783095af8e427027c010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f010000000000000050f5f5863f99e896975813fda8768c72ff25fb54e25385a4263d1ff9a19152500100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000540926fefa2d0424fd451bfca39a01c0e1a3fc811406e127d1dbfdc6cf9e9770010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e85290100000000000000e20f692ef4d1cdecf74a65aed29a64a001ca7a83f01f8440c5725ccaa8fb8e2f01000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000009a53749c83cc06460148d884f1ea5b71897466b237cf16baa45395d78ce48c1a010000000000000064615e1323ea003b7c5a63ba2c8bed2023103458eeee7cf45244580d3ca59b6a010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000048afb25f7981cc67a66853ec05675d83a2d99e6318a6a7a135ed2916cb70a26e01000000000000008a0e2d0af87ffb812f6e6ec229d02056e812cc4f5f5743cc638a7d3f279f0153010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe083721560010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac5610100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000004a547dfc28e6730b12b365a1cb7dbca5199e04d75aeb07c7b5da4b0245daff5d0100000000000000bc62cca37518b73aa22efed6a88147f84af5db7b82ef7671d9bbf03c76d22b490100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000e063e31ccdf34c3372902f92ec915f213538370658d9272f9ba6d8d6943ccd13010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d6401000000000000008e0b3a52dae8c17703f7093d386f5fd8fb1c35a585e7830ca06fa84ba489f2610100000000000000b4e86264fd55571f5016e82a1eeba2476b1d0349fdd175d2443ea30bee0b5207010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec17201000000000000006ac767a27a7c0d66cc9493e93dc9d37a114b8a05ef7ee4b22db346661446e6280100000000000000bec182c65eec6dbc4d89c474a6f6fc6cb6853946eacfc93762cc3616ecd3c47f0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a01000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee1901000000000000002271d61469f9f1e5a0832af7de453015b89979fd740526080116295f4a4a516d0100000000000000645077cf303943059891df150649d1d828052ea4249bf50ca3b6d29c6ef1984c01000000000000006cb06d06d7955ca5e61897e7f2c4576469e09185f010d96e9bcc84533d1a036b010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe20010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e7993300100000000000000ea03f9dc29ae9b7a053c12b6079664592d2cf46a30b43edbb2d2d980223deb11010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe83233001000000000000003c8330f5d7f34fbec333663bab066cbac4403f892df7659b1c118c185c4f16220100000000000000b20050395fc81aa60508e362f02c75faebe3e4909c7a23721182ce791bb701130100000000000000aa92f32eab7cb844bfce67787d5921e9eb63368577d9c46e9c276dbd2288064c0100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d69010000000000000068147c36d367eb1a203b303c65ab3d32fe777cabbca8d39e08ffcfd624b3614d0100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f0100000000000000c4687b6d8e527d1ad3be71f2b242bed92eac25b159d9e142e6922ace2dfe5f2101000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f0100000000000000d80eba00fd45442e9305434d637564baed7a12136c89734e4ca850db419f0c3a01000000000000009ea2cb3e6c59685087e59d6d45fdccdd5e6fd4f77fd90b4749f65113e23f086f01000000000000000a43fe86fb05c4f76c85474f9867e987d7f894b0f7fdba0b85c323c3103d3b4a0100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a01000000000000004a7791775365fadbb61f37a0d2f6d298c0c7c3a4c9402821ec909972fd5f8a4c01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a01000000000000005ee252f56786ec8e512d233a09c3bbda21d0bd3a6ed7e8e8c0fe035dfe7989330100000000000000e0d28dc9623e77eeff6b0aee79793b3a00cf8b1c46fb79c8e6ff8cfeecc4af120100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa350201000000000000001e1f47deab3e4083f7d353b746b719a9f5aaee3ae2cf6b37a4d710f95d489a6101000000000000006638aad1c437c5f2f2ab4c46b786db51bb8c7e6af2ee745934811712f8d83e0601000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd932571210100000000000000aa8727e4b0a95c761b5f2506159a25195d3efca5dafa334f871c3cf262fcc56e01000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f0768520100000000000000c88d83d7927e1c1dff61de6b8321ee64746d983173bfb3a03c3d4789ae3f202701000000000000001a8de0dd57069c2986c48b25cd40c13d2acb62fad487a82f4f13738e34418c1f01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba620100000000000000102ed4107066f497e13d3c484a9fa60e506587e19541069dd4555a91d63f27040100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000003afb6b0dac3a05453f125943b8a26269202d297b991e054ca851fa68bb4c0853010000000000000048970bde717a65371534a2b878995c8bc6c230d556035fa003da1c523092332a01000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e4601000000000000006edcddd44823f4f48b53a4172c3bbe239842ac1e663eeb0222fd715d050d7a5101000000000000002234e01370aa10159040ac893ffebe3eb28540b8eebe03f5ca658b20866de36e0100000000000000bc3bebcbf6142977fdbe8492bd2c5947a16d38925d56f09db1ef164b608b912601000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009265e7be28a8f56a974027b630bc37703b7ef21b1b1e4253c54d605f4d10da1e010000000000000046b14e55053a02087c957664d32fdcae6ba1c96051239191c63df564d784e1720100000000000000aac332418d8cd5cc9a903a06cbc8f639d32b32163713dd60d065b949abf8367901000000000000007011cf9db6405d2a4b0ffe11b6a6f9de0c8919d0f70e980d6c6e221e98590e0a010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e21010000000000000038ab6c4b18e1c86176cf53301ea990f1cdddcdc3f2c3e0f8dde126fa59f60b2f01000000000000009c4d874baeccbb19733cf93f6ffb2f44d9b9f5191ead84f3550c7b767a75061f0100000000000000dc9fce160b2cd9c97257b75c861d32348337de685c69042659eec13a0055b4500100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000662f5ccb0a265c7438d4166b72c2d0106b74f928e995dcd24004c67ad715217e0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000a49dbb103be9a66d67ad5c0d11032866488f39d0a106de579d913dc7099a09260100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000547c6a159db6eb46da71179d0d15dad5691617fc7f3c6a672864655997035c2d010000000000000040884e6b9876fe866d109aae2a5a6f1a18bfe3655ec9c1fee848ca9273446872010000000000000049e7432ee40ede3d43ba6ed37822ac124d32bd6605844c728e889df99472bc150100000000000000040000000000000002", - "babeFinalizedBlockWeight": 4559738, - "finalizedBlockHeader": "0xd77079fcf54a7a83fb2b75b24bc4c7b8a776c50c5a6ca04fcf5eba857e2a7f5052c05a04443844f2007aff2b5c8afe4731e735126f337ad52776ffd32f586da47451186fd49b29a11d724d4a7e0eba71b2c74ce1f9fe5958264219cf8ec4160346bc6b12080642414245b501036200000052c4e410000000009a76cf5448916664e377946b2cdf61f1afdc50feae99314db4a62b2ecd5fb24c501e3f442fc8eb763a2fe20657380d5e43c7b8223b90137aeafca12dfe65cd01a3c5a3977a9f1d929cd0855d15aa6f8a5d304ad7f1745bcc857e6e69d0a0e9020542414245010186408d036b3647c440fec22006c5386f1eef56c4fb9314e8bcea8bd26c681f04f8910b1bb3332e0bd2ce3b2cb16a3a9cbf53cb7b1c1152b0693ac90b268eca89", - "grandpaAuthoritySet": "0xa5042f8da08bb2421ef844015c3b2ea23464fc66a9dcb4a2215fe0241f892d19afc50100000000000000fff437ff18629bf1490e5c9b3ec6f1515d46bb9b2aeaa6e39e36611f2479b50d01000000000000000334021ff54e46fb7da4bd257cf113519a0c7ee4a2251b66fe48466fed5853520100000000000000d95f04dc8ea4ac05deea7077457f0406fdd152bd03a7480e7d0de0983b959d3c010000000000000047f940bc985355be7187c709ded2b689b66d69e61e293a507f1d4f90bdbeceee01000000000000004a3fc0fe1020c7f460c7bd23d0b657c03368552b2f0a12d80a1c406fd066e0db01000000000000009b992b5e9b99eb2cd3b2b648d6db81ed722a2feb4938d998b58dcb5d159fadfa0100000000000000aee9de3938173700b3e3f4fbf2b200ae296173a0854157f40de2598dd4cad8f10100000000000000e0b1aae640bfbed119730710c584be65ef59abb3e9ee5dc8a754751e1ba163960100000000000000495a0370e02aadf1beff005feceb521a1d9bb0d85e7fe58658b97ec988fb996c0100000000000000b61e9b13e849779be8f5378a670d61991875d8e091f359384d7be73d02d506930100000000000000426b2be4596a759a15028d84e08c5c56440e6cede68d088f47c671cc3387c3e6010000000000000070ba6e5985990ba1b1392713236f1b50df750f10f744cc6eb95fa7c5cfbc687601000000000000005b27660cd4c375f2654c6d923b29fd8abbab7e96ee040c79598be14f832f56ca010000000000000057ae0c85ebaf333a6ec3251f577cab910cce072f238d1e50046322b83bbc0dd5010000000000000072c09c9e2dc9ab20a65cf70e951352f554442514ba2ac7063966ea7bbe3e6cf001000000000000000139b946b46bee4c61be50c986f2a9ef2e76917644e2ecd842c59d61a94ee612010000000000000019a9d56ea35496122fc44fcb5c29d27fbb43520556d6f8d97753767aaa0f228e01000000000000007cd50f6921fade39653f847bddd48360668004225081a6a3ad7997f78debd34c010000000000000053a51c848834661c92e74b3c2492b8de2591f914ab75345d70e61c79be9699d70100000000000000a5b094ae7c156592baa68ce18dab6368d5b665e9a0f07dfc5f54f58309e086c1010000000000000053352e16d2a27fb3525d5d8750d6ad7f46b303a45e434a409ac727d5cb80432b01000000000000008c54298c6f8704498112ecb24f64f7a28ed2289ec573620b0d1e5a9a44f5fa78010000000000000041ef4a31eb7dc1e01f4630604e1908e644d7cdee3f66a60f98d6d59605326f8b010000000000000097743d6364cdb6c4790cd37c4c2ab5fbc6c65e8bb606625e70a6ee04ed1650d9010000000000000008cc1d6c743da905511a39a6f0a68809a6bc32f8ac25e53bb2d6aca4f493fc9b0100000000000000c9dc00c6a757495c50092362d5c70d2a971ae1da4eb67c9da9f4367c9d408c1d0100000000000000049cb09a86d544249f9e11cf6c348bc0561600343ebee89d1c90bbef3d13e517010000000000000086c42c0f6b8f7c06f9ce823eeecf7cf0371bb5b97f3c7af63872f8bbfb353abd0100000000000000d04d64a07f144638f20f081de122b88fed0cc8bda57e4810e7afb38036dd8bbf0100000000000000f26945a8a64032a1defa76e720a99649125b55751b6088205e7acab901de670b0100000000000000684768723f0efc2001562c3b2156b987601ae9431f8aaa6f4199649cba487aea01000000000000005cba2c6f569da1edc3778308da406f266aa53140381dbb3f14f22909ba6e30040100000000000000c9a741ab82126c4d4eaa6a758cfc1209bbd7b29330e89ccd97fb62ae567c8d4301000000000000009b94bc45bf79bb33f70430c82880456cd7bd5fb3ea131c1b26d493d01c5fe7100100000000000000ce8d085d4b0a9502a680280ecc162bd33533a5ebada62f3be19427542189cb5a0100000000000000a1a9debad5e4afb076cf293c2c797f0b5901ffdb8bd01611235e762411a0db3901000000000000006f4855725ebb9eced957bae43ffa7d30657ce7d06b251ce20e2218bcf929e40501000000000000007c10f10bd6eb9c1201b52c6025545fcbc310432781bbe02629b5cc9e5fdd229a0100000000000000b046cf7d24d49b720b28dd2476b36c157262208fb065c077b1b94db1e9ffa6050100000000000000749556da4a259bc1f0b8ea8e3726c2251656b92205c30b635ec9f42038f8defb01000000000000000ce4d93e25fa5302f4b059456f680047f87be428ae88579e0b862502b5ceed600100000000000000c1758f7cbffeb844419bc494a9dc65fb394259f01e9bf23789a75acc29d7d9620100000000000000c1c1ff5f66fefb5c0849e3b2333411d1f7e9dd4888600e334e7a33623f15fa360100000000000000fe240e80ff8a48a77947b394979cf361017cd906ddaab637d72cf72e729d79bf010000000000000006854c73f5703242d31d2576ac2297c93f0b5dc16ade0097c59d5dc0faa43c550100000000000000c650b1a6b34347bd80ed06b48aa4ae1a33adaa507e8ac23bf6c6b94223b63b9d01000000000000008aabd4f6d7ecec7a749c83fc7be33f3b4818cca6f93a4927b4964900df9454e50100000000000000b9186b95c90d2d00a31e7c68066bd37d73408271762604e3608e2f2c983f830901000000000000003948bfd09bbbc2fe6ac5dfe53146e32df50828eecf7b2b18cdcff8dc385cbd7501000000000000001ba602a293ccdb7a77042fb486c6e010d48b13dff2bef0a26c53637312aac7f70100000000000000ba8180cbc0dceb098ee6b22fe89978bf92ebf196a280470b1501bc2138ec02c70100000000000000f6373ec61f3d99dfcd0bcc6a2b5ddb7e9c8a7d8e5777aa58bc2ac949315dee250100000000000000dc1427d14e83926d22f6be25d1bd39cbc82a194f5e9373ecae644f156ae9c62e010000000000000003d105a30087d96b5f0684f6ded76f826b01dab61e4136e1d851a24f0088b5ed010000000000000020d4e595c50bb9558dad9be6a8784492bbbfc754b9c5fae17edf4f8a84e8b47101000000000000006ba031ff146af5199eeb335a4a9c2fd487685a489e1a154ba1d012e965fdd5ba0100000000000000608f61824d3ae16d443cd0fec15c18590c890d4105e9402cad8743fb423e52b401000000000000000ccee96768f9b1d29d5bd9e63afd2be78a90cc89d19653ff1910cb36000b48530100000000000000818a546c630b881c2161588866965649678cda0f4110cccc3533d0f20e5e41200100000000000000088f8736e1cf2ea3d102f0a96ccf51222b8aa1f93d8e42947892f4395cb5477c0100000000000000c3ff25a1743a9df92af4ccd9a7aed5cbc90f64fd538c3df0a9539128f596526701000000000000004e3fb8c16ad624c1852777456805e5352d0221269de66949c95da4076206b35a01000000000000007ad55381f9de00220678c95a19489640fc61331e2a40d927e3d833555575c6fc010000000000000069a6c84df1d25f855b91040e113a5557da8a89d80644ae7bf8d0ba416ab89b6d0100000000000000cb92ffeace78dbafe6fbf275741b4b38657fb81590712aa0bca7877931f6ad39010000000000000007727680e6caac998c03e3702c7f84e558b592dd76ab2a49cdd3dae16e7e853f0100000000000000e78c36a9d8b145c42c879754a79dde433fa2496c55d6d9f00ae577c6b1ff4dfe0100000000000000f8eb309ab851e8f98aa4bd68138a67dc4a435331598079969053a5325b874a51010000000000000059bba625d971d505a9c7d7c2f3ad69203e69e3e5e1fc1e4905fae7703fa19e030100000000000000ba95f5d0e987305bb794dfeae69d7dd6a7987aa66cd7c9d42aca15e9160ec6a1010000000000000016278af083f6d261762f8a97b6a09ff83e2f5927ce26c2e48f3c7e771dc7e6950100000000000000c49e3cd2c701bb845963c2870dcca12ed070c3f67ffc20144327a93aa6e896ec010000000000000082a1428bcd525a2e77b8f5fb89c73e5fe1261e96e93b383dd2d66767c855c8f001000000000000002dad5b2212ee688f2eeb9ca1fb6a90574f006dc1c6680ac3a8523363a248940b0100000000000000be0a28e5615d9ce3b866b5cf0babf6a7f0e6de06119463382e715b47c89853e40100000000000000b7c13f1239888cda5c8e6ac9ea10675df17633368906e66a487f91ddd3268ca601000000000000007509d9697cb54f627f47b25e80f46f5d1bf483a9cab5f52df69e1a8f612e486f0100000000000000f3b1c0e43606bd49bc84e403db685b577e898b5f7c5db9052bdc3dacf38dc7ad01000000000000008a2b50acd1a4955fc814bf6720c7427902a6ce709f3a2d7c17c55b67f6f1c06301000000000000003a511828c0cdc0fd257387843fdbf6f19d5ca1ef1c29ec7e971fc9f1195eb60c0100000000000000ee5605c1a9ed9484a70b8a591339830f24530eefc4599a7c6188a78896908e2c010000000000000039dbc464cdd3a095627527d2c7cdfa40444369c636578a7e1129c3109ead35260100000000000000d1c146d2429a5a827660008721c7a880e71f44feaa3dc75524c1a9281bac48cd0100000000000000e4b2cffd0b9cacfc500050b27ecae3c55b9b51bd9a416d62605118c8ad4fb09f0100000000000000b28ba3f09e3521f7d09f0098c6743bc218ee2970068adfa5d908d9d06e627ae50100000000000000f6d74de7b39455519a5d6480c8f12c93fc7a4cfc9af39154fc60857a39ad888b010000000000000099f58256a4a5d6cf5d99f0cdebbcbe1477db461457647631cd21ca7f3120da6001000000000000002bb7b11dfe79a12110b0370510ef20d40ba8a563f517310f8bf37cf7f0403de40100000000000000b71a15131dd5df7c4fdc0b13abdd27488d2becdeacb8a42a227dd90ce92057f2010000000000000040533a786cd0be9618126633512666b1b1b9ab3b436fa653c93e2f65da9c196b0100000000000000be95095d93298171c6fb8a1847adfa173d127e13f53482dcb694f891d68f0c58010000000000000085b714accac0654ba57fac59b626dd35802269d2c1d995cea7c335cb05a88f7f01000000000000006a5f902cdeda2c2161d16bd21d586720c08c0bbb7b463d9c59147338d26a8a960100000000000000bbad19c54e41fe818395f38b2771d4f83813441596016c9a01afd591c2bee87b0100000000000000f459c0d1b1e42bf6c6f976b70e15e2842d753200ce2f901a7cf1b8c9bfb10c0401000000000000009c11e35911f023df6e4d218e53412ab4e4a20c17961d63ba381c913b51f394c00100000000000000ac61d1b7ba7b5731e691f8293c6338ef8e909f97d7eb94c0e7874e17afb0ea5b0100000000000000ffcca343512faeffe1cb3a8a7ce62fa4ee0c7f6a5f3e5ac883482846e132813d0100000000000000fd4ae377dbe850ae5bdd50c71831ccf889ede1785d4011f20e3ca6edf0b93900010000000000000037483029302a84623f0a8db165fbed905b0a4fc25e7cfb56e975a0e98336a59b010000000000000053b5918f72e73f92f32b578d1b602f0cc554d98bee8c4e131ef0ac7a63399fb40100000000000000f9908ae5581496061d7e62b966463ac3fe3b52c4dffbffe4d565d4eb3b8b6dd00100000000000000c7d9cab0fb88dccd0cf4abbf5df9d7f36a3de439c5070c599d397e74133bdfed0100000000000000866fe4ae134938ccf4c5caf01358881c75cfde473b0bb8a2623cc231db2ea3b901000000000000005d202a011f023dfaa6713f16bfd4409dde8bfe594abd59e2be32484c73b979820100000000000000756dd17b3ef4077e4df06f9ce7eaa98fa7dd158f1cba596567f0b89cc12544270100000000000000fc555c014d927fe7838e840609916b9af5d93892ce6f394398858286802b8c6101000000000000006727561447ed474ff4e15645b952a37fa5008d4e694d4853bb55594fa34c4f340100000000000000ec295fb809e22c332aa36a57afe05f2c093b2d13e52b0971d8265c5514e4e9690100000000000000efb5f1e4c4ba37f8c159d452d897c607a58518b8355a8454620b3e3ccc3271230100000000000000f71fca8770328d06e9a45e650e5f58c15feb8ec77ca2dce397490bedfa37db4801000000000000008c3dbd5a1b928cb51e918452191e5328b0f6e8de0259517831a90b02dba3e6110100000000000000aa6fd06015b8309ea9103f4b0e29bfa7e21ab5bb1431c3a76433f591c739f8380100000000000000a892342c56149812a43e98c82b6a3dfee7eff384d9b6d832002ea63838f64900010000000000000005b78368482b0584326a9c0176949523c03ab1446a8aa021701aa9837ccf04fc010000000000000023f07bcb8dade90cefd08732183d5fe32b89ad8a4f84987b9e4e7e767c2587560100000000000000be6b59cb464fadec4e0b22a9f12857ba5cf7a14c4f9551439d36305d582dd7fb0100000000000000035c917f27530f3f99142c77541cbc6ac4f27fd49008c0371e54640ec3b49dfe0100000000000000f916634f9fd7e54374e30ac6b722ad1793c13cb2d5f2ad38769eaca2f79d414b01000000000000007ba967a2dae0d8839cf44710591db994d18e53b25ec6d0f861da0037c4a4366a0100000000000000acc5d703d7819d7993784e6ce107cd4c5625954d3baab0bcc07afe7d8c473a2201000000000000004d4a140145f83598fc5a3839260723176f643ae286ff7b2fc460b897fb050a4501000000000000007d3011d58467b4677391062477ccc42adf126de1587287ea7f1af3510817840c01000000000000007e15c89cc954f1ddd6a5f2e9f482c1143f5b7b4ba406ed1264fd25a999f223f20100000000000000442fc5263e255282e1dd5fc8e56c3e72c18648243da370fbad832275de9abc5c0100000000000000d0b4aada93fb3d0b358e8d59f8914f5987acbc6f5b4f3e12a1ed8d962eded82701000000000000004f950be5bf61958a0ae6e6a036b85b33ba838de8bd5508b558cbe2602d341168010000000000000082e6b6bf1f275c59fbde0dad91393ae690d5e644d11d23898a9ccfdda025920a01000000000000004659b8114500937a2db0c810e194610c582865305e141d04e52ee989b80edd87010000000000000074b60dfb12745236ba9dc8f925efa21482b50c870c567638ba3240a05fe363d90100000000000000d761043f405069ac01285f1ff258450aac675f08d906b1ae0a1ce54eabcb36d901000000000000005047f4a799401d6a39e92c7331147b38b421ea59f96d87426c294c660d1ba3d10100000000000000147e7434965c27c972446e97a5f2e8c92e3031858a7d576ce5187eed4e6434d70100000000000000423e84653aad03ac3c5a6eba17239343a6856a514bf898ed61822f67f2bdcfcd0100000000000000d3b3d9703a265a51a137b9de348587c645a168981ef3e01c9dc482856751b8ef0100000000000000cfb9f7f1fcf903a51af729ed1647aee928630e148990309f9dc9f3b14b114b760100000000000000a2ee8d9c22eba97998d63854409d99c87b21d079f5c888d863a81d41d6abf0110100000000000000d14a779884de1b2fbf079b8e47e8c0edb1c29e282996899a4eab5aaf1f4f41130100000000000000c2344c6fb787621295335b6b5acbab9531199901492d41e13a64dfb2927f83be0100000000000000da0ea9347962105f4b59f4fd04a85b0493736dd9afddb20829771816bdc3ca6301000000000000004c51b84496e533a7f1bb2b806f3733a7f0a48543976d0a4e5410e831f93e041701000000000000009c39dae41fdfa2e72ce57a6c899b01edf5d1aa421d429ba86d4d1741c58317590100000000000000615d64d17a182504db609d14dc6a45a109817cfaaad1608b4c48382bee48d3780100000000000000155763a153e0c02b2eef1d8a9cd8a50a9eaac9d3af7ad1e559b1e2320b521e1c01000000000000005208fe27477acbc6750d0caa831c0b26801c58eca046a6cf9d4143f85d877e8301000000000000004242378110faf2970e19fa227955307e8fe2d055824a2aa3ca2600b933ceb63a010000000000000025ebbb2a00126545bbedf00318a78b6e61a0b52c81e30231ff45bd32e311472f01000000000000003773b05d2e2660498c8d407a1d6223423c26aa08b9b3656af94d78b861fba22f0100000000000000be177f23c0065f9135b057181534bbf09c5f9daecce6c99aa2e9267202fc4f900100000000000000500a9e1ea37636c24ebf4e32668897dae936eef42b6da49027f606d4f24a7e96010000000000000039712f967c4e06d284d6da4735cf2823c1f770674b668f7bc896071c3fd41eda010000000000000046f540d46498b7e5c53d650c28a682f61a769919fe3a3554114cde720c05ebea01000000000000009a5df54f5051a3f41be540c0eb233df31dd82a3acb755a3b42eafb6ca47b06d201000000000000004df6e4d7da2c11ddb9153c714699f9ab625bbcd5e8e38f1cdeee567dc04abc610100000000000000d9b96ab14d54cf0093b00b5bb592a6ea6036f844bf7eaa3b5181d0764e1724b901000000000000009cfeed14dd2f96550a0e7edebd9c9a8c8b1d8f7efdd1abca01987654239f3c860100000000000000fd2fe2f117d597b29474a740ec767fe51cec93544d00e34269b78ddb31225f3b0100000000000000a74ff082093aff29e9a0d9adeb6e6df264b39c15ef1a82bf942e8ba76872bac40100000000000000a9413b5f6af8458b220e467cfa30ec635e0690a843bae76b0c25a387238e45c701000000000000008404cabeb0674765bb77af690fa838ba28fa2045d602994a89f07680f4851c83010000000000000006b9e740c0a0e1f8fd31717438d5918ed8680eaccb70fdc9511931ce0d164ae50100000000000000b8cf76a8082d518016ea5588be57b64e156ed23b0f72248975522c23d15ef16101000000000000002565e04c6e0b665fac87f8238bee74837f8f621ed63409f3838d263603400a980100000000000000c2e6a39d423f82b034e5370932f02653ee45254ced3ec2094640508e3d04d91b0100000000000000d0071dcdd61d5f4df542a2978fc2acd51996ab0abccddf4d64732fc7b83c073101000000000000002a38a4dcdffc571d547ee3e59121fdd378335df7c65877f983f0957cdc9824130100000000000000606f8c9ce630a1ce30fc7b7108fae524bc47bbbb2c838a985d9a651be4fa03450100000000000000620c78305072857b43dadced80ebc057dbfc82b58c14c7b63372ef02140867650100000000000000baf0112f613aa6fff341d67decad56d1c5744a3ebb8e3577e82febbf3535b3fe01000000000000004dc2e72680dbf0156818114fa34d3591f8e6948df25a128e191190c66f6ac35301000000000000001ebe41ca4cd399901ffe5f6f52642630820500e4a96cbef4c80c560cae38d2c601000000000000000442cfb3cd38604b2a5251638e9fa7ee6b05968c731f393b78a6604e0072b09f01000000000000007af0706d921a331b5c1f957a8d1decf15aa0e3377a80d72107693afd8614ef8f0100000000000000f5e2c973d4ccbdd36d8ed4e3dae75d3b50002cc1c74eb0a1fe29ef1ef8e3f0cc01000000000000003ded8aac5210831cbcc4d0cf1f96f2c711afc90a6f6f35a4ffb766be1dfbaee30100000000000000258f23d60623fcb1d699a35f79776a9e81e979150ba5098dcc8e3a69a407ff9a0100000000000000f56f5b3de4f46bcde88569888783fd60646806795807edb1e04ec3dff85ff3e10100000000000000b1f748c87b12edf7242b4719cfe68e6761acaa4329beee538d6ff740941d3cd301000000000000008b35aa0d212e4032ede352d5426696c260c9ecffa632a2e14e6a6629a6c9f637010000000000000072341ca1eb3a0fd4e790318b51ace114315573d5355c9d5336e39382ba0642560100000000000000a79cd2241bd68004641baac25c1900da3a9e6d83101aea3ef2a58d78c657272f0100000000000000b14911cb101f45b88c437a36bd82a5f8641b1c55052060ea46ea2baea570e8bf0100000000000000b66e24ea84d5e02a7b2b58e20bbf17a0f2a19c4654bf8b07669ba3b9fc4a468101000000000000003c1dcee818434058b7de26ee874ade21bd1149185d6dcba1f67048b931ec3dda01000000000000009d31c78ebe9664e2bd8ba41cddcd9c5b9fb0cc6f8be0a2e5b91f6bcf66a5c7530100000000000000290be52ae5259f3e8bd0cdf454004607867a97c1db86d0c9ff16c8c83625bc830100000000000000c91199db47b7591bf1a928534cdbd3e5979a0d09d6a464f2a9607ec444bd8a9701000000000000005e0fad9f1e6837994babd7d55b2d4079af785ec48568cd1c4efd60ea28162e8e01000000000000004c43a374e6b3e6f7d6c5a6b8518ae0d0d232a1c46d63af8fbc800045a14cbe93010000000000000029a6535bac723c2f711e590c67f0bd60843cf7888eebca46025ae57f5ca1d9290100000000000000b5f8f28250bc934f684d57ce969bc3171e5a92085ea3fc4f5cbd3616cb4c7c63010000000000000022edc626e6c76166af032395ade8b874ac872074c72e3e6a70c8f668993d19e80100000000000000ee73c2912d35fe8d3f5bd51303d89bbd8500cd12b3a17594ab3e9ac4cee922200100000000000000ccc84b255e5e73b971f2e71d1903b5ef9bd6d0965ff3ce29c517c875bd7ab65701000000000000001babed13d56d28fdb937b07bce846689584099575382c273f7e425f822c8159f01000000000000003e6d39376bea51b81c57d4a308938c6552bea5433d6bed9f1ac3896cacbdc70d01000000000000004ace071bafa32176b1e916d9454f099b9306a2ad9efd86418bd83cd048935fec0100000000000000ac0ef45b1c0f242a4aeb0ef03a9c0d9e3ae2a4bee8cb4c35f0293bac4331e76501000000000000006bed5c36442ab221e4d825e3ef41e30bddd8bb3847153706d69d851e186092c101000000000000001887f7937a8ca4ec67ceaedebfad3d307b10f416219de1ed4f8646409eab730a0100000000000000b3772cbf76b589acf34786c7882bde8fbe77fd6474543ee882fdce09e50892410100000000000000e1c1327187f940cd73d5afb676b4b28399109aa6a6c3868707df1dc3d62a83820100000000000000ee40b85aa515fdbe6e559f815edc7ec1e321e0d152dd54258382ba31b54e447a010000000000000090517dbf339bac4cd01fcad403dd0803cb67a9b15bf024ce038eea2c7f2423040100000000000000c2eb94269c5e5d2ab9a1a300387358679640763b053aca99ba5c1c9083ee717f0100000000000000316bafdefb60951da2738d6c9c2ef1866d139b34b5eab6944d6bae754dd3fb1101000000000000007a92827270cfa82f16145a44f9bdd9ff5038ef1b665dd520a2e61db9749094960100000000000000ebb1834a568ea7653bc66f394937a0aa4f2f617118d2161e2c11c0d7d2febb9d0100000000000000fd2d8b8e265ca440581956a7e36b57eba685631193bc4fe0a2b638887ca5cc0b0100000000000000b6d7ac98d6667fe8f4a186ef12a66b017df05a54e11b45d3f2967cb3d6b6827f0100000000000000e5f305cd6d930d41209036f066a86d3724aad2f388d354ac4979cc763c220a5601000000000000007ef02c62a02f0c18581cfb8ab7c2dcdff34e36a453a3700c568d61fdf9c8a7b4010000000000000045e03689170b9fc027db927a99842e2c13f9fcbd875a74e2b54a2663f3c23dfc010000000000000098a6defcfeb3dfca36ec46eb373734627a2c395cdd2d886046a11788ed6467af01000000000000007a03c321222b7f7b34946e44850798fee20b9112a64e3950398cce19064b8723010000000000000035db4f9ab121f213b695b982f50c47ac04a14c54214e831ed1bbef7b9542310c01000000000000009bbc024bfe4f072b94735afda064dc3c7da2b4bc0c50cfad44722543583a372e0100000000000000496826b538d97906e14d417b48598d7d591a483ab5f4c6786cd0b96239c2f4cf0100000000000000ef27d1d5573e6419ffcc7c4372668105118256b810ab2e2dbb5e7d8280ee94250100000000000000ed3f97f83ee7799c4aeba9f40bd18134c862c1a30875fc1e038cd27bae3a739a01000000000000001e8548bd6c863891e2d9dd01c56e5e28355dc309f568cacce63d6ea61010b8700100000000000000348e8bacc2d40191a6a00e137c745a422ff8fb03148d2ff9cad75efbb7a670140100000000000000bfcc366ce0bfebc76ac157ed0814e2516786e48eb1a3313b5fe37283e9cf2c5a0100000000000000cafe2356af019d8b5f39c949b3dee71dd5356eb2655d819f485d0244e55b9fcd0100000000000000352738b28d7612806e53cb994ae9d0c04c29e66e74142b374149e9362d98070c0100000000000000efb31c5039e45fda750af5d2ea31b3210a407b168adec8f98db1f3dbc4cd94380100000000000000e2d564796e2660ba1bf553a21581f82116f775002a0dc0f26439f54c660fd84d01000000000000003732b4c704a4568eeced68b4347500bf3e5be27d612ff5382aea88100995ce1d0100000000000000bff74b6ff5ccdce9a659408871d486511938422a6e550fe0669ccd739f8010810100000000000000c149ee2bb1be4395301442de3b032c8596afa5588e1125258a172f837e8f0aa0010000000000000070603976fe118b79a53a29d112718649d8061b2a326a2809897ec904687df7a401000000000000002ff9330a8c344ad3adf4d97db014a2d0891d4dd69f5c8369dad3e0b25566173e01000000000000002667b3cc3064ffdc71758c12f2966407cdb1ac70e2cf972d547c688fd59080880100000000000000e01d6eda8094e949bfbb05c819b509a12eb662a414b822f841d9555d58e1ce760100000000000000c3576342cbf99792896ee5329b04ff2eee2fc2bb6d53c5c03d52c8957ee793fb0100000000000000de186294778cc927cb2a24ade9ad165956f3586979f1ac5f3b4a16edd2674339010000000000000043a9a2915f377cd4943f602be38c3bd6ef39e91562c09f18fb672884b4bf8eab010000000000000059dadf17dc0f84c1c334e6a815a04bdfcd0988a3f3bcb713c66ae29e17276cc60100000000000000297dc7cf28b3d40a42c5e8faac876bf7227c670e6e031dd0e0537f4fb70e6fbe01000000000000000909c1eff97923f6bd47e6ec8b5dc163b32d5b675a3b13138d3599e5cc77ab9f0100000000000000a5f788e86ee2d311357b7aa4a128f063fa4ee36958baf10304c10bde7421aa2c0100000000000000290321d793b7dcb12ad148c2438bb60821bd938b7e9164a0c3d0fc82987f8b630100000000000000f7bdbb5c598784ba157940b08b5c5aa967d0f3faf60da28b915650eb39afe47c01000000000000003bb30832d06cdd3e081afef0cf2b7770bfe81dc58081d1886443e4e4547da8a101000000000000002832b59000d2027d2bf57fdb40da04bd8aac1498923397517181cc487a92815201000000000000006c3829859c7b27da7f0528e6281a406cf713971a03fa4dbb4ea973ee33f7f3170100000000000000677358fc648638cbd854d2a009dd39b8508dd3047d0c5f13bb403a64d053ad030100000000000000645b81dc1769e34a815cc5682abd3c3b3ea60afa9705a5ff2908ad354b0f9ca4010000000000000073dce1727ec50c50366378cd389246e19543d900d7e9dab8e323d04cf5b202a701000000000000002ada479e1fde7211de15900ed29035f6f07506cdbadc4c232aab96d62006b9de0100000000000000ee1a56541083b083f1a13b5f8aa4042a098de2cec4c43f3250baaba8f03a52ea0100000000000000e2cc4424464983ada824bbef5aaa8995e80ef1017c15ef3b13902599841637ba01000000000000005246164c02e9e6bfb7a2dbf7ba8a5440a189f8048373678f5b1085f217464c050100000000000000dea69c3badff9b8d7571cb6c538cd099544da7460a19e1b8651c5c530a6dd53c01000000000000001889f1b031fa7d64c4b480a17cd2941be2c02681bca397c93607091f37bf5ee1010000000000000005062bede97a45c6e1c6b593675ee07ce969fae45136cc2b2afc6e705a77f4700100000000000000fd734da3c98d7d56f8b9cc92f389350f3b6de2fb5917d338fee9fd961978e2a30100000000000000dc6e03f650e4304ca8d1598dde8d4faf45891987bfc49ef785ace47c4c0b5573010000000000000084845f99ad8fe89b7aa136c30b71b791015e8801b1d42cbf9841a0b90e723aad0100000000000000ee145c84de0c536f9d5a7472fe520b20c036ebb714d5b4d51ff913b7cd69caae01000000000000008c258b4ca16dfb8e5afde4cf40fecf115307798117b4860475511b3b5d5615840100000000000000ea8c8bec277832ff4f31396f76d6117026cf73407bce46de9ccfd17c686ca11701000000000000000e7bc96895730726225e47e31c742fd44d3936f31ecd32658c694fc11df25224010000000000000016de137c03756dfabe67ce17e70158cf3d0ad00622b4ad02ed5ff16631f1c97901000000000000008873eb6d260a77ad37a779b9d6c87eabde1fb0be17ddfbd8c8bef64200cdf0db01000000000000003f6aeb3ed0d67d71ee11a1c2e1ed66da77abd8cc8c0f4d995d64fe4ec873684701000000000000006375ae0c1bf2b0388e16971715fd68c31ed179f38947531c165f0da2c3fe7667010000000000000012aa455c35356255f9ba286193962f3bc23f7fff565c1995ac21015bd946fe6e0100000000000000447a00c24ddef95382f0fce94aec3aefb0e8f0cb1a635bfb05faa030d63c1130010000000000000047ede3eca5f6c8f0a51f2d36d7d1c236aab07a8b2aaa6ab08c8ccf8d87ce3dd1010000000000000054c3e0cec10a6cade078942e7f79b242fc4a2eb1988eeb0ee6d92c8653a29c960100000000000000a5d172126aadfe80d2b711776674d61df5a1cd1a0129761fb2d2de58ed9d48a001000000000000006b5487e03da258c7c92add43a1b5a99a0b40f8316e758585150877bb6fe88b320100000000000000af470f2d66661e59ad85302877ba095309d859cea3d5086c5c184030c8f5bdf301000000000000009a0ea02dca493accceb975732f31c9d249d4c90ff1ca0bd86cbe00f1728146b401000000000000004485615186ae8ad33aff337594a7f8325d3a50201ee04320fb1dd2eab9643d1601000000000000002b07c366c1ed899a2ac9722b76e092828714a8177368e51ca05ec05c565866b30100000000000000e81206b483fdcf1fe42145f27d1efb8178a57ee24b196285374037da2a53b32301000000000000001ac44a1e32a5aabcb2bd23d6586da06e7d97d49a36cd670acaee574df1b912210100000000000000ff568b8e0dbe74604c6d04b5de6f2df03b343bea074c4495c6a10e511ba473d9010000000000000056563474f25233f9c2297766972922fd80f4dba402594c9ce82af58a9d0f9d07010000000000000085cf5e7395cdb93f9c9ba72075847443f040f22f440f0e868fbb5de594642dee01000000000000003a4bfd825ccd308def4a61bac80c579db42b02ea5f1a0768656a326e83a0dd880100000000000000db106e27c5b78f1a0d19e0abb47b4666c54906c5539c8596b43d36dc885e927a0100000000000000b5e0d0ae74b0ac76c0195fecca9660a241920ba97cdc5a247c7e941ee1f5407c010000000000000040d167daa1c3ef5c6b1982223618d955926af5b7670f6c1e732f4493fcd349ed0100000000000000f33b53556f28f27d250585317cd57a18f37c5d5f2b3c1bd00a0c91ea54f1636f0100000000000000e056900cabddb471de9e1846d7efdddd8b5ad400b02fc54b4402ba725c78bf9a010000000000000080629b67e7b2d6f57e9da3cb29cc8463a65d125039628124784f944b94c29e88010000000000000079f73931b31ce353119fb4063412e844b16cb3eb92e592ebd822a8c2130355480100000000000000b7d7f71a55b0e39262ab8d33e88e308d0ff39a79eae810ac8ec9cb8e37151fde010000000000000030afa9ef79458f844a27a3881655b6eafb90b3912737f1bcddb95e78eb098c1d010000000000000095885aaa49faca9622ac9eab12f2efa509361511039934ffeff93eb948eb517d010000000000000031a46e639e57d1a11119b17f76617a35b3606d206fb5c3e87710f464f7a57de50100000000000000c222ba3fffec09b85f1992db2dcaeaa48205903219789369855e347fd188144b010000000000000012c277c98d0593ec3d0f9d01e8ce08f67813197b67fe96d2be7c5ba6481515df01000000000000009606000000000000000114b0160100591a00000000000000002904050001000000000000002a0d050002000000000000002f16050003000000000000008e1f05000400000000000000ee28050005000000000000004d32050006000000000000009d3b05000700000000000000fd44050008000000000000005c4e05000900000000000000b75705000a00000000000000176105000b00000000000000766a05000c00000000000000d67305000d00000000000000357d05000e00000000000000958605000f00000000000000f58f0500100000000000000055990500110000000000000095a205001200000000000000d8ab050013000000000000000db50500140000000000000024da05001500000000000000aaec05001600000000000000f4f5050017000000000000003bff050018000000000000008b0806001900000000000000992406001a00000000000000f92d06001b000000000000000d4a06001c00000000000000685306001d00000000000000b65c06001e00000000000000f76506001f00000000000000308b060020000000000000007b940600210000000000000025a70600220000000000000033c3060023000000000000007fcc06002400000000000000c3d50600250000000000000011df060026000000000000005ae806002700000000000000a0f106002800000000000000410407002900000000000000880d07002a000000000000001b3c07002b00000000000000764507002c00000000000000357407002d00000000000000239907002e000000000000006fa207002f00000000000000c3ab070030000000000000006abe07003100000000000000bdc7070032000000000000000fd107003300000000000000b2e3070034000000000000000aed07003500000000000000971b080036000000000000009d24080037000000000000009c4008003800000000000000255308003900000000000000735c08003a000000000000000c6f08003b00000000000000048b08003c00000000000000589408003d00000000000000d3c208003e00000000000000e4de08003f000000000000003fe808004000000000000000f7fa08004100000000000000aa0d09004200000000000000153309004300000000000000fc6a090044000000000000003e74090045000000000000009a7d0900460000000000000000a30900470000000000000014db0900480000000000000020130a004900000000000000791c0a004a00000000000000364b0a004b0000000000000043830a004c00000000000000e5950a004d0000000000000045bb0a004e0000000000000059f30a004f000000000000000e060b005000000000000000812b0b005100000000000000dc340b005200000000000000ef500b005300000000000000a3630b005400000000000000b69b0b005500000000000000c7d30b005600000000000000dd0b0c005700000000000000f3430c005800000000000000087c0c00590000000000000052b30c005a0000000000000060eb0c005b00000000000000baf40c005c0000000000000072230d005d00000000000000805b0d005e000000000000007e930d005f000000000000007ccb0d00600000000000000076030e006100000000000000793b0e00620000000000000088730e00630000000000000092ab0e00640000000000000083e30e006500000000000000731b0f00660000000000000079530f006700000000000000748b0f0068000000000000001fc30f006900000000000000d0fa0f006a00000000000000633210006b00000000000000826a10006c0000000000000028a210006d0000000000000005b310006e0000000000000055d810006f000000000000004810110070000000000000006548110071000000000000008e8011007200000000000000bfb811007300000000000000bbf011007400000000000000e828120075000000000000001561120076000000000000003b991200770000000000000058d112007800000000000000770913007900000000000000944113007a00000000000000c07913007b00000000000000e7b113007c000000000000000cea13007d0000000000000067f313007e00000000000000d31814007f000000000000002e22140080000000000000008c2b14008100000000000000545a14008200000000000000ad63140083000000000000000e89140084000000000000006892140085000000000000008dca14008600000000000000b00215008700000000000000d03a15008800000000000000f3721500890000000000000015ab15008a000000000000003be315008b000000000000005d1b16008c00000000000000855316008d00000000000000b18b16008e00000000000000d3c316008f00000000000000e9fb16009000000000000000073417009100000000000000bf4617009200000000000000286c1700930000000000000029a41700940000000000000041dc17009500000000000000591418009600000000000000bf3918009700000000000000704c18009800000000000000948418009900000000000000f28d18009a00000000000000bcbc18009b00000000000000e4f418009c000000000000000b2d19009d000000000000002c6519009e00000000000000896e19009f00000000000000519d1900a00000000000000075d51900a100000000000000920d1a00a200000000000000ec161a00a300000000000000b6451a00a400000000000000887d1a00a50000000000000077b51a00a600000000000000cdbe1a00a70000000000000070ed1a00a80000000000000083091b00a9000000000000004e251b00aa00000000000000fe371b00ab00000000000000065d1b00ac000000000000005f661b00ad00000000000000bd6f1b00ae00000000000000de941b00af00000000000000fecc1b00b0000000000000001f041c00b1000000000000000c321c00b2000000000000002f3b1c00b3000000000000002e721c00b4000000000000000ca01c00b50000000000000044a91c00b60000000000000022e11c00b70000000000000044191d00b8000000000000000c481d00b9000000000000006b511d00ba000000000000008b891d00bb00000000000000a5c11d00bc0000000000000053f91d00bd00000000000000ff301e00be00000000000000054d1e00bf0000000000000002691e00c000000000000000d1a01e00c100000000000000c5d81e00c200000000000000cf101f00c30000000000000083481f00c400000000000000af801f00c500000000000000d0b81f00c600000000000000f0f01f00c7000000000000001b292000c80000000000000039612000c90000000000000054992000ca000000000000004fd12000cb000000000000004c092100cc00000000000000031c2100cd000000000000006d412100ce00000000000000cc4a2100cf0000000000000098792100d000000000000000c4b12100d100000000000000eee92100d20000000000000011222200d300000000000000325a2200d40000000000000055922200d50000000000000075ca2200d6000000000000008f022300d700000000000000b13a2300d800000000000000cd722300d90000000000000078852300da00000000000000ce8e2300db00000000000000bdaa2300dc00000000000000abe22300dd0000000000000012112400de00000000000000501a2400df0000000000000045512400e000000000000000a1882400e1000000000000005fc02400e20000000000000013f82400e30000000000000007302500e40000000000000013682500e500000000000000c37a2500e600000000000000a8962500e700000000000000fb9f2500e80000000000000000d82500e90000000000000019102600ea000000000000002b482600eb0000000000000028802600ec000000000000002eb82600ed0000000000000044d42600ee0000000000000058f02600ef00000000000000b3f92600f00000000000000065282700f10000000000000057602700f20000000000000064982700f3000000000000008dd02700f400000000000000a7ec2700f500000000000000b9082800f600000000000000e0402800f700000000000000f6782800f80000000000000019b12800f90000000000000040e92800fa000000000000006c212900fb00000000000000a0592900fc00000000000000107f2900fd00000000000000bc912900fe00000000000000eac92900ff00000000000000fd012a000001000000000000ff1d2a0001010000000000000c3a2a0002010000000000002b722a00030100000000000005aa2a000401000000000000fce12a0005010000000000004ceb2a000601000000000000e0fd2a000701000000000000c3192b000801000000000000be512b0009010000000000000a772b000a01000000000000ae892b000b01000000000000b0a52b000c01000000000000abc12b000d010000000000009bf92b000e0100000000000093312c000f0100000000000087692c00100100000000000075a12c00110100000000000074d92c00120100000000000089112d00130100000000000099492d001401000000000000b0812d001501000000000000c3b92d001601000000000000d1f12d001701000000000000d6292e001801000000000000e9612e001901000000000000ea992e001a01000000000000efd12e001b01000000000000f8092f001c01000000000000f0412f001d01000000000000e9792f001e0100000000000036832f001f01000000000000b2b12f002001000000000000a9cd2f00210100000000000094e92f0022010000000000007121300023010000000000003b5930002401000000000000089130002501000000000000599a30002601000000000000f6c830002701000000000000e30031002801000000000000c03831002901000000000000a17031002a01000000000000f27931002b010000000000007fa831002c010000000000005de031002d01000000000000aae931002e01000000000000441832002f01000000000000295032003001000000000000fe8732003101000000000000aa9a3200320100000000000010c0320033010000000000003af8320034010000000000005f303300350100000000000059683300360100000000000078a0330037010000000000009bd833003801000000000000cb1034003901000000000000f44834003a010000000000001c8134003b0100000000000044b934003c0100000000000055f134003d010000000000009dfa34003e01000000000000302935003f01000000000000c6573500400100000000000023613500410100000000000053993500420100000000000080d135004301000000000000560036004401000000000000b10936004501000000000000ce4136004601000000000000037a3600470100000000000031b2360048010000000000005fea360049010000000000007b2237004a01000000000000995a37004b01000000000000f56337004c01000000000000c69237004d01000000000000feca37004e01000000000000340338004f01000000000000683b380050010000000000009e7338005101000000000000c9ab38005201000000000000dcc7380053010000000000003cd138005401000000000000f8e338005501000000000000b0f6380056010000000000001c1c390057010000000000007a2539005801000000000000da2e39005901000000000000525439005a01000000000000878c39005b01000000000000bbc439005c01000000000000f3fc39005d0100000000000028353a005e010000000000005f6d3a005f0100000000000098a53a006001000000000000cedd3a0061010000000000000c163b006201000000000000404e3b00630100000000000019853b006401000000000000608e3b006501000000000000b8973b0066010000000000000fa13b006701000000000000a7b33b006801000000000000fabc3b00690100000000000049c63b006a010000000000009ccf3b006b01000000000000eed83b006c01000000000000c1f43b006d0100000000000014fe3b006e0100000000000066073c006f01000000000000b7103c0070010000000000009e2c3c007101000000000000ee353c00720100000000000094483c007301000000000000e0513c0074010000000000007c643c0075010000000000001d773c0076010000000000004b9c3c00770100000000000010d43c007801000000000000d80b3d0079010000000000001a153d007a0100000000000053433d007b01000000000000ea553d007c01000000000000225f3d007d0100000000000072683d007e01000000000000b4713d007f01000000000000fb7a3d0080010000000000007a8d3d008101000000000000b8963d00820100000000000006a03d00830100000000000088b23d008401000000000000c8bb3d0085010000000000000bc53d0086010000000000001dea3d008701000000000000e9053e008801000000000000b5213e0089010000000000003b343e008a01000000000000843d3e008b010000000000005e593e008c010000000000001f913e008d0100000000000065c83e008e010000000000006bed3e008f01000000000000a9f63e009001000000000000f6ff3e009101000000000000c1373f0092010000000000005c4a3f0093010000000000003b663f009401000000000000856f3f009501000000000000cf783f0096010000000000003ea73f009701000000000000ccde3f0098010000000000008516400099010000000000001e2940009a010000000000006e4e40009b01000000000000c35740009c010000000000009b8640009d01000000000000cebe40009e0100000000000001f740009f01000000000000372f4100a00100000000000097384100a10100000000000070674100a201000000000000a99f4100a30100000000000065b24100a401000000000000ddd74100a50100000000000096ea4100a6010000000000000b104200a70100000000000044484200a8010000000000009c514200a9010000000000003b804200aa0100000000000051b84200ab010000000000006fd44200ac010000000000005ef04200ad01000000000000b9f94200ae010000000000006a284300af0100000000000078604300b00100000000000077984300b101000000000000abd04300b20100000000000064e34300b30100000000000072ff4300b401000000000000d2084400b50100000000000008414400b6010000000000002e794400b7010000000000005eb14400b8010000000000007de94400b9010000000000009e214500ba010000000000005d344500bb01000000000000d0594500bc0100000000000006924500bd010000000000001aca4500be010000000000004a024600bf01000000000000603a4600c00100000000000084724600c101000000000000abaa4600c20100000000000047bd4600c3010000000000009ec64600c401000000000000a0e24600c5010000000000005df54600c601000000000000bf1a4700c701000000000000d1524700c8010000000000007f814700c901000000000000dd8a4700ca0100000000000039944700cb01000000000000f2c24700cc0100000000000010fb4700cd01000000000000d5294800ce010000000000002c334800cf01000000000000f9614800d001000000000000596b4800d10100000000000078874800d2010000000000008da34800d301000000000000aadb4800d401000000000000c6134900d501000000000000eb4b4900d601000000000000e7834900d701000000000000f9bb4900d801000000000000b6ce4900d9010000000000001bf44900da010000000000004a2c4a00db0100000000000066644a00dc010000000000002f7d4a00dd0100000000000019994a00de01000000000000c0ab4a00df01000000000000aec74a00e001000000000000fed04a00e101000000000000bbff4a00e20100000000000019094b00e301000000000000902e4b00e40100000000000041414b00e50100000000000010704b00e6010000000000006e794b00e7010000000000002b8c4b00e80100000000000094b14b00e901000000000000a4e94b00ea01000000000000d4214c00eb01000000000000d7594c00ec01000000000000e8914c00ed0100000000000004ae4c00ee01000000000000ebc94c00ef0100000000000014024d00f001000000000000fe394d00f1010000000000000a724d00f201000000000000667b4d00f30100000000000013aa4d00f40100000000000031c64d00f50100000000000037e24d00f6010000000000004afe4d00f7010000000000002c1a4e00f801000000000000ea2c4e00f90100000000000049364e00fa010000000000004e524e00fb01000000000000628a4e00fc0100000000000079a64e00fd010000000000001ab94e00fe0100000000000079c24e00ff0100000000000094de4e000002000000000000aafa4e00010200000000000059324f00020200000000000004654f000302000000000000ff764f0004020000000000000d804f0005020000000000007e924f000602000000000000c29b4f000702000000000000f4d34f000802000000000000160c50000902000000000000504450000a02000000000000877c50000b02000000000000b6b450000c02000000000000e7ec50000d0200000000000046f650000e02000000000000b61b51000f020000000000001625510010020000000000004f5d510011020000000000000f7051001202000000000000889551001302000000000000b5cd5100140200000000000014d751001502000000000000e605520016020000000000001f3e5200170200000000000053765200180200000000000089ae52001902000000000000e8b752001a02000000000000b7e652001b0200000000000074f952001c02000000000000e81e53001d020000000000001a5753001e02000000000000558f53001f020000000000008ac753002002000000000000b9ff53002102000000000000f13754002202000000000000277054002302000000000000418c54002402000000000000d1a354002502000000000000d9c8540026020000000000007edb54002702000000000000b81355002802000000000000e34b55002902000000000000c58355002a02000000000000d6bb55002b0200000000000007f455002c02000000000000c30656002d020000000000002c2c56002e020000000000005d6456002f020000000000008f9c56003002000000000000c9d456003102000000000000070d570032020000000000004345570033020000000000007a7d570034020000000000007d99570035020000000000009ab557003602000000000000b4ed57003702000000000000f225580038020000000000002f5e580039020000000000006b9658003a02000000000000a6ce58003b02000000000000e30659003c02000000000000183f59003d02000000000000517759003e02000000000000ad8059003f020000000000008baf59004002000000000000e9b859004102000000000000c5e75900420200000000000002205a0043020000000000003f585a0044020000000000007c905a004502000000000000bcc85a004602000000000000f1005b004702000000000000111d5b00480200000000000030395b0049020000000000006f715b004a02000000000000aca95b004b02000000000000e9e15b004c02000000000000251a5c004d0200000000000060525c004e020000000000009f8a5c004f02000000000000dbc25c00500200000000000019fb5c00510200000000000058335d005202000000000000956b5d005302000000000000c7a35d005402000000000000f7db5d00550200000000000031145e0056020000000000006f4c5e005702000000000000a7845e005802000000000000e0bc5e0059020000000000003fc65e005a020000000000001cf55e005b02000000000000582d5f005c0200000000000093655f005d02000000000000cf9d5f005e0200000000000005d65f005f02000000000000440e600060020000000000008346600061020000000000006a7e6000620200000000000056b46000630200000000000000ec60006402000000000000a72361006502000000000000e25b61006602000000000000f293610067020000000000001bcc61006802000000000000dade61006902000000000000590462006a02000000000000963c62006b02000000000000cc7462006c020000000000008c8762006d02000000000000ffac62006e020000000000003ae562006f02000000000000731d63007002000000000000b05563007102000000000000e98d630072020000000000001dc6630073020000000000005dfe63007402000000000000993664007502000000000000d86e6400760200000000000017a76400770200000000000051df640078020000000000008a1765007902000000000000c34f65007a02000000000000018865007b020000000000003ec065007c020000000000007af865007d02000000000000b63066007e02000000000000f06866007f0200000000000004a16600800200000000000041d966008102000000000000711167008202000000000000ac4967008302000000000000de8167008402000000000000f8b967008502000000000000b8cc6700860200000000000035f2670087020000000000006e2a680088020000000000001c3d680089020000000000007f6268008a02000000000000ba9a68008b02000000000000f3d268008c02000000000000310b69008d02000000000000704369008e02000000000000ae7b69008f02000000000000eeb3690090020000000000002bec6900910200000000000065246a009202000000000000a45c6a009302000000000000e0946a0094020000000000001dcd6a009502000000000000dbdf6a00960200000000000059056b00970200000000000018186b009802000000000000923d6b009902000000000000b0756b009a02000000000000e6ad6b009b0200000000000021e66b009c020000000000005e1e6c009d0200000000000096566c009e02000000000000d28e6c009f020000000000000ac76c00a00200000000000047ff6c00a10200000000000077376d00a202000000000000876f6d00a3020000000000000fa76d00a40200000000000059dc6d00a50200000000000022146e00a602000000000000464c6e00a70200000000000071846e00a802000000000000eea96e00a902000000000000aabc6e00aa0200000000000085eb6e00ab02000000000000e4f46e00ac020000000000001c2d6f00ad02000000000000da3f6f00ae0200000000000053656f00af020000000000008c9d6f00b002000000000000c4d56f00b102000000000000d90d7000b202000000000000d7457000b302000000000000f67d7000b402000000000000deb57000b502000000000000b2ed7000b602000000000000a9257100b702000000000000975d7100b802000000000000338c7100b9020000000000007e957100ba0200000000000068b17100bb0200000000000050cd7100bc020000000000001c057200bd02000000000000610e7200be02000000000000c13c7200bf020000000000006b747200c0020000000000005aac7200c10200000000000032e47200c202000000000000dcf67200c302000000000000321c7300c4020000000000002b547300c5020000000000007d8b7300c60200000000000020c37300c702000000000000cefa7300c8020000000000003c327400c9020000000000009b697400ca02000000000000eda07400cb0200000000000056d87400cc0200000000000090107500cd02000000000000ad2c7500ce020000000000000b367500cf02000000000000c7487500d002000000000000fe807500d10200000000000039b97500d20200000000000073f17500d30200000000000030047600d4020000000000004b207600d502000000000000a9297600d60200000000000006337600d702000000000000d3617600d80200000000000090747600d902000000000000089a7600da020000000000002fd27600db020000000000001a0a7700dc0200000000000022427700dd02000000000000007a7700de02000000000000d2b17700df02000000000000f8e97700e0020000000000002b227800e102000000000000635a7800e202000000000000a0927800e302000000000000daca7800e40200000000000011037900e502000000000000483b7900e60200000000000085737900e702000000000000b1ab7900e802000000000000dae37900e902000000000000121c7a00ea0200000000000049547a00eb02000000000000878c7a00ec02000000000000bfc47a00ed02000000000000edfc7a00ee0200000000000026357b00ef02000000000000606d7b00f0020000000000009da57b00f102000000000000cddd7b00f20200000000000006167c00f3020000000000003f4e7c00f402000000000000fb607c00f50200000000000077867c00f602000000000000b4be7c00f70200000000000014c87c00f802000000000000e0f67c00f9020000000000001b2f7d00fa0200000000000058677d00fb02000000000000959f7d00fc02000000000000d2d77d00fd02000000000000ec0f7e00fe0200000000000025487e00ff020000000000005f807e0000030000000000009ab87e000103000000000000d3f07e000203000000000000ee0c7f0003030000000000000a297f000403000000000000c53b7f00050300000000000043617f0006030000000000007b997f000703000000000000b9d17f000803000000000000f20980000903000000000000284280000a030000000000005e7a80000b0300000000000099b280000c03000000000000d2ea80000d03000000000000082381000e030000000000003e5b81000f030000000000007b9381001003000000000000b8cb81001103000000000000f30382001203000000000000313c82001303000000000000697482001403000000000000a6ac82001503000000000000c4c882001603000000000000e0e482001703000000000000ff00830018030000000000001e1d83001903000000000000dd2f83001a030000000000005b5583001b03000000000000988d83001c03000000000000d5c583001d0300000000000010fe83001e030000000000004e3684001f03000000000000826e84002003000000000000bba684002103000000000000f5de840022030000000000006f0485002303000000000000cc0d850024030000000000002c1785002503000000000000ea2985002603000000000000634f850027030000000000007e6b850028030000000000009a878500290300000000000017ad85002a03000000000000d2bf85002b0300000000000031c985002c030000000000000ef885002d030000000000004a3086002e03000000000000866886002f03000000000000bea086003003000000000000f2d8860031030000000000002a1187003203000000000000871a870033030000000000006449870034030000000000001d5c87003503000000000000998187003603000000000000cfb987003703000000000000eed5870038030000000000000cf2870039030000000000004a2a88003a03000000000000a83388003b03000000000000826288003c03000000000000b69a88003d03000000000000efd288003e030000000000002d0b89003f030000000000004d27890040030000000000006c4389004103000000000000ab7b89004203000000000000eab38900430300000000000028ec8900440300000000000068248a004503000000000000a05c8a004603000000000000b4948a004703000000000000f4cc8a00480300000000000030058b0049030000000000006f3d8b004a030000000000008e598b004b03000000000000ae758b004c03000000000000ecad8b004d0300000000000028e68b004e03000000000000331e8c004f030000000000004f568c0050030000000000008e8e8c005103000000000000c7c68c00520300000000000005ff8c00530300000000000041378d005403000000000000746f8d005503000000000000a4a78d00560300000000000064ba8d005703000000000000e4df8d0058030000000000000a188e00590300000000000023508e005a0300000000000027888e005b03000000000000d89a8e005c0300000000000043c08e005d0300000000000082f88e005e03000000000000c0308f005f03000000000000ff688f0060030000000000001ba18f00610300000000000059d98f006203000000000000981190006303000000000000d64990006403000000000000f56590006503000000000000158290006603000000000000758b9000670300000000000053ba9000680300000000000092f290006903000000000000d22a91006a03000000000000106391006b03000000000000489b91006c03000000000000a2a491006d030000000000001bd391006e03000000000000530992006f03000000000000d32e9200700300000000000090419200710300000000000074799200720300000000000094b19200730300000000000072e092007403000000000000d2e992007503000000000000b21893007603000000000000122293007703000000000000445a93007803000000000000739293007903000000000000f3b793007a03000000000000abca93007b030000000000005ddd93007c03000000000000c40294007d03000000000000e13a94007e03000000000000217394007f0300000000000059ab9400800300000000000090e394008103000000000000c31b95008203000000000000ea53950083030000000000009866950084030000000000000b8c9500850300000000000046c49500860300000000000057fc950087030000000000008f3496008803000000000000cf6c960089030000000000000ba596008a0300000000000045dd96008b03000000000000a3e696008c03000000000000801597008d03000000000000bc4d97008e03000000000000f78597008f030000000000002ebe9700900300000000000030f6970091030000000000005a2e98009203000000000000956698009303000000000000d49e9800940300000000000014d7980095030000000000003b0f990096030000000000006c4799009703000000000000ac7f9900980300000000000078b79900990300000000000026ca99009a030000000000007cef99009b0300000000000085279a009c03000000000000be5f9a009d03000000000000fd979a009e03000000000000b9aa9a009f0300000000000022d09a00a0030000000000003dec9a00a10300000000000058089b00a20300000000000074249b00a3030000000000008b409b00a403000000000000e4499b00a50300000000000038789b00a60300000000000076819b00a703000000000000e4af9b00a803000000000000b7e79b00a903000000000000731f9c00aa03000000000000a6289c00ab030000000000002f3b9c00ac0300000000000012579c00ad030000000000005d609c00ae03000000000000cb8e9c00af0300000000000057a19c00b00300000000000086c69c00b1030000000000005afe9c00b20300000000000002369d00b303000000000000bc6d9d00b40300000000000099a59d00b5030000000000004edd9d00b603000000000000db149e00b703000000000000e0399e00b803000000000000724c9e00b9030000000000002a849e00ba03000000000000ee9f9e00bb03000000000000d1bb9e00bc030000000000007df39e00bd03000000000000f02a9f00be030000000000006a629f00bf03000000000000ff999f00c0030000000000002ed19f00c1030000000000004608a000c203000000000000893fa000c303000000000000a476a000c403000000000000dfada000c5030000000000001cb7a000c6030000000000003ce5a000c703000000000000921ca100c8030000000000008c53a100c903000000000000988aa100ca0300000000000010a6a100cb03000000000000a0c1a100cc03000000000000e5d3a100cd0300000000000072f8a100ce030000000000007c2fa200cf030000000000003766a200d003000000000000389da200d10300000000000056a6a200d203000000000000a9b8a200d303000000000000cac1a200d4030000000000001ad4a200d503000000000000200ba300d6030000000000002714a300d703000000000000bc41a300d8030000000000006778a300d9030000000000000aafa300da0300000000000046dca300db0300000000000065e5a300dc03000000000000a81ba400dd03000000000000d72da400de030000000000002352a400df030000000000006288a400e003000000000000c1bea400e103000000000000f8f4a400e203000000000000212ba500e3030000000000003f61a500e403000000000000656aa500e503000000000000e497a500e60300000000000040cea500e703000000000000b204a600e803000000000000fc3aa600e9030000000000009471a600ea0300000000000037a8a600eb030000000000001adfa600ec03000000000000ea0ca700ed030000000000000e16a700ee030000000000005228a700ef030000000000007d31a700f003000000000000034da700f1030000000000002084a700f2030000000000004a8da700f303000000000000a99fa700f403000000000000f6baa700f503000000000000c1f1a700f603000000000000be28a800f703000000000000a65fa800f8030000000000003e7ba800f903000000000000c296a800fa03000000000000c3cda800fb03000000000000d504a900fc03000000000000f83ba900fd030000000000005f73a900fe03000000000000ceaaa900ff030000000000000bb4a900000400000000000005e2a90001040000000000005e19aa000204000000000000c12baa0003040000000000008e50aa000404000000000000fd62aa0005040000000000008175aa000604000000000000fa87aa0007040000000000002f91aa0008040000000000005dbfaa000904000000000000a3c8aa000a04000000000000e5f6aa000b04000000000000e41bab000c040000000000005b2eab000d04000000000000e765ab000e040000000000004c9dab000f0400000000000085a6ab001004000000000000b8d4ab001104000000000000fdddab0012040000000000003b0cac001304000000000000d043ac001404000000000000827bac001504000000000000b8a0ac0016040000000000005bb3ac00170400000000000029ebac0018040000000000006af4ac0019040000000000000e07ad001a04000000000000f422ad001b04000000000000432cad001c040000000000009935ad001d04000000000000ee3ead001e04000000000000d55aad001f04000000000000bd76ad002004000000000000a592ad00210400000000000076caad002204000000000000f6dcad002304000000000000e001ae0024040000000000004f39ae0025040000000000001371ae0026040000000000005f7aae002704000000000000fc8cae002804000000000000cda8ae0029040000000000005ebbae002a0400000000000081e0ae002b040000000000004f18af002c040000000000001e50af002d04000000000000e687af002e04000000000000a0bfaf002f040000000000005ff7af003004000000000000042fb0003104000000000000da66b00032040000000000009a9eb000330400000000000063d6b0003404000000000000300eb1003504000000000000da45b10036040000000000009a7db100370400000000000050b5b100380400000000000029edb1003904000000000000971bb2003a04000000000000e024b2003b04000000000000995cb2003c040000000000006694b2003d0400000000000048b0b2003e040000000000002eccb2003f0400000000000075d5b200400400000000000008e8b2004104000000000000e703b3004204000000000000ce1fb3004304000000000000b63bb30044040000000000000d45b30045040000000000009f57b30046040000000000007573b3004704000000000000c67cb30048040000000000003aabb3004904000000000000e4e2b3004a04000000000000651ab4004b04000000000000f951b4004c040000000000009389b4004d0400000000000025c1b4004e04000000000000f6f8b4004f04000000000000241eb5005004000000000000b130b50051040000000000007068b500520400000000000040a0b5005304000000000000ecd7b50054040000000000000510b60055040000000000003e48b60056040000000000007a80b6005704000000000000b7b8b6005804000000000000f3f0b60059040000000000002f29b7005a04000000000000ae4eb7005b040000000000006861b7005c04000000000000a599b7005d04000000000000ded1b7005e040000000000005cf7b7005f04000000000000160ab80060040000000000005042b8006104000000000000964bb8006204000000000000687ab8006304000000000000a6b2b800640400000000000066c5b8006504000000000000e5eab80066040000000000000423b90067040000000000003f5bb90068040000000000005d77b90069040000000000007b93b9006a04000000000000b7cbb9006b04000000000000ef03ba006c04000000000000133cba006d040000000000003358ba006e040000000000005174ba006f0400000000000042acba0070040000000000006ce4ba007104000000000000a21cbb007204000000000000e054bb007304000000000000405ebb0074040000000000001b8dbb0075040000000000002ec5bb0076040000000000006dfdbb007704000000000000a435bc007804000000000000d06dbc0079040000000000000ca6bc007a040000000000004adebc007b040000000000008716bd007c04000000000000c34ebd007d04000000000000fc86bd007e040000000000003bbfbd007f040000000000007af7bd008004000000000000d500be008104000000000000b32fbe008204000000000000ea67be00830400000000000027a0be00840400000000000065d8be008504000000000000a410bf008604000000000000dd48bf0087040000000000003b52bf0088040000000000001881bf0089040000000000008fb8bf008a04000000000000cbc1bf008b04000000000000f8efbf008c040000000000007602c0008d040000000000008327c0008e04000000000000075fc0008f040000000000005d96c000900400000000000009cec00091040000000000003b06c10092040000000000002d3ec10093040000000000006476c10094040000000000007aaec1009504000000000000b9e6c1009604000000000000ef1ec20097040000000000002c57c2009804000000000000698fc20099040000000000008cc7c2009a040000000000009effc2009b04000000000000da37c3009c04000000000000ee6fc3009d0400000000000029a8c3009e0400000000000067e0c3009f04000000000000240fc400a0040000000000008218c400a104000000000000b150c400a204000000000000c088c400a304000000000000d2c0c400a404000000000000f6f8c400a5040000000000001231c500a604000000000000d143c500a7040000000000004d69c500a80400000000000089a1c500a904000000000000c4d9c500aa040000000000000112c600ab040000000000005c1bc600ac040000000000003a4ac600ad040000000000007482c600ae04000000000000abbac600af04000000000000e4f2c600b0040000000000001d2bc700b1040000000000002e47c700b2040000000000004863c700b304000000000000687fc700b404000000000000829bc700b5040000000000009bd3c700b604000000000000d80bc800b7040000000000001144c800b804000000000000704dc800b904000000000000d056c800ba040000000000004e7cc800bb0400000000000080b4c800bc04000000000000b1ecc800bd040000000000009808c900be040000000000008d24c900bf04000000000000c75cc900c004000000000000df94c900c104000000000000feb0c900c2040000000000001dcdc900c3040000000000004605ca00c4040000000000006e3dca00c5040000000000009e75ca00c604000000000000029bca00c704000000000000aeadca00c8040000000000008adcca00c904000000000000eae5ca00ca04000000000000251ecb00cb04000000000000fa55cb00cc04000000000000778ccb00cd04000000000000eec3cb00ce0400000000000005fccb00cf040000000000004134cc00d004000000000000716ccc00d10400000000000096a4cc00d204000000000000d3dccc00d30400000000000086efcc00d4040000000000000215cd00d504000000000000ac27cd00d604000000000000264dcd00d7040000000000008656cd00d8040000000000006385cd00d9040000000000003bb4cd00da0400000000000099bdcd00db04000000000000d8f5cd00dc04000000000000172ece00dd040000000000005366ce00de04000000000000909ece00df04000000000000b7d6ce00e00400000000000068e9ce00e104000000000000cc0ecf00e2040000000000000547cf00e304000000000000427fcf00e40400000000000079b7cf00e504000000000000b8efcf00e604000000000000f427d000e7040000000000000b60d000e8040000000000004698d000e90400000000000083d0d000ea04000000000000c008d100eb04000000000000fa40d100ec040000000000003679d100ed0400000000000073b1d100ee0400000000000087cdd100ef04000000000000a6e9d100f004000000000000e521d200f1040000000000001e5ad200f2040000000000005692d200f30400000000000092cad200f40400000000000052ddd200f504000000000000ce02d300f604000000000000e13ad300f7040000000000003444d300f804000000000000dc56d300f904000000000000ef72d300fa040000000000004d7cd300fb0400000000000024abd300fc04000000000000a1d0d300fd040000000000005be3d300fe04000000000000901bd400ff04000000000000ce53d40000050000000000000a8cd40001050000000000003ac4d40002050000000000004ae0d400030500000000000069fcd4000405000000000000a134d50005050000000000006047d5000605000000000000de6cd50007050000000000001ba5d500080500000000000058ddd50009050000000000009415d6000a05000000000000d24dd6000b05000000000000f085d6000c050000000000001ebed6000d05000000000000fbecd6000e050000000000005bf6d6000f050000000000008b2ed7001005000000000000c566d7001105000000000000029fd700120500000000000036d7d70013050000000000006f0fd80014050000000000009f47d8001505000000000000c97fd8001605000000000000e4b7d80017050000000000001ff0d80018050000000000005928d90019050000000000009560d9001a050000000000005473d9001b05000000000000718fd9001c05000000000000d198d9001d0500000000000031a2d9001e050000000000000fd1d9001f05000000000000cfe3d90020050000000000004f09da0021050000000000008941da002205000000000000b979da002305000000000000edb1da00240500000000000047bbda00250500000000000054d7da00260500000000000007eada00270500000000000067f3da0028050000000000003a22db0029050000000000005e5adb002a050000000000007892db002b05000000000000b0cadb002c05000000000000e702dc002d05000000000000183bdc002e050000000000007644dc002f050000000000002773dc003005000000000000dd85dc0031050000000000004dabdc00320500000000000086e3dc003305000000000000bb1bdd003405000000000000944add003505000000000000f453dd003605000000000000ad66dd003705000000000000298cdd00380500000000000060c4dd0039050000000000009cfcdd003a05000000000000fa05de003b05000000000000d734de003c05000000000000b56cde003d0500000000000045a4de003e05000000000000a1d2de003f05000000000000e4dbde0040050000000000002fe5de0041050000000000003c05df004205000000000000d81adf004305000000000000d636df0044050000000000002840df004505000000000000d252df004605000000000000cf6edf004705000000000000a9a6df004805000000000000eeafdf00490500000000000047b9df004a05000000000000b1dedf004b050000000000000de8df004c050000000000006e0de0004d05000000000000cb16e0004e05000000000000d84ee0004f050000000000007886e0005005000000000000b3bee0005105000000000000c3f6e0005205000000000000fe2ee10053050000000000002c67e1005405000000000000e679e1005505000000000000a68ce1005605000000000000629fe10057050000000000009bd7e10058050000000000005806e2005905000000000000b10fe2005a05000000000000e647e2005b050000000000001880e2005c050000000000007689e2005d050000000000004cb8e2005e050000000000007ef0e2005f05000000000000b228e3006005000000000000e760e30061050000000000002499e300620500000000000060d1e30063050000000000009c09e4006405000000000000d441e4006505000000000000334be40066050000000000000a7ae4006705000000000000e0a8e400680500000000000040b2e40069050000000000006feae4006a05000000000000a022e5006b05000000000000de5ae5006c050000000000001a93e5006d0500000000000055cbe5006e050000000000000bdee5006f050000000000008203e6007005000000000000db0ce6007105000000000000b53be6007205000000000000f073e60073050000000000004e7de60074050000000000002cace60075050000000000008cb5e60076050000000000006be4e6007705000000000000a51ce7007805000000000000dc54e7007905000000000000168de7007a050000000000004ac5e7007b0500000000000057fde7007c050000000000009335e8007d05000000000000d06de8007e050000000000002e77e8007f0500000000000004a6e80080050000000000003fdee80081050000000000007b16e9008205000000000000b74ee9008305000000000000e886e900840500000000000015bfe900850500000000000046f7e9008605000000000000602fea0087050000000000000442ea0088050000000000005a4bea0089050000000000006a67ea008a05000000000000889fea008b05000000000000daa8ea008c0500000000000079d7ea008d050000000000009f0feb008e050000000000005c22eb008f050000000000001c35eb009005000000000000d847eb0091050000000000000e80eb0092050000000000003eb8eb00930500000000000076f0eb009405000000000000ad28ec009505000000000000e660ec0096050000000000002399ec00970500000000000060d1ec0098050000000000009e09ed0099050000000000005e1ced009a05000000000000da41ed009b050000000000009654ed009c050000000000005567ed009d05000000000000127aed009e050000000000004ab2ed009f0500000000000082eaed00a005000000000000e1f3ed00a105000000000000bd22ee00a205000000000000fa5aee00a3050000000000003493ee00a405000000000000929cee00a50500000000000070cbee00a605000000000000ac03ef00a705000000000000eb3bef00a805000000000000fb73ef00a905000000000000feabef00aa05000000000000bebeef00ab0500000000000038e4ef00ac050000000000004e1cf000ad050000000000008854f000ae05000000000000958cf000af05000000000000c5c4f000b005000000000000fffcf000b1050000000000002e35f100b205000000000000de47f100b305000000000000466df100b4050000000000005da5f100b50500000000000094ddf100b605000000000000c115f200b705000000000000fa4df200b8050000000000002d86f200b90500000000000067bef200ba05000000000000a0f6f200bb05000000000000b52ef300bc050000000000003254f300bd05000000000000ef66f300be05000000000000239ff300bf0500000000000032d7f300c005000000000000dde9f300c1050000000000001e0ff400c2050000000000004f47f400c3050000000000008d7ff400c4050000000000006bb7f400c5050000000000009beff400c605000000000000c927f500c705000000000000ff5ff500c8050000000000003198f500c90500000000000063d0f500ca050000000000008908f600cb05000000000000c240f600cc050000000000001d66f600cd05000000000000ca78f600ce05000000000000fbb0f600cf0500000000000031e9f600d0050000000000006021f700d1050000000000009e59f700d205000000000000d891f700d3050000000000000acaf700d4050000000000004402f800d5050000000000007b3af800d605000000000000fa5ff800d705000000000000b672f800d805000000000000ebaaf800d90500000000000048b4f800da0500000000000024e3f800db05000000000000601bf900dc050000000000009753f900dd05000000000000ac8bf900de05000000000000e3c3f900df050000000000001cfcf900e0050000000000005934fa00e105000000000000936cfa00e205000000000000a7a4fa00e305000000000000dfdcfa00e4050000000000001a15fb00e5050000000000004d4dfb00e605000000000000a656fb00e7050000000000007b85fb00e805000000000000a2bdfb00e905000000000000dff5fb00ea050000000000005f1bfc00eb050000000000001e2efc00ec050000000000005266fc00ed050000000000000c79fc00ee05000000000000cc8bfc00ef050000000000002995fc00f005000000000000899efc00f105000000000000c1d6fc00f2050000000000007ee9fc00f3050000000000003dfcfc00f405000000000000f00efd00f5050000000000004c18fd00f6050000000000001a47fd00f7050000000000004a7ffd00f80500000000000086b7fd00f905000000000000beeffd00fa050000000000001ef9fd00fb05000000000000ee27fe00fc050000000000000944fe00fd050000000000002560fe00fe05000000000000307cfe00ff050000000000002798fe000006000000000000e2aafe00010600000000000042b4fe0002060000000000005dd0fe0003060000000000009a08ff000406000000000000ca40ff000506000000000000244aff000606000000000000f278ff0007060000000000002db1ff00080600000000000063e9ff000906000000000000712100010a06000000000000313400010b060000000000004c5000010c06000000000000ac5900010d06000000000000b49100010e06000000000000e3c900010f06000000000000f60101011006000000000000103a010111060000000000003056010112060000000000004c720101130600000000000084aa01011406000000000000c2e201011506000000000000fe1a02011606000000000000235302011706000000000000618b020118060000000000009dc3020119060000000000005ad602011a06000000000000badf02011b06000000000000d7fb02011c06000000000000370503011d06000000000000f71703011e06000000000000133403011f06000000000000516c03012006000000000000107f030121060000000000008da403012206000000000000cadc03012306000000000000f81404012406000000000000324d0401250600000000000070850401260600000000000080bd040127060000000000008bf504012806000000000000842d05012906000000000000d73605012a060000000000008b6505012b06000000000000c19d05012c06000000000000f9d505012d060000000000002e0e06012e06000000000000664606012f060000000000009d7e06013006000000000000d7b60601310600000000000011ef06013206000000000000442707013306000000000000725f07013406000000000000af9707013506000000000000e7cf070136060000000000001f0808013706000000000000372408013806000000000000544008013906000000000000917808013a06000000000000c8b008013b0600000000000001e908013c060000000000000f2109013d06000000000000085909013e06000000000000a99009013f06000000000000b5c809014006000000000000c5000a014106000000000000d2380a01420600000000000006710a014306000000000000f5a80a0144060000000000002be10a01450600000000000012190b01460600000000000048510b01470600000000000086890b014806000000000000e5920b014906000000000000c4c10b014a0600000000000000fa0b014b060000000000001d320c014c060000000000000b6a0c014d06000000000000c5980c014e060000000000001aa20c014f06000000000000d7d00c0150060000000000002dda0c01510600000000000069120d015206000000000000a44a0d015306000000000000df820d0154060000000000001dbb0d01550600000000000055f30d015606000000000000852b0e01570600000000000083630e015806000000000000c39b0e0159060000000000001ba50e015a060000000000007bae0e015b06000000000000f7d30e015c06000000000000afe60e015d06000000000000290c0f015e0600000000000065440f015f06000000000000db690f016006000000000000977c0f016106000000000000d2b40f016206000000000000ecec0f016306000000000000062510016406000000000000ea5c10016506000000000000f49410016606000000000000ffcc100167060000000000005ed610016806000000000000d6fb10016906000000000000340511016a06000000000000613d11016b060000000000008b7511016c06000000000000919111016d06000000000000abad11016e06000000000000e0e511016f060000000000001d1e120170060000000000005556120171060000000000006c8e120172060000000000008aaa12017306000000000000a3c612017406000000000000bdfe12017506000000000000f83613017606000000000000126f130177060000000000006c9413017806000000000000c99d1301790600000000000029a713017a060000000000005bdf13017b06000000000000b8e813017c0600000000000016f213017d060000000000008d1714017e06000000000000ec2014017f06000000000000a43314018006000000000000bc4f14018106000000000000d58714018206000000000000919a1401830600000000000005c0140184060000000000005fc914018506000000000000f8f714018606000000000000a10a15018706000000000000fa1315018806000000000000561d15018906000000000000fa2f15018a06000000000000513915018b06000000000000aa4215018c06000000000000106815018d060000000000002f8415018e060000000000004ba015018f060000000000002cbc15019006000000000000ccce1501910600000000000019d81501920600000000000076e11501930600000000000033101601940600000000000066481601950600000000000099801601" + "babeEpochChanges": "0x048524e13c03dabdfcd58bf3a783eb3f8af9f3beb1f83bf64f1edc5661ddbdcc76f44d260101f382f41000000000538cf4100000000004e49e35131f3b10c66f75045405b11e5742a400edb67f0fde4bcfc7a4d70839d94857260101538cf41000000000b395f41000000000048974cd9ebacb99e3425c068b00ff967287bafef687494d06c649cb83d42311079460260101b395f41000000000139ff4100000000000000c8524e13c03dabdfcd58bf3a783eb3f8af9f3beb1f83bf64f1edc5661ddbdcc76f44d260101891f000000000000f382f410000000006009000000000000a50474a0fc84f72a4a9b8493379b7dfc59ca58a261a2e94997600d14b6b444c1475901000000000000009c40155989f6072e82caba245d7db7e40a60f866b403257976b89aba6be2b55b010000000000000014b0a3a620f70ada506d6ef1b7ab099219f2f05689523af7eebc81f9ba258e6001000000000000007067d4c5b492b11e2052a2bb0b4f729a52b3667afbca7dfefa863011254b5272010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec2145417501000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000000c78c9dfc0033ff87657c56b7ab8cec4d1249be2de18729f743f385343af0f160100000000000000da541448a6094ef017385fa5492aefcc1880f3182fc1db64e551143604dcdc00010000000000000060f472588bedcbf6b27b576dcf2ac751e412b377a39fa82bc2b79f72ac9373140100000000000000002e496e564f088a075525d2f9155aadd1a7eb017fa36f9e16096e9db7e169330100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a9350100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000c48c594bb4e173544a0379055b65d995af53256f653d04f2cf4fdf8f35489439010000000000000024d917b35ee19a72512caea1dbf92fa75f5ac2c247c4a0184d330f477c750543010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000466c0e97d043a4b0f4c3ac4849e11f901e9b31b28f8b3e40b7cdb0ba7f7748080100000000000000aac890275190872d403950ad91e6c6c18538b3d1d65f63609e7317bf1869b40f0100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000d8f30bc2ee88e69f60d0278998414c80f4a130b8e1738e873bcd14ef31e58d36010000000000000042e377034ce6b2a582bfd66c465252ab10ce790e4f0d3bbe99a42ff86b29965c01000000000000007e91ca522b14cbb71b45348c699b7d65c3198516ee771079b672ee3d7cfc577501000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b740100000000000000f44300f7ca18c59e32cb7d396a17c4c3b2a56bdd4aadc93b55922bb94a114a4c010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc19010000000000000012a64d79e44f1adb33c85c4f2bdfcd8d8b38a34d984604f39289c9a7624a442d01000000000000009214538470b98cfa7437e630ad2f26ee55bfbd270c0a72d38e26c4f48e049d130100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a670100000000000000e297620b731b4958e3c6aa06611c6aa5a45f7e116362d64954a0a330d2a98f330100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000000e5e5f8e89cd8d58ef83abddd3d1c2079691dec4f6965af70436e84411c31f3901000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f5101000000000000007c21799f6143fa837a8c18bebe3368d60f4e009b114f61490b54e6344034040d01000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e01000000000000000aaa5fa196c5c2583c1cec2aa1c991b582fd819d8bd74e91ab76da894c4a0e3b010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000005a63824687de4f60534ee18a430396b95263f75a077655c751bc2045ca2ec84d010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000c665d82a27136f294df943ffa86053c5aefeca16630abc81c12943e1aebcec3401000000000000007c3526dc5579f1ef841101b573c655c20f4346fa4a6b0b6ed773d147c3ad6d7f0100000000000000ee579514d7f544fc9fb8d6383ed7d109ee98a411bb4b0b45b9354b0f73fed9720100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf08010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b640100000000000000ec56243ac035f65b377444e20bc8fa7e3e75242a59b5ffa5f44270f451315f2b01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b0100000000000000c0e36251f9ce24d6fe429ecf14bc9599285e3e27c0a541d5ac0ad1902d7ad6140100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000005620922a6765fd47abc96615ef5b8b8575f18aaf8507f6afb86129bc1080994f0100000000000000b4b145ce385b4a3d83f2daac46a61874f80e58c468dd624acc09a558be02c27d0100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b01000000000000009eab0bf9d73d6ec7f04a484806584d29e59920968a9b9e699e45888d0767b5560100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c360100000000000000ae272f5ae4e197a1fc8e670d3aa7bcab325a39d1653b5440bb7593788d0526280100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d8708132010000000000000080413d2894759b53a03874bf96ffcb66117e4a08ad7f159c008f2b3b6cfcbb470100000000000000ea885fca10a9473631bcca2549cb8183beef534a7ee2bd59a0a6f74d97bcfc4401000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000f2e49b313ed23755c61ca69aaae54996c4b15e8ef882056b33c440bc7c6976170100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000902741c83009936926e687f91a203fc2bb0dea691895ef4dfd1d85d86f408c7c010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d030100000000000000584bf60b8b17ddaf70f87f371bd2b425a3637e05c1b75469f45ea85717063b6901000000000000004688e3afe0224c7d9f9ce7308a282aba1ddbcce69b0f18c10b1ec2fbc253d77d010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e01000000000000000ea183680db6337b592f7eb5e9112295d101bbd140b6064d6a662a93d13202000100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b351501000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000402a67126cd160c84edcb39374164f3a39aec59ae72cb66dd9fbd1e9891aa27c010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000c63dfd97609d6fbdd6300bb957b3feba86755bbd5a36d6b4ca40bea6a1b2517001000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c744501000000000000009604f5be9d0b0e4ee57cb7f1428abbad605be0423c4600cebbda85cbcb17ce300100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd555801000000000000001682c3264fc0b2a36eff3a5864cdacfe726bf5972ca8f4c5cad6f18bd450d23e0100000000000000d412fb5e47b946e69918a6391ac30283949ba6d99c491d78fc5014aaa2144b59010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000b013a8307c3572f939c1a9759a832f35babc847cc022588903572c8def43267d0100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f8450100000000000000760016d0fe1d719588ff1b1e8057f1e7a14aa6c34947540e6fdaea91ca5c602601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000de5f9f5ad3209502cf429630c2038b8818b6f8ce5685c2730077349802c5792501000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f49533301000000000000007878535e43226cf81c42183db4bbef4b1eed2a460f6cd423c03af9e86674647a010000000000000052c9327ca5c1ca830f8ff712d813a8cdc2a8be122f16bf0d1d9e77b7a9789372010000000000000026f2af62a2f0d847e3d2cccc93ec7f98c80a7b6d1bcca4cf1c4a6fc7f81775010100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d71010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000000481a58bfdafecabbc96bd170a0ec04cc35100f1f928cca3ecc63b3639e476790100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000dac9ac99a034e57ae0f558ad981c1b12243c08cb140c483ba5dce6878ddab74d0100000000000000e4be18b8f5905bc41fe3cba2e5350d405e76036328042ae7edfbb6b6a9b43d5a010000000000000046d6f6331c4776c946073cfb18164ac2b7b0ab2836711373465794ef4a6d3c2f01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d4101000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b14020100000000000000507e2aa1a2409b289b89c80f7ccb129e91a32e8d44c98723f8a97307f54a2d0601000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000078d986932e680d7bebce126a5aedae3e11ba0f4e28c03d63a491e8bcbd05ad2201000000000000007c552599ae2d251c1fb693009a0f904e41e59183027af5adfb8bba4133fc13620100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca220100000000000000e6e897a3011883adfe5d7c58e45c769c806277a5d8bb7aa36e232297b747b04f0100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d465010000000000000044c47763e8f2f1675b480c01304c4da58c8d276b5ecee722e45d17afdc3d391d01000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000007873ecedbae63dfbe5594da935e52c14dbd0e131b12879d573b9c002c6e5c4400100000000000000fc53d15453457faadc5540c5853f54324eec395d3647fbf99d5e6e97ef38767601000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000b8a51609827d3b5283567a63d2585b896a64cdeae91803154a419cb6febac0090100000000000000864cbd281011a154d93d0320865ad67ae442bf0985f0ec220e2c7db4b09599310100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e17601000000000000009cd8560fd122845a222340da6458ce97af240b695b3d22fdcd4287665cf5b3440100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000d2fb72b7c3d020239ba45289122d0ae3fb560d01d0cb3caec01efa0c8701d45e0100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000052a0f4ee4ffddedc5b9fd2154ca213cf3f49df94f4b5c36c2d8f877f5a701022010000000000000096a550a5b080ba4f333c58a9f4113a664c6e335dfdbfa227bb6f4808351c045b0100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da720100000000000000005330f74dbf024dccb42c34e008d84a5d5d8ee33603029b4176ad6579bc504f010000000000000060868aebd495f442d029a4a0eeab5285bf7ccc82988417429030dfeb4080fe3401000000000000006ef86d4533f47ffd133c63b9575c17234309ab6e16f487ae7cd8914169183c66010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c0100000000000000b45837a3683c303ef060d8126c919a1d13fe45b84c42ba393ce99eb28a9f70480100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c010000000000000088b3ccf1680a221f1ae9f8879fa7963262ab735078ded24cc2fb209f9188031b01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f010000000000000050f5f5863f99e896975813fda8768c72ff25fb54e25385a4263d1ff9a19152500100000000000000ccb5a9652f3be5d85fcab3d0b8c2eae27519ae2f7befa40c34b89751bbcce40001000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f5259050100000000000000540926fefa2d0424fd451bfca39a01c0e1a3fc811406e127d1dbfdc6cf9e9770010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000009cf033522e1b00e5e1e4862b8de818c62a353c2ef900717405861a7b8afd911f01000000000000009a53749c83cc06460148d884f1ea5b71897466b237cf16baa45395d78ce48c1a010000000000000064615e1323ea003b7c5a63ba2c8bed2023103458eeee7cf45244580d3ca59b6a0100000000000000b60ce4c500ac9859bf4a3ad89aa03f37e4b25b33da50fd825ba53dcb222c9f45010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000048afb25f7981cc67a66853ec05675d83a2d99e6318a6a7a135ed2916cb70a26e01000000000000008a0e2d0af87ffb812f6e6ec229d02056e812cc4f5f5743cc638a7d3f279f0153010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac5610100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000004a09f648a1583e14379a3a2543bb6d67201cae1ac2cc90f351f58d5574e02f6201000000000000000e21a03fbe9885a475c4875f3f912c8703945e99cd2a85f75258fda7b6022b7c0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000e063e31ccdf34c3372902f92ec915f213538370658d9272f9ba6d8d6943ccd13010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a01000000000000000e99696f88e19e20d306ad6f8afb760f16c34a1e7bfe6cd70848e2d55cd2463401000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee1901000000000000002271d61469f9f1e5a0832af7de453015b89979fd740526080116295f4a4a516d0100000000000000645077cf303943059891df150649d1d828052ea4249bf50ca3b6d29c6ef1984c010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f3401000000000000008681a5d5d2138be72753e197ea3616c760e062e2bf2660bc6b33a37615edb03f0100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000f2060145fed18a41469c808b9c9f489ab28bdd327529621512b7077add309d1e0100000000000000ac08cb32400c07259add7bea3d895233f121f29c1b6387bddbb121d5c122e3570100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e7993300100000000000000ea03f9dc29ae9b7a053c12b6079664592d2cf46a30b43edbb2d2d980223deb11010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe83233001000000000000003c8330f5d7f34fbec333663bab066cbac4403f892df7659b1c118c185c4f16220100000000000000b20050395fc81aa60508e362f02c75faebe3e4909c7a23721182ce791bb701130100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d69010000000000000068147c36d367eb1a203b303c65ab3d32fe777cabbca8d39e08ffcfd624b3614d0100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f0100000000000000c4687b6d8e527d1ad3be71f2b242bed92eac25b159d9e142e6922ace2dfe5f2101000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f01000000000000009ea2cb3e6c59685087e59d6d45fdccdd5e6fd4f77fd90b4749f65113e23f086f0100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a01000000000000004a7791775365fadbb61f37a0d2f6d298c0c7c3a4c9402821ec909972fd5f8a4c01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000cc52bd9b4a740735cf134a31165a2d024441d5ec6b561904c00d2193da41d15601000000000000005ee252f56786ec8e512d233a09c3bbda21d0bd3a6ed7e8e8c0fe035dfe7989330100000000000000408e999ea747d52cf805617489435c05b3e91fea3d7013aaeb6134065bac863f0100000000000000b08365edcdd4d34a08e76edcb6a883a99eb396bcff3534f65a5c722e6d15fe020100000000000000e0d28dc9623e77eeff6b0aee79793b3a00cf8b1c46fb79c8e6ff8cfeecc4af120100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa35020100000000000000fcf9f322548d27f949946778fac8738b187065d56fc3ef164055a14e1ff8192701000000000000001e1f47deab3e4083f7d353b746b719a9f5aaee3ae2cf6b37a4d710f95d489a6101000000000000006638aad1c437c5f2f2ab4c46b786db51bb8c7e6af2ee745934811712f8d83e0601000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f0768520100000000000000c88d83d7927e1c1dff61de6b8321ee64746d983173bfb3a03c3d4789ae3f202701000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba620100000000000000102ed4107066f497e13d3c484a9fa60e506587e19541069dd4555a91d63f27040100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000003afb6b0dac3a05453f125943b8a26269202d297b991e054ca851fa68bb4c0853010000000000000048970bde717a65371534a2b878995c8bc6c230d556035fa003da1c523092332a01000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e4601000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009265e7be28a8f56a974027b630bc37703b7ef21b1b1e4253c54d605f4d10da1e010000000000000046b14e55053a02087c957664d32fdcae6ba1c96051239191c63df564d784e17201000000000000005cf9e506e47672dd81188ac6eb1f4663ef21002e3b99689c772a21d52cdae553010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000fa2b11bf5823233f9811719bc222d1a99fe1ed274ff1761aec90b89be97c945c01000000000000009c4d874baeccbb19733cf93f6ffb2f44d9b9f5191ead84f3550c7b767a75061f0100000000000000ecc12a9407afd557edbf63ecf4e31c6d56c3a4b9f7b4a123ff3d4af9cdb4c6050100000000000000541be93561ac4abba30ffd6362cd8e0b0cc2e1dbdcca8e5394eaa80167e6993d0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000a49dbb103be9a66d67ad5c0d11032866488f39d0a106de579d913dc7099a09260100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a184322010000000000000040884e6b9876fe866d109aae2a5a6f1a18bfe3655ec9c1fee848ca92734468720100000000000000fd91e3922a7945adc06dd75738a64c9a2d79d223fc60ce9fa68f247ce34a8ee401000000000000000400000000000000028974cd9ebacb99e3425c068b00ff967287bafef687494d06c649cb83d423110794602601018b1f000000000000b395f410000000006009000000000000a50474a0fc84f72a4a9b8493379b7dfc59ca58a261a2e94997600d14b6b444c1475901000000000000009c40155989f6072e82caba245d7db7e40a60f866b403257976b89aba6be2b55b010000000000000014b0a3a620f70ada506d6ef1b7ab099219f2f05689523af7eebc81f9ba258e6001000000000000007067d4c5b492b11e2052a2bb0b4f729a52b3667afbca7dfefa863011254b5272010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec2145417501000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000000c78c9dfc0033ff87657c56b7ab8cec4d1249be2de18729f743f385343af0f160100000000000000da541448a6094ef017385fa5492aefcc1880f3182fc1db64e551143604dcdc00010000000000000060f472588bedcbf6b27b576dcf2ac751e412b377a39fa82bc2b79f72ac9373140100000000000000002e496e564f088a075525d2f9155aadd1a7eb017fa36f9e16096e9db7e169330100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a9350100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000c48c594bb4e173544a0379055b65d995af53256f653d04f2cf4fdf8f35489439010000000000000024d917b35ee19a72512caea1dbf92fa75f5ac2c247c4a0184d330f477c750543010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000466c0e97d043a4b0f4c3ac4849e11f901e9b31b28f8b3e40b7cdb0ba7f7748080100000000000000aac890275190872d403950ad91e6c6c18538b3d1d65f63609e7317bf1869b40f0100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000d8f30bc2ee88e69f60d0278998414c80f4a130b8e1738e873bcd14ef31e58d36010000000000000042e377034ce6b2a582bfd66c465252ab10ce790e4f0d3bbe99a42ff86b29965c01000000000000007e91ca522b14cbb71b45348c699b7d65c3198516ee771079b672ee3d7cfc577501000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b740100000000000000f44300f7ca18c59e32cb7d396a17c4c3b2a56bdd4aadc93b55922bb94a114a4c010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc19010000000000000012a64d79e44f1adb33c85c4f2bdfcd8d8b38a34d984604f39289c9a7624a442d01000000000000009214538470b98cfa7437e630ad2f26ee55bfbd270c0a72d38e26c4f48e049d130100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a670100000000000000e297620b731b4958e3c6aa06611c6aa5a45f7e116362d64954a0a330d2a98f330100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000000e5e5f8e89cd8d58ef83abddd3d1c2079691dec4f6965af70436e84411c31f3901000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f5101000000000000007c21799f6143fa837a8c18bebe3368d60f4e009b114f61490b54e6344034040d01000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e01000000000000000aaa5fa196c5c2583c1cec2aa1c991b582fd819d8bd74e91ab76da894c4a0e3b010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000005a63824687de4f60534ee18a430396b95263f75a077655c751bc2045ca2ec84d010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000c665d82a27136f294df943ffa86053c5aefeca16630abc81c12943e1aebcec3401000000000000007c3526dc5579f1ef841101b573c655c20f4346fa4a6b0b6ed773d147c3ad6d7f0100000000000000ee579514d7f544fc9fb8d6383ed7d109ee98a411bb4b0b45b9354b0f73fed9720100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf08010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b640100000000000000ec56243ac035f65b377444e20bc8fa7e3e75242a59b5ffa5f44270f451315f2b01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b0100000000000000c0e36251f9ce24d6fe429ecf14bc9599285e3e27c0a541d5ac0ad1902d7ad6140100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000005620922a6765fd47abc96615ef5b8b8575f18aaf8507f6afb86129bc1080994f0100000000000000b4b145ce385b4a3d83f2daac46a61874f80e58c468dd624acc09a558be02c27d0100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b01000000000000009eab0bf9d73d6ec7f04a484806584d29e59920968a9b9e699e45888d0767b5560100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c360100000000000000ae272f5ae4e197a1fc8e670d3aa7bcab325a39d1653b5440bb7593788d0526280100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d8708132010000000000000080413d2894759b53a03874bf96ffcb66117e4a08ad7f159c008f2b3b6cfcbb470100000000000000ea885fca10a9473631bcca2549cb8183beef534a7ee2bd59a0a6f74d97bcfc4401000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000f2e49b313ed23755c61ca69aaae54996c4b15e8ef882056b33c440bc7c6976170100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000902741c83009936926e687f91a203fc2bb0dea691895ef4dfd1d85d86f408c7c010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d030100000000000000584bf60b8b17ddaf70f87f371bd2b425a3637e05c1b75469f45ea85717063b6901000000000000004688e3afe0224c7d9f9ce7308a282aba1ddbcce69b0f18c10b1ec2fbc253d77d010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e01000000000000000ea183680db6337b592f7eb5e9112295d101bbd140b6064d6a662a93d13202000100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b351501000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000402a67126cd160c84edcb39374164f3a39aec59ae72cb66dd9fbd1e9891aa27c010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000c63dfd97609d6fbdd6300bb957b3feba86755bbd5a36d6b4ca40bea6a1b2517001000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c744501000000000000009604f5be9d0b0e4ee57cb7f1428abbad605be0423c4600cebbda85cbcb17ce300100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd555801000000000000001682c3264fc0b2a36eff3a5864cdacfe726bf5972ca8f4c5cad6f18bd450d23e0100000000000000d412fb5e47b946e69918a6391ac30283949ba6d99c491d78fc5014aaa2144b59010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000b013a8307c3572f939c1a9759a832f35babc847cc022588903572c8def43267d0100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f8450100000000000000760016d0fe1d719588ff1b1e8057f1e7a14aa6c34947540e6fdaea91ca5c602601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000de5f9f5ad3209502cf429630c2038b8818b6f8ce5685c2730077349802c5792501000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f49533301000000000000007878535e43226cf81c42183db4bbef4b1eed2a460f6cd423c03af9e86674647a010000000000000052c9327ca5c1ca830f8ff712d813a8cdc2a8be122f16bf0d1d9e77b7a9789372010000000000000026f2af62a2f0d847e3d2cccc93ec7f98c80a7b6d1bcca4cf1c4a6fc7f81775010100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d71010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000000481a58bfdafecabbc96bd170a0ec04cc35100f1f928cca3ecc63b3639e476790100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000dac9ac99a034e57ae0f558ad981c1b12243c08cb140c483ba5dce6878ddab74d0100000000000000e4be18b8f5905bc41fe3cba2e5350d405e76036328042ae7edfbb6b6a9b43d5a010000000000000046d6f6331c4776c946073cfb18164ac2b7b0ab2836711373465794ef4a6d3c2f01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d4101000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b14020100000000000000507e2aa1a2409b289b89c80f7ccb129e91a32e8d44c98723f8a97307f54a2d0601000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000078d986932e680d7bebce126a5aedae3e11ba0f4e28c03d63a491e8bcbd05ad2201000000000000007c552599ae2d251c1fb693009a0f904e41e59183027af5adfb8bba4133fc13620100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca220100000000000000e6e897a3011883adfe5d7c58e45c769c806277a5d8bb7aa36e232297b747b04f0100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d465010000000000000044c47763e8f2f1675b480c01304c4da58c8d276b5ecee722e45d17afdc3d391d01000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000007873ecedbae63dfbe5594da935e52c14dbd0e131b12879d573b9c002c6e5c4400100000000000000fc53d15453457faadc5540c5853f54324eec395d3647fbf99d5e6e97ef38767601000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000b8a51609827d3b5283567a63d2585b896a64cdeae91803154a419cb6febac0090100000000000000864cbd281011a154d93d0320865ad67ae442bf0985f0ec220e2c7db4b09599310100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e17601000000000000009cd8560fd122845a222340da6458ce97af240b695b3d22fdcd4287665cf5b3440100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000d2fb72b7c3d020239ba45289122d0ae3fb560d01d0cb3caec01efa0c8701d45e0100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000052a0f4ee4ffddedc5b9fd2154ca213cf3f49df94f4b5c36c2d8f877f5a701022010000000000000096a550a5b080ba4f333c58a9f4113a664c6e335dfdbfa227bb6f4808351c045b0100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da720100000000000000005330f74dbf024dccb42c34e008d84a5d5d8ee33603029b4176ad6579bc504f010000000000000060868aebd495f442d029a4a0eeab5285bf7ccc82988417429030dfeb4080fe3401000000000000006ef86d4533f47ffd133c63b9575c17234309ab6e16f487ae7cd8914169183c66010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c0100000000000000b45837a3683c303ef060d8126c919a1d13fe45b84c42ba393ce99eb28a9f70480100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c010000000000000088b3ccf1680a221f1ae9f8879fa7963262ab735078ded24cc2fb209f9188031b01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f010000000000000050f5f5863f99e896975813fda8768c72ff25fb54e25385a4263d1ff9a19152500100000000000000ccb5a9652f3be5d85fcab3d0b8c2eae27519ae2f7befa40c34b89751bbcce40001000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f5259050100000000000000540926fefa2d0424fd451bfca39a01c0e1a3fc811406e127d1dbfdc6cf9e9770010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000009cf033522e1b00e5e1e4862b8de818c62a353c2ef900717405861a7b8afd911f01000000000000009a53749c83cc06460148d884f1ea5b71897466b237cf16baa45395d78ce48c1a010000000000000064615e1323ea003b7c5a63ba2c8bed2023103458eeee7cf45244580d3ca59b6a0100000000000000b60ce4c500ac9859bf4a3ad89aa03f37e4b25b33da50fd825ba53dcb222c9f45010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000048afb25f7981cc67a66853ec05675d83a2d99e6318a6a7a135ed2916cb70a26e01000000000000008a0e2d0af87ffb812f6e6ec229d02056e812cc4f5f5743cc638a7d3f279f0153010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac5610100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000004a09f648a1583e14379a3a2543bb6d67201cae1ac2cc90f351f58d5574e02f6201000000000000000e21a03fbe9885a475c4875f3f912c8703945e99cd2a85f75258fda7b6022b7c0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000e063e31ccdf34c3372902f92ec915f213538370658d9272f9ba6d8d6943ccd13010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a01000000000000000e99696f88e19e20d306ad6f8afb760f16c34a1e7bfe6cd70848e2d55cd2463401000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee1901000000000000002271d61469f9f1e5a0832af7de453015b89979fd740526080116295f4a4a516d0100000000000000645077cf303943059891df150649d1d828052ea4249bf50ca3b6d29c6ef1984c010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f3401000000000000008681a5d5d2138be72753e197ea3616c760e062e2bf2660bc6b33a37615edb03f0100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000f2060145fed18a41469c808b9c9f489ab28bdd327529621512b7077add309d1e0100000000000000ac08cb32400c07259add7bea3d895233f121f29c1b6387bddbb121d5c122e3570100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e7993300100000000000000ea03f9dc29ae9b7a053c12b6079664592d2cf46a30b43edbb2d2d980223deb11010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe83233001000000000000003c8330f5d7f34fbec333663bab066cbac4403f892df7659b1c118c185c4f16220100000000000000b20050395fc81aa60508e362f02c75faebe3e4909c7a23721182ce791bb701130100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d69010000000000000068147c36d367eb1a203b303c65ab3d32fe777cabbca8d39e08ffcfd624b3614d0100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f0100000000000000c4687b6d8e527d1ad3be71f2b242bed92eac25b159d9e142e6922ace2dfe5f2101000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f01000000000000009ea2cb3e6c59685087e59d6d45fdccdd5e6fd4f77fd90b4749f65113e23f086f0100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a01000000000000004a7791775365fadbb61f37a0d2f6d298c0c7c3a4c9402821ec909972fd5f8a4c01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000cc52bd9b4a740735cf134a31165a2d024441d5ec6b561904c00d2193da41d15601000000000000005ee252f56786ec8e512d233a09c3bbda21d0bd3a6ed7e8e8c0fe035dfe7989330100000000000000408e999ea747d52cf805617489435c05b3e91fea3d7013aaeb6134065bac863f0100000000000000b08365edcdd4d34a08e76edcb6a883a99eb396bcff3534f65a5c722e6d15fe020100000000000000e0d28dc9623e77eeff6b0aee79793b3a00cf8b1c46fb79c8e6ff8cfeecc4af120100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa35020100000000000000fcf9f322548d27f949946778fac8738b187065d56fc3ef164055a14e1ff8192701000000000000001e1f47deab3e4083f7d353b746b719a9f5aaee3ae2cf6b37a4d710f95d489a6101000000000000006638aad1c437c5f2f2ab4c46b786db51bb8c7e6af2ee745934811712f8d83e0601000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f0768520100000000000000c88d83d7927e1c1dff61de6b8321ee64746d983173bfb3a03c3d4789ae3f202701000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba620100000000000000102ed4107066f497e13d3c484a9fa60e506587e19541069dd4555a91d63f27040100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000003afb6b0dac3a05453f125943b8a26269202d297b991e054ca851fa68bb4c0853010000000000000048970bde717a65371534a2b878995c8bc6c230d556035fa003da1c523092332a01000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e4601000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009265e7be28a8f56a974027b630bc37703b7ef21b1b1e4253c54d605f4d10da1e010000000000000046b14e55053a02087c957664d32fdcae6ba1c96051239191c63df564d784e17201000000000000005cf9e506e47672dd81188ac6eb1f4663ef21002e3b99689c772a21d52cdae553010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000fa2b11bf5823233f9811719bc222d1a99fe1ed274ff1761aec90b89be97c945c01000000000000009c4d874baeccbb19733cf93f6ffb2f44d9b9f5191ead84f3550c7b767a75061f0100000000000000ecc12a9407afd557edbf63ecf4e31c6d56c3a4b9f7b4a123ff3d4af9cdb4c6050100000000000000541be93561ac4abba30ffd6362cd8e0b0cc2e1dbdcca8e5394eaa80167e6993d0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000a49dbb103be9a66d67ad5c0d11032866488f39d0a106de579d913dc7099a09260100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a184322010000000000000040884e6b9876fe866d109aae2a5a6f1a18bfe3655ec9c1fee848ca92734468720100000000000000551fc1f1f1606e53e38c244789213966e68960a5c2957ac8a3568a3fcd7369490100000000000000040000000000000002e49e35131f3b10c66f75045405b11e5742a400edb67f0fde4bcfc7a4d70839d948572601018a1f000000000000538cf410000000006009000000000000a50474a0fc84f72a4a9b8493379b7dfc59ca58a261a2e94997600d14b6b444c1475901000000000000009c40155989f6072e82caba245d7db7e40a60f866b403257976b89aba6be2b55b010000000000000014b0a3a620f70ada506d6ef1b7ab099219f2f05689523af7eebc81f9ba258e6001000000000000007067d4c5b492b11e2052a2bb0b4f729a52b3667afbca7dfefa863011254b5272010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec2145417501000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000000c78c9dfc0033ff87657c56b7ab8cec4d1249be2de18729f743f385343af0f160100000000000000da541448a6094ef017385fa5492aefcc1880f3182fc1db64e551143604dcdc00010000000000000060f472588bedcbf6b27b576dcf2ac751e412b377a39fa82bc2b79f72ac9373140100000000000000002e496e564f088a075525d2f9155aadd1a7eb017fa36f9e16096e9db7e169330100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a9350100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000c48c594bb4e173544a0379055b65d995af53256f653d04f2cf4fdf8f35489439010000000000000024d917b35ee19a72512caea1dbf92fa75f5ac2c247c4a0184d330f477c750543010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000466c0e97d043a4b0f4c3ac4849e11f901e9b31b28f8b3e40b7cdb0ba7f7748080100000000000000aac890275190872d403950ad91e6c6c18538b3d1d65f63609e7317bf1869b40f0100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000d8f30bc2ee88e69f60d0278998414c80f4a130b8e1738e873bcd14ef31e58d36010000000000000042e377034ce6b2a582bfd66c465252ab10ce790e4f0d3bbe99a42ff86b29965c01000000000000007e91ca522b14cbb71b45348c699b7d65c3198516ee771079b672ee3d7cfc577501000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b740100000000000000f44300f7ca18c59e32cb7d396a17c4c3b2a56bdd4aadc93b55922bb94a114a4c010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc19010000000000000012a64d79e44f1adb33c85c4f2bdfcd8d8b38a34d984604f39289c9a7624a442d01000000000000009214538470b98cfa7437e630ad2f26ee55bfbd270c0a72d38e26c4f48e049d130100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a670100000000000000e297620b731b4958e3c6aa06611c6aa5a45f7e116362d64954a0a330d2a98f330100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000000e5e5f8e89cd8d58ef83abddd3d1c2079691dec4f6965af70436e84411c31f3901000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f5101000000000000007c21799f6143fa837a8c18bebe3368d60f4e009b114f61490b54e6344034040d01000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e01000000000000000aaa5fa196c5c2583c1cec2aa1c991b582fd819d8bd74e91ab76da894c4a0e3b010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000005a63824687de4f60534ee18a430396b95263f75a077655c751bc2045ca2ec84d010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000c665d82a27136f294df943ffa86053c5aefeca16630abc81c12943e1aebcec3401000000000000007c3526dc5579f1ef841101b573c655c20f4346fa4a6b0b6ed773d147c3ad6d7f0100000000000000ee579514d7f544fc9fb8d6383ed7d109ee98a411bb4b0b45b9354b0f73fed9720100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf08010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b640100000000000000ec56243ac035f65b377444e20bc8fa7e3e75242a59b5ffa5f44270f451315f2b01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b0100000000000000c0e36251f9ce24d6fe429ecf14bc9599285e3e27c0a541d5ac0ad1902d7ad6140100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000005620922a6765fd47abc96615ef5b8b8575f18aaf8507f6afb86129bc1080994f0100000000000000b4b145ce385b4a3d83f2daac46a61874f80e58c468dd624acc09a558be02c27d0100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b01000000000000009eab0bf9d73d6ec7f04a484806584d29e59920968a9b9e699e45888d0767b5560100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c360100000000000000ae272f5ae4e197a1fc8e670d3aa7bcab325a39d1653b5440bb7593788d0526280100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d8708132010000000000000080413d2894759b53a03874bf96ffcb66117e4a08ad7f159c008f2b3b6cfcbb470100000000000000ea885fca10a9473631bcca2549cb8183beef534a7ee2bd59a0a6f74d97bcfc4401000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000f2e49b313ed23755c61ca69aaae54996c4b15e8ef882056b33c440bc7c6976170100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000902741c83009936926e687f91a203fc2bb0dea691895ef4dfd1d85d86f408c7c010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d030100000000000000584bf60b8b17ddaf70f87f371bd2b425a3637e05c1b75469f45ea85717063b6901000000000000004688e3afe0224c7d9f9ce7308a282aba1ddbcce69b0f18c10b1ec2fbc253d77d010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e01000000000000000ea183680db6337b592f7eb5e9112295d101bbd140b6064d6a662a93d13202000100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b351501000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000402a67126cd160c84edcb39374164f3a39aec59ae72cb66dd9fbd1e9891aa27c010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000c63dfd97609d6fbdd6300bb957b3feba86755bbd5a36d6b4ca40bea6a1b2517001000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c744501000000000000009604f5be9d0b0e4ee57cb7f1428abbad605be0423c4600cebbda85cbcb17ce300100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd555801000000000000001682c3264fc0b2a36eff3a5864cdacfe726bf5972ca8f4c5cad6f18bd450d23e0100000000000000d412fb5e47b946e69918a6391ac30283949ba6d99c491d78fc5014aaa2144b59010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000b013a8307c3572f939c1a9759a832f35babc847cc022588903572c8def43267d0100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f8450100000000000000760016d0fe1d719588ff1b1e8057f1e7a14aa6c34947540e6fdaea91ca5c602601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000de5f9f5ad3209502cf429630c2038b8818b6f8ce5685c2730077349802c5792501000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f49533301000000000000007878535e43226cf81c42183db4bbef4b1eed2a460f6cd423c03af9e86674647a010000000000000052c9327ca5c1ca830f8ff712d813a8cdc2a8be122f16bf0d1d9e77b7a9789372010000000000000026f2af62a2f0d847e3d2cccc93ec7f98c80a7b6d1bcca4cf1c4a6fc7f81775010100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d71010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000000481a58bfdafecabbc96bd170a0ec04cc35100f1f928cca3ecc63b3639e476790100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000dac9ac99a034e57ae0f558ad981c1b12243c08cb140c483ba5dce6878ddab74d0100000000000000e4be18b8f5905bc41fe3cba2e5350d405e76036328042ae7edfbb6b6a9b43d5a010000000000000046d6f6331c4776c946073cfb18164ac2b7b0ab2836711373465794ef4a6d3c2f01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d4101000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b14020100000000000000507e2aa1a2409b289b89c80f7ccb129e91a32e8d44c98723f8a97307f54a2d0601000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000078d986932e680d7bebce126a5aedae3e11ba0f4e28c03d63a491e8bcbd05ad2201000000000000007c552599ae2d251c1fb693009a0f904e41e59183027af5adfb8bba4133fc13620100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca220100000000000000e6e897a3011883adfe5d7c58e45c769c806277a5d8bb7aa36e232297b747b04f0100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d465010000000000000044c47763e8f2f1675b480c01304c4da58c8d276b5ecee722e45d17afdc3d391d01000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000007873ecedbae63dfbe5594da935e52c14dbd0e131b12879d573b9c002c6e5c4400100000000000000fc53d15453457faadc5540c5853f54324eec395d3647fbf99d5e6e97ef38767601000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000b8a51609827d3b5283567a63d2585b896a64cdeae91803154a419cb6febac0090100000000000000864cbd281011a154d93d0320865ad67ae442bf0985f0ec220e2c7db4b09599310100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e17601000000000000009cd8560fd122845a222340da6458ce97af240b695b3d22fdcd4287665cf5b3440100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000d2fb72b7c3d020239ba45289122d0ae3fb560d01d0cb3caec01efa0c8701d45e0100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000052a0f4ee4ffddedc5b9fd2154ca213cf3f49df94f4b5c36c2d8f877f5a701022010000000000000096a550a5b080ba4f333c58a9f4113a664c6e335dfdbfa227bb6f4808351c045b0100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da720100000000000000005330f74dbf024dccb42c34e008d84a5d5d8ee33603029b4176ad6579bc504f010000000000000060868aebd495f442d029a4a0eeab5285bf7ccc82988417429030dfeb4080fe3401000000000000006ef86d4533f47ffd133c63b9575c17234309ab6e16f487ae7cd8914169183c66010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c0100000000000000b45837a3683c303ef060d8126c919a1d13fe45b84c42ba393ce99eb28a9f70480100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c010000000000000088b3ccf1680a221f1ae9f8879fa7963262ab735078ded24cc2fb209f9188031b01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f010000000000000050f5f5863f99e896975813fda8768c72ff25fb54e25385a4263d1ff9a19152500100000000000000ccb5a9652f3be5d85fcab3d0b8c2eae27519ae2f7befa40c34b89751bbcce40001000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f5259050100000000000000540926fefa2d0424fd451bfca39a01c0e1a3fc811406e127d1dbfdc6cf9e9770010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000009cf033522e1b00e5e1e4862b8de818c62a353c2ef900717405861a7b8afd911f01000000000000009a53749c83cc06460148d884f1ea5b71897466b237cf16baa45395d78ce48c1a010000000000000064615e1323ea003b7c5a63ba2c8bed2023103458eeee7cf45244580d3ca59b6a0100000000000000b60ce4c500ac9859bf4a3ad89aa03f37e4b25b33da50fd825ba53dcb222c9f45010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000048afb25f7981cc67a66853ec05675d83a2d99e6318a6a7a135ed2916cb70a26e01000000000000008a0e2d0af87ffb812f6e6ec229d02056e812cc4f5f5743cc638a7d3f279f0153010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac5610100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000004a09f648a1583e14379a3a2543bb6d67201cae1ac2cc90f351f58d5574e02f6201000000000000000e21a03fbe9885a475c4875f3f912c8703945e99cd2a85f75258fda7b6022b7c0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000e063e31ccdf34c3372902f92ec915f213538370658d9272f9ba6d8d6943ccd13010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a01000000000000000e99696f88e19e20d306ad6f8afb760f16c34a1e7bfe6cd70848e2d55cd2463401000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee1901000000000000002271d61469f9f1e5a0832af7de453015b89979fd740526080116295f4a4a516d0100000000000000645077cf303943059891df150649d1d828052ea4249bf50ca3b6d29c6ef1984c010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f3401000000000000008681a5d5d2138be72753e197ea3616c760e062e2bf2660bc6b33a37615edb03f0100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000f2060145fed18a41469c808b9c9f489ab28bdd327529621512b7077add309d1e0100000000000000ac08cb32400c07259add7bea3d895233f121f29c1b6387bddbb121d5c122e3570100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e7993300100000000000000ea03f9dc29ae9b7a053c12b6079664592d2cf46a30b43edbb2d2d980223deb11010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe83233001000000000000003c8330f5d7f34fbec333663bab066cbac4403f892df7659b1c118c185c4f16220100000000000000b20050395fc81aa60508e362f02c75faebe3e4909c7a23721182ce791bb701130100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d69010000000000000068147c36d367eb1a203b303c65ab3d32fe777cabbca8d39e08ffcfd624b3614d0100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f0100000000000000c4687b6d8e527d1ad3be71f2b242bed92eac25b159d9e142e6922ace2dfe5f2101000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f01000000000000009ea2cb3e6c59685087e59d6d45fdccdd5e6fd4f77fd90b4749f65113e23f086f0100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a01000000000000004a7791775365fadbb61f37a0d2f6d298c0c7c3a4c9402821ec909972fd5f8a4c01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000cc52bd9b4a740735cf134a31165a2d024441d5ec6b561904c00d2193da41d15601000000000000005ee252f56786ec8e512d233a09c3bbda21d0bd3a6ed7e8e8c0fe035dfe7989330100000000000000408e999ea747d52cf805617489435c05b3e91fea3d7013aaeb6134065bac863f0100000000000000b08365edcdd4d34a08e76edcb6a883a99eb396bcff3534f65a5c722e6d15fe020100000000000000e0d28dc9623e77eeff6b0aee79793b3a00cf8b1c46fb79c8e6ff8cfeecc4af120100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa35020100000000000000fcf9f322548d27f949946778fac8738b187065d56fc3ef164055a14e1ff8192701000000000000001e1f47deab3e4083f7d353b746b719a9f5aaee3ae2cf6b37a4d710f95d489a6101000000000000006638aad1c437c5f2f2ab4c46b786db51bb8c7e6af2ee745934811712f8d83e0601000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f0768520100000000000000c88d83d7927e1c1dff61de6b8321ee64746d983173bfb3a03c3d4789ae3f202701000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba620100000000000000102ed4107066f497e13d3c484a9fa60e506587e19541069dd4555a91d63f27040100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000003afb6b0dac3a05453f125943b8a26269202d297b991e054ca851fa68bb4c0853010000000000000048970bde717a65371534a2b878995c8bc6c230d556035fa003da1c523092332a01000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e4601000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009265e7be28a8f56a974027b630bc37703b7ef21b1b1e4253c54d605f4d10da1e010000000000000046b14e55053a02087c957664d32fdcae6ba1c96051239191c63df564d784e17201000000000000005cf9e506e47672dd81188ac6eb1f4663ef21002e3b99689c772a21d52cdae553010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000fa2b11bf5823233f9811719bc222d1a99fe1ed274ff1761aec90b89be97c945c01000000000000009c4d874baeccbb19733cf93f6ffb2f44d9b9f5191ead84f3550c7b767a75061f0100000000000000ecc12a9407afd557edbf63ecf4e31c6d56c3a4b9f7b4a123ff3d4af9cdb4c6050100000000000000541be93561ac4abba30ffd6362cd8e0b0cc2e1dbdcca8e5394eaa80167e6993d0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000a49dbb103be9a66d67ad5c0d11032866488f39d0a106de579d913dc7099a09260100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a184322010000000000000040884e6b9876fe866d109aae2a5a6f1a18bfe3655ec9c1fee848ca92734468720100000000000000e281b9e781d0d122cad53deec70cd1880eb29c2a034201c2821014b6fe84d1ff0100000000000000040000000000000002", + "babeFinalizedBlockWeight": 4816932, + "finalizedBlockHeader": "0xf292bdff983836444cd51784c192c3925d734c7936f309581c817f9f74c51d380e8b9904f4fb3330f79ddda3ffbbce59c7b93774122fe32463d7de711ffc820fa69508525cb2b1a9b578fa9e8dd457f2c904649d00557bb1724bb8d7b313e9a1211eccdd080642414245b501015c000000878ef41000000000c4d48a2a2e5364af41319264fee671a26023eebdb6d98a1687466dc44e8fb239263e94e02749bd0e7c63a41103dd01d531405bf5e18d535a9553bd14816aa7047c2019652e0c689625fb677b0f43de704da3daa485ad1d8a0a1b3b754bdcab0e054241424501017659dc71591dfa2561e074163f1aca684a515928b07bbf63f300beabd8d8b4720ee75fa0a487f1e7ef90840e0caaed103e489eec9a1a3b4f70aff8c76e6e6982", + "grandpaAuthoritySet": "0xa5042f8da08bb2421ef844015c3b2ea23464fc66a9dcb4a2215fe0241f892d19afc50100000000000000fff437ff18629bf1490e5c9b3ec6f1515d46bb9b2aeaa6e39e36611f2479b50d01000000000000000334021ff54e46fb7da4bd257cf113519a0c7ee4a2251b66fe48466fed5853520100000000000000d95f04dc8ea4ac05deea7077457f0406fdd152bd03a7480e7d0de0983b959d3c010000000000000047f940bc985355be7187c709ded2b689b66d69e61e293a507f1d4f90bdbeceee01000000000000004a3fc0fe1020c7f460c7bd23d0b657c03368552b2f0a12d80a1c406fd066e0db01000000000000009b992b5e9b99eb2cd3b2b648d6db81ed722a2feb4938d998b58dcb5d159fadfa0100000000000000aee9de3938173700b3e3f4fbf2b200ae296173a0854157f40de2598dd4cad8f10100000000000000243f110deac5efe8e963d794eb8706a1895ae1942523ab0fe9e1623515b7dea80100000000000000b61e9b13e849779be8f5378a670d61991875d8e091f359384d7be73d02d506930100000000000000426b2be4596a759a15028d84e08c5c56440e6cede68d088f47c671cc3387c3e6010000000000000070ba6e5985990ba1b1392713236f1b50df750f10f744cc6eb95fa7c5cfbc687601000000000000005b27660cd4c375f2654c6d923b29fd8abbab7e96ee040c79598be14f832f56ca0100000000000000d3cc98d4ef2959052d0850c5803739a81b4fb31196cb8602c45e19a7a56977cf0100000000000000577f3db377f6b69115658f17f32323071b8e0c67695057353d0ad9ad2d8eea1a010000000000000057ae0c85ebaf333a6ec3251f577cab910cce072f238d1e50046322b83bbc0dd50100000000000000a15896b8bbf01f757f120813bc2e78b21388eea66db4b0dc2e1afeabd3d46dc001000000000000000139b946b46bee4c61be50c986f2a9ef2e76917644e2ecd842c59d61a94ee612010000000000000019a9d56ea35496122fc44fcb5c29d27fbb43520556d6f8d97753767aaa0f228e01000000000000007cd50f6921fade39653f847bddd48360668004225081a6a3ad7997f78debd34c0100000000000000f1578b8007e34ba6b1c4c480a8249758eaa356a6e5b1be0efbe5c35e802fe3cf0100000000000000a5b094ae7c156592baa68ce18dab6368d5b665e9a0f07dfc5f54f58309e086c1010000000000000053352e16d2a27fb3525d5d8750d6ad7f46b303a45e434a409ac727d5cb80432b0100000000000000f2c819e8ed3ae8aab35a7edb7d21cabc889eb5928dd6a5281b42f3b00f808e1b010000000000000041ef4a31eb7dc1e01f4630604e1908e644d7cdee3f66a60f98d6d59605326f8b010000000000000097743d6364cdb6c4790cd37c4c2ab5fbc6c65e8bb606625e70a6ee04ed1650d9010000000000000008cc1d6c743da905511a39a6f0a68809a6bc32f8ac25e53bb2d6aca4f493fc9b0100000000000000acd71d4269b3ba2a9de822d494c4d841708e1519c08de41d7fc6153eaf48da810100000000000000d04d64a07f144638f20f081de122b88fed0cc8bda57e4810e7afb38036dd8bbf0100000000000000f26945a8a64032a1defa76e720a99649125b55751b6088205e7acab901de670b01000000000000005cba2c6f569da1edc3778308da406f266aa53140381dbb3f14f22909ba6e30040100000000000000c9a741ab82126c4d4eaa6a758cfc1209bbd7b29330e89ccd97fb62ae567c8d4301000000000000009b94bc45bf79bb33f70430c82880456cd7bd5fb3ea131c1b26d493d01c5fe7100100000000000000a1a9debad5e4afb076cf293c2c797f0b5901ffdb8bd01611235e762411a0db3901000000000000006f4855725ebb9eced957bae43ffa7d30657ce7d06b251ce20e2218bcf929e40501000000000000001165cac368b7336c0dfd184027e03ae2945761538b05365611ad4d731f4917fc0100000000000000749556da4a259bc1f0b8ea8e3726c2251656b92205c30b635ec9f42038f8defb01000000000000000ce4d93e25fa5302f4b059456f680047f87be428ae88579e0b862502b5ceed600100000000000000c1758f7cbffeb844419bc494a9dc65fb394259f01e9bf23789a75acc29d7d9620100000000000000c1c1ff5f66fefb5c0849e3b2333411d1f7e9dd4888600e334e7a33623f15fa360100000000000000fe240e80ff8a48a77947b394979cf361017cd906ddaab637d72cf72e729d79bf010000000000000006854c73f5703242d31d2576ac2297c93f0b5dc16ade0097c59d5dc0faa43c550100000000000000c650b1a6b34347bd80ed06b48aa4ae1a33adaa507e8ac23bf6c6b94223b63b9d01000000000000000d2892cca10a62c24727ffacba6a57b1a35b0dea5c9d82d7d6c971e2335ced7001000000000000008aabd4f6d7ecec7a749c83fc7be33f3b4818cca6f93a4927b4964900df9454e50100000000000000b9186b95c90d2d00a31e7c68066bd37d73408271762604e3608e2f2c983f830901000000000000003948bfd09bbbc2fe6ac5dfe53146e32df50828eecf7b2b18cdcff8dc385cbd7501000000000000001ba602a293ccdb7a77042fb486c6e010d48b13dff2bef0a26c53637312aac7f701000000000000002385953f1ac49461b9c243159d9668b26e7322e19fff7bc18d90634f0f767ce80100000000000000ba8180cbc0dceb098ee6b22fe89978bf92ebf196a280470b1501bc2138ec02c70100000000000000070bae15860ce96e4a0cbdcc051c75e37a458c8e6c5ae59681d0ed938e588d4501000000000000003ec37919f9f43a9f85f539edfde3ceebea1b0e8279cb036641d588a9da81a6ad01000000000000005e48598ca89db19a4c279a251216d81e33f6b69e7d2ab4450968a1f9409df4a30100000000000000f510cb6c7032c9134dd3e50014ff6d391cfc91606d003fd4acd37e00f919d8350100000000000000cbd74a646a84b73518eadc73b1983dc9733839739576af9a98c698070a3a4b590100000000000000950459187f6d368ccf940574b1fad05f88aea3303858daaae072443b219410a90100000000000000d2e72b0ab02a001b2e573c0d3b78404a7d3c600c3a9fd8ef38e823cad6ed3d6601000000000000003047f8f7e9c47fda9130ccd57d5dc8d407bd89b8dcf8ecbaccf00da184c73a570100000000000000024743c39cd9e151344dc23c65ee0346132d190a224b687be5c5ae31c5e7bb0a01000000000000004e3fb8c16ad624c1852777456805e5352d0221269de66949c95da4076206b35a010000000000000069a6c84df1d25f855b91040e113a5557da8a89d80644ae7bf8d0ba416ab89b6d0100000000000000cb92ffeace78dbafe6fbf275741b4b38657fb81590712aa0bca7877931f6ad390100000000000000997b35c2de1a7ee0cd6744eea2c589ff487059544539bb099ceb6fe78150b68f0100000000000000f8eb309ab851e8f98aa4bd68138a67dc4a435331598079969053a5325b874a51010000000000000059bba625d971d505a9c7d7c2f3ad69203e69e3e5e1fc1e4905fae7703fa19e030100000000000000ba95f5d0e987305bb794dfeae69d7dd6a7987aa66cd7c9d42aca15e9160ec6a10100000000000000ffd82ddc49373448bed6feb0032744e20068f4e21adc4cb6d2cbf05ce73f4ce4010000000000000016278af083f6d261762f8a97b6a09ff83e2f5927ce26c2e48f3c7e771dc7e6950100000000000000c49e3cd2c701bb845963c2870dcca12ed070c3f67ffc20144327a93aa6e896ec010000000000000082a1428bcd525a2e77b8f5fb89c73e5fe1261e96e93b383dd2d66767c855c8f001000000000000002dad5b2212ee688f2eeb9ca1fb6a90574f006dc1c6680ac3a8523363a248940b010000000000000067ccabbf18c035791cee9c748bea2ca03cf72c40f5ae786f297f84fb059732620100000000000000be0a28e5615d9ce3b866b5cf0babf6a7f0e6de06119463382e715b47c89853e40100000000000000b8183b905f28b87c68c2d5b2f39f009f2ee22b47235f6c6d6cf6e63121b490300100000000000000b7c13f1239888cda5c8e6ac9ea10675df17633368906e66a487f91ddd3268ca601000000000000007509d9697cb54f627f47b25e80f46f5d1bf483a9cab5f52df69e1a8f612e486f0100000000000000f3b1c0e43606bd49bc84e403db685b577e898b5f7c5db9052bdc3dacf38dc7ad01000000000000008a2b50acd1a4955fc814bf6720c7427902a6ce709f3a2d7c17c55b67f6f1c06301000000000000003a511828c0cdc0fd257387843fdbf6f19d5ca1ef1c29ec7e971fc9f1195eb60c0100000000000000f9e59cf53bdc07c716fda737a754e45e4aa53860054ce1511a4e8abbf1e366070100000000000000ee5605c1a9ed9484a70b8a591339830f24530eefc4599a7c6188a78896908e2c0100000000000000ad06042b85ed16ff4e46f5a68eba9ac12395366ab17c2da24b4f6747b2c8934f0100000000000000d1c146d2429a5a827660008721c7a880e71f44feaa3dc75524c1a9281bac48cd0100000000000000e4b2cffd0b9cacfc500050b27ecae3c55b9b51bd9a416d62605118c8ad4fb09f0100000000000000b28ba3f09e3521f7d09f0098c6743bc218ee2970068adfa5d908d9d06e627ae50100000000000000f6d74de7b39455519a5d6480c8f12c93fc7a4cfc9af39154fc60857a39ad888b010000000000000099f58256a4a5d6cf5d99f0cdebbcbe1477db461457647631cd21ca7f3120da6001000000000000002bb7b11dfe79a12110b0370510ef20d40ba8a563f517310f8bf37cf7f0403de40100000000000000f86e50733ff2142e88fe5b898087b4b1d6a3250064a439097f8995069624adef0100000000000000bba7a1ccb67a410afedb8e033ad69c39e7c554ce0ce6584b0e6688bae30f7d69010000000000000040533a786cd0be9618126633512666b1b1b9ab3b436fa653c93e2f65da9c196b0100000000000000be95095d93298171c6fb8a1847adfa173d127e13f53482dcb694f891d68f0c58010000000000000085b714accac0654ba57fac59b626dd35802269d2c1d995cea7c335cb05a88f7f01000000000000006a5f902cdeda2c2161d16bd21d586720c08c0bbb7b463d9c59147338d26a8a9601000000000000003a9d3ecc0b675f0c6ffb45637d48c61fbeeb5cc48dbd1422acb94e7dbc9f001a01000000000000009c11e35911f023df6e4d218e53412ab4e4a20c17961d63ba381c913b51f394c001000000000000005a16e068132523621b4e714999d3d856f2728d4667ce954a68b1fd6876bd962f0100000000000000ffcca343512faeffe1cb3a8a7ce62fa4ee0c7f6a5f3e5ac883482846e132813d010000000000000037483029302a84623f0a8db165fbed905b0a4fc25e7cfb56e975a0e98336a59b010000000000000053b5918f72e73f92f32b578d1b602f0cc554d98bee8c4e131ef0ac7a63399fb4010000000000000063e935d23d285cec7b014cb7736d65b4acffc45ca589003d3231de8e6db8a8aa01000000000000006180a56305eff3231eebe895b44751f075f826684ef42a862f11e79c3e689cd301000000000000004a6b88e9110bc8184be0e612404f4781cbeae67cd3fa510668cb21748e750e880100000000000000c7d9cab0fb88dccd0cf4abbf5df9d7f36a3de439c5070c599d397e74133bdfed0100000000000000866fe4ae134938ccf4c5caf01358881c75cfde473b0bb8a2623cc231db2ea3b901000000000000005d202a011f023dfaa6713f16bfd4409dde8bfe594abd59e2be32484c73b979820100000000000000df11dd2be629ba8bf3ef7b4b0478a91bba5c7f928adcf28f3d00ce1f27410ff60100000000000000fc555c014d927fe7838e840609916b9af5d93892ce6f394398858286802b8c6101000000000000006727561447ed474ff4e15645b952a37fa5008d4e694d4853bb55594fa34c4f340100000000000000ec295fb809e22c332aa36a57afe05f2c093b2d13e52b0971d8265c5514e4e9690100000000000000efb5f1e4c4ba37f8c159d452d897c607a58518b8355a8454620b3e3ccc3271230100000000000000f71fca8770328d06e9a45e650e5f58c15feb8ec77ca2dce397490bedfa37db4801000000000000008c3dbd5a1b928cb51e918452191e5328b0f6e8de0259517831a90b02dba3e6110100000000000000aa6fd06015b8309ea9103f4b0e29bfa7e21ab5bb1431c3a76433f591c739f8380100000000000000a892342c56149812a43e98c82b6a3dfee7eff384d9b6d832002ea63838f64900010000000000000005b78368482b0584326a9c0176949523c03ab1446a8aa021701aa9837ccf04fc010000000000000023f07bcb8dade90cefd08732183d5fe32b89ad8a4f84987b9e4e7e767c2587560100000000000000a571c0788c864df547070c9d9a1991a9664ae7466bd83495a8ae20dbe6bff6980100000000000000be6b59cb464fadec4e0b22a9f12857ba5cf7a14c4f9551439d36305d582dd7fb0100000000000000f916634f9fd7e54374e30ac6b722ad1793c13cb2d5f2ad38769eaca2f79d414b01000000000000007ba967a2dae0d8839cf44710591db994d18e53b25ec6d0f861da0037c4a4366a01000000000000004d4a140145f83598fc5a3839260723176f643ae286ff7b2fc460b897fb050a4501000000000000007e15c89cc954f1ddd6a5f2e9f482c1143f5b7b4ba406ed1264fd25a999f223f20100000000000000d0a196fdff4cbca9c7d8a893f9ed66d86038378d8faa1fd8543fcce60ff1cd8c0100000000000000d0b4aada93fb3d0b358e8d59f8914f5987acbc6f5b4f3e12a1ed8d962eded82701000000000000004f950be5bf61958a0ae6e6a036b85b33ba838de8bd5508b558cbe2602d341168010000000000000082e6b6bf1f275c59fbde0dad91393ae690d5e644d11d23898a9ccfdda025920a01000000000000004659b8114500937a2db0c810e194610c582865305e141d04e52ee989b80edd87010000000000000074b60dfb12745236ba9dc8f925efa21482b50c870c567638ba3240a05fe363d90100000000000000d761043f405069ac01285f1ff258450aac675f08d906b1ae0a1ce54eabcb36d90100000000000000b770208e14dc236c373cad93e19b092e9c6c7a90604d941c19ca19923d33013f01000000000000008da8d5949a791c5ca60438cb48670d0ee22dcd4ed87a56b5056fa171f38148220100000000000000d3b3d9703a265a51a137b9de348587c645a168981ef3e01c9dc482856751b8ef0100000000000000c0444bc7cff2374b76ba49e5ce25b632b0db77f08f6c40799077ce3f5b035f3f0100000000000000cfb9f7f1fcf903a51af729ed1647aee928630e148990309f9dc9f3b14b114b760100000000000000a2ee8d9c22eba97998d63854409d99c87b21d079f5c888d863a81d41d6abf0110100000000000000d14a779884de1b2fbf079b8e47e8c0edb1c29e282996899a4eab5aaf1f4f41130100000000000000c2344c6fb787621295335b6b5acbab9531199901492d41e13a64dfb2927f83be01000000000000002ba5634557f15c4e9198d1ce0cc525e897d3fdecb0c18af8a53fe4e3384f4a1d01000000000000004c51b84496e533a7f1bb2b806f3733a7f0a48543976d0a4e5410e831f93e04170100000000000000615d64d17a182504db609d14dc6a45a109817cfaaad1608b4c48382bee48d3780100000000000000155763a153e0c02b2eef1d8a9cd8a50a9eaac9d3af7ad1e559b1e2320b521e1c01000000000000005208fe27477acbc6750d0caa831c0b26801c58eca046a6cf9d4143f85d877e83010000000000000025ebbb2a00126545bbedf00318a78b6e61a0b52c81e30231ff45bd32e311472f01000000000000003773b05d2e2660498c8d407a1d6223423c26aa08b9b3656af94d78b861fba22f01000000000000007bbd4f800c34110b6c739ff1e8913a36ab62f25641c4bb7413cd354894b602930100000000000000500a9e1ea37636c24ebf4e32668897dae936eef42b6da49027f606d4f24a7e960100000000000000ddb8ed355e1389d3a12e9e55fb7723e89bc5020144bd832e02c47f7f672c9f14010000000000000039712f967c4e06d284d6da4735cf2823c1f770674b668f7bc896071c3fd41eda01000000000000000d4c26111d95a762e990acd0a15417be572ee390c7b9dd91f5e7ddd4a015f1bb01000000000000001e1fe4a3c9f590aff5a70b9cae569605ac78531cc10d310436fe0c306cf2e36101000000000000004df6e4d7da2c11ddb9153c714699f9ab625bbcd5e8e38f1cdeee567dc04abc610100000000000000d9b96ab14d54cf0093b00b5bb592a6ea6036f844bf7eaa3b5181d0764e1724b901000000000000009cfeed14dd2f96550a0e7edebd9c9a8c8b1d8f7efdd1abca01987654239f3c860100000000000000fd2fe2f117d597b29474a740ec767fe51cec93544d00e34269b78ddb31225f3b0100000000000000a74ff082093aff29e9a0d9adeb6e6df264b39c15ef1a82bf942e8ba76872bac401000000000000004c3b4b0a3acf902acec7f5d868f77d78b17fa4cfc5f785d393c9f3d15e04880501000000000000008404cabeb0674765bb77af690fa838ba28fa2045d602994a89f07680f4851c83010000000000000006b9e740c0a0e1f8fd31717438d5918ed8680eaccb70fdc9511931ce0d164ae50100000000000000b8cf76a8082d518016ea5588be57b64e156ed23b0f72248975522c23d15ef16101000000000000002565e04c6e0b665fac87f8238bee74837f8f621ed63409f3838d263603400a980100000000000000a4f516aea3a92e379a03a2a9f9fcc757af022ce3572b00ffff21151fda41e79601000000000000002a38a4dcdffc571d547ee3e59121fdd378335df7c65877f983f0957cdc9824130100000000000000620c78305072857b43dadced80ebc057dbfc82b58c14c7b63372ef02140867650100000000000000baf0112f613aa6fff341d67decad56d1c5744a3ebb8e3577e82febbf3535b3fe01000000000000004dc2e72680dbf0156818114fa34d3591f8e6948df25a128e191190c66f6ac35301000000000000001ebe41ca4cd399901ffe5f6f52642630820500e4a96cbef4c80c560cae38d2c601000000000000000442cfb3cd38604b2a5251638e9fa7ee6b05968c731f393b78a6604e0072b09f01000000000000007af0706d921a331b5c1f957a8d1decf15aa0e3377a80d72107693afd8614ef8f0100000000000000811038f59afeb084566271eb138b0106a8ca013f57e589d6f777bc7bb2219e760100000000000000f5e2c973d4ccbdd36d8ed4e3dae75d3b50002cc1c74eb0a1fe29ef1ef8e3f0cc0100000000000000f5df4d76a1df9b6a7940a07f23b909a0e03feaa0cc84743674678c7a1d5412760100000000000000f56f5b3de4f46bcde88569888783fd60646806795807edb1e04ec3dff85ff3e10100000000000000b1f748c87b12edf7242b4719cfe68e6761acaa4329beee538d6ff740941d3cd30100000000000000a85cec5e853b5891796fd58cdddc4c6c017140db44777c9a1e94c0d757a2e51f01000000000000008b35aa0d212e4032ede352d5426696c260c9ecffa632a2e14e6a6629a6c9f637010000000000000072341ca1eb3a0fd4e790318b51ace114315573d5355c9d5336e39382ba0642560100000000000000a79cd2241bd68004641baac25c1900da3a9e6d83101aea3ef2a58d78c657272f0100000000000000b14911cb101f45b88c437a36bd82a5f8641b1c55052060ea46ea2baea570e8bf0100000000000000b66e24ea84d5e02a7b2b58e20bbf17a0f2a19c4654bf8b07669ba3b9fc4a468101000000000000003c1dcee818434058b7de26ee874ade21bd1149185d6dcba1f67048b931ec3dda01000000000000009d31c78ebe9664e2bd8ba41cddcd9c5b9fb0cc6f8be0a2e5b91f6bcf66a5c7530100000000000000290be52ae5259f3e8bd0cdf454004607867a97c1db86d0c9ff16c8c83625bc8301000000000000005e0fad9f1e6837994babd7d55b2d4079af785ec48568cd1c4efd60ea28162e8e01000000000000004c43a374e6b3e6f7d6c5a6b8518ae0d0d232a1c46d63af8fbc800045a14cbe93010000000000000029a6535bac723c2f711e590c67f0bd60843cf7888eebca46025ae57f5ca1d92901000000000000004b3210303cc88f1495bf5a42c50dc7c51c8bc1db98bf3722b894462346e9221d01000000000000004d9b0bbfc6a294ee0492bdc595a5d8f7cf371c729c5c319a3822f0248bb4fef70100000000000000bbff79a9b92ef586f0be053cc01639b9a335ad8e2910146d070997e285007d830100000000000000ccc84b255e5e73b971f2e71d1903b5ef9bd6d0965ff3ce29c517c875bd7ab65701000000000000001babed13d56d28fdb937b07bce846689584099575382c273f7e425f822c8159f0100000000000000530f022bda69f1ea2ee55570057ca38fda313213b9c02a7c6560ee53e40b108501000000000000009bde702d9265dd3f62a8c9bd36d5e2f4e0dfb91ff812885cf2497eee667660950100000000000000ac0ef45b1c0f242a4aeb0ef03a9c0d9e3ae2a4bee8cb4c35f0293bac4331e76501000000000000001887f7937a8ca4ec67ceaedebfad3d307b10f416219de1ed4f8646409eab730a0100000000000000dfb56f8dbbc94ce17a85087b4dce709c5bd4289650c0eed35f244a21c91c1f1b010000000000000042f20843bf75f4916ade8eb2faad0ada3795b3cacd29b679f18805f2826367550100000000000000a4984d27a16bb575649bc55d16f927d12beb0b5373f8db1aac9f2f88a721628d0100000000000000be724139e9bdd099b70f7edab7d1acf0d05fa1a4ca212f5e2958d31f4272dcda0100000000000000ee40b85aa515fdbe6e559f815edc7ec1e321e0d152dd54258382ba31b54e447a010000000000000090517dbf339bac4cd01fcad403dd0803cb67a9b15bf024ce038eea2c7f24230401000000000000008dc1439b28d488419535c2fea9c821023f7bce423fa02d9f42e60c07c3d6ab560100000000000000c3150e4ca47e7bc6486f198bf0a742a18ab0871bb1efa34e82c4ce81f27926670100000000000000c2eb94269c5e5d2ab9a1a300387358679640763b053aca99ba5c1c9083ee717f0100000000000000316bafdefb60951da2738d6c9c2ef1866d139b34b5eab6944d6bae754dd3fb1101000000000000007a92827270cfa82f16145a44f9bdd9ff5038ef1b665dd520a2e61db9749094960100000000000000ebb1834a568ea7653bc66f394937a0aa4f2f617118d2161e2c11c0d7d2febb9d0100000000000000b6d7ac98d6667fe8f4a186ef12a66b017df05a54e11b45d3f2967cb3d6b6827f010000000000000012e9b2bfe3d95c70fe8036a6cc8f677d67c9c65724aef87cc2a2eba5555d81070100000000000000e5f305cd6d930d41209036f066a86d3724aad2f388d354ac4979cc763c220a5601000000000000007ef02c62a02f0c18581cfb8ab7c2dcdff34e36a453a3700c568d61fdf9c8a7b40100000000000000eea623df46d1f301cf567672971c6895edf7316a5639dcee698730641950fb8b010000000000000098a6defcfeb3dfca36ec46eb373734627a2c395cdd2d886046a11788ed6467af01000000000000007a03c321222b7f7b34946e44850798fee20b9112a64e3950398cce19064b8723010000000000000035db4f9ab121f213b695b982f50c47ac04a14c54214e831ed1bbef7b9542310c01000000000000009bbc024bfe4f072b94735afda064dc3c7da2b4bc0c50cfad44722543583a372e01000000000000002b71a8a81bc2be65f3224ba3711d1bb243446d154369e209f97d8375b5fe8deb0100000000000000496826b538d97906e14d417b48598d7d591a483ab5f4c6786cd0b96239c2f4cf0100000000000000ef27d1d5573e6419ffcc7c4372668105118256b810ab2e2dbb5e7d8280ee94250100000000000000ed3f97f83ee7799c4aeba9f40bd18134c862c1a30875fc1e038cd27bae3a739a0100000000000000348e8bacc2d40191a6a00e137c745a422ff8fb03148d2ff9cad75efbb7a670140100000000000000316d5dbafd16258b7077d46a3dc32c46986a56a3eb095094d3f8fdd6acbf91cf01000000000000006a5dcdf2c3598c00d31a010dece5bf744f203856712531b07a31babcf06d09e30100000000000000efb31c5039e45fda750af5d2ea31b3210a407b168adec8f98db1f3dbc4cd94380100000000000000e2d564796e2660ba1bf553a21581f82116f775002a0dc0f26439f54c660fd84d0100000000000000bff74b6ff5ccdce9a659408871d486511938422a6e550fe0669ccd739f80108101000000000000009ac13f915431b39f99d8c0bed7e9c62d22e1e8b6daaee809920f491154ef6f8b01000000000000002ff9330a8c344ad3adf4d97db014a2d0891d4dd69f5c8369dad3e0b25566173e01000000000000008f44b6746d8d809da87915d6ec208a07ee63481d24b275c6424429e16ff4d25e0100000000000000e01d6eda8094e949bfbb05c819b509a12eb662a414b822f841d9555d58e1ce7601000000000000008fc9be34cc95e087c83cb6f86e2d2b7a22a7015558e8fcb1260740bcbd346d630100000000000000c3576342cbf99792896ee5329b04ff2eee2fc2bb6d53c5c03d52c8957ee793fb0100000000000000de186294778cc927cb2a24ade9ad165956f3586979f1ac5f3b4a16edd2674339010000000000000043a9a2915f377cd4943f602be38c3bd6ef39e91562c09f18fb672884b4bf8eab010000000000000059dadf17dc0f84c1c334e6a815a04bdfcd0988a3f3bcb713c66ae29e17276cc6010000000000000010caeb8c977dfd960736b1c5dd8840cd623b044fccf4054bb7854a53d5cf26610100000000000000297dc7cf28b3d40a42c5e8faac876bf7227c670e6e031dd0e0537f4fb70e6fbe0100000000000000f442190c846bbf5764bda138c075360be77a8fcb27ad889adbffdc7b881a33f601000000000000004a9ff9736a4c0907996106f8de8151f1a98f4f3c7dd21fcb85829d6a0e42063d0100000000000000a5f788e86ee2d311357b7aa4a128f063fa4ee36958baf10304c10bde7421aa2c0100000000000000290321d793b7dcb12ad148c2438bb60821bd938b7e9164a0c3d0fc82987f8b630100000000000000f7bdbb5c598784ba157940b08b5c5aa967d0f3faf60da28b915650eb39afe47c0100000000000000e3a73e5e042574299206b6520770553482e099d075bf00cbeb139b5f6737afed01000000000000003bb30832d06cdd3e081afef0cf2b7770bfe81dc58081d1886443e4e4547da8a101000000000000002832b59000d2027d2bf57fdb40da04bd8aac1498923397517181cc487a92815201000000000000006c3829859c7b27da7f0528e6281a406cf713971a03fa4dbb4ea973ee33f7f3170100000000000000677358fc648638cbd854d2a009dd39b8508dd3047d0c5f13bb403a64d053ad03010000000000000073dce1727ec50c50366378cd389246e19543d900d7e9dab8e323d04cf5b202a701000000000000002ada479e1fde7211de15900ed29035f6f07506cdbadc4c232aab96d62006b9de0100000000000000ee1a56541083b083f1a13b5f8aa4042a098de2cec4c43f3250baaba8f03a52ea0100000000000000e2cc4424464983ada824bbef5aaa8995e80ef1017c15ef3b13902599841637ba01000000000000005246164c02e9e6bfb7a2dbf7ba8a5440a189f8048373678f5b1085f217464c050100000000000000dea69c3badff9b8d7571cb6c538cd099544da7460a19e1b8651c5c530a6dd53c01000000000000001889f1b031fa7d64c4b480a17cd2941be2c02681bca397c93607091f37bf5ee1010000000000000005062bede97a45c6e1c6b593675ee07ce969fae45136cc2b2afc6e705a77f4700100000000000000fd734da3c98d7d56f8b9cc92f389350f3b6de2fb5917d338fee9fd961978e2a30100000000000000dc6e03f650e4304ca8d1598dde8d4faf45891987bfc49ef785ace47c4c0b5573010000000000000084845f99ad8fe89b7aa136c30b71b791015e8801b1d42cbf9841a0b90e723aad010000000000000018ede59e820bcdd0ed2faf99a21bdc916d71577dd35117f90efe77b8513e631001000000000000008c258b4ca16dfb8e5afde4cf40fecf115307798117b4860475511b3b5d5615840100000000000000ea8c8bec277832ff4f31396f76d6117026cf73407bce46de9ccfd17c686ca11701000000000000000e7bc96895730726225e47e31c742fd44d3936f31ecd32658c694fc11df2522401000000000000002299bac5f0a0570861899eed87f7f1faf65d74bb8120b8f498a6af503762c37901000000000000008873eb6d260a77ad37a779b9d6c87eabde1fb0be17ddfbd8c8bef64200cdf0db01000000000000008600604f01fa82a628ce3cb883cc6ff391cc6b7a348f3fd0d90b6657461013260100000000000000e08a65617167ad46c5217d67de29bf79e1f8f417e0d6d8e64bed10ae13312d8401000000000000003f6aeb3ed0d67d71ee11a1c2e1ed66da77abd8cc8c0f4d995d64fe4ec873684701000000000000006375ae0c1bf2b0388e16971715fd68c31ed179f38947531c165f0da2c3fe766701000000000000000cfb71d3e8d694979c35bbfce53fd595f2df0f1679ce32799c1774a22222433d010000000000000012aa455c35356255f9ba286193962f3bc23f7fff565c1995ac21015bd946fe6e0100000000000000447a00c24ddef95382f0fce94aec3aefb0e8f0cb1a635bfb05faa030d63c1130010000000000000047ede3eca5f6c8f0a51f2d36d7d1c236aab07a8b2aaa6ab08c8ccf8d87ce3dd10100000000000000a5d172126aadfe80d2b711776674d61df5a1cd1a0129761fb2d2de58ed9d48a001000000000000006b5487e03da258c7c92add43a1b5a99a0b40f8316e758585150877bb6fe88b3201000000000000009a0ea02dca493accceb975732f31c9d249d4c90ff1ca0bd86cbe00f1728146b401000000000000004485615186ae8ad33aff337594a7f8325d3a50201ee04320fb1dd2eab9643d1601000000000000002b07c366c1ed899a2ac9722b76e092828714a8177368e51ca05ec05c565866b30100000000000000e81206b483fdcf1fe42145f27d1efb8178a57ee24b196285374037da2a53b32301000000000000001ac44a1e32a5aabcb2bd23d6586da06e7d97d49a36cd670acaee574df1b912210100000000000000ff568b8e0dbe74604c6d04b5de6f2df03b343bea074c4495c6a10e511ba473d9010000000000000032bbff551f7ed51452d264d796315e578d982e942eebb60e519ca648935d8b0c01000000000000003a4bfd825ccd308def4a61bac80c579db42b02ea5f1a0768656a326e83a0dd880100000000000000db106e27c5b78f1a0d19e0abb47b4666c54906c5539c8596b43d36dc885e927a0100000000000000b5e0d0ae74b0ac76c0195fecca9660a241920ba97cdc5a247c7e941ee1f5407c01000000000000001450fb02aedbbfce8ec62c79767acd6b9e881390ad868d07713bb1d41d9c74b90100000000000000f33b53556f28f27d250585317cd57a18f37c5d5f2b3c1bd00a0c91ea54f1636f0100000000000000e056900cabddb471de9e1846d7efdddd8b5ad400b02fc54b4402ba725c78bf9a0100000000000000f1d8f202f4766a1eddc43c209636d25771988a0058ae1e16797219337771307f010000000000000080629b67e7b2d6f57e9da3cb29cc8463a65d125039628124784f944b94c29e8801000000000000008a92eb6852ec8ed6a1721d33f6f671e488fb995c3fa36c5e55400721bcacef75010000000000000080a35afdc67bbec0e3e5ef1fa569249264c54d74df218b46e1dc0fd585149f45010000000000000079f73931b31ce353119fb4063412e844b16cb3eb92e592ebd822a8c213035548010000000000000030afa9ef79458f844a27a3881655b6eafb90b3912737f1bcddb95e78eb098c1d010000000000000095885aaa49faca9622ac9eab12f2efa509361511039934ffeff93eb948eb517d010000000000000031a46e639e57d1a11119b17f76617a35b3606d206fb5c3e87710f464f7a57de50100000000000000ed25d7114e2aef2f0e57dc2be1401a4994d8aaafb30223162634a512604a2366010000000000000012c277c98d0593ec3d0f9d01e8ce08f67813197b67fe96d2be7c5ba6481515df010000000000000008070000000000000001c362260100211c00000000000000002904050001000000000000002a0d050002000000000000002f16050003000000000000008e1f05000400000000000000ee28050005000000000000004d32050006000000000000009d3b05000700000000000000fd44050008000000000000005c4e05000900000000000000b75705000a00000000000000176105000b00000000000000766a05000c00000000000000d67305000d00000000000000357d05000e00000000000000958605000f00000000000000f58f0500100000000000000055990500110000000000000095a205001200000000000000d8ab050013000000000000000db50500140000000000000024da05001500000000000000aaec05001600000000000000f4f5050017000000000000003bff050018000000000000008b0806001900000000000000992406001a00000000000000f92d06001b000000000000000d4a06001c00000000000000685306001d00000000000000b65c06001e00000000000000f76506001f00000000000000308b060020000000000000007b940600210000000000000025a70600220000000000000033c3060023000000000000007fcc06002400000000000000c3d50600250000000000000011df060026000000000000005ae806002700000000000000a0f106002800000000000000410407002900000000000000880d07002a000000000000001b3c07002b00000000000000764507002c00000000000000357407002d00000000000000239907002e000000000000006fa207002f00000000000000c3ab070030000000000000006abe07003100000000000000bdc7070032000000000000000fd107003300000000000000b2e3070034000000000000000aed07003500000000000000971b080036000000000000009d24080037000000000000009c4008003800000000000000255308003900000000000000735c08003a000000000000000c6f08003b00000000000000048b08003c00000000000000589408003d00000000000000d3c208003e00000000000000e4de08003f000000000000003fe808004000000000000000f7fa08004100000000000000aa0d09004200000000000000153309004300000000000000fc6a090044000000000000003e74090045000000000000009a7d0900460000000000000000a30900470000000000000014db0900480000000000000020130a004900000000000000791c0a004a00000000000000364b0a004b0000000000000043830a004c00000000000000e5950a004d0000000000000045bb0a004e0000000000000059f30a004f000000000000000e060b005000000000000000812b0b005100000000000000dc340b005200000000000000ef500b005300000000000000a3630b005400000000000000b69b0b005500000000000000c7d30b005600000000000000dd0b0c005700000000000000f3430c005800000000000000087c0c00590000000000000052b30c005a0000000000000060eb0c005b00000000000000baf40c005c0000000000000072230d005d00000000000000805b0d005e000000000000007e930d005f000000000000007ccb0d00600000000000000076030e006100000000000000793b0e00620000000000000088730e00630000000000000092ab0e00640000000000000083e30e006500000000000000731b0f00660000000000000079530f006700000000000000748b0f0068000000000000001fc30f006900000000000000d0fa0f006a00000000000000633210006b00000000000000826a10006c0000000000000028a210006d0000000000000005b310006e0000000000000055d810006f000000000000004810110070000000000000006548110071000000000000008e8011007200000000000000bfb811007300000000000000bbf011007400000000000000e828120075000000000000001561120076000000000000003b991200770000000000000058d112007800000000000000770913007900000000000000944113007a00000000000000c07913007b00000000000000e7b113007c000000000000000cea13007d0000000000000067f313007e00000000000000d31814007f000000000000002e22140080000000000000008c2b14008100000000000000545a14008200000000000000ad63140083000000000000000e89140084000000000000006892140085000000000000008dca14008600000000000000b00215008700000000000000d03a15008800000000000000f3721500890000000000000015ab15008a000000000000003be315008b000000000000005d1b16008c00000000000000855316008d00000000000000b18b16008e00000000000000d3c316008f00000000000000e9fb16009000000000000000073417009100000000000000bf4617009200000000000000286c1700930000000000000029a41700940000000000000041dc17009500000000000000591418009600000000000000bf3918009700000000000000704c18009800000000000000948418009900000000000000f28d18009a00000000000000bcbc18009b00000000000000e4f418009c000000000000000b2d19009d000000000000002c6519009e00000000000000896e19009f00000000000000519d1900a00000000000000075d51900a100000000000000920d1a00a200000000000000ec161a00a300000000000000b6451a00a400000000000000887d1a00a50000000000000077b51a00a600000000000000cdbe1a00a70000000000000070ed1a00a80000000000000083091b00a9000000000000004e251b00aa00000000000000fe371b00ab00000000000000065d1b00ac000000000000005f661b00ad00000000000000bd6f1b00ae00000000000000de941b00af00000000000000fecc1b00b0000000000000001f041c00b1000000000000000c321c00b2000000000000002f3b1c00b3000000000000002e721c00b4000000000000000ca01c00b50000000000000044a91c00b60000000000000022e11c00b70000000000000044191d00b8000000000000000c481d00b9000000000000006b511d00ba000000000000008b891d00bb00000000000000a5c11d00bc0000000000000053f91d00bd00000000000000ff301e00be00000000000000054d1e00bf0000000000000002691e00c000000000000000d1a01e00c100000000000000c5d81e00c200000000000000cf101f00c30000000000000083481f00c400000000000000af801f00c500000000000000d0b81f00c600000000000000f0f01f00c7000000000000001b292000c80000000000000039612000c90000000000000054992000ca000000000000004fd12000cb000000000000004c092100cc00000000000000031c2100cd000000000000006d412100ce00000000000000cc4a2100cf0000000000000098792100d000000000000000c4b12100d100000000000000eee92100d20000000000000011222200d300000000000000325a2200d40000000000000055922200d50000000000000075ca2200d6000000000000008f022300d700000000000000b13a2300d800000000000000cd722300d90000000000000078852300da00000000000000ce8e2300db00000000000000bdaa2300dc00000000000000abe22300dd0000000000000012112400de00000000000000501a2400df0000000000000045512400e000000000000000a1882400e1000000000000005fc02400e20000000000000013f82400e30000000000000007302500e40000000000000013682500e500000000000000c37a2500e600000000000000a8962500e700000000000000fb9f2500e80000000000000000d82500e90000000000000019102600ea000000000000002b482600eb0000000000000028802600ec000000000000002eb82600ed0000000000000044d42600ee0000000000000058f02600ef00000000000000b3f92600f00000000000000065282700f10000000000000057602700f20000000000000064982700f3000000000000008dd02700f400000000000000a7ec2700f500000000000000b9082800f600000000000000e0402800f700000000000000f6782800f80000000000000019b12800f90000000000000040e92800fa000000000000006c212900fb00000000000000a0592900fc00000000000000107f2900fd00000000000000bc912900fe00000000000000eac92900ff00000000000000fd012a000001000000000000ff1d2a0001010000000000000c3a2a0002010000000000002b722a00030100000000000005aa2a000401000000000000fce12a0005010000000000004ceb2a000601000000000000e0fd2a000701000000000000c3192b000801000000000000be512b0009010000000000000a772b000a01000000000000ae892b000b01000000000000b0a52b000c01000000000000abc12b000d010000000000009bf92b000e0100000000000093312c000f0100000000000087692c00100100000000000075a12c00110100000000000074d92c00120100000000000089112d00130100000000000099492d001401000000000000b0812d001501000000000000c3b92d001601000000000000d1f12d001701000000000000d6292e001801000000000000e9612e001901000000000000ea992e001a01000000000000efd12e001b01000000000000f8092f001c01000000000000f0412f001d01000000000000e9792f001e0100000000000036832f001f01000000000000b2b12f002001000000000000a9cd2f00210100000000000094e92f0022010000000000007121300023010000000000003b5930002401000000000000089130002501000000000000599a30002601000000000000f6c830002701000000000000e30031002801000000000000c03831002901000000000000a17031002a01000000000000f27931002b010000000000007fa831002c010000000000005de031002d01000000000000aae931002e01000000000000441832002f01000000000000295032003001000000000000fe8732003101000000000000aa9a3200320100000000000010c0320033010000000000003af8320034010000000000005f303300350100000000000059683300360100000000000078a0330037010000000000009bd833003801000000000000cb1034003901000000000000f44834003a010000000000001c8134003b0100000000000044b934003c0100000000000055f134003d010000000000009dfa34003e01000000000000302935003f01000000000000c6573500400100000000000023613500410100000000000053993500420100000000000080d135004301000000000000560036004401000000000000b10936004501000000000000ce4136004601000000000000037a3600470100000000000031b2360048010000000000005fea360049010000000000007b2237004a01000000000000995a37004b01000000000000f56337004c01000000000000c69237004d01000000000000feca37004e01000000000000340338004f01000000000000683b380050010000000000009e7338005101000000000000c9ab38005201000000000000dcc7380053010000000000003cd138005401000000000000f8e338005501000000000000b0f6380056010000000000001c1c390057010000000000007a2539005801000000000000da2e39005901000000000000525439005a01000000000000878c39005b01000000000000bbc439005c01000000000000f3fc39005d0100000000000028353a005e010000000000005f6d3a005f0100000000000098a53a006001000000000000cedd3a0061010000000000000c163b006201000000000000404e3b00630100000000000019853b006401000000000000608e3b006501000000000000b8973b0066010000000000000fa13b006701000000000000a7b33b006801000000000000fabc3b00690100000000000049c63b006a010000000000009ccf3b006b01000000000000eed83b006c01000000000000c1f43b006d0100000000000014fe3b006e0100000000000066073c006f01000000000000b7103c0070010000000000009e2c3c007101000000000000ee353c00720100000000000094483c007301000000000000e0513c0074010000000000007c643c0075010000000000001d773c0076010000000000004b9c3c00770100000000000010d43c007801000000000000d80b3d0079010000000000001a153d007a0100000000000053433d007b01000000000000ea553d007c01000000000000225f3d007d0100000000000072683d007e01000000000000b4713d007f01000000000000fb7a3d0080010000000000007a8d3d008101000000000000b8963d00820100000000000006a03d00830100000000000088b23d008401000000000000c8bb3d0085010000000000000bc53d0086010000000000001dea3d008701000000000000e9053e008801000000000000b5213e0089010000000000003b343e008a01000000000000843d3e008b010000000000005e593e008c010000000000001f913e008d0100000000000065c83e008e010000000000006bed3e008f01000000000000a9f63e009001000000000000f6ff3e009101000000000000c1373f0092010000000000005c4a3f0093010000000000003b663f009401000000000000856f3f009501000000000000cf783f0096010000000000003ea73f009701000000000000ccde3f0098010000000000008516400099010000000000001e2940009a010000000000006e4e40009b01000000000000c35740009c010000000000009b8640009d01000000000000cebe40009e0100000000000001f740009f01000000000000372f4100a00100000000000097384100a10100000000000070674100a201000000000000a99f4100a30100000000000065b24100a401000000000000ddd74100a50100000000000096ea4100a6010000000000000b104200a70100000000000044484200a8010000000000009c514200a9010000000000003b804200aa0100000000000051b84200ab010000000000006fd44200ac010000000000005ef04200ad01000000000000b9f94200ae010000000000006a284300af0100000000000078604300b00100000000000077984300b101000000000000abd04300b20100000000000064e34300b30100000000000072ff4300b401000000000000d2084400b50100000000000008414400b6010000000000002e794400b7010000000000005eb14400b8010000000000007de94400b9010000000000009e214500ba010000000000005d344500bb01000000000000d0594500bc0100000000000006924500bd010000000000001aca4500be010000000000004a024600bf01000000000000603a4600c00100000000000084724600c101000000000000abaa4600c20100000000000047bd4600c3010000000000009ec64600c401000000000000a0e24600c5010000000000005df54600c601000000000000bf1a4700c701000000000000d1524700c8010000000000007f814700c901000000000000dd8a4700ca0100000000000039944700cb01000000000000f2c24700cc0100000000000010fb4700cd01000000000000d5294800ce010000000000002c334800cf01000000000000f9614800d001000000000000596b4800d10100000000000078874800d2010000000000008da34800d301000000000000aadb4800d401000000000000c6134900d501000000000000eb4b4900d601000000000000e7834900d701000000000000f9bb4900d801000000000000b6ce4900d9010000000000001bf44900da010000000000004a2c4a00db0100000000000066644a00dc010000000000002f7d4a00dd0100000000000019994a00de01000000000000c0ab4a00df01000000000000aec74a00e001000000000000fed04a00e101000000000000bbff4a00e20100000000000019094b00e301000000000000902e4b00e40100000000000041414b00e50100000000000010704b00e6010000000000006e794b00e7010000000000002b8c4b00e80100000000000094b14b00e901000000000000a4e94b00ea01000000000000d4214c00eb01000000000000d7594c00ec01000000000000e8914c00ed0100000000000004ae4c00ee01000000000000ebc94c00ef0100000000000014024d00f001000000000000fe394d00f1010000000000000a724d00f201000000000000667b4d00f30100000000000013aa4d00f40100000000000031c64d00f50100000000000037e24d00f6010000000000004afe4d00f7010000000000002c1a4e00f801000000000000ea2c4e00f90100000000000049364e00fa010000000000004e524e00fb01000000000000628a4e00fc0100000000000079a64e00fd010000000000001ab94e00fe0100000000000079c24e00ff0100000000000094de4e000002000000000000aafa4e00010200000000000059324f00020200000000000004654f000302000000000000ff764f0004020000000000000d804f0005020000000000007e924f000602000000000000c29b4f000702000000000000f4d34f000802000000000000160c50000902000000000000504450000a02000000000000877c50000b02000000000000b6b450000c02000000000000e7ec50000d0200000000000046f650000e02000000000000b61b51000f020000000000001625510010020000000000004f5d510011020000000000000f7051001202000000000000889551001302000000000000b5cd5100140200000000000014d751001502000000000000e605520016020000000000001f3e5200170200000000000053765200180200000000000089ae52001902000000000000e8b752001a02000000000000b7e652001b0200000000000074f952001c02000000000000e81e53001d020000000000001a5753001e02000000000000558f53001f020000000000008ac753002002000000000000b9ff53002102000000000000f13754002202000000000000277054002302000000000000418c54002402000000000000d1a354002502000000000000d9c8540026020000000000007edb54002702000000000000b81355002802000000000000e34b55002902000000000000c58355002a02000000000000d6bb55002b0200000000000007f455002c02000000000000c30656002d020000000000002c2c56002e020000000000005d6456002f020000000000008f9c56003002000000000000c9d456003102000000000000070d570032020000000000004345570033020000000000007a7d570034020000000000007d99570035020000000000009ab557003602000000000000b4ed57003702000000000000f225580038020000000000002f5e580039020000000000006b9658003a02000000000000a6ce58003b02000000000000e30659003c02000000000000183f59003d02000000000000517759003e02000000000000ad8059003f020000000000008baf59004002000000000000e9b859004102000000000000c5e75900420200000000000002205a0043020000000000003f585a0044020000000000007c905a004502000000000000bcc85a004602000000000000f1005b004702000000000000111d5b00480200000000000030395b0049020000000000006f715b004a02000000000000aca95b004b02000000000000e9e15b004c02000000000000251a5c004d0200000000000060525c004e020000000000009f8a5c004f02000000000000dbc25c00500200000000000019fb5c00510200000000000058335d005202000000000000956b5d005302000000000000c7a35d005402000000000000f7db5d00550200000000000031145e0056020000000000006f4c5e005702000000000000a7845e005802000000000000e0bc5e0059020000000000003fc65e005a020000000000001cf55e005b02000000000000582d5f005c0200000000000093655f005d02000000000000cf9d5f005e0200000000000005d65f005f02000000000000440e600060020000000000008346600061020000000000006a7e6000620200000000000056b46000630200000000000000ec60006402000000000000a72361006502000000000000e25b61006602000000000000f293610067020000000000001bcc61006802000000000000dade61006902000000000000590462006a02000000000000963c62006b02000000000000cc7462006c020000000000008c8762006d02000000000000ffac62006e020000000000003ae562006f02000000000000731d63007002000000000000b05563007102000000000000e98d630072020000000000001dc6630073020000000000005dfe63007402000000000000993664007502000000000000d86e6400760200000000000017a76400770200000000000051df640078020000000000008a1765007902000000000000c34f65007a02000000000000018865007b020000000000003ec065007c020000000000007af865007d02000000000000b63066007e02000000000000f06866007f0200000000000004a16600800200000000000041d966008102000000000000711167008202000000000000ac4967008302000000000000de8167008402000000000000f8b967008502000000000000b8cc6700860200000000000035f2670087020000000000006e2a680088020000000000001c3d680089020000000000007f6268008a02000000000000ba9a68008b02000000000000f3d268008c02000000000000310b69008d02000000000000704369008e02000000000000ae7b69008f02000000000000eeb3690090020000000000002bec6900910200000000000065246a009202000000000000a45c6a009302000000000000e0946a0094020000000000001dcd6a009502000000000000dbdf6a00960200000000000059056b00970200000000000018186b009802000000000000923d6b009902000000000000b0756b009a02000000000000e6ad6b009b0200000000000021e66b009c020000000000005e1e6c009d0200000000000096566c009e02000000000000d28e6c009f020000000000000ac76c00a00200000000000047ff6c00a10200000000000077376d00a202000000000000876f6d00a3020000000000000fa76d00a40200000000000059dc6d00a50200000000000022146e00a602000000000000464c6e00a70200000000000071846e00a802000000000000eea96e00a902000000000000aabc6e00aa0200000000000085eb6e00ab02000000000000e4f46e00ac020000000000001c2d6f00ad02000000000000da3f6f00ae0200000000000053656f00af020000000000008c9d6f00b002000000000000c4d56f00b102000000000000d90d7000b202000000000000d7457000b302000000000000f67d7000b402000000000000deb57000b502000000000000b2ed7000b602000000000000a9257100b702000000000000975d7100b802000000000000338c7100b9020000000000007e957100ba0200000000000068b17100bb0200000000000050cd7100bc020000000000001c057200bd02000000000000610e7200be02000000000000c13c7200bf020000000000006b747200c0020000000000005aac7200c10200000000000032e47200c202000000000000dcf67200c302000000000000321c7300c4020000000000002b547300c5020000000000007d8b7300c60200000000000020c37300c702000000000000cefa7300c8020000000000003c327400c9020000000000009b697400ca02000000000000eda07400cb0200000000000056d87400cc0200000000000090107500cd02000000000000ad2c7500ce020000000000000b367500cf02000000000000c7487500d002000000000000fe807500d10200000000000039b97500d20200000000000073f17500d30200000000000030047600d4020000000000004b207600d502000000000000a9297600d60200000000000006337600d702000000000000d3617600d80200000000000090747600d902000000000000089a7600da020000000000002fd27600db020000000000001a0a7700dc0200000000000022427700dd02000000000000007a7700de02000000000000d2b17700df02000000000000f8e97700e0020000000000002b227800e102000000000000635a7800e202000000000000a0927800e302000000000000daca7800e40200000000000011037900e502000000000000483b7900e60200000000000085737900e702000000000000b1ab7900e802000000000000dae37900e902000000000000121c7a00ea0200000000000049547a00eb02000000000000878c7a00ec02000000000000bfc47a00ed02000000000000edfc7a00ee0200000000000026357b00ef02000000000000606d7b00f0020000000000009da57b00f102000000000000cddd7b00f20200000000000006167c00f3020000000000003f4e7c00f402000000000000fb607c00f50200000000000077867c00f602000000000000b4be7c00f70200000000000014c87c00f802000000000000e0f67c00f9020000000000001b2f7d00fa0200000000000058677d00fb02000000000000959f7d00fc02000000000000d2d77d00fd02000000000000ec0f7e00fe0200000000000025487e00ff020000000000005f807e0000030000000000009ab87e000103000000000000d3f07e000203000000000000ee0c7f0003030000000000000a297f000403000000000000c53b7f00050300000000000043617f0006030000000000007b997f000703000000000000b9d17f000803000000000000f20980000903000000000000284280000a030000000000005e7a80000b0300000000000099b280000c03000000000000d2ea80000d03000000000000082381000e030000000000003e5b81000f030000000000007b9381001003000000000000b8cb81001103000000000000f30382001203000000000000313c82001303000000000000697482001403000000000000a6ac82001503000000000000c4c882001603000000000000e0e482001703000000000000ff00830018030000000000001e1d83001903000000000000dd2f83001a030000000000005b5583001b03000000000000988d83001c03000000000000d5c583001d0300000000000010fe83001e030000000000004e3684001f03000000000000826e84002003000000000000bba684002103000000000000f5de840022030000000000006f0485002303000000000000cc0d850024030000000000002c1785002503000000000000ea2985002603000000000000634f850027030000000000007e6b850028030000000000009a878500290300000000000017ad85002a03000000000000d2bf85002b0300000000000031c985002c030000000000000ef885002d030000000000004a3086002e03000000000000866886002f03000000000000bea086003003000000000000f2d8860031030000000000002a1187003203000000000000871a870033030000000000006449870034030000000000001d5c87003503000000000000998187003603000000000000cfb987003703000000000000eed5870038030000000000000cf2870039030000000000004a2a88003a03000000000000a83388003b03000000000000826288003c03000000000000b69a88003d03000000000000efd288003e030000000000002d0b89003f030000000000004d27890040030000000000006c4389004103000000000000ab7b89004203000000000000eab38900430300000000000028ec8900440300000000000068248a004503000000000000a05c8a004603000000000000b4948a004703000000000000f4cc8a00480300000000000030058b0049030000000000006f3d8b004a030000000000008e598b004b03000000000000ae758b004c03000000000000ecad8b004d0300000000000028e68b004e03000000000000331e8c004f030000000000004f568c0050030000000000008e8e8c005103000000000000c7c68c00520300000000000005ff8c00530300000000000041378d005403000000000000746f8d005503000000000000a4a78d00560300000000000064ba8d005703000000000000e4df8d0058030000000000000a188e00590300000000000023508e005a0300000000000027888e005b03000000000000d89a8e005c0300000000000043c08e005d0300000000000082f88e005e03000000000000c0308f005f03000000000000ff688f0060030000000000001ba18f00610300000000000059d98f006203000000000000981190006303000000000000d64990006403000000000000f56590006503000000000000158290006603000000000000758b9000670300000000000053ba9000680300000000000092f290006903000000000000d22a91006a03000000000000106391006b03000000000000489b91006c03000000000000a2a491006d030000000000001bd391006e03000000000000530992006f03000000000000d32e9200700300000000000090419200710300000000000074799200720300000000000094b19200730300000000000072e092007403000000000000d2e992007503000000000000b21893007603000000000000122293007703000000000000445a93007803000000000000739293007903000000000000f3b793007a03000000000000abca93007b030000000000005ddd93007c03000000000000c40294007d03000000000000e13a94007e03000000000000217394007f0300000000000059ab9400800300000000000090e394008103000000000000c31b95008203000000000000ea53950083030000000000009866950084030000000000000b8c9500850300000000000046c49500860300000000000057fc950087030000000000008f3496008803000000000000cf6c960089030000000000000ba596008a0300000000000045dd96008b03000000000000a3e696008c03000000000000801597008d03000000000000bc4d97008e03000000000000f78597008f030000000000002ebe9700900300000000000030f6970091030000000000005a2e98009203000000000000956698009303000000000000d49e9800940300000000000014d7980095030000000000003b0f990096030000000000006c4799009703000000000000ac7f9900980300000000000078b79900990300000000000026ca99009a030000000000007cef99009b0300000000000085279a009c03000000000000be5f9a009d03000000000000fd979a009e03000000000000b9aa9a009f0300000000000022d09a00a0030000000000003dec9a00a10300000000000058089b00a20300000000000074249b00a3030000000000008b409b00a403000000000000e4499b00a50300000000000038789b00a60300000000000076819b00a703000000000000e4af9b00a803000000000000b7e79b00a903000000000000731f9c00aa03000000000000a6289c00ab030000000000002f3b9c00ac0300000000000012579c00ad030000000000005d609c00ae03000000000000cb8e9c00af0300000000000057a19c00b00300000000000086c69c00b1030000000000005afe9c00b20300000000000002369d00b303000000000000bc6d9d00b40300000000000099a59d00b5030000000000004edd9d00b603000000000000db149e00b703000000000000e0399e00b803000000000000724c9e00b9030000000000002a849e00ba03000000000000ee9f9e00bb03000000000000d1bb9e00bc030000000000007df39e00bd03000000000000f02a9f00be030000000000006a629f00bf03000000000000ff999f00c0030000000000002ed19f00c1030000000000004608a000c203000000000000893fa000c303000000000000a476a000c403000000000000dfada000c5030000000000001cb7a000c6030000000000003ce5a000c703000000000000921ca100c8030000000000008c53a100c903000000000000988aa100ca0300000000000010a6a100cb03000000000000a0c1a100cc03000000000000e5d3a100cd0300000000000072f8a100ce030000000000007c2fa200cf030000000000003766a200d003000000000000389da200d10300000000000056a6a200d203000000000000a9b8a200d303000000000000cac1a200d4030000000000001ad4a200d503000000000000200ba300d6030000000000002714a300d703000000000000bc41a300d8030000000000006778a300d9030000000000000aafa300da0300000000000046dca300db0300000000000065e5a300dc03000000000000a81ba400dd03000000000000d72da400de030000000000002352a400df030000000000006288a400e003000000000000c1bea400e103000000000000f8f4a400e203000000000000212ba500e3030000000000003f61a500e403000000000000656aa500e503000000000000e497a500e60300000000000040cea500e703000000000000b204a600e803000000000000fc3aa600e9030000000000009471a600ea0300000000000037a8a600eb030000000000001adfa600ec03000000000000ea0ca700ed030000000000000e16a700ee030000000000005228a700ef030000000000007d31a700f003000000000000034da700f1030000000000002084a700f2030000000000004a8da700f303000000000000a99fa700f403000000000000f6baa700f503000000000000c1f1a700f603000000000000be28a800f703000000000000a65fa800f8030000000000003e7ba800f903000000000000c296a800fa03000000000000c3cda800fb03000000000000d504a900fc03000000000000f83ba900fd030000000000005f73a900fe03000000000000ceaaa900ff030000000000000bb4a900000400000000000005e2a90001040000000000005e19aa000204000000000000c12baa0003040000000000008e50aa000404000000000000fd62aa0005040000000000008175aa000604000000000000fa87aa0007040000000000002f91aa0008040000000000005dbfaa000904000000000000a3c8aa000a04000000000000e5f6aa000b04000000000000e41bab000c040000000000005b2eab000d04000000000000e765ab000e040000000000004c9dab000f0400000000000085a6ab001004000000000000b8d4ab001104000000000000fdddab0012040000000000003b0cac001304000000000000d043ac001404000000000000827bac001504000000000000b8a0ac0016040000000000005bb3ac00170400000000000029ebac0018040000000000006af4ac0019040000000000000e07ad001a04000000000000f422ad001b04000000000000432cad001c040000000000009935ad001d04000000000000ee3ead001e04000000000000d55aad001f04000000000000bd76ad002004000000000000a592ad00210400000000000076caad002204000000000000f6dcad002304000000000000e001ae0024040000000000004f39ae0025040000000000001371ae0026040000000000005f7aae002704000000000000fc8cae002804000000000000cda8ae0029040000000000005ebbae002a0400000000000081e0ae002b040000000000004f18af002c040000000000001e50af002d04000000000000e687af002e04000000000000a0bfaf002f040000000000005ff7af003004000000000000042fb0003104000000000000da66b00032040000000000009a9eb000330400000000000063d6b0003404000000000000300eb1003504000000000000da45b10036040000000000009a7db100370400000000000050b5b100380400000000000029edb1003904000000000000971bb2003a04000000000000e024b2003b04000000000000995cb2003c040000000000006694b2003d0400000000000048b0b2003e040000000000002eccb2003f0400000000000075d5b200400400000000000008e8b2004104000000000000e703b3004204000000000000ce1fb3004304000000000000b63bb30044040000000000000d45b30045040000000000009f57b30046040000000000007573b3004704000000000000c67cb30048040000000000003aabb3004904000000000000e4e2b3004a04000000000000651ab4004b04000000000000f951b4004c040000000000009389b4004d0400000000000025c1b4004e04000000000000f6f8b4004f04000000000000241eb5005004000000000000b130b50051040000000000007068b500520400000000000040a0b5005304000000000000ecd7b50054040000000000000510b60055040000000000003e48b60056040000000000007a80b6005704000000000000b7b8b6005804000000000000f3f0b60059040000000000002f29b7005a04000000000000ae4eb7005b040000000000006861b7005c04000000000000a599b7005d04000000000000ded1b7005e040000000000005cf7b7005f04000000000000160ab80060040000000000005042b8006104000000000000964bb8006204000000000000687ab8006304000000000000a6b2b800640400000000000066c5b8006504000000000000e5eab80066040000000000000423b90067040000000000003f5bb90068040000000000005d77b90069040000000000007b93b9006a04000000000000b7cbb9006b04000000000000ef03ba006c04000000000000133cba006d040000000000003358ba006e040000000000005174ba006f0400000000000042acba0070040000000000006ce4ba007104000000000000a21cbb007204000000000000e054bb007304000000000000405ebb0074040000000000001b8dbb0075040000000000002ec5bb0076040000000000006dfdbb007704000000000000a435bc007804000000000000d06dbc0079040000000000000ca6bc007a040000000000004adebc007b040000000000008716bd007c04000000000000c34ebd007d04000000000000fc86bd007e040000000000003bbfbd007f040000000000007af7bd008004000000000000d500be008104000000000000b32fbe008204000000000000ea67be00830400000000000027a0be00840400000000000065d8be008504000000000000a410bf008604000000000000dd48bf0087040000000000003b52bf0088040000000000001881bf0089040000000000008fb8bf008a04000000000000cbc1bf008b04000000000000f8efbf008c040000000000007602c0008d040000000000008327c0008e04000000000000075fc0008f040000000000005d96c000900400000000000009cec00091040000000000003b06c10092040000000000002d3ec10093040000000000006476c10094040000000000007aaec1009504000000000000b9e6c1009604000000000000ef1ec20097040000000000002c57c2009804000000000000698fc20099040000000000008cc7c2009a040000000000009effc2009b04000000000000da37c3009c04000000000000ee6fc3009d0400000000000029a8c3009e0400000000000067e0c3009f04000000000000240fc400a0040000000000008218c400a104000000000000b150c400a204000000000000c088c400a304000000000000d2c0c400a404000000000000f6f8c400a5040000000000001231c500a604000000000000d143c500a7040000000000004d69c500a80400000000000089a1c500a904000000000000c4d9c500aa040000000000000112c600ab040000000000005c1bc600ac040000000000003a4ac600ad040000000000007482c600ae04000000000000abbac600af04000000000000e4f2c600b0040000000000001d2bc700b1040000000000002e47c700b2040000000000004863c700b304000000000000687fc700b404000000000000829bc700b5040000000000009bd3c700b604000000000000d80bc800b7040000000000001144c800b804000000000000704dc800b904000000000000d056c800ba040000000000004e7cc800bb0400000000000080b4c800bc04000000000000b1ecc800bd040000000000009808c900be040000000000008d24c900bf04000000000000c75cc900c004000000000000df94c900c104000000000000feb0c900c2040000000000001dcdc900c3040000000000004605ca00c4040000000000006e3dca00c5040000000000009e75ca00c604000000000000029bca00c704000000000000aeadca00c8040000000000008adcca00c904000000000000eae5ca00ca04000000000000251ecb00cb04000000000000fa55cb00cc04000000000000778ccb00cd04000000000000eec3cb00ce0400000000000005fccb00cf040000000000004134cc00d004000000000000716ccc00d10400000000000096a4cc00d204000000000000d3dccc00d30400000000000086efcc00d4040000000000000215cd00d504000000000000ac27cd00d604000000000000264dcd00d7040000000000008656cd00d8040000000000006385cd00d9040000000000003bb4cd00da0400000000000099bdcd00db04000000000000d8f5cd00dc04000000000000172ece00dd040000000000005366ce00de04000000000000909ece00df04000000000000b7d6ce00e00400000000000068e9ce00e104000000000000cc0ecf00e2040000000000000547cf00e304000000000000427fcf00e40400000000000079b7cf00e504000000000000b8efcf00e604000000000000f427d000e7040000000000000b60d000e8040000000000004698d000e90400000000000083d0d000ea04000000000000c008d100eb04000000000000fa40d100ec040000000000003679d100ed0400000000000073b1d100ee0400000000000087cdd100ef04000000000000a6e9d100f004000000000000e521d200f1040000000000001e5ad200f2040000000000005692d200f30400000000000092cad200f40400000000000052ddd200f504000000000000ce02d300f604000000000000e13ad300f7040000000000003444d300f804000000000000dc56d300f904000000000000ef72d300fa040000000000004d7cd300fb0400000000000024abd300fc04000000000000a1d0d300fd040000000000005be3d300fe04000000000000901bd400ff04000000000000ce53d40000050000000000000a8cd40001050000000000003ac4d40002050000000000004ae0d400030500000000000069fcd4000405000000000000a134d50005050000000000006047d5000605000000000000de6cd50007050000000000001ba5d500080500000000000058ddd50009050000000000009415d6000a05000000000000d24dd6000b05000000000000f085d6000c050000000000001ebed6000d05000000000000fbecd6000e050000000000005bf6d6000f050000000000008b2ed7001005000000000000c566d7001105000000000000029fd700120500000000000036d7d70013050000000000006f0fd80014050000000000009f47d8001505000000000000c97fd8001605000000000000e4b7d80017050000000000001ff0d80018050000000000005928d90019050000000000009560d9001a050000000000005473d9001b05000000000000718fd9001c05000000000000d198d9001d0500000000000031a2d9001e050000000000000fd1d9001f05000000000000cfe3d90020050000000000004f09da0021050000000000008941da002205000000000000b979da002305000000000000edb1da00240500000000000047bbda00250500000000000054d7da00260500000000000007eada00270500000000000067f3da0028050000000000003a22db0029050000000000005e5adb002a050000000000007892db002b05000000000000b0cadb002c05000000000000e702dc002d05000000000000183bdc002e050000000000007644dc002f050000000000002773dc003005000000000000dd85dc0031050000000000004dabdc00320500000000000086e3dc003305000000000000bb1bdd003405000000000000944add003505000000000000f453dd003605000000000000ad66dd003705000000000000298cdd00380500000000000060c4dd0039050000000000009cfcdd003a05000000000000fa05de003b05000000000000d734de003c05000000000000b56cde003d0500000000000045a4de003e05000000000000a1d2de003f05000000000000e4dbde0040050000000000002fe5de0041050000000000003c05df004205000000000000d81adf004305000000000000d636df0044050000000000002840df004505000000000000d252df004605000000000000cf6edf004705000000000000a9a6df004805000000000000eeafdf00490500000000000047b9df004a05000000000000b1dedf004b050000000000000de8df004c050000000000006e0de0004d05000000000000cb16e0004e05000000000000d84ee0004f050000000000007886e0005005000000000000b3bee0005105000000000000c3f6e0005205000000000000fe2ee10053050000000000002c67e1005405000000000000e679e1005505000000000000a68ce1005605000000000000629fe10057050000000000009bd7e10058050000000000005806e2005905000000000000b10fe2005a05000000000000e647e2005b050000000000001880e2005c050000000000007689e2005d050000000000004cb8e2005e050000000000007ef0e2005f05000000000000b228e3006005000000000000e760e30061050000000000002499e300620500000000000060d1e30063050000000000009c09e4006405000000000000d441e4006505000000000000334be40066050000000000000a7ae4006705000000000000e0a8e400680500000000000040b2e40069050000000000006feae4006a05000000000000a022e5006b05000000000000de5ae5006c050000000000001a93e5006d0500000000000055cbe5006e050000000000000bdee5006f050000000000008203e6007005000000000000db0ce6007105000000000000b53be6007205000000000000f073e60073050000000000004e7de60074050000000000002cace60075050000000000008cb5e60076050000000000006be4e6007705000000000000a51ce7007805000000000000dc54e7007905000000000000168de7007a050000000000004ac5e7007b0500000000000057fde7007c050000000000009335e8007d05000000000000d06de8007e050000000000002e77e8007f0500000000000004a6e80080050000000000003fdee80081050000000000007b16e9008205000000000000b74ee9008305000000000000e886e900840500000000000015bfe900850500000000000046f7e9008605000000000000602fea0087050000000000000442ea0088050000000000005a4bea0089050000000000006a67ea008a05000000000000889fea008b05000000000000daa8ea008c0500000000000079d7ea008d050000000000009f0feb008e050000000000005c22eb008f050000000000001c35eb009005000000000000d847eb0091050000000000000e80eb0092050000000000003eb8eb00930500000000000076f0eb009405000000000000ad28ec009505000000000000e660ec0096050000000000002399ec00970500000000000060d1ec0098050000000000009e09ed0099050000000000005e1ced009a05000000000000da41ed009b050000000000009654ed009c050000000000005567ed009d05000000000000127aed009e050000000000004ab2ed009f0500000000000082eaed00a005000000000000e1f3ed00a105000000000000bd22ee00a205000000000000fa5aee00a3050000000000003493ee00a405000000000000929cee00a50500000000000070cbee00a605000000000000ac03ef00a705000000000000eb3bef00a805000000000000fb73ef00a905000000000000feabef00aa05000000000000bebeef00ab0500000000000038e4ef00ac050000000000004e1cf000ad050000000000008854f000ae05000000000000958cf000af05000000000000c5c4f000b005000000000000fffcf000b1050000000000002e35f100b205000000000000de47f100b305000000000000466df100b4050000000000005da5f100b50500000000000094ddf100b605000000000000c115f200b705000000000000fa4df200b8050000000000002d86f200b90500000000000067bef200ba05000000000000a0f6f200bb05000000000000b52ef300bc050000000000003254f300bd05000000000000ef66f300be05000000000000239ff300bf0500000000000032d7f300c005000000000000dde9f300c1050000000000001e0ff400c2050000000000004f47f400c3050000000000008d7ff400c4050000000000006bb7f400c5050000000000009beff400c605000000000000c927f500c705000000000000ff5ff500c8050000000000003198f500c90500000000000063d0f500ca050000000000008908f600cb05000000000000c240f600cc050000000000001d66f600cd05000000000000ca78f600ce05000000000000fbb0f600cf0500000000000031e9f600d0050000000000006021f700d1050000000000009e59f700d205000000000000d891f700d3050000000000000acaf700d4050000000000004402f800d5050000000000007b3af800d605000000000000fa5ff800d705000000000000b672f800d805000000000000ebaaf800d90500000000000048b4f800da0500000000000024e3f800db05000000000000601bf900dc050000000000009753f900dd05000000000000ac8bf900de05000000000000e3c3f900df050000000000001cfcf900e0050000000000005934fa00e105000000000000936cfa00e205000000000000a7a4fa00e305000000000000dfdcfa00e4050000000000001a15fb00e5050000000000004d4dfb00e605000000000000a656fb00e7050000000000007b85fb00e805000000000000a2bdfb00e905000000000000dff5fb00ea050000000000005f1bfc00eb050000000000001e2efc00ec050000000000005266fc00ed050000000000000c79fc00ee05000000000000cc8bfc00ef050000000000002995fc00f005000000000000899efc00f105000000000000c1d6fc00f2050000000000007ee9fc00f3050000000000003dfcfc00f405000000000000f00efd00f5050000000000004c18fd00f6050000000000001a47fd00f7050000000000004a7ffd00f80500000000000086b7fd00f905000000000000beeffd00fa050000000000001ef9fd00fb05000000000000ee27fe00fc050000000000000944fe00fd050000000000002560fe00fe05000000000000307cfe00ff050000000000002798fe000006000000000000e2aafe00010600000000000042b4fe0002060000000000005dd0fe0003060000000000009a08ff000406000000000000ca40ff000506000000000000244aff000606000000000000f278ff0007060000000000002db1ff00080600000000000063e9ff000906000000000000712100010a06000000000000313400010b060000000000004c5000010c06000000000000ac5900010d06000000000000b49100010e06000000000000e3c900010f06000000000000f60101011006000000000000103a010111060000000000003056010112060000000000004c720101130600000000000084aa01011406000000000000c2e201011506000000000000fe1a02011606000000000000235302011706000000000000618b020118060000000000009dc3020119060000000000005ad602011a06000000000000badf02011b06000000000000d7fb02011c06000000000000370503011d06000000000000f71703011e06000000000000133403011f06000000000000516c03012006000000000000107f030121060000000000008da403012206000000000000cadc03012306000000000000f81404012406000000000000324d0401250600000000000070850401260600000000000080bd040127060000000000008bf504012806000000000000842d05012906000000000000d73605012a060000000000008b6505012b06000000000000c19d05012c06000000000000f9d505012d060000000000002e0e06012e06000000000000664606012f060000000000009d7e06013006000000000000d7b60601310600000000000011ef06013206000000000000442707013306000000000000725f07013406000000000000af9707013506000000000000e7cf070136060000000000001f0808013706000000000000372408013806000000000000544008013906000000000000917808013a06000000000000c8b008013b0600000000000001e908013c060000000000000f2109013d06000000000000085909013e06000000000000a99009013f06000000000000b5c809014006000000000000c5000a014106000000000000d2380a01420600000000000006710a014306000000000000f5a80a0144060000000000002be10a01450600000000000012190b01460600000000000048510b01470600000000000086890b014806000000000000e5920b014906000000000000c4c10b014a0600000000000000fa0b014b060000000000001d320c014c060000000000000b6a0c014d06000000000000c5980c014e060000000000001aa20c014f06000000000000d7d00c0150060000000000002dda0c01510600000000000069120d015206000000000000a44a0d015306000000000000df820d0154060000000000001dbb0d01550600000000000055f30d015606000000000000852b0e01570600000000000083630e015806000000000000c39b0e0159060000000000001ba50e015a060000000000007bae0e015b06000000000000f7d30e015c06000000000000afe60e015d06000000000000290c0f015e0600000000000065440f015f06000000000000db690f016006000000000000977c0f016106000000000000d2b40f016206000000000000ecec0f016306000000000000062510016406000000000000ea5c10016506000000000000f49410016606000000000000ffcc100167060000000000005ed610016806000000000000d6fb10016906000000000000340511016a06000000000000613d11016b060000000000008b7511016c06000000000000919111016d06000000000000abad11016e06000000000000e0e511016f060000000000001d1e120170060000000000005556120171060000000000006c8e120172060000000000008aaa12017306000000000000a3c612017406000000000000bdfe12017506000000000000f83613017606000000000000126f130177060000000000006c9413017806000000000000c99d1301790600000000000029a713017a060000000000005bdf13017b06000000000000b8e813017c0600000000000016f213017d060000000000008d1714017e06000000000000ec2014017f06000000000000a43314018006000000000000bc4f14018106000000000000d58714018206000000000000919a1401830600000000000005c0140184060000000000005fc914018506000000000000f8f714018606000000000000a10a15018706000000000000fa1315018806000000000000561d15018906000000000000fa2f15018a06000000000000513915018b06000000000000aa4215018c06000000000000106815018d060000000000002f8415018e060000000000004ba015018f060000000000002cbc15019006000000000000ccce1501910600000000000019d81501920600000000000076e115019306000000000000331016019406000000000000664816019506000000000000998016019606000000000000d5b81601970600000000000093cb16019806000000000000f3d4160199060000000000000ff116019a06000000000000cd0317019b06000000000000492917019c06000000000000a33217019d06000000000000444517019e060000000000003a6117019f06000000000000117d1701a0060000000000001c991701a10600000000000059d11701a2060000000000008c091801a306000000000000c2411801a4060000000000001e4b1801a50600000000000037671801a606000000000000f2791801a7060000000000001fb21801a806000000000000dec41801a90600000000000056ea1801aa0600000000000005fd1801ab0600000000000079221901ac06000000000000b25a1901ad06000000000000e5921901ae06000000000000f9ca1901af060000000000005df01901b00600000000000017031a01b1060000000000003a3b1a01b206000000000000e64d1a01b30600000000000044731a01b406000000000000a37c1a01b50600000000000078ab1a01b6060000000000006ee31a01b706000000000000921b1b01b806000000000000be531b01b9060000000000001d5d1b01ba06000000000000ec8b1b01bb0600000000000009c41b01bc06000000000000e5fb1b01bd06000000000000f1331c01be06000000000000ef6b1c01bf06000000000000a39a1c01c006000000000000fba31c01c106000000000000f2db1c01c206000000000000f8131d01c306000000000000df4b1d01c40600000000000075831d01c506000000000000aaa81d01c6060000000000003bbb1d01c7060000000000002fd71d01c80600000000000017f31d01c90600000000000067fc1d01ca06000000000000ad211e01cb06000000000000fb2a1e01cc0600000000000052341e01cd06000000000000da621e01ce06000000000000c87e1e01cf06000000000000b09a1e01d00600000000000089d21e01d1060000000000000fe51e01d2060000000000005fee1e01d3060000000000003b0a1f01d406000000000000f8411f01d50600000000000098541f01d606000000000000ac5d1f01d70600000000000094791f01d8060000000000006eb11f01d90600000000000038e91f01da060000000000000b212001db06000000000000e6582001dc06000000000000c8902001dd0600000000000062a32001de060000000000007ac82001df060000000000001cdb2001e0060000000000005d002101e10600000000000021382101e206000000000000f76f2101e3060000000000003d792101e406000000000000cea72101e50600000000000095df2101e6060000000000006e172201e706000000000000334f2201e80600000000000085582201e90600000000000010872201ea06000000000000eea22201eb06000000000000cbbe2201ec06000000000000a9da2201ed060000000000009ef62201ee060000000000003d092301ef06000000000000782e2301f0060000000000000c412301f1060000000000005e4a2301f20600000000000045662301f3060000000000003b822301f406000000000000299e2301f506000000000000fed52301f606000000000000990d2401f7060000000000002c202401f806000000000000173c2401f90600000000000063452401fa06000000000000fd572401fb060000000000002a7d2401fc0600000000000000b52401fd06000000000000b8ec2401fe0600000000000037242501ff06000000000000155c25010007000000000000e69325010107000000000000a6cb25010207000000000000630326010307000000000000b30c260104070000000000000916260105070000000000005b1f26010607000000000000523b2601070700000000000048572601" }, "name": "Polkadot", "properties": { diff --git a/artifacts/polkadot_metadata_full.scale b/artifacts/polkadot_metadata_full.scale index 2f58b0fd9eed2bea0d32d6bdba683fcf7ef29084..27dd4fac619979b55468631f95934b23d2288f46 100644 GIT binary patch delta 46767 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

Q=-(Dg8(W!PCe?y`4?nkQVYbF zgG*z2D|$JoX!QwEN-v8Ad4|7ER4FA6qR_Iuak3{8Fc(P81#}3axy@G?p={Fla4J8Mv0F=xb?;l^>eM3R$t0e>#ojvl1)Mna&a;ORR*OKW$)( zePASDp-e8@m}_C|QW+InW~}J)fE8V4<$s#aO4wp6A5#p{72nEYR%a_0E4R$5tg`Yq zi$UV*@hSX<84TA=t-N9ebM)HrP!RCd8EjsdOJ8N+z^(lB43-+#OW!#3vrNB*L63w; zM{)I5zG^0G2;V3&+aWKoDlMqsD-_praVB$yvNkIpJde$=wZptNrTr=L0}!ij6Ji8XMbIEB_115m_e9XA=guTPbmN6HL}s`)0S5UtY>a;pGhHGM0>c%+r>E4&G?yH!foZ2)%C^?0PKbdzP`hq$!N@ z7lGi0{TiJ(hnXV*-!7}N$0}5E68J+WnYAaOoGqoWy`pn1`>YNy&jQTY0|uA}1He3B z<%gHE@z8eoWI4-MUC>$Kt}d9snsYk~k5&$f;tyDrL$a(RDC>yc*GG-Ajs=u;l9f_N{e{sIu^~V)-hq(;^9V?%AZ)rhLnJ5%`%u)DFZ|& zpVvWfC>Mf81%>pds6|R-xX8a;#|q*vAwgDoL+?fc+@#+yz04Q5*i=ZRcevQZ*lW~y z$=ds}bMd&#di9rp@Pq2VJg|O|6!l+~y`e7_vI(W6o}X8;4#q-kLMtheuXnSbGOLY` zsbPCrxQ)ME!!q#gv8;!g5f*9F)mdX~!c1>G{|00Bp3YkKI%9D*UR(#2sL82y%WZ4~K1rL|Nw8fXY-TBx+B3MF zRnvOP4>V`%I}JmZO{@eH4Oy4;u8!(9Q^pNV z-j+r~+pJxOSSqUZytkG8#Y$UwWEYgcKK}+=&bHb3vb$NiZZ$S3bDMy3yG_9laPBnk zuqpT{tkb68hoEyN*a_|O_X6zGrcz>0&JK2!Vy4d!fK<8f-cxd0lN2q$QO?A##*5r1Vxf(6%JlbW(Yh3$m*lZ5~eg!Ut?Y2n|J7`nzL!4!o z84-t!sR6^IQ;gx`w{@~`zx(k{HUTo{w>w#y?T9Gns7*QAm&eS<+|ROb__z9gh~dhh zugUVGkHPdMXvZ78#kC;KMBf|>%yI61mN?|ND2wn4hWNrX;;FzCV>R}W{WM}!OBqC# zX9D9s*VssG|7j1f%(#An$#bHt^ETytVEXM3u&LGyA_fIs)Th~n2T;Z(;ht=|?4LNo z^lHz>F1FWXyCRZbwJBGPf?&ba&KK`w=_zg-O&8MJ<-G=nAzLJe6zNpEZM~#bx7H zzsqi7d13s<$Jiv6YT*w)#^6r z#2FhlEmcABplXe#aiP`N10$_ZF;*JZXMr{GNr(i?!ua?nfkC9X)u9DSnZGz=A@sFn zF(6dLA66cw;3xMDv~pEg4{W|>Gqxs-pM45je>;!d%N80D|&t)Z$5C;}1`!wRS5AO8u9nn7nB zz~AoH<_iDo9jOsPu}bH4p^~;UXTiXFlcy0#MTZSiP}y5uVN`37ri;bZi@tO~CD=}K zr50>MbHy#*rVYEodi54oz^fl@h-6Bae`==62l{pnoSQrKxw%sZbHl*SE9zH&FP!p$ z&j?Z%z?uw>(_kPTPGy(BMpC znQVWs4b-49Av>-m87yHAfR_SboE-<-9^EY_^PVsTKWqg1)V*QKULEE&*XX2vwF^~= zXsOC@pnt*QoDc6=H9%@IAWqq5%=T+cV&ht*q0A%}xMO->t-g}_Mqxlu$zKQq!2bCT z#H!vGkO;!1^}6z}yR`~xu#iqjgR!_SBoul3vURZQ=Q&x8#l?wwFLnKx{d>YzG{-)7w$gE3}c~7j#xMBuBoS zqFF7%t~*ZdjQUiyoR)!4mkQ7x34@S284JEoIZ24L1j!_KHmSzwY-p*k#P%n2ARBPG z2vQy)$&y)bfK9JO0UZb7&r)$VTaCxepX#j+kL!u7Ee$>yC$C^ZFJ5oH+*~B3$PR>Q z8%M|Si!V_GUv_{knshLXa*fqp2?`Gj^LR^@1z zq0PE`-Z42(LG>xe;WDLRE}RU*FAz7K8n_%!Au({1_&~l=#vID&Fk$g}bkDdSgVbPW zbl89WJi8fNGE7RhfU@d2#G2VTJ!bX`c*OF&4hK|Xd){~fR|`xR{1bVgzG^RmQq$0_ zGo)!@RGukCYC^5oQ|+vG38VQ^*5}7gKvufnV66;|QK1U0t1dyU83%JhuQf*((XNBu zAD@2`Qjv>%$5B?YGDy$TZ?j0D`TBF1(0Hw?6(?_)O-+}=sM;8zUd>E@4zc~}Spbu# zrtLBx_fvMmuwm3RLXDi2rr^FL*yM_dXT8D#D+V2H!8zz*m~EK42( zSS;Z6r~Qn@8)j$E^L0OCLuX`%P_D2Kv&49~6t+F3p_d&Z9L8aK!&Q_90UC%x6pT|S z40l#qgkpuIeLRhq5pLHR^GGOViTzbPjTbJ{#{p$V!o}c?vGY%U#@bk%oj1M0#)0fdI4-qFgEntbmVg(FOWM;hz=esOtX^9-NDOGx z?c8>Z&19W09D9t7EWS?v8g?VD6AOK{2471(V9B)e7ml%s3}4ycY@@+>0S(TU4erDd zc%Eo5yah(;LL>E*fYgODwFBKbMWlwe*v=pSIb?IyJx71eI1PDA2$!q-EJ-@o_4r<8 z8k@gzrj*#r*CC*+w9H*6RXvn&ECblngQlUF?%2etHe^GHD;ZR zWHp*69|vnP;dK_qI#wGJb=k#OVl%xBRS-wGm1wojh(hrV+2|S>E;cN8b53nww(^Dz z4G^hd_6UW0B}VeY$b7;U^>4v}_mEk-?+_?e82*GzwYjD}d;jSAR zJ$m`E;>NLlK%qmE1p&P510yNws~1;NWbOXSp~g@>elm1d76c zd3+-fmVs`2yG#frK(;%ZaLW@G)Aiy@?GnR4)pjsX{}sCrLZ%=73IdukQEd-`7ejhw z7kB2z&=$Vs4VGfcQEPek8!Rq9r(Dcq=PLUeyUXsjd+ZzSE%r9MvdYeXcL4&I_uhc! z!WzRf;Y~0eF2mFQCZ4Qu8=e>6WW$)p@O=Iz8xdBICt6FIT#8a}@5w&Ro{3-^W%LA? ze0JihHOv^pTCvh%}T8Tyy#t4lD9)w)WG8veJ{LIo+(W4t#H* zLwbF??KnSf5Oc4gc@~m^9+9xD$U79&*dzA9#vTzh8yL+o`K+kQ3TnIfEBh%&j zAEwV9NcU#zbZ=Zxfqd)z6xD$q6J;cc>QloN{6H&36sS|el=PtF-2;caTOaOBkvBVB z!B5Xy8m8n0y#X+B88zcD^*(kOuoUi$e6|gno{DIHda8|09^t;bkZmM5LQ>cZOiEddOuHYv} zv^-oX*OM;)D_dT@DyR{c29E9}eRS6ZrE?8ztV?gK_<-KUc)CT!o^ZvZ*EarhHW3>@ z-`Rxm^4d^-{BxE&sy?XvjRVWysF%MnT>G#YX4bE=gh(jaT40XRFZ1i(YIy(t%_#tg+-`%iW5!62Hht=X6^vTlK_S!}-WB*pEB51!c+# z%#_u)O&giE2PNJS9+-Lu%JuK+Msg8^^R)1t;Yuf*tSemU3b)MiHCEKuH_3O%JFrzxzul3hWB!FXDSc3l50|5}t#jAPoO5kvU804ys)mbm?tiphXv>_TAyyy_;jZ z=9w}^?Lp4I-FElD9^8!@up0J;ckMDQPi`m5$Y>d#pXJ1#OehxmHD;hlR2s@7$+R?j z>i}K-ec`;7OhvSjLt%OZ(-W3h9Uzx$JnNzAKbo21M;!*uHc70&kw=d)ZuoX7s3)aGnss*<9?rJGG()q;ru0&DR1=2pwdqb zEd7*T`YC_zLe+Hh>eI;8H__xkgyU9+oN0jrA?^yHSI>l7CgO%U{#6*nXRe_D3`X0F zn|6mCOXVdZi1!?_;QdqL2p_MFm35e4&D3 zf`Tu^S3^QTKmp3D;5G=<&}8W?GhLB7YU-V=Y-*a?W9BU_d(D{HwZ3f9$w_BEC;7~) zb@Map{?@3q%^t^e!y|E~e-vRwUPu?)EBZh6|X?uaW&eeWVuz2HWc zK;y-`0Wfe=4AcashlarFGulHp$&p@F;-M4?yvY;#+U`|v>nngA7xnvH-gSkZC^f-L zeQ|6?o|ls0vD)UPR0$vEm-W@@TNm&~tIJ;M4-ks#>!X`tF;}yFc$eW*tv(tjbA9SH zAI$~-qfCP)$!4FLW#IXGpK3Sg7Vsyp8>nW2p}sco`E*0Yn|Qs%P`8=7-G+D!J|Q^l z;aL;8wj1gTlSX;VHH)OhgLUafWX4N|c(F@40&Rq?p6hn%(u4{20ESPhne51P44#kU zr|Q5CBkI#WL&f?ji4PiLflBW|(d(8J_$AatHGUd~gF`m@X}~!6YX(b%1A-w6wdA79 zzb@;Uj=?yRBZy7G@R{m8KaGNTq<-+zSja1COb;4|R#)SqMV4oJP<$^x@O}2o3STp= zzx1GYSUTO-_TE$=CA{2ZG}SsA*}=J(2sB7-j;0)#(Y}tRR_zp5)rW=@WQO2)@Tm$p zxjEnhhj0EED9i(P9bS&m-+}9cKUKpD1dhN}J4xG-azeX@_Q!(TqFB&3bt=f(Q32CoTO#$Ai>0+8kzSN~fo6@M z+tE+YjG(`ZcI(k3`jwDvZWWb6LwS|Js!UIzYzY^nM^Y#Uk!alNhj-`^*?}6ri=o=7 zwv0xF_p5K-r9|!!qSd-Inhs0&BX)j3d$2Sf7)w)NGka?+4fY&CXJa#Y$T~Nc`Y~3e zFOBNyxVu5MrP2JB)i`j~k(h;5ncBrKCK#?|kb(@-X%CogT)rDZCXAuPB~D-(WZTb_R`yB%@NZDBE*Ph$kEZTWMPs^)_N7Z8M2* z_&sV%7S>u%k2;n`t(Zbfv*~L&F)6fEH0oA3qC9B!uk2=rEKh+-^ssJyH=>#%I)!*L z)QF-S`cO=c@%S8B;jA>qqIfwB6iwo1o_QkR`--ySbXltd`iI(;MK_KN%!Y-n+q+i# zT{ysnHotXM!gj$;QAg*~T{6L=((`DI9OhAn^Juk9_NamdG(Iv;isu8V8dJO+#*3*4 zA~MEfJ-YylQG5HG$fu{_0i^Cqh4ER=R^2@MJGSvDqTIt%a`(TsGXr?HYQcm&Wpqg7w)d&##MmeU+Ay2YP zJyb!NJ&quuLlj9d%;msx`n-akgR~ne_2f0BI!mP(0qlVYfjWD5S*HIER$Y#}8M}NajyDF%sOuTryp5{BN zq{wxtOZAl0yVKL#5t|QemOj=>tdU}#OO0!wED+bW28!+zn;6Ec&$&}CV#l{=M?{5s zp@Fhz!h50?bE~4hv`X8LpzZn+D!(8-(jr|F)-Sj*M1`|ohJEda>KH)5C~aY6uKKQl z(h=%%>^=0R^n2B%d+1Lx%B$YFmp*FA$%pb$$H)s$Pt0_?E(u4BB^n@$Ivn=e{ z9zgIqTR|6^_MirOLjkFP{xMu^T}o!idwkBF;X;tJ9Iv4ZkyRp~19i020u-!c$aMvf z3x8gybJRM%!cZ>RC3ti-pquUq=xTISycBy$V#@+xyslhpVM~P#F1EeKL-Ae;ul9AJ zZc`A7-2y-|%ow(o6;w}`rz>F7yW+}HC?V}wIu%ghhG6+AjtcCukV`5Md*Nzh?Ob$M zg=$@=ZEfAE9xU#fO6b5oEkVOz=tEcvvaTDxl=QhU2VzeTccLC2^kOmws4u#)>v6Dm zV2cZHMoo4z>`@7aE$j+f6dFo>-Y2kG(B_01ZL8chlV4j^T2do|d7@ji_dNzzcQy(v z3DvR!Mosi@aS_N1CI!aB?!s>E)^Kl~XUJ7Rn~_>Pe26xQ;mO%A}W8J*=qHG$g%ig@qT9Z6CdEc_AZxv>Y`1MJ1I`?5BwJQY>)= z)aFJCh|kpFjTBHP8YxPoSQi?pQ4T8kmyxrv^R~SrBI3Y7!d6=g@6yaRn>HwK(nT5eHe&=Vu4w7RUmJR$Cl zb0eHAppz8|JKfZ9rzB}beIiZ~O$3a|sAMFwvz@OGkO98~Uo@~ZGtsi(=XqC+Ns&y?iTLLTpRSS*cA}`?YF|Cv< zE4-?_m2za2*Lt;;77AJ8RXy&fYHaRE(t1CQ?Kz1=fopIe$Sr4=fEvAbKQ?VGl3Z@5 zp&I-?_(7bTUF2=^TI~;#TR1aFl%i6cnjz|#8#wHQGcw+T0%@yc< zd$(7$KSpnXd}Xht4CfLO4KC}^wX~hV`HkK{L+FV26ZMM?G{RX*qRC~g-ay3?yva9D zLex5``gDNkb*e=jG`{Ca_Z2K`ho~XZ45|Z8d0PjKmM=D|PdjLbw~0g>9y@*Nfu}&; zy*_pBDVpHw>BDZ_s^Yg%jLOzcI-&oINU{+z z3zkEj4sIpE_kO`kY;Aj*?(DPS2J%_%*CfQ%>@!d>N#x5l~Gu@*{d!0rL#JwlWDBsKWdfg^Me=V}~q+Q+m2cTQGM zd`vUEXv=zx6{OiyAJZ_{aIGHyMX3-hd@B7YEpi{!B|*mh%~42y9jL}p`VS#D`>cQa zls+IQ(5j9|)%+<9vuZyFLq&r3skATX_n1`YzMw+5)z3XnuVEE^qWmXNn_R7voO6Pv z0$}?12`a?{C?_wUpk_Yi!`(0cN_&y|xSH@KSnD&^(33O<+=^B36&6h}arr4~L6T1E zpQmua-+61oKL~KHGiufudK{M%XTZ@OQM><1B|4#s{F=Vg#h7R54i=2_&1=unBRr2G z6p2n60De5a6T^wt&+Vl1LR_+@o})YglgNf|Xt*xcP;Y-j3xRG`tvzX=HTgWtjpHvufWS5LTN*2n0-3M;j+TlTzk#(gE~~a`#Uj9C z5LTu3ZkwISRpR>K&SLm$( zdJeafZ*n$sfl;q#aGYA~`m2+NaubU^me0lIQb&V99P6{P!BBfm zd;o8j5%}PwmsiOqLsj~?0}X03l-J;|xSh4^YH&1?xJ}N|I+S@P4{7Prp=8+l5{>7< z#;2YBYQ_Ka&U3TYgoJHXdIWftu?AxkQQ3tH}~QZ&<4uLXah!=>u1y9m&ezE?5nopiW0K07nHPtvR{w$-yRn1pXP=7*Mf9P1_J@ zq7tWfgXrQTh-0?1UyxY@0}{k}whT*2(=EA*Jk)c7H@nsvz@tQLy{5V$>Wz;>(xFCt z*`ODjXIx-2Q6ay#75d~gAOq}}$ssPGThj}Jjkp)=iCt&AIW{N@m@IhHb?XPTd~u-g zXR=5EtrssDnd%;shho0xs;wp`V$fePtUsIV$NEv9`#GLhu{db`;|nqh#>g9a z2FIBRrivZF`K~c02=A9FFo2WQjsZLfROI~uJSt-ki(^>P8D_B~JuGr1C(9niJ1`ts(KK zJ)d_%e{%0YMyO+G4PPF_6QK+_H;7Ad$sddz;gSg}3@xzXJ7o?L<$@Pi>u{dj z65|qA(7<`-PYzxK6v0T!Hv?HVmxVH5e6xO4i|u8F(_lpLvZ(x9a2=~ur_;}RL=SDk6R zJtCh6cZqPP30=5l5^o1fGHo&+=<}~7`ptHTTcsNwfh$|;6y7Z3{Oa%&5SRqNib+S8 z5A&D*h5$m9_T*Se26j*%xPFav(l+N%tJC_8#qo%((%Pf7YeJjon;h<5}sRzUECA|Y@O zK#kR9s&gfPlXcKJ@_Z;LcV+SdS>;zhWpZuwPLYO~bjxg)JDC3vR;xkRw_qMB%ezFA z-`brAO|Vsy&E-Ni`_*4&@)+6fSG{HdfDhC1Ec7tM62DqGiw~M>{lPe09sX^8YfcV7 zAg+CMBA53FvB`RJ4*yO>pTDl~on3{~j$L-yr&#Xxt96U9In<~R7xOfJ$) z8n=Y|N!a)nEa8>CYeZ_7#sJX=D#R;(g}P6-hA-vMWOUJWW$g)-g>X2dmZ3}HJ=R0Z zI6?pkX+2fQ1BBe?xAqqCKry`CG%HK1Bi{ErGBv2QX&KOIIFP2ksG_pYV>UF_hY}p} qD|a#9!ROulg%Z;-uC2v984(ZPDCQSHI{eo1QjV3bY%%w^-|@e@F9I_F delta 35833 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 delta 6685 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 diff --git a/scripts/artifacts/src/main.rs b/scripts/artifacts/src/main.rs index 0b5d247735..17ca76cb1a 100644 --- a/scripts/artifacts/src/main.rs +++ b/scripts/artifacts/src/main.rs @@ -10,7 +10,7 @@ use substrate_runner::SubstrateNode; /// Run with `cargo run --bin artifacts` from the root of the repository. fn main() { let mut node_builder = SubstrateNode::builder(); - node_builder.binary_paths(["substrate-node", "substrate"]); + node_builder.polkadot(); // Spawn the node and retrieve a ws URL to it: let proc = node_builder @@ -37,13 +37,13 @@ fn main() { // Generate a metadata file that only contains a few pallets that we need for our examples. run_cmd( - r#"cargo run --bin subxt metadata --file artifacts/polkadot_metadata_full.scale --pallets "Balances,Staking,System,Multisig,Timestamp,ParaInherent""#, + "cargo run --bin subxt metadata --file artifacts/polkadot_metadata_full.scale --pallets Balances,Staking,System,Multisig,Timestamp,ParaInherent", Some("artifacts/polkadot_metadata_small.scale"), ); // Generate a metadata file that contains no pallets run_cmd( - r#"cargo run --bin subxt metadata --file artifacts/polkadot_metadata_full.scale --pallets """#, + "cargo run --bin subxt metadata --file artifacts/polkadot_metadata_full.scale --pallets \"\"", Some("artifacts/polkadot_metadata_tiny.scale"), ); diff --git a/testing/integration-tests/src/full_client/codegen/polkadot.rs b/testing/integration-tests/src/full_client/codegen/polkadot.rs index 1e3fd1092b..03502244c3 100644 --- a/testing/integration-tests/src/full_client/codegen/polkadot.rs +++ b/testing/integration-tests/src/full_client/codegen/polkadot.rs @@ -6,7 +6,7 @@ pub mod api { mod root_mod { pub use super::*; } - pub static PALLETS: [&str; 65usize] = [ + pub static PALLETS: [&str; 67usize] = [ "System", "Babe", "Timestamp", @@ -21,13 +21,13 @@ pub mod api { "MmrLeaf", "Session", "Grandpa", - "ImOnline", "AuthorityDiscovery", "Treasury", "ConvictionVoting", "Referenda", "FellowshipCollective", "FellowshipReferenda", + "Origins", "Whitelist", "Claims", "Utility", @@ -58,14 +58,16 @@ pub mod api { "ParasDisputes", "ParasSlashing", "MessageQueue", - "ParaAssignmentProvider", "OnDemandAssignmentProvider", "ParachainsAssignmentProvider", + "CoretimeAssignmentProvider", "Registrar", "Slots", "Auctions", "Crowdloan", + "Coretime", "XcmPallet", + "IdentityMigrator", "ParasSudoWrapper", "AssignedSlots", "ValidatorManager", @@ -1023,9 +1025,10 @@ pub mod api { "on_chain_votes", types::OnChainVotes {}, [ - 8u8, 253u8, 248u8, 13u8, 221u8, 83u8, 199u8, 65u8, 180u8, 193u8, 232u8, - 179u8, 56u8, 186u8, 72u8, 128u8, 27u8, 168u8, 177u8, 82u8, 194u8, - 139u8, 78u8, 32u8, 147u8, 67u8, 27u8, 252u8, 118u8, 60u8, 74u8, 31u8, + 158u8, 98u8, 68u8, 85u8, 65u8, 186u8, 211u8, 5u8, 16u8, 63u8, 34u8, + 85u8, 16u8, 114u8, 115u8, 174u8, 154u8, 127u8, 176u8, 205u8, 12u8, + 231u8, 3u8, 170u8, 102u8, 223u8, 25u8, 130u8, 225u8, 214u8, 98u8, + 255u8, ], ) } @@ -1149,9 +1152,9 @@ pub mod api { "session_executor_params", types::SessionExecutorParams { session_index }, [ - 207u8, 66u8, 10u8, 104u8, 146u8, 219u8, 75u8, 157u8, 93u8, 224u8, - 215u8, 13u8, 255u8, 62u8, 134u8, 168u8, 185u8, 101u8, 39u8, 78u8, 98u8, - 44u8, 129u8, 38u8, 48u8, 244u8, 103u8, 205u8, 66u8, 121u8, 18u8, 247u8, + 94u8, 35u8, 29u8, 188u8, 247u8, 116u8, 165u8, 43u8, 248u8, 76u8, 21u8, + 237u8, 26u8, 25u8, 105u8, 27u8, 24u8, 245u8, 97u8, 25u8, 47u8, 118u8, + 98u8, 231u8, 27u8, 76u8, 172u8, 207u8, 90u8, 103u8, 52u8, 168u8, ], ) } @@ -1296,6 +1299,44 @@ pub mod api { ], ) } + #[doc = " Get node features."] + #[doc = " This is a staging method! Do not use on production runtimes!"] + pub fn node_features( + &self, + ) -> ::subxt::runtime_api::Payload< + types::NodeFeatures, + types::node_features::output::Output, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "node_features", + types::NodeFeatures {}, + [ + 94u8, 110u8, 38u8, 62u8, 66u8, 234u8, 216u8, 228u8, 36u8, 17u8, 33u8, + 56u8, 184u8, 122u8, 34u8, 254u8, 46u8, 62u8, 107u8, 227u8, 3u8, 126u8, + 220u8, 142u8, 92u8, 226u8, 123u8, 236u8, 34u8, 234u8, 82u8, 80u8, + ], + ) + } + #[doc = " Approval voting configuration parameters"] + pub fn approval_voting_params( + &self, + ) -> ::subxt::runtime_api::Payload< + types::ApprovalVotingParams, + types::approval_voting_params::output::Output, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "approval_voting_params", + types::ApprovalVotingParams {}, + [ + 89u8, 130u8, 95u8, 58u8, 124u8, 176u8, 43u8, 109u8, 222u8, 178u8, + 241u8, 177u8, 242u8, 32u8, 84u8, 22u8, 252u8, 178u8, 168u8, 17u8, 38u8, + 249u8, 25u8, 229u8, 75u8, 119u8, 150u8, 112u8, 144u8, 118u8, 189u8, + 253u8, + ], + ) + } } pub mod types { use super::runtime_types; @@ -1920,6 +1961,46 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct DisabledValidators {} + pub mod node_features { + use super::runtime_types; + pub mod output { + use super::runtime_types; + pub type Output = ::subxt::utils::bits::DecodedBits< + ::core::primitive::u8, + ::subxt::utils::bits::Lsb0, + >; + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct NodeFeatures {} + pub mod approval_voting_params { + use super::runtime_types; + pub mod output { + use super::runtime_types; + pub type Output = + runtime_types::polkadot_primitives::vstaging::ApprovalVotingParams; + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ApprovalVotingParams {} } } pub mod beefy_api { @@ -3485,9 +3566,6 @@ pub mod api { pub fn grandpa(&self) -> grandpa::constants::ConstantsApi { grandpa::constants::ConstantsApi } - pub fn im_online(&self) -> im_online::constants::ConstantsApi { - im_online::constants::ConstantsApi - } pub fn treasury(&self) -> treasury::constants::ConstantsApi { treasury::constants::ConstantsApi } @@ -3564,6 +3642,9 @@ pub mod api { pub fn crowdloan(&self) -> crowdloan::constants::ConstantsApi { crowdloan::constants::ConstantsApi } + pub fn coretime(&self) -> coretime::constants::ConstantsApi { + coretime::constants::ConstantsApi + } pub fn assigned_slots(&self) -> assigned_slots::constants::ConstantsApi { assigned_slots::constants::ConstantsApi } @@ -3597,6 +3678,9 @@ pub mod api { pub fn offences(&self) -> offences::storage::StorageApi { offences::storage::StorageApi } + pub fn historical(&self) -> historical::storage::StorageApi { + historical::storage::StorageApi + } pub fn beefy(&self) -> beefy::storage::StorageApi { beefy::storage::StorageApi } @@ -3612,8 +3696,8 @@ pub mod api { pub fn grandpa(&self) -> grandpa::storage::StorageApi { grandpa::storage::StorageApi } - pub fn im_online(&self) -> im_online::storage::StorageApi { - im_online::storage::StorageApi + pub fn authority_discovery(&self) -> authority_discovery::storage::StorageApi { + authority_discovery::storage::StorageApi } pub fn treasury(&self) -> treasury::storage::StorageApi { treasury::storage::StorageApi @@ -3714,14 +3798,16 @@ pub mod api { pub fn message_queue(&self) -> message_queue::storage::StorageApi { message_queue::storage::StorageApi } - pub fn para_assignment_provider(&self) -> para_assignment_provider::storage::StorageApi { - para_assignment_provider::storage::StorageApi - } pub fn on_demand_assignment_provider( &self, ) -> on_demand_assignment_provider::storage::StorageApi { on_demand_assignment_provider::storage::StorageApi } + pub fn coretime_assignment_provider( + &self, + ) -> coretime_assignment_provider::storage::StorageApi { + coretime_assignment_provider::storage::StorageApi + } pub fn registrar(&self) -> registrar::storage::StorageApi { registrar::storage::StorageApi } @@ -3746,9 +3832,6 @@ pub mod api { pub fn state_trie_migration(&self) -> state_trie_migration::storage::StorageApi { state_trie_migration::storage::StorageApi } - pub fn root_testing(&self) -> root_testing::storage::StorageApi { - root_testing::storage::StorageApi - } pub fn sudo(&self) -> sudo::storage::StorageApi { sudo::storage::StorageApi } @@ -3779,9 +3862,6 @@ pub mod api { pub fn grandpa(&self) -> grandpa::calls::TransactionApi { grandpa::calls::TransactionApi } - pub fn im_online(&self) -> im_online::calls::TransactionApi { - im_online::calls::TransactionApi - } pub fn treasury(&self) -> treasury::calls::TransactionApi { treasury::calls::TransactionApi } @@ -3892,9 +3972,15 @@ pub mod api { pub fn crowdloan(&self) -> crowdloan::calls::TransactionApi { crowdloan::calls::TransactionApi } + pub fn coretime(&self) -> coretime::calls::TransactionApi { + coretime::calls::TransactionApi + } pub fn xcm_pallet(&self) -> xcm_pallet::calls::TransactionApi { xcm_pallet::calls::TransactionApi } + pub fn identity_migrator(&self) -> identity_migrator::calls::TransactionApi { + identity_migrator::calls::TransactionApi + } pub fn paras_sudo_wrapper(&self) -> paras_sudo_wrapper::calls::TransactionApi { paras_sudo_wrapper::calls::TransactionApi } @@ -3923,9 +4009,9 @@ pub mod api { .hash(); runtime_metadata_hash == [ - 217u8, 170u8, 7u8, 110u8, 237u8, 43u8, 49u8, 116u8, 87u8, 190u8, 100u8, 30u8, - 165u8, 15u8, 56u8, 52u8, 43u8, 64u8, 243u8, 187u8, 213u8, 229u8, 138u8, 173u8, - 223u8, 202u8, 95u8, 218u8, 85u8, 15u8, 85u8, 240u8, + 159u8, 248u8, 20u8, 74u8, 93u8, 145u8, 235u8, 204u8, 107u8, 155u8, 56u8, 127u8, + 31u8, 147u8, 245u8, 22u8, 198u8, 239u8, 90u8, 246u8, 169u8, 84u8, 180u8, 252u8, + 22u8, 163u8, 134u8, 37u8, 147u8, 44u8, 109u8, 13u8, ] } pub mod system { @@ -4122,6 +4208,72 @@ pub mod api { const PALLET: &'static str = "System"; const CALL: &'static str = "remark_with_event"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::authorize_upgrade`]."] + pub struct AuthorizeUpgrade { + pub code_hash: authorize_upgrade::CodeHash, + } + pub mod authorize_upgrade { + use super::runtime_types; + pub type CodeHash = ::subxt::utils::H256; + } + impl ::subxt::blocks::StaticExtrinsic for AuthorizeUpgrade { + const PALLET: &'static str = "System"; + const CALL: &'static str = "authorize_upgrade"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::authorize_upgrade_without_checks`]."] + pub struct AuthorizeUpgradeWithoutChecks { + pub code_hash: authorize_upgrade_without_checks::CodeHash, + } + pub mod authorize_upgrade_without_checks { + use super::runtime_types; + pub type CodeHash = ::subxt::utils::H256; + } + impl ::subxt::blocks::StaticExtrinsic for AuthorizeUpgradeWithoutChecks { + const PALLET: &'static str = "System"; + const CALL: &'static str = "authorize_upgrade_without_checks"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::apply_authorized_upgrade`]."] + pub struct ApplyAuthorizedUpgrade { + pub code: apply_authorized_upgrade::Code, + } + pub mod apply_authorized_upgrade { + use super::runtime_types; + pub type Code = ::std::vec::Vec<::core::primitive::u8>; + } + impl ::subxt::blocks::StaticExtrinsic for ApplyAuthorizedUpgrade { + const PALLET: &'static str = "System"; + const CALL: &'static str = "apply_authorized_upgrade"; + } } pub struct TransactionApi; impl TransactionApi { @@ -4260,6 +4412,56 @@ pub mod api { ], ) } + #[doc = "See [`Pallet::authorize_upgrade`]."] + pub fn authorize_upgrade( + &self, + code_hash: types::authorize_upgrade::CodeHash, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "System", + "authorize_upgrade", + types::AuthorizeUpgrade { code_hash }, + [ + 4u8, 14u8, 76u8, 107u8, 209u8, 129u8, 9u8, 39u8, 193u8, 17u8, 84u8, + 254u8, 170u8, 214u8, 24u8, 155u8, 29u8, 184u8, 249u8, 241u8, 109u8, + 58u8, 145u8, 131u8, 109u8, 63u8, 38u8, 165u8, 107u8, 215u8, 217u8, + 172u8, + ], + ) + } + #[doc = "See [`Pallet::authorize_upgrade_without_checks`]."] + pub fn authorize_upgrade_without_checks( + &self, + code_hash: types::authorize_upgrade_without_checks::CodeHash, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "System", + "authorize_upgrade_without_checks", + types::AuthorizeUpgradeWithoutChecks { code_hash }, + [ + 126u8, 126u8, 55u8, 26u8, 47u8, 55u8, 66u8, 8u8, 167u8, 18u8, 29u8, + 136u8, 146u8, 14u8, 189u8, 117u8, 16u8, 227u8, 162u8, 61u8, 149u8, + 197u8, 104u8, 184u8, 185u8, 161u8, 99u8, 154u8, 80u8, 125u8, 181u8, + 233u8, + ], + ) + } + #[doc = "See [`Pallet::apply_authorized_upgrade`]."] + pub fn apply_authorized_upgrade( + &self, + code: types::apply_authorized_upgrade::Code, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "System", + "apply_authorized_upgrade", + types::ApplyAuthorizedUpgrade { code }, + [ + 232u8, 107u8, 127u8, 38u8, 230u8, 29u8, 97u8, 4u8, 160u8, 191u8, 222u8, + 156u8, 245u8, 102u8, 196u8, 141u8, 44u8, 163u8, 98u8, 68u8, 125u8, + 32u8, 124u8, 101u8, 108u8, 93u8, 211u8, 52u8, 0u8, 231u8, 33u8, 227u8, + ], + ) + } } } #[doc = "Event for the System pallet."] @@ -4396,6 +4598,30 @@ pub mod api { const PALLET: &'static str = "System"; const EVENT: &'static str = "Remarked"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An upgrade was authorized."] + pub struct UpgradeAuthorized { + pub code_hash: upgrade_authorized::CodeHash, + pub check_version: upgrade_authorized::CheckVersion, + } + pub mod upgrade_authorized { + use super::runtime_types; + pub type CodeHash = ::subxt::utils::H256; + pub type CheckVersion = ::core::primitive::bool; + } + impl ::subxt::events::StaticEvent for UpgradeAuthorized { + const PALLET: &'static str = "System"; + const EVENT: &'static str = "UpgradeAuthorized"; + } } pub mod storage { use super::runtime_types; @@ -4481,6 +4707,11 @@ pub mod api { use super::runtime_types; pub type ExecutionPhase = runtime_types::frame_system::Phase; } + pub mod authorized_upgrade { + use super::runtime_types; + pub type AuthorizedUpgrade = + runtime_types::frame_system::CodeUpgradeAuthorization; + } } pub struct StorageApi; impl StorageApi { @@ -4770,9 +5001,10 @@ pub mod api { "Events", vec![], [ - 203u8, 185u8, 202u8, 46u8, 60u8, 247u8, 185u8, 43u8, 177u8, 237u8, - 118u8, 62u8, 238u8, 44u8, 3u8, 32u8, 190u8, 212u8, 99u8, 224u8, 24u8, - 233u8, 250u8, 1u8, 75u8, 204u8, 1u8, 179u8, 199u8, 201u8, 61u8, 228u8, + 250u8, 105u8, 172u8, 217u8, 228u8, 110u8, 176u8, 187u8, 176u8, 96u8, + 251u8, 246u8, 10u8, 91u8, 10u8, 130u8, 149u8, 248u8, 60u8, 2u8, 95u8, + 25u8, 249u8, 73u8, 160u8, 204u8, 142u8, 109u8, 77u8, 204u8, 159u8, + 218u8, ], ) } @@ -4947,6 +5179,27 @@ pub mod api { ], ) } + #[doc = " `Some` if a code upgrade has been authorized."] + pub fn authorized_upgrade( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::authorized_upgrade::AuthorizedUpgrade, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "System", + "AuthorizedUpgrade", + vec![], + [ + 165u8, 97u8, 27u8, 138u8, 2u8, 28u8, 55u8, 92u8, 96u8, 96u8, 168u8, + 169u8, 55u8, 178u8, 44u8, 127u8, 58u8, 140u8, 206u8, 178u8, 1u8, 37u8, + 214u8, 213u8, 251u8, 123u8, 5u8, 111u8, 90u8, 148u8, 217u8, 135u8, + ], + ) + } } } pub mod constants { @@ -5581,9 +5834,10 @@ pub mod api { "Initialized", vec![], [ - 137u8, 31u8, 4u8, 130u8, 35u8, 232u8, 67u8, 108u8, 17u8, 123u8, 26u8, - 96u8, 238u8, 95u8, 138u8, 208u8, 163u8, 83u8, 218u8, 143u8, 8u8, 119u8, - 138u8, 130u8, 9u8, 194u8, 92u8, 40u8, 7u8, 89u8, 53u8, 237u8, + 169u8, 217u8, 237u8, 78u8, 186u8, 202u8, 206u8, 213u8, 54u8, 85u8, + 206u8, 166u8, 22u8, 138u8, 236u8, 60u8, 211u8, 169u8, 12u8, 183u8, + 23u8, 69u8, 194u8, 236u8, 112u8, 21u8, 62u8, 219u8, 92u8, 131u8, 134u8, + 145u8, ], ) } @@ -7461,10 +7715,10 @@ pub mod api { "Holds", vec![], [ - 72u8, 161u8, 107u8, 123u8, 240u8, 3u8, 198u8, 75u8, 46u8, 131u8, 122u8, - 141u8, 253u8, 141u8, 232u8, 192u8, 146u8, 54u8, 174u8, 162u8, 48u8, - 165u8, 226u8, 233u8, 12u8, 227u8, 23u8, 17u8, 237u8, 179u8, 193u8, - 166u8, + 181u8, 39u8, 29u8, 45u8, 45u8, 198u8, 129u8, 210u8, 189u8, 183u8, + 121u8, 125u8, 57u8, 90u8, 95u8, 107u8, 51u8, 13u8, 22u8, 105u8, 191u8, + 61u8, 54u8, 182u8, 50u8, 200u8, 137u8, 247u8, 180u8, 158u8, 16u8, + 193u8, ], ) } @@ -7486,10 +7740,10 @@ pub mod api { _0.borrow(), )], [ - 72u8, 161u8, 107u8, 123u8, 240u8, 3u8, 198u8, 75u8, 46u8, 131u8, 122u8, - 141u8, 253u8, 141u8, 232u8, 192u8, 146u8, 54u8, 174u8, 162u8, 48u8, - 165u8, 226u8, 233u8, 12u8, 227u8, 23u8, 17u8, 237u8, 179u8, 193u8, - 166u8, + 181u8, 39u8, 29u8, 45u8, 45u8, 198u8, 129u8, 210u8, 189u8, 183u8, + 121u8, 125u8, 57u8, 90u8, 95u8, 107u8, 51u8, 13u8, 22u8, 105u8, 191u8, + 61u8, 54u8, 182u8, 50u8, 200u8, 137u8, 247u8, 180u8, 158u8, 16u8, + 193u8, ], ) } @@ -7979,6 +8233,92 @@ pub mod api { pub mod historical { use super::root_mod; use super::runtime_types; + pub mod storage { + use super::runtime_types; + pub mod types { + use super::runtime_types; + pub mod historical_sessions { + use super::runtime_types; + pub type HistoricalSessions = (::subxt::utils::H256, ::core::primitive::u32); + pub type Param0 = ::core::primitive::u32; + } + pub mod stored_range { + use super::runtime_types; + pub type StoredRange = (::core::primitive::u32, ::core::primitive::u32); + } + } + pub struct StorageApi; + impl StorageApi { + #[doc = " Mapping from historical session indices to session-data root hash and validator count."] + pub fn historical_sessions_iter( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::historical_sessions::HistoricalSessions, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Historical", + "HistoricalSessions", + vec![], + [ + 9u8, 138u8, 247u8, 141u8, 178u8, 146u8, 124u8, 81u8, 162u8, 211u8, + 205u8, 149u8, 222u8, 254u8, 253u8, 188u8, 170u8, 242u8, 218u8, 41u8, + 124u8, 178u8, 109u8, 209u8, 163u8, 125u8, 225u8, 206u8, 249u8, 175u8, + 117u8, 75u8, + ], + ) + } + #[doc = " Mapping from historical session indices to session-data root hash and validator count."] + pub fn historical_sessions( + &self, + _0: impl ::std::borrow::Borrow, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::historical_sessions::HistoricalSessions, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Historical", + "HistoricalSessions", + vec![::subxt::storage::address::make_static_storage_map_key( + _0.borrow(), + )], + [ + 9u8, 138u8, 247u8, 141u8, 178u8, 146u8, 124u8, 81u8, 162u8, 211u8, + 205u8, 149u8, 222u8, 254u8, 253u8, 188u8, 170u8, 242u8, 218u8, 41u8, + 124u8, 178u8, 109u8, 209u8, 163u8, 125u8, 225u8, 206u8, 249u8, 175u8, + 117u8, 75u8, + ], + ) + } + #[doc = " The range of historical sessions we store. [first, last)"] + pub fn stored_range( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::stored_range::StoredRange, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Historical", + "StoredRange", + vec![], + [ + 134u8, 32u8, 250u8, 13u8, 201u8, 25u8, 54u8, 243u8, 231u8, 81u8, 252u8, + 231u8, 68u8, 217u8, 235u8, 43u8, 22u8, 223u8, 220u8, 133u8, 198u8, + 218u8, 95u8, 152u8, 189u8, 87u8, 6u8, 228u8, 242u8, 59u8, 232u8, 59u8, + ], + ) + } + } + } } pub mod beefy { use super::root_mod; @@ -8639,9 +8979,10 @@ pub mod api { "set_keys", types::SetKeys { keys, proof }, [ - 50u8, 154u8, 235u8, 252u8, 160u8, 25u8, 233u8, 90u8, 76u8, 227u8, 22u8, - 129u8, 221u8, 129u8, 95u8, 124u8, 117u8, 117u8, 43u8, 17u8, 109u8, - 252u8, 39u8, 115u8, 150u8, 80u8, 38u8, 34u8, 62u8, 237u8, 248u8, 246u8, + 160u8, 137u8, 167u8, 56u8, 165u8, 202u8, 149u8, 39u8, 16u8, 52u8, + 173u8, 215u8, 250u8, 158u8, 78u8, 126u8, 236u8, 153u8, 173u8, 68u8, + 237u8, 8u8, 47u8, 77u8, 119u8, 226u8, 248u8, 220u8, 139u8, 68u8, 145u8, + 207u8, ], ) } @@ -8813,9 +9154,10 @@ pub mod api { "QueuedKeys", vec![], [ - 251u8, 240u8, 64u8, 86u8, 241u8, 74u8, 141u8, 38u8, 46u8, 18u8, 92u8, - 101u8, 227u8, 161u8, 58u8, 222u8, 17u8, 29u8, 248u8, 237u8, 74u8, 69u8, - 18u8, 16u8, 129u8, 187u8, 172u8, 249u8, 162u8, 96u8, 218u8, 186u8, + 123u8, 8u8, 241u8, 219u8, 141u8, 50u8, 254u8, 247u8, 130u8, 71u8, + 105u8, 18u8, 149u8, 204u8, 28u8, 104u8, 184u8, 6u8, 165u8, 31u8, 153u8, + 54u8, 235u8, 78u8, 48u8, 182u8, 83u8, 221u8, 243u8, 110u8, 249u8, + 212u8, ], ) } @@ -8859,9 +9201,10 @@ pub mod api { "NextKeys", vec![], [ - 87u8, 61u8, 243u8, 159u8, 164u8, 196u8, 130u8, 218u8, 136u8, 189u8, - 253u8, 151u8, 230u8, 9u8, 214u8, 58u8, 102u8, 67u8, 61u8, 138u8, 242u8, - 214u8, 80u8, 166u8, 130u8, 47u8, 141u8, 197u8, 11u8, 73u8, 100u8, 16u8, + 13u8, 219u8, 184u8, 220u8, 199u8, 150u8, 34u8, 166u8, 125u8, 46u8, + 26u8, 160u8, 113u8, 243u8, 227u8, 6u8, 121u8, 176u8, 222u8, 250u8, + 108u8, 240u8, 0u8, 15u8, 177u8, 220u8, 206u8, 94u8, 179u8, 41u8, 209u8, + 23u8, ], ) } @@ -8883,9 +9226,10 @@ pub mod api { _0.borrow(), )], [ - 87u8, 61u8, 243u8, 159u8, 164u8, 196u8, 130u8, 218u8, 136u8, 189u8, - 253u8, 151u8, 230u8, 9u8, 214u8, 58u8, 102u8, 67u8, 61u8, 138u8, 242u8, - 214u8, 80u8, 166u8, 130u8, 47u8, 141u8, 197u8, 11u8, 73u8, 100u8, 16u8, + 13u8, 219u8, 184u8, 220u8, 199u8, 150u8, 34u8, 166u8, 125u8, 46u8, + 26u8, 160u8, 113u8, 243u8, 227u8, 6u8, 121u8, 176u8, 222u8, 250u8, + 108u8, 240u8, 0u8, 15u8, 177u8, 220u8, 206u8, 94u8, 179u8, 41u8, 209u8, + 23u8, ], ) } @@ -9219,6 +9563,14 @@ pub mod api { pub type SetIdSession = ::core::primitive::u32; pub type Param0 = ::core::primitive::u64; } + pub mod authorities { + use super::runtime_types; + pub type Authorities = + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec<( + runtime_types::sp_consensus_grandpa::app::Public, + ::core::primitive::u64, + )>; + } } pub struct StorageApi; impl StorageApi { @@ -9393,6 +9745,28 @@ pub mod api { ], ) } + #[doc = " The current list of authorities."] + pub fn authorities( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::authorities::Authorities, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Grandpa", + "Authorities", + vec![], + [ + 67u8, 196u8, 244u8, 13u8, 246u8, 245u8, 198u8, 98u8, 81u8, 55u8, 182u8, + 187u8, 214u8, 5u8, 181u8, 76u8, 251u8, 213u8, 144u8, 166u8, 36u8, + 153u8, 234u8, 181u8, 252u8, 55u8, 198u8, 175u8, 55u8, 211u8, 105u8, + 85u8, + ], + ) + } } } pub mod constants { @@ -9452,198 +9826,31 @@ pub mod api { } } } - pub mod im_online { + pub mod authority_discovery { use super::root_mod; use super::runtime_types; - #[doc = "The `Error` enum of this pallet."] - pub type Error = runtime_types::pallet_im_online::pallet::Error; - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub type Call = runtime_types::pallet_im_online::pallet::Call; - pub mod calls { - use super::root_mod; - use super::runtime_types; - type DispatchError = runtime_types::sp_runtime::DispatchError; - pub mod types { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::heartbeat`]."] - pub struct Heartbeat { - pub heartbeat: heartbeat::Heartbeat, - pub signature: heartbeat::Signature, - } - pub mod heartbeat { - use super::runtime_types; - pub type Heartbeat = - runtime_types::pallet_im_online::Heartbeat<::core::primitive::u32>; - pub type Signature = - runtime_types::pallet_im_online::sr25519::app_sr25519::Signature; - } - impl ::subxt::blocks::StaticExtrinsic for Heartbeat { - const PALLET: &'static str = "ImOnline"; - const CALL: &'static str = "heartbeat"; - } - } - pub struct TransactionApi; - impl TransactionApi { - #[doc = "See [`Pallet::heartbeat`]."] - pub fn heartbeat( - &self, - heartbeat: types::heartbeat::Heartbeat, - signature: types::heartbeat::Signature, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "ImOnline", - "heartbeat", - types::Heartbeat { - heartbeat, - signature, - }, - [ - 41u8, 78u8, 115u8, 250u8, 94u8, 34u8, 215u8, 28u8, 33u8, 175u8, 203u8, - 205u8, 14u8, 40u8, 197u8, 51u8, 24u8, 198u8, 173u8, 32u8, 119u8, 154u8, - 213u8, 125u8, 219u8, 3u8, 128u8, 52u8, 166u8, 223u8, 241u8, 129u8, - ], - ) - } - } - } - #[doc = "The `Event` enum of this pallet"] - pub type Event = runtime_types::pallet_im_online::pallet::Event; - pub mod events { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A new heartbeat was received from `AuthorityId`."] - pub struct HeartbeatReceived { - pub authority_id: heartbeat_received::AuthorityId, - } - pub mod heartbeat_received { - use super::runtime_types; - pub type AuthorityId = - runtime_types::pallet_im_online::sr25519::app_sr25519::Public; - } - impl ::subxt::events::StaticEvent for HeartbeatReceived { - const PALLET: &'static str = "ImOnline"; - const EVENT: &'static str = "HeartbeatReceived"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "At the end of the session, no offence was committed."] - pub struct AllGood; - impl ::subxt::events::StaticEvent for AllGood { - const PALLET: &'static str = "ImOnline"; - const EVENT: &'static str = "AllGood"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "At the end of the session, at least one validator was found to be offline."] - pub struct SomeOffline { - pub offline: some_offline::Offline, - } - pub mod some_offline { - use super::runtime_types; - pub type Offline = ::std::vec::Vec<(::subxt::utils::AccountId32, ())>; - } - impl ::subxt::events::StaticEvent for SomeOffline { - const PALLET: &'static str = "ImOnline"; - const EVENT: &'static str = "SomeOffline"; - } - } pub mod storage { use super::runtime_types; pub mod types { use super::runtime_types; - pub mod heartbeat_after { - use super::runtime_types; - pub type HeartbeatAfter = ::core::primitive::u32; - } pub mod keys { use super::runtime_types; pub type Keys = runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< - runtime_types::pallet_im_online::sr25519::app_sr25519::Public, + runtime_types::sp_authority_discovery::app::Public, >; } - pub mod received_heartbeats { + pub mod next_keys { use super::runtime_types; - pub type ReceivedHeartbeats = ::core::primitive::bool; - pub type Param0 = ::core::primitive::u32; - pub type Param1 = ::core::primitive::u32; - } - pub mod authored_blocks { - use super::runtime_types; - pub type AuthoredBlocks = ::core::primitive::u32; - pub type Param0 = ::core::primitive::u32; - pub type Param1 = ::subxt::utils::AccountId32; + pub type NextKeys = + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< + runtime_types::sp_authority_discovery::app::Public, + >; } } pub struct StorageApi; impl StorageApi { - #[doc = " The block number after which it's ok to send heartbeats in the current"] - #[doc = " session."] - #[doc = ""] - #[doc = " At the beginning of each session we set this to a value that should fall"] - #[doc = " roughly in the middle of the session duration. The idea is to first wait for"] - #[doc = " the validators to produce a block in the current session, so that the"] - #[doc = " heartbeat later on will not be necessary."] - #[doc = ""] - #[doc = " This value will only be used as a fallback if we fail to get a proper session"] - #[doc = " progress estimate from `NextSessionRotation`, as those estimates should be"] - #[doc = " more accurate then the value we calculate for `HeartbeatAfter`."] - pub fn heartbeat_after( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - types::heartbeat_after::HeartbeatAfter, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "ImOnline", - "HeartbeatAfter", - vec![], - [ - 36u8, 179u8, 76u8, 254u8, 3u8, 184u8, 154u8, 142u8, 70u8, 104u8, 44u8, - 244u8, 39u8, 97u8, 31u8, 31u8, 93u8, 228u8, 185u8, 224u8, 13u8, 160u8, - 231u8, 210u8, 110u8, 143u8, 116u8, 29u8, 0u8, 215u8, 217u8, 137u8, - ], - ) - } - #[doc = " The current set of keys that may issue a heartbeat."] + #[doc = " Keys of the current authority set."] pub fn keys( &self, ) -> ::subxt::storage::address::Address< @@ -9654,7 +9861,7 @@ pub mod api { (), > { ::subxt::storage::address::Address::new_static( - "ImOnline", + "AuthorityDiscovery", "Keys", vec![], [ @@ -9665,184 +9872,29 @@ pub mod api { ], ) } - #[doc = " For each session index, we keep a mapping of `SessionIndex` and `AuthIndex`."] - pub fn received_heartbeats_iter( + #[doc = " Keys of the next authority set."] + pub fn next_keys( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - types::received_heartbeats::ReceivedHeartbeats, - (), - (), + types::next_keys::NextKeys, ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), > { ::subxt::storage::address::Address::new_static( - "ImOnline", - "ReceivedHeartbeats", + "AuthorityDiscovery", + "NextKeys", vec![], [ - 30u8, 155u8, 42u8, 200u8, 223u8, 48u8, 127u8, 31u8, 253u8, 195u8, - 234u8, 108u8, 64u8, 27u8, 247u8, 17u8, 187u8, 199u8, 41u8, 138u8, 55u8, - 163u8, 94u8, 226u8, 10u8, 3u8, 132u8, 129u8, 8u8, 138u8, 137u8, 171u8, - ], - ) - } - #[doc = " For each session index, we keep a mapping of `SessionIndex` and `AuthIndex`."] - pub fn received_heartbeats_iter1( - &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - types::received_heartbeats::ReceivedHeartbeats, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "ImOnline", - "ReceivedHeartbeats", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], - [ - 30u8, 155u8, 42u8, 200u8, 223u8, 48u8, 127u8, 31u8, 253u8, 195u8, - 234u8, 108u8, 64u8, 27u8, 247u8, 17u8, 187u8, 199u8, 41u8, 138u8, 55u8, - 163u8, 94u8, 226u8, 10u8, 3u8, 132u8, 129u8, 8u8, 138u8, 137u8, 171u8, - ], - ) - } - #[doc = " For each session index, we keep a mapping of `SessionIndex` and `AuthIndex`."] - pub fn received_heartbeats( - &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - types::received_heartbeats::ReceivedHeartbeats, - ::subxt::storage::address::Yes, - (), - (), - > { - ::subxt::storage::address::Address::new_static( - "ImOnline", - "ReceivedHeartbeats", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], - [ - 30u8, 155u8, 42u8, 200u8, 223u8, 48u8, 127u8, 31u8, 253u8, 195u8, - 234u8, 108u8, 64u8, 27u8, 247u8, 17u8, 187u8, 199u8, 41u8, 138u8, 55u8, - 163u8, 94u8, 226u8, 10u8, 3u8, 132u8, 129u8, 8u8, 138u8, 137u8, 171u8, - ], - ) - } - #[doc = " For each session index, we keep a mapping of `ValidatorId` to the"] - #[doc = " number of blocks authored by the given authority."] - pub fn authored_blocks_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - types::authored_blocks::AuthoredBlocks, - (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "ImOnline", - "AuthoredBlocks", - vec![], - [ - 123u8, 76u8, 230u8, 113u8, 65u8, 255u8, 99u8, 79u8, 131u8, 139u8, - 218u8, 20u8, 174u8, 191u8, 224u8, 67u8, 137u8, 48u8, 146u8, 209u8, - 148u8, 69u8, 130u8, 9u8, 173u8, 253u8, 206u8, 196u8, 68u8, 160u8, - 233u8, 126u8, - ], - ) - } - #[doc = " For each session index, we keep a mapping of `ValidatorId` to the"] - #[doc = " number of blocks authored by the given authority."] - pub fn authored_blocks_iter1( - &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - types::authored_blocks::AuthoredBlocks, - (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "ImOnline", - "AuthoredBlocks", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], - [ - 123u8, 76u8, 230u8, 113u8, 65u8, 255u8, 99u8, 79u8, 131u8, 139u8, - 218u8, 20u8, 174u8, 191u8, 224u8, 67u8, 137u8, 48u8, 146u8, 209u8, - 148u8, 69u8, 130u8, 9u8, 173u8, 253u8, 206u8, 196u8, 68u8, 160u8, - 233u8, 126u8, - ], - ) - } - #[doc = " For each session index, we keep a mapping of `ValidatorId` to the"] - #[doc = " number of blocks authored by the given authority."] - pub fn authored_blocks( - &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - types::authored_blocks::AuthoredBlocks, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "ImOnline", - "AuthoredBlocks", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], - [ - 123u8, 76u8, 230u8, 113u8, 65u8, 255u8, 99u8, 79u8, 131u8, 139u8, - 218u8, 20u8, 174u8, 191u8, 224u8, 67u8, 137u8, 48u8, 146u8, 209u8, - 148u8, 69u8, 130u8, 9u8, 173u8, 253u8, 206u8, 196u8, 68u8, 160u8, - 233u8, 126u8, + 171u8, 107u8, 15u8, 108u8, 125u8, 102u8, 193u8, 240u8, 127u8, 160u8, + 53u8, 1u8, 208u8, 36u8, 134u8, 4u8, 216u8, 26u8, 156u8, 143u8, 154u8, + 194u8, 153u8, 199u8, 46u8, 211u8, 153u8, 222u8, 244u8, 4u8, 165u8, 2u8, ], ) } } } - pub mod constants { - use super::runtime_types; - pub struct ConstantsApi; - impl ConstantsApi { - #[doc = " A configuration for base priority of unsigned transactions."] - #[doc = ""] - #[doc = " This is exposed so that it can be tuned for particular runtime, when"] - #[doc = " multiple pallets send unsigned transactions."] - pub fn unsigned_priority( - &self, - ) -> ::subxt::constants::Address<::core::primitive::u64> { - ::subxt::constants::Address::new_static( - "ImOnline", - "UnsignedPriority", - [ - 128u8, 214u8, 205u8, 242u8, 181u8, 142u8, 124u8, 231u8, 190u8, 146u8, - 59u8, 226u8, 157u8, 101u8, 103u8, 117u8, 249u8, 65u8, 18u8, 191u8, - 103u8, 119u8, 53u8, 85u8, 81u8, 96u8, 220u8, 42u8, 184u8, 239u8, 42u8, - 246u8, - ], - ) - } - } - } - } - pub mod authority_discovery { - use super::root_mod; - use super::runtime_types; } pub mod treasury { use super::root_mod; @@ -10001,7 +10053,7 @@ pub mod api { pub type AssetKind = runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset; pub type Amount = ::core::primitive::u128; - pub type Beneficiary = runtime_types::xcm::VersionedMultiLocation; + pub type Beneficiary = runtime_types::xcm::VersionedLocation; pub type ValidFrom = ::core::option::Option<::core::primitive::u32>; } impl ::subxt::blocks::StaticExtrinsic for Spend { @@ -10181,10 +10233,10 @@ pub mod api { valid_from, }, [ - 124u8, 75u8, 215u8, 13u8, 48u8, 105u8, 201u8, 35u8, 199u8, 228u8, 38u8, - 229u8, 147u8, 255u8, 237u8, 249u8, 114u8, 154u8, 129u8, 209u8, 177u8, - 17u8, 70u8, 107u8, 74u8, 175u8, 244u8, 132u8, 206u8, 24u8, 224u8, - 156u8, + 127u8, 68u8, 115u8, 140u8, 122u8, 90u8, 253u8, 105u8, 230u8, 137u8, + 104u8, 130u8, 221u8, 123u8, 49u8, 126u8, 247u8, 80u8, 12u8, 4u8, 223u8, + 218u8, 187u8, 192u8, 61u8, 221u8, 46u8, 211u8, 71u8, 196u8, 55u8, + 237u8, ], ) } @@ -10477,7 +10529,7 @@ pub mod api { pub type AssetKind = runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset; pub type Amount = ::core::primitive::u128; - pub type Beneficiary = runtime_types::xcm::VersionedMultiLocation; + pub type Beneficiary = runtime_types::xcm::VersionedLocation; pub type ValidFrom = ::core::primitive::u32; pub type ExpireAt = ::core::primitive::u32; } @@ -10615,7 +10667,7 @@ pub mod api { pub type Spends = runtime_types::pallet_treasury::SpendStatus< runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, ::core::primitive::u128, - runtime_types::xcm::VersionedMultiLocation, + runtime_types::xcm::VersionedLocation, ::core::primitive::u32, ::core::primitive::u64, >; @@ -10772,10 +10824,10 @@ pub mod api { "Spends", vec![], [ - 231u8, 192u8, 40u8, 149u8, 163u8, 98u8, 111u8, 136u8, 44u8, 162u8, - 87u8, 181u8, 233u8, 204u8, 87u8, 111u8, 210u8, 225u8, 235u8, 73u8, - 217u8, 8u8, 129u8, 51u8, 54u8, 85u8, 33u8, 103u8, 186u8, 128u8, 61u8, - 5u8, + 207u8, 104u8, 63u8, 103u8, 177u8, 66u8, 236u8, 100u8, 122u8, 213u8, + 125u8, 153u8, 180u8, 219u8, 124u8, 22u8, 88u8, 161u8, 188u8, 197u8, + 70u8, 46u8, 72u8, 170u8, 146u8, 4u8, 127u8, 160u8, 204u8, 2u8, 89u8, + 95u8, ], ) } @@ -10797,10 +10849,10 @@ pub mod api { _0.borrow(), )], [ - 231u8, 192u8, 40u8, 149u8, 163u8, 98u8, 111u8, 136u8, 44u8, 162u8, - 87u8, 181u8, 233u8, 204u8, 87u8, 111u8, 210u8, 225u8, 235u8, 73u8, - 217u8, 8u8, 129u8, 51u8, 54u8, 85u8, 33u8, 103u8, 186u8, 128u8, 61u8, - 5u8, + 207u8, 104u8, 63u8, 103u8, 177u8, 66u8, 236u8, 100u8, 122u8, 213u8, + 125u8, 153u8, 180u8, 219u8, 124u8, 22u8, 88u8, 161u8, 188u8, 197u8, + 70u8, 46u8, 72u8, 170u8, 146u8, 4u8, 127u8, 160u8, 204u8, 2u8, 89u8, + 95u8, ], ) } @@ -11698,10 +11750,9 @@ pub mod api { enactment_moment, }, [ - 116u8, 212u8, 158u8, 18u8, 89u8, 136u8, 153u8, 97u8, 43u8, 197u8, - 200u8, 161u8, 145u8, 102u8, 19u8, 25u8, 135u8, 13u8, 199u8, 101u8, - 107u8, 221u8, 244u8, 15u8, 192u8, 176u8, 3u8, 154u8, 248u8, 70u8, - 113u8, 69u8, + 252u8, 72u8, 60u8, 208u8, 214u8, 81u8, 179u8, 80u8, 7u8, 215u8, 54u8, + 7u8, 214u8, 49u8, 72u8, 70u8, 213u8, 143u8, 217u8, 190u8, 47u8, 3u8, + 191u8, 110u8, 67u8, 139u8, 137u8, 215u8, 14u8, 225u8, 124u8, 117u8, ], ) } @@ -12330,9 +12381,10 @@ pub mod api { "ReferendumInfoFor", vec![], [ - 82u8, 199u8, 121u8, 36u8, 81u8, 129u8, 79u8, 226u8, 19u8, 57u8, 26u8, - 76u8, 195u8, 60u8, 78u8, 91u8, 198u8, 250u8, 105u8, 111u8, 235u8, 11u8, - 195u8, 4u8, 39u8, 92u8, 156u8, 53u8, 248u8, 89u8, 26u8, 112u8, + 244u8, 215u8, 156u8, 181u8, 105u8, 12u8, 138u8, 249u8, 173u8, 158u8, + 171u8, 67u8, 107u8, 228u8, 45u8, 180u8, 252u8, 244u8, 186u8, 78u8, + 226u8, 223u8, 168u8, 137u8, 6u8, 232u8, 169u8, 108u8, 104u8, 211u8, + 1u8, 157u8, ], ) } @@ -12354,9 +12406,10 @@ pub mod api { _0.borrow(), )], [ - 82u8, 199u8, 121u8, 36u8, 81u8, 129u8, 79u8, 226u8, 19u8, 57u8, 26u8, - 76u8, 195u8, 60u8, 78u8, 91u8, 198u8, 250u8, 105u8, 111u8, 235u8, 11u8, - 195u8, 4u8, 39u8, 92u8, 156u8, 53u8, 248u8, 89u8, 26u8, 112u8, + 244u8, 215u8, 156u8, 181u8, 105u8, 12u8, 138u8, 249u8, 173u8, 158u8, + 171u8, 67u8, 107u8, 228u8, 45u8, 180u8, 252u8, 244u8, 186u8, 78u8, + 226u8, 223u8, 168u8, 137u8, 6u8, 232u8, 169u8, 108u8, 104u8, 211u8, + 1u8, 157u8, ], ) } @@ -13617,10 +13670,9 @@ pub mod api { enactment_moment, }, [ - 116u8, 212u8, 158u8, 18u8, 89u8, 136u8, 153u8, 97u8, 43u8, 197u8, - 200u8, 161u8, 145u8, 102u8, 19u8, 25u8, 135u8, 13u8, 199u8, 101u8, - 107u8, 221u8, 244u8, 15u8, 192u8, 176u8, 3u8, 154u8, 248u8, 70u8, - 113u8, 69u8, + 252u8, 72u8, 60u8, 208u8, 214u8, 81u8, 179u8, 80u8, 7u8, 215u8, 54u8, + 7u8, 214u8, 49u8, 72u8, 70u8, 213u8, 143u8, 217u8, 190u8, 47u8, 3u8, + 191u8, 110u8, 67u8, 139u8, 137u8, 215u8, 14u8, 225u8, 124u8, 117u8, ], ) } @@ -14241,9 +14293,10 @@ pub mod api { "ReferendumInfoFor", vec![], [ - 154u8, 115u8, 139u8, 27u8, 56u8, 76u8, 212u8, 73u8, 155u8, 177u8, 26u8, - 156u8, 1u8, 163u8, 243u8, 143u8, 10u8, 188u8, 63u8, 63u8, 190u8, 158u8, - 142u8, 61u8, 245u8, 254u8, 11u8, 109u8, 170u8, 98u8, 77u8, 95u8, + 64u8, 146u8, 31u8, 207u8, 209u8, 86u8, 44u8, 53u8, 78u8, 240u8, 222u8, + 131u8, 225u8, 83u8, 114u8, 205u8, 225u8, 20u8, 128u8, 183u8, 19u8, + 204u8, 67u8, 31u8, 154u8, 115u8, 183u8, 218u8, 34u8, 134u8, 222u8, + 32u8, ], ) } @@ -14265,9 +14318,10 @@ pub mod api { _0.borrow(), )], [ - 154u8, 115u8, 139u8, 27u8, 56u8, 76u8, 212u8, 73u8, 155u8, 177u8, 26u8, - 156u8, 1u8, 163u8, 243u8, 143u8, 10u8, 188u8, 63u8, 63u8, 190u8, 158u8, - 142u8, 61u8, 245u8, 254u8, 11u8, 109u8, 170u8, 98u8, 77u8, 95u8, + 64u8, 146u8, 31u8, 207u8, 209u8, 86u8, 44u8, 53u8, 78u8, 240u8, 222u8, + 131u8, 225u8, 83u8, 114u8, 205u8, 225u8, 20u8, 128u8, 183u8, 19u8, + 204u8, 67u8, 31u8, 154u8, 115u8, 183u8, 218u8, 34u8, 134u8, 222u8, + 32u8, ], ) } @@ -14520,6 +14574,10 @@ pub mod api { } } } + pub mod origins { + use super::root_mod; + use super::runtime_types; + } pub mod whitelist { use super::root_mod; use super::runtime_types; @@ -14698,10 +14756,10 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 149u8, 115u8, 81u8, 76u8, 235u8, 167u8, 31u8, 227u8, 153u8, 46u8, - 233u8, 199u8, 94u8, 30u8, 253u8, 19u8, 189u8, 77u8, 151u8, 249u8, 68u8, - 207u8, 139u8, 67u8, 6u8, 193u8, 131u8, 123u8, 101u8, 100u8, 13u8, - 222u8, + 210u8, 240u8, 64u8, 4u8, 78u8, 73u8, 77u8, 229u8, 128u8, 118u8, 167u8, + 126u8, 152u8, 130u8, 213u8, 196u8, 80u8, 141u8, 244u8, 241u8, 10u8, + 82u8, 152u8, 243u8, 94u8, 47u8, 137u8, 209u8, 151u8, 31u8, 103u8, + 230u8, ], ) } @@ -15570,9 +15628,10 @@ pub mod api { "batch", types::Batch { calls }, [ - 78u8, 111u8, 192u8, 46u8, 34u8, 172u8, 232u8, 158u8, 67u8, 231u8, - 116u8, 182u8, 17u8, 178u8, 31u8, 98u8, 146u8, 71u8, 226u8, 56u8, 105u8, - 184u8, 75u8, 175u8, 78u8, 225u8, 25u8, 5u8, 226u8, 195u8, 199u8, 41u8, + 235u8, 69u8, 83u8, 214u8, 119u8, 108u8, 60u8, 227u8, 129u8, 43u8, + 230u8, 70u8, 242u8, 146u8, 178u8, 239u8, 75u8, 107u8, 16u8, 124u8, + 95u8, 189u8, 144u8, 191u8, 135u8, 243u8, 61u8, 102u8, 155u8, 3u8, + 230u8, 52u8, ], ) } @@ -15590,10 +15649,9 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 112u8, 49u8, 70u8, 206u8, 54u8, 117u8, 186u8, 83u8, 25u8, 68u8, 8u8, - 255u8, 91u8, 43u8, 254u8, 165u8, 230u8, 24u8, 104u8, 176u8, 236u8, - 166u8, 147u8, 244u8, 103u8, 208u8, 164u8, 26u8, 72u8, 44u8, 143u8, - 209u8, + 89u8, 19u8, 38u8, 160u8, 61u8, 225u8, 248u8, 36u8, 213u8, 109u8, 186u8, + 91u8, 66u8, 62u8, 55u8, 186u8, 159u8, 246u8, 125u8, 201u8, 101u8, + 209u8, 40u8, 35u8, 15u8, 186u8, 43u8, 216u8, 141u8, 244u8, 36u8, 178u8, ], ) } @@ -15607,10 +15665,9 @@ pub mod api { "batch_all", types::BatchAll { calls }, [ - 163u8, 4u8, 232u8, 21u8, 56u8, 119u8, 67u8, 62u8, 223u8, 193u8, 23u8, - 181u8, 202u8, 55u8, 186u8, 155u8, 169u8, 187u8, 213u8, 34u8, 153u8, - 255u8, 210u8, 170u8, 187u8, 212u8, 71u8, 92u8, 173u8, 145u8, 91u8, - 218u8, + 203u8, 246u8, 164u8, 119u8, 42u8, 254u8, 130u8, 113u8, 187u8, 95u8, + 175u8, 121u8, 73u8, 183u8, 95u8, 32u8, 103u8, 93u8, 214u8, 66u8, 148u8, + 143u8, 212u8, 50u8, 204u8, 219u8, 51u8, 37u8, 204u8, 6u8, 231u8, 133u8, ], ) } @@ -15628,10 +15685,9 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 91u8, 220u8, 144u8, 201u8, 69u8, 201u8, 58u8, 205u8, 190u8, 98u8, - 138u8, 115u8, 107u8, 54u8, 190u8, 44u8, 9u8, 46u8, 109u8, 80u8, 102u8, - 167u8, 139u8, 162u8, 61u8, 191u8, 159u8, 217u8, 207u8, 236u8, 20u8, - 213u8, + 209u8, 149u8, 31u8, 38u8, 134u8, 220u8, 22u8, 25u8, 8u8, 192u8, 23u8, + 136u8, 36u8, 95u8, 238u8, 118u8, 167u8, 158u8, 202u8, 37u8, 52u8, 69u8, + 46u8, 220u8, 60u8, 21u8, 120u8, 231u8, 193u8, 100u8, 103u8, 94u8, ], ) } @@ -15645,10 +15701,9 @@ pub mod api { "force_batch", types::ForceBatch { calls }, [ - 255u8, 125u8, 65u8, 157u8, 224u8, 195u8, 44u8, 249u8, 206u8, 224u8, - 11u8, 66u8, 67u8, 139u8, 24u8, 136u8, 57u8, 79u8, 85u8, 26u8, 51u8, - 170u8, 205u8, 52u8, 181u8, 94u8, 125u8, 250u8, 163u8, 126u8, 140u8, - 43u8, + 79u8, 8u8, 104u8, 150u8, 79u8, 246u8, 104u8, 229u8, 224u8, 250u8, 43u8, + 122u8, 82u8, 183u8, 51u8, 198u8, 89u8, 164u8, 231u8, 218u8, 164u8, + 77u8, 190u8, 17u8, 80u8, 109u8, 36u8, 149u8, 138u8, 64u8, 63u8, 153u8, ], ) } @@ -15666,10 +15721,10 @@ pub mod api { weight, }, [ - 187u8, 254u8, 162u8, 240u8, 54u8, 31u8, 44u8, 138u8, 164u8, 40u8, - 207u8, 170u8, 80u8, 220u8, 64u8, 162u8, 39u8, 87u8, 132u8, 169u8, 14u8, - 193u8, 69u8, 251u8, 171u8, 148u8, 107u8, 163u8, 73u8, 193u8, 46u8, - 26u8, + 162u8, 205u8, 237u8, 176u8, 167u8, 52u8, 45u8, 114u8, 66u8, 50u8, + 129u8, 249u8, 116u8, 253u8, 185u8, 76u8, 100u8, 236u8, 163u8, 104u8, + 64u8, 234u8, 102u8, 152u8, 93u8, 64u8, 37u8, 125u8, 82u8, 53u8, 145u8, + 220u8, ], ) } @@ -16181,6 +16236,179 @@ pub mod api { const PALLET: &'static str = "Identity"; const CALL: &'static str = "quit_sub"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::add_username_authority`]."] + pub struct AddUsernameAuthority { + pub authority: add_username_authority::Authority, + pub suffix: add_username_authority::Suffix, + pub allocation: add_username_authority::Allocation, + } + pub mod add_username_authority { + use super::runtime_types; + pub type Authority = + ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Suffix = ::std::vec::Vec<::core::primitive::u8>; + pub type Allocation = ::core::primitive::u32; + } + impl ::subxt::blocks::StaticExtrinsic for AddUsernameAuthority { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "add_username_authority"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::remove_username_authority`]."] + pub struct RemoveUsernameAuthority { + pub authority: remove_username_authority::Authority, + } + pub mod remove_username_authority { + use super::runtime_types; + pub type Authority = + ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + } + impl ::subxt::blocks::StaticExtrinsic for RemoveUsernameAuthority { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "remove_username_authority"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::set_username_for`]."] + pub struct SetUsernameFor { + pub who: set_username_for::Who, + pub username: set_username_for::Username, + pub signature: set_username_for::Signature, + } + pub mod set_username_for { + use super::runtime_types; + pub type Who = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Username = ::std::vec::Vec<::core::primitive::u8>; + pub type Signature = + ::core::option::Option; + } + impl ::subxt::blocks::StaticExtrinsic for SetUsernameFor { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "set_username_for"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::accept_username`]."] + pub struct AcceptUsername { + pub username: accept_username::Username, + } + pub mod accept_username { + use super::runtime_types; + pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >; + } + impl ::subxt::blocks::StaticExtrinsic for AcceptUsername { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "accept_username"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::remove_expired_approval`]."] + pub struct RemoveExpiredApproval { + pub username: remove_expired_approval::Username, + } + pub mod remove_expired_approval { + use super::runtime_types; + pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >; + } + impl ::subxt::blocks::StaticExtrinsic for RemoveExpiredApproval { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "remove_expired_approval"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::set_primary_username`]."] + pub struct SetPrimaryUsername { + pub username: set_primary_username::Username, + } + pub mod set_primary_username { + use super::runtime_types; + pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >; + } + impl ::subxt::blocks::StaticExtrinsic for SetPrimaryUsername { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "set_primary_username"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::remove_dangling_username`]."] + pub struct RemoveDanglingUsername { + pub username: remove_dangling_username::Username, + } + pub mod remove_dangling_username { + use super::runtime_types; + pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >; + } + impl ::subxt::blocks::StaticExtrinsic for RemoveDanglingUsername { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "remove_dangling_username"; + } } pub struct TransactionApi; impl TransactionApi { @@ -16445,6 +16673,132 @@ pub mod api { ], ) } + #[doc = "See [`Pallet::add_username_authority`]."] + pub fn add_username_authority( + &self, + authority: types::add_username_authority::Authority, + suffix: types::add_username_authority::Suffix, + allocation: types::add_username_authority::Allocation, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "add_username_authority", + types::AddUsernameAuthority { + authority, + suffix, + allocation, + }, + [ + 225u8, 197u8, 122u8, 209u8, 206u8, 241u8, 247u8, 232u8, 196u8, 110u8, + 75u8, 157u8, 44u8, 181u8, 35u8, 75u8, 182u8, 219u8, 100u8, 64u8, 208u8, + 112u8, 120u8, 229u8, 211u8, 69u8, 193u8, 214u8, 195u8, 98u8, 10u8, + 25u8, + ], + ) + } + #[doc = "See [`Pallet::remove_username_authority`]."] + pub fn remove_username_authority( + &self, + authority: types::remove_username_authority::Authority, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "remove_username_authority", + types::RemoveUsernameAuthority { authority }, + [ + 4u8, 182u8, 89u8, 1u8, 183u8, 15u8, 215u8, 48u8, 165u8, 97u8, 252u8, + 54u8, 223u8, 18u8, 211u8, 227u8, 226u8, 230u8, 185u8, 71u8, 202u8, + 95u8, 191u8, 6u8, 118u8, 144u8, 92u8, 98u8, 64u8, 243u8, 2u8, 137u8, + ], + ) + } + #[doc = "See [`Pallet::set_username_for`]."] + pub fn set_username_for( + &self, + who: types::set_username_for::Who, + username: types::set_username_for::Username, + signature: types::set_username_for::Signature, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "set_username_for", + types::SetUsernameFor { + who, + username, + signature, + }, + [ + 109u8, 128u8, 201u8, 28u8, 164u8, 222u8, 234u8, 197u8, 202u8, 156u8, + 53u8, 83u8, 51u8, 211u8, 222u8, 126u8, 227u8, 105u8, 72u8, 29u8, 25u8, + 188u8, 134u8, 247u8, 210u8, 183u8, 69u8, 94u8, 238u8, 91u8, 176u8, + 158u8, + ], + ) + } + #[doc = "See [`Pallet::accept_username`]."] + pub fn accept_username( + &self, + username: types::accept_username::Username, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "accept_username", + types::AcceptUsername { username }, + [ + 247u8, 162u8, 83u8, 250u8, 214u8, 7u8, 12u8, 253u8, 227u8, 4u8, 95u8, + 71u8, 150u8, 218u8, 216u8, 86u8, 137u8, 37u8, 114u8, 188u8, 18u8, + 232u8, 229u8, 179u8, 172u8, 251u8, 70u8, 29u8, 18u8, 86u8, 33u8, 129u8, + ], + ) + } + #[doc = "See [`Pallet::remove_expired_approval`]."] + pub fn remove_expired_approval( + &self, + username: types::remove_expired_approval::Username, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "remove_expired_approval", + types::RemoveExpiredApproval { username }, + [ + 159u8, 171u8, 27u8, 97u8, 224u8, 171u8, 14u8, 89u8, 65u8, 213u8, 208u8, + 67u8, 118u8, 146u8, 0u8, 131u8, 82u8, 186u8, 142u8, 52u8, 173u8, 90u8, + 104u8, 107u8, 114u8, 202u8, 123u8, 222u8, 49u8, 53u8, 59u8, 61u8, + ], + ) + } + #[doc = "See [`Pallet::set_primary_username`]."] + pub fn set_primary_username( + &self, + username: types::set_primary_username::Username, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "set_primary_username", + types::SetPrimaryUsername { username }, + [ + 3u8, 25u8, 56u8, 26u8, 108u8, 165u8, 84u8, 231u8, 16u8, 4u8, 6u8, + 232u8, 141u8, 7u8, 254u8, 50u8, 26u8, 230u8, 66u8, 245u8, 255u8, 101u8, + 183u8, 234u8, 197u8, 186u8, 132u8, 197u8, 251u8, 84u8, 212u8, 162u8, + ], + ) + } + #[doc = "See [`Pallet::remove_dangling_username`]."] + pub fn remove_dangling_username( + &self, + username: types::remove_dangling_username::Username, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "remove_dangling_username", + types::RemoveDanglingUsername { username }, + [ + 220u8, 67u8, 52u8, 223u8, 169u8, 81u8, 202u8, 74u8, 199u8, 169u8, 89u8, + 60u8, 57u8, 153u8, 240u8, 105u8, 188u8, 222u8, 250u8, 247u8, 91u8, + 137u8, 37u8, 212u8, 10u8, 51u8, 9u8, 202u8, 165u8, 155u8, 222u8, 29u8, + ], + ) + } } } #[doc = "The `Event` enum of this pallet"] @@ -16694,6 +17048,179 @@ pub mod api { const PALLET: &'static str = "Identity"; const EVENT: &'static str = "SubIdentityRevoked"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A username authority was added."] + pub struct AuthorityAdded { + pub authority: authority_added::Authority, + } + pub mod authority_added { + use super::runtime_types; + pub type Authority = ::subxt::utils::AccountId32; + } + impl ::subxt::events::StaticEvent for AuthorityAdded { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "AuthorityAdded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A username authority was removed."] + pub struct AuthorityRemoved { + pub authority: authority_removed::Authority, + } + pub mod authority_removed { + use super::runtime_types; + pub type Authority = ::subxt::utils::AccountId32; + } + impl ::subxt::events::StaticEvent for AuthorityRemoved { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "AuthorityRemoved"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A username was set for `who`."] + pub struct UsernameSet { + pub who: username_set::Who, + pub username: username_set::Username, + } + pub mod username_set { + use super::runtime_types; + pub type Who = ::subxt::utils::AccountId32; + pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >; + } + impl ::subxt::events::StaticEvent for UsernameSet { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "UsernameSet"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A username was queued, but `who` must accept it prior to `expiration`."] + pub struct UsernameQueued { + pub who: username_queued::Who, + pub username: username_queued::Username, + pub expiration: username_queued::Expiration, + } + pub mod username_queued { + use super::runtime_types; + pub type Who = ::subxt::utils::AccountId32; + pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >; + pub type Expiration = ::core::primitive::u32; + } + impl ::subxt::events::StaticEvent for UsernameQueued { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "UsernameQueued"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A queued username passed its expiration without being claimed and was removed."] + pub struct PreapprovalExpired { + pub whose: preapproval_expired::Whose, + } + pub mod preapproval_expired { + use super::runtime_types; + pub type Whose = ::subxt::utils::AccountId32; + } + impl ::subxt::events::StaticEvent for PreapprovalExpired { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "PreapprovalExpired"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A username was set as a primary and can be looked up from `who`."] + pub struct PrimaryUsernameSet { + pub who: primary_username_set::Who, + pub username: primary_username_set::Username, + } + pub mod primary_username_set { + use super::runtime_types; + pub type Who = ::subxt::utils::AccountId32; + pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >; + } + impl ::subxt::events::StaticEvent for PrimaryUsernameSet { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "PrimaryUsernameSet"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A dangling username (as in, a username corresponding to an account that has removed its"] + #[doc = "identity) has been removed."] + pub struct DanglingUsernameRemoved { + pub who: dangling_username_removed::Who, + pub username: dangling_username_removed::Username, + } + pub mod dangling_username_removed { + use super::runtime_types; + pub type Who = ::subxt::utils::AccountId32; + pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >; + } + impl ::subxt::events::StaticEvent for DanglingUsernameRemoved { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "DanglingUsernameRemoved"; + } } pub mod storage { use super::runtime_types; @@ -16701,10 +17228,17 @@ pub mod api { use super::runtime_types; pub mod identity_of { use super::runtime_types; - pub type IdentityOf = runtime_types::pallet_identity::types::Registration< - ::core::primitive::u128, - runtime_types::pallet_identity::legacy::IdentityInfo, - >; + pub type IdentityOf = ( + runtime_types::pallet_identity::types::Registration< + ::core::primitive::u128, + runtime_types::pallet_identity::legacy::IdentityInfo, + >, + ::core::option::Option< + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + >, + ); pub type Param0 = ::subxt::utils::AccountId32; } pub mod super_of { @@ -16738,10 +17272,36 @@ pub mod api { >, >; } + pub mod username_authorities { + use super::runtime_types; + pub type UsernameAuthorities = + runtime_types::pallet_identity::types::AuthorityProperties< + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + >; + pub type Param0 = ::subxt::utils::AccountId32; + } + pub mod account_of_username { + use super::runtime_types; + pub type AccountOfUsername = ::subxt::utils::AccountId32; + pub type Param0 = runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >; + } + pub mod pending_usernames { + use super::runtime_types; + pub type PendingUsernames = + (::subxt::utils::AccountId32, ::core::primitive::u32); + pub type Param0 = runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >; + } } pub struct StorageApi; impl StorageApi { - #[doc = " Information that is pertinent to identify the entity behind an account."] + #[doc = " Information that is pertinent to identify the entity behind an account. First item is the"] + #[doc = " registration, second is the account's primary username."] #[doc = ""] #[doc = " TWOX-NOTE: OK ― `AccountId` is a secure hash."] pub fn identity_of_iter( @@ -16758,13 +17318,14 @@ pub mod api { "IdentityOf", vec![], [ - 112u8, 2u8, 209u8, 123u8, 138u8, 171u8, 80u8, 243u8, 226u8, 88u8, 81u8, - 49u8, 59u8, 172u8, 88u8, 180u8, 255u8, 119u8, 57u8, 16u8, 169u8, 149u8, - 77u8, 239u8, 73u8, 182u8, 28u8, 112u8, 150u8, 110u8, 65u8, 139u8, + 0u8, 73u8, 213u8, 52u8, 49u8, 235u8, 238u8, 43u8, 119u8, 12u8, 35u8, + 162u8, 230u8, 24u8, 246u8, 200u8, 44u8, 254u8, 13u8, 84u8, 10u8, 27u8, + 159u8, 6u8, 176u8, 125u8, 24u8, 212u8, 250u8, 154u8, 181u8, 12u8, ], ) } - #[doc = " Information that is pertinent to identify the entity behind an account."] + #[doc = " Information that is pertinent to identify the entity behind an account. First item is the"] + #[doc = " registration, second is the account's primary username."] #[doc = ""] #[doc = " TWOX-NOTE: OK ― `AccountId` is a secure hash."] pub fn identity_of( @@ -16784,9 +17345,9 @@ pub mod api { _0.borrow(), )], [ - 112u8, 2u8, 209u8, 123u8, 138u8, 171u8, 80u8, 243u8, 226u8, 88u8, 81u8, - 49u8, 59u8, 172u8, 88u8, 180u8, 255u8, 119u8, 57u8, 16u8, 169u8, 149u8, - 77u8, 239u8, 73u8, 182u8, 28u8, 112u8, 150u8, 110u8, 65u8, 139u8, + 0u8, 73u8, 213u8, 52u8, 49u8, 235u8, 238u8, 43u8, 119u8, 12u8, 35u8, + 162u8, 230u8, 24u8, 246u8, 200u8, 44u8, 254u8, 13u8, 84u8, 10u8, 27u8, + 159u8, 6u8, 176u8, 125u8, 24u8, 212u8, 250u8, 154u8, 181u8, 12u8, ], ) } @@ -16917,13 +17478,170 @@ pub mod api { ], ) } + #[doc = " A map of the accounts who are authorized to grant usernames."] + pub fn username_authorities_iter( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::username_authorities::UsernameAuthorities, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Identity", + "UsernameAuthorities", + vec![], + [ + 89u8, 102u8, 60u8, 184u8, 127u8, 244u8, 3u8, 61u8, 209u8, 78u8, 178u8, + 44u8, 159u8, 27u8, 7u8, 0u8, 22u8, 116u8, 42u8, 240u8, 130u8, 93u8, + 214u8, 182u8, 79u8, 222u8, 19u8, 20u8, 34u8, 198u8, 164u8, 146u8, + ], + ) + } + #[doc = " A map of the accounts who are authorized to grant usernames."] + pub fn username_authorities( + &self, + _0: impl ::std::borrow::Borrow, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::username_authorities::UsernameAuthorities, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Identity", + "UsernameAuthorities", + vec![::subxt::storage::address::make_static_storage_map_key( + _0.borrow(), + )], + [ + 89u8, 102u8, 60u8, 184u8, 127u8, 244u8, 3u8, 61u8, 209u8, 78u8, 178u8, + 44u8, 159u8, 27u8, 7u8, 0u8, 22u8, 116u8, 42u8, 240u8, 130u8, 93u8, + 214u8, 182u8, 79u8, 222u8, 19u8, 20u8, 34u8, 198u8, 164u8, 146u8, + ], + ) + } + #[doc = " Reverse lookup from `username` to the `AccountId` that has registered it. The value should"] + #[doc = " be a key in the `IdentityOf` map, but it may not if the user has cleared their identity."] + #[doc = ""] + #[doc = " Multiple usernames may map to the same `AccountId`, but `IdentityOf` will only map to one"] + #[doc = " primary username."] + pub fn account_of_username_iter( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::account_of_username::AccountOfUsername, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Identity", + "AccountOfUsername", + vec![], + [ + 131u8, 96u8, 207u8, 217u8, 223u8, 54u8, 51u8, 156u8, 8u8, 238u8, 134u8, + 57u8, 42u8, 110u8, 180u8, 107u8, 30u8, 109u8, 162u8, 110u8, 178u8, + 127u8, 151u8, 163u8, 89u8, 127u8, 181u8, 213u8, 74u8, 129u8, 207u8, + 15u8, + ], + ) + } + #[doc = " Reverse lookup from `username` to the `AccountId` that has registered it. The value should"] + #[doc = " be a key in the `IdentityOf` map, but it may not if the user has cleared their identity."] + #[doc = ""] + #[doc = " Multiple usernames may map to the same `AccountId`, but `IdentityOf` will only map to one"] + #[doc = " primary username."] + pub fn account_of_username( + &self, + _0: impl ::std::borrow::Borrow, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::account_of_username::AccountOfUsername, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Identity", + "AccountOfUsername", + vec![::subxt::storage::address::make_static_storage_map_key( + _0.borrow(), + )], + [ + 131u8, 96u8, 207u8, 217u8, 223u8, 54u8, 51u8, 156u8, 8u8, 238u8, 134u8, + 57u8, 42u8, 110u8, 180u8, 107u8, 30u8, 109u8, 162u8, 110u8, 178u8, + 127u8, 151u8, 163u8, 89u8, 127u8, 181u8, 213u8, 74u8, 129u8, 207u8, + 15u8, + ], + ) + } + #[doc = " Usernames that an authority has granted, but that the account controller has not confirmed"] + #[doc = " that they want it. Used primarily in cases where the `AccountId` cannot provide a signature"] + #[doc = " because they are a pure proxy, multisig, etc. In order to confirm it, they should call"] + #[doc = " [`Call::accept_username`]."] + #[doc = ""] + #[doc = " First tuple item is the account and second is the acceptance deadline."] + pub fn pending_usernames_iter( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::pending_usernames::PendingUsernames, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Identity", + "PendingUsernames", + vec![], + [ + 237u8, 213u8, 92u8, 249u8, 11u8, 169u8, 104u8, 7u8, 201u8, 133u8, + 164u8, 64u8, 191u8, 172u8, 169u8, 229u8, 206u8, 105u8, 190u8, 113u8, + 21u8, 13u8, 70u8, 74u8, 140u8, 125u8, 123u8, 48u8, 183u8, 181u8, 170u8, + 147u8, + ], + ) + } + #[doc = " Usernames that an authority has granted, but that the account controller has not confirmed"] + #[doc = " that they want it. Used primarily in cases where the `AccountId` cannot provide a signature"] + #[doc = " because they are a pure proxy, multisig, etc. In order to confirm it, they should call"] + #[doc = " [`Call::accept_username`]."] + #[doc = ""] + #[doc = " First tuple item is the account and second is the acceptance deadline."] + pub fn pending_usernames( + &self, + _0: impl ::std::borrow::Borrow, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::pending_usernames::PendingUsernames, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Identity", + "PendingUsernames", + vec![::subxt::storage::address::make_static_storage_map_key( + _0.borrow(), + )], + [ + 237u8, 213u8, 92u8, 249u8, 11u8, 169u8, 104u8, 7u8, 201u8, 133u8, + 164u8, 64u8, 191u8, 172u8, 169u8, 229u8, 206u8, 105u8, 190u8, 113u8, + 21u8, 13u8, 70u8, 74u8, 140u8, 125u8, 123u8, 48u8, 183u8, 181u8, 170u8, + 147u8, + ], + ) + } } } pub mod constants { use super::runtime_types; pub struct ConstantsApi; impl ConstantsApi { - #[doc = " The amount held on deposit for a registered identity"] + #[doc = " The amount held on deposit for a registered identity."] pub fn basic_deposit( &self, ) -> ::subxt::constants::Address<::core::primitive::u128> { @@ -16996,6 +17714,51 @@ pub mod api { ], ) } + #[doc = " The number of blocks within which a username grant must be accepted."] + pub fn pending_username_expiration( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Identity", + "PendingUsernameExpiration", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum length of a suffix."] + pub fn max_suffix_length( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Identity", + "MaxSuffixLength", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum length of a username, including its suffix and any system-added delimiters."] + pub fn max_username_length( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Identity", + "MaxUsernameLength", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } } } } @@ -19359,10 +20122,9 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 226u8, 94u8, 208u8, 74u8, 163u8, 132u8, 180u8, 25u8, 34u8, 222u8, - 242u8, 194u8, 224u8, 188u8, 18u8, 229u8, 55u8, 248u8, 19u8, 244u8, - 182u8, 148u8, 138u8, 228u8, 2u8, 55u8, 50u8, 36u8, 32u8, 115u8, 147u8, - 149u8, + 85u8, 206u8, 232u8, 41u8, 57u8, 159u8, 145u8, 157u8, 94u8, 238u8, 80u8, + 26u8, 113u8, 194u8, 123u8, 196u8, 83u8, 235u8, 134u8, 102u8, 9u8, + 219u8, 64u8, 7u8, 251u8, 92u8, 23u8, 59u8, 188u8, 11u8, 24u8, 15u8, ], ) } @@ -20596,9 +21358,9 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 122u8, 88u8, 251u8, 25u8, 239u8, 91u8, 220u8, 116u8, 155u8, 219u8, - 129u8, 170u8, 81u8, 4u8, 224u8, 195u8, 83u8, 196u8, 48u8, 159u8, 222u8, - 72u8, 2u8, 131u8, 14u8, 204u8, 21u8, 234u8, 2u8, 237u8, 69u8, 28u8, + 158u8, 215u8, 150u8, 176u8, 69u8, 99u8, 193u8, 8u8, 225u8, 121u8, 86u8, + 178u8, 93u8, 227u8, 146u8, 186u8, 199u8, 7u8, 249u8, 188u8, 55u8, 74u8, + 122u8, 251u8, 65u8, 50u8, 183u8, 238u8, 96u8, 252u8, 122u8, 186u8, ], ) } @@ -20640,9 +21402,9 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 4u8, 172u8, 69u8, 211u8, 77u8, 162u8, 70u8, 8u8, 60u8, 79u8, 223u8, - 222u8, 210u8, 64u8, 116u8, 53u8, 161u8, 251u8, 28u8, 236u8, 12u8, - 212u8, 174u8, 0u8, 10u8, 78u8, 132u8, 232u8, 163u8, 44u8, 9u8, 200u8, + 40u8, 8u8, 195u8, 141u8, 167u8, 129u8, 96u8, 125u8, 51u8, 135u8, 252u8, + 10u8, 87u8, 220u8, 13u8, 137u8, 56u8, 188u8, 27u8, 59u8, 73u8, 47u8, + 136u8, 194u8, 218u8, 23u8, 33u8, 138u8, 91u8, 18u8, 80u8, 62u8, ], ) } @@ -20680,9 +21442,9 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 218u8, 190u8, 254u8, 33u8, 44u8, 21u8, 3u8, 225u8, 106u8, 85u8, 42u8, - 102u8, 206u8, 52u8, 225u8, 78u8, 220u8, 205u8, 130u8, 191u8, 223u8, - 152u8, 7u8, 46u8, 168u8, 251u8, 167u8, 72u8, 186u8, 102u8, 239u8, 95u8, + 66u8, 127u8, 226u8, 141u8, 231u8, 85u8, 141u8, 76u8, 145u8, 28u8, + 168u8, 30u8, 3u8, 53u8, 44u8, 126u8, 192u8, 214u8, 66u8, 113u8, 200u8, + 164u8, 109u8, 31u8, 31u8, 150u8, 91u8, 194u8, 172u8, 123u8, 8u8, 92u8, ], ) } @@ -20706,9 +21468,10 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 87u8, 222u8, 30u8, 136u8, 12u8, 96u8, 70u8, 211u8, 190u8, 75u8, 247u8, - 231u8, 71u8, 59u8, 62u8, 126u8, 22u8, 4u8, 237u8, 153u8, 26u8, 180u8, - 88u8, 128u8, 69u8, 55u8, 31u8, 201u8, 227u8, 95u8, 38u8, 67u8, + 26u8, 226u8, 147u8, 92u8, 228u8, 230u8, 99u8, 118u8, 206u8, 152u8, + 34u8, 209u8, 180u8, 135u8, 19u8, 43u8, 134u8, 19u8, 20u8, 106u8, 236u8, + 224u8, 120u8, 255u8, 113u8, 185u8, 193u8, 31u8, 58u8, 58u8, 136u8, + 239u8, ], ) } @@ -20935,9 +21698,9 @@ pub mod api { "Agenda", vec![], [ - 247u8, 226u8, 115u8, 70u8, 172u8, 69u8, 26u8, 24u8, 46u8, 202u8, 118u8, - 250u8, 111u8, 236u8, 77u8, 255u8, 26u8, 125u8, 18u8, 8u8, 24u8, 230u8, - 222u8, 140u8, 179u8, 235u8, 19u8, 161u8, 40u8, 78u8, 26u8, 173u8, + 10u8, 123u8, 252u8, 106u8, 154u8, 9u8, 245u8, 203u8, 188u8, 254u8, + 20u8, 41u8, 6u8, 226u8, 78u8, 188u8, 0u8, 173u8, 143u8, 44u8, 117u8, + 249u8, 180u8, 13u8, 236u8, 224u8, 170u8, 202u8, 24u8, 3u8, 163u8, 37u8, ], ) } @@ -20959,9 +21722,9 @@ pub mod api { _0.borrow(), )], [ - 247u8, 226u8, 115u8, 70u8, 172u8, 69u8, 26u8, 24u8, 46u8, 202u8, 118u8, - 250u8, 111u8, 236u8, 77u8, 255u8, 26u8, 125u8, 18u8, 8u8, 24u8, 230u8, - 222u8, 140u8, 179u8, 235u8, 19u8, 161u8, 40u8, 78u8, 26u8, 173u8, + 10u8, 123u8, 252u8, 106u8, 154u8, 9u8, 245u8, 203u8, 188u8, 254u8, + 20u8, 41u8, 6u8, 226u8, 78u8, 188u8, 0u8, 173u8, 143u8, 44u8, 117u8, + 249u8, 180u8, 13u8, 236u8, 224u8, 170u8, 202u8, 24u8, 3u8, 163u8, 37u8, ], ) } @@ -21351,10 +22114,9 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 244u8, 249u8, 206u8, 185u8, 48u8, 156u8, 194u8, 100u8, 198u8, 133u8, - 26u8, 248u8, 122u8, 194u8, 19u8, 42u8, 6u8, 201u8, 112u8, 79u8, 19u8, - 134u8, 145u8, 157u8, 129u8, 237u8, 139u8, 133u8, 227u8, 43u8, 56u8, - 153u8, + 122u8, 7u8, 247u8, 164u8, 62u8, 254u8, 12u8, 208u8, 188u8, 49u8, 244u8, + 153u8, 59u8, 65u8, 73u8, 58u8, 88u8, 134u8, 255u8, 150u8, 157u8, 8u8, + 153u8, 41u8, 21u8, 186u8, 114u8, 71u8, 128u8, 108u8, 203u8, 20u8, ], ) } @@ -21538,9 +22300,9 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 217u8, 199u8, 199u8, 95u8, 222u8, 27u8, 176u8, 48u8, 0u8, 226u8, 245u8, - 221u8, 226u8, 48u8, 29u8, 233u8, 28u8, 187u8, 52u8, 17u8, 172u8, 42u8, - 88u8, 107u8, 61u8, 104u8, 65u8, 42u8, 35u8, 53u8, 80u8, 48u8, + 109u8, 140u8, 6u8, 12u8, 91u8, 4u8, 254u8, 2u8, 91u8, 243u8, 154u8, + 79u8, 83u8, 153u8, 67u8, 160u8, 206u8, 37u8, 85u8, 25u8, 10u8, 224u8, + 146u8, 227u8, 134u8, 129u8, 191u8, 47u8, 243u8, 93u8, 215u8, 222u8, ], ) } @@ -22065,10 +22827,9 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 228u8, 69u8, 114u8, 33u8, 253u8, 99u8, 173u8, 184u8, 219u8, 170u8, - 155u8, 9u8, 231u8, 77u8, 180u8, 97u8, 26u8, 0u8, 97u8, 107u8, 112u8, - 223u8, 207u8, 156u8, 86u8, 17u8, 115u8, 211u8, 188u8, 122u8, 51u8, - 55u8, + 174u8, 71u8, 76u8, 85u8, 10u8, 92u8, 166u8, 33u8, 124u8, 212u8, 89u8, + 40u8, 24u8, 94u8, 252u8, 139u8, 68u8, 122u8, 191u8, 247u8, 212u8, 48u8, + 173u8, 252u8, 86u8, 57u8, 178u8, 208u8, 56u8, 49u8, 64u8, 182u8, ], ) } @@ -22092,10 +22853,9 @@ pub mod api { max_weight, }, [ - 110u8, 238u8, 2u8, 11u8, 232u8, 202u8, 100u8, 39u8, 103u8, 211u8, - 204u8, 203u8, 228u8, 31u8, 206u8, 103u8, 97u8, 57u8, 217u8, 24u8, - 229u8, 237u8, 56u8, 84u8, 220u8, 240u8, 169u8, 211u8, 26u8, 98u8, 37u8, - 0u8, + 122u8, 132u8, 216u8, 231u8, 74u8, 72u8, 208u8, 47u8, 203u8, 32u8, 71u8, + 2u8, 240u8, 74u8, 236u8, 139u8, 226u8, 162u8, 182u8, 152u8, 69u8, 62u8, + 172u8, 188u8, 119u8, 227u8, 134u8, 59u8, 255u8, 164u8, 74u8, 179u8, ], ) } @@ -23000,10 +23760,9 @@ pub mod api { rate, }, [ - 154u8, 152u8, 38u8, 160u8, 110u8, 48u8, 11u8, 80u8, 92u8, 50u8, 177u8, - 170u8, 43u8, 6u8, 192u8, 234u8, 105u8, 114u8, 165u8, 178u8, 173u8, - 134u8, 92u8, 233u8, 123u8, 191u8, 176u8, 154u8, 222u8, 224u8, 32u8, - 183u8, + 163u8, 173u8, 223u8, 197u8, 42u8, 251u8, 151u8, 159u8, 252u8, 132u8, + 225u8, 224u8, 207u8, 127u8, 38u8, 0u8, 101u8, 46u8, 29u8, 65u8, 2u8, + 241u8, 3u8, 79u8, 218u8, 10u8, 159u8, 122u8, 48u8, 7u8, 225u8, 103u8, ], ) } @@ -23021,10 +23780,9 @@ pub mod api { rate, }, [ - 188u8, 71u8, 197u8, 156u8, 105u8, 63u8, 11u8, 90u8, 124u8, 227u8, - 146u8, 78u8, 93u8, 216u8, 100u8, 41u8, 128u8, 115u8, 66u8, 243u8, - 198u8, 61u8, 115u8, 30u8, 170u8, 218u8, 254u8, 203u8, 37u8, 141u8, - 67u8, 179u8, + 21u8, 51u8, 198u8, 111u8, 185u8, 155u8, 215u8, 34u8, 5u8, 135u8, 138u8, + 77u8, 76u8, 158u8, 63u8, 240u8, 117u8, 39u8, 83u8, 146u8, 70u8, 136u8, + 61u8, 159u8, 30u8, 66u8, 85u8, 41u8, 122u8, 174u8, 25u8, 49u8, ], ) } @@ -23040,10 +23798,10 @@ pub mod api { asset_kind: ::std::boxed::Box::new(asset_kind), }, [ - 229u8, 203u8, 96u8, 158u8, 162u8, 236u8, 80u8, 239u8, 106u8, 193u8, - 85u8, 234u8, 99u8, 87u8, 214u8, 214u8, 157u8, 55u8, 70u8, 91u8, 9u8, - 187u8, 105u8, 99u8, 134u8, 181u8, 56u8, 212u8, 152u8, 136u8, 100u8, - 32u8, + 205u8, 34u8, 63u8, 131u8, 204u8, 76u8, 186u8, 233u8, 160u8, 45u8, + 231u8, 159u8, 186u8, 60u8, 97u8, 218u8, 174u8, 144u8, 106u8, 58u8, + 69u8, 23u8, 244u8, 129u8, 19u8, 250u8, 16u8, 99u8, 165u8, 165u8, 101u8, + 18u8, ], ) } @@ -23157,9 +23915,10 @@ pub mod api { "ConversionRateToNative", vec![], [ - 211u8, 210u8, 178u8, 27u8, 157u8, 1u8, 68u8, 252u8, 84u8, 174u8, 141u8, - 185u8, 177u8, 39u8, 49u8, 35u8, 65u8, 254u8, 204u8, 246u8, 132u8, 59u8, - 190u8, 228u8, 135u8, 237u8, 161u8, 35u8, 21u8, 114u8, 88u8, 174u8, + 230u8, 127u8, 110u8, 126u8, 79u8, 168u8, 134u8, 97u8, 195u8, 105u8, + 16u8, 57u8, 197u8, 104u8, 87u8, 144u8, 83u8, 188u8, 85u8, 253u8, 230u8, + 194u8, 183u8, 235u8, 152u8, 222u8, 40u8, 20u8, 135u8, 98u8, 140u8, + 108u8, ], ) } @@ -23183,9 +23942,10 @@ pub mod api { _0.borrow(), )], [ - 211u8, 210u8, 178u8, 27u8, 157u8, 1u8, 68u8, 252u8, 84u8, 174u8, 141u8, - 185u8, 177u8, 39u8, 49u8, 35u8, 65u8, 254u8, 204u8, 246u8, 132u8, 59u8, - 190u8, 228u8, 135u8, 237u8, 161u8, 35u8, 21u8, 114u8, 88u8, 174u8, + 230u8, 127u8, 110u8, 126u8, 79u8, 168u8, 134u8, 97u8, 195u8, 105u8, + 16u8, 57u8, 197u8, 104u8, 87u8, 144u8, 83u8, 188u8, 85u8, 253u8, 230u8, + 194u8, 183u8, 235u8, 152u8, 222u8, 40u8, 20u8, 135u8, 98u8, 140u8, + 108u8, ], ) } @@ -26917,10 +27677,10 @@ pub mod api { "Holds", vec![], [ - 72u8, 161u8, 107u8, 123u8, 240u8, 3u8, 198u8, 75u8, 46u8, 131u8, 122u8, - 141u8, 253u8, 141u8, 232u8, 192u8, 146u8, 54u8, 174u8, 162u8, 48u8, - 165u8, 226u8, 233u8, 12u8, 227u8, 23u8, 17u8, 237u8, 179u8, 193u8, - 166u8, + 181u8, 39u8, 29u8, 45u8, 45u8, 198u8, 129u8, 210u8, 189u8, 183u8, + 121u8, 125u8, 57u8, 90u8, 95u8, 107u8, 51u8, 13u8, 22u8, 105u8, 191u8, + 61u8, 54u8, 182u8, 50u8, 200u8, 137u8, 247u8, 180u8, 158u8, 16u8, + 193u8, ], ) } @@ -26942,10 +27702,10 @@ pub mod api { _0.borrow(), )], [ - 72u8, 161u8, 107u8, 123u8, 240u8, 3u8, 198u8, 75u8, 46u8, 131u8, 122u8, - 141u8, 253u8, 141u8, 232u8, 192u8, 146u8, 54u8, 174u8, 162u8, 48u8, - 165u8, 226u8, 233u8, 12u8, 227u8, 23u8, 17u8, 237u8, 179u8, 193u8, - 166u8, + 181u8, 39u8, 29u8, 45u8, 45u8, 198u8, 129u8, 210u8, 189u8, 183u8, + 121u8, 125u8, 57u8, 90u8, 95u8, 107u8, 51u8, 13u8, 22u8, 105u8, 191u8, + 61u8, 54u8, 182u8, 50u8, 200u8, 137u8, 247u8, 180u8, 158u8, 16u8, + 193u8, ], ) } @@ -27236,17 +27996,17 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_on_demand_cores`]."] - pub struct SetOnDemandCores { - pub new: set_on_demand_cores::New, + #[doc = "See [`Pallet::set_coretime_cores`]."] + pub struct SetCoretimeCores { + pub new: set_coretime_cores::New, } - pub mod set_on_demand_cores { + pub mod set_coretime_cores { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetOnDemandCores { + impl ::subxt::blocks::StaticExtrinsic for SetCoretimeCores { const PALLET: &'static str = "Configuration"; - const CALL: &'static str = "set_on_demand_cores"; + const CALL: &'static str = "set_coretime_cores"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -28086,6 +28846,53 @@ pub mod api { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_minimum_backing_votes"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::set_node_feature`]."] + pub struct SetNodeFeature { + pub index: set_node_feature::Index, + pub value: set_node_feature::Value, + } + pub mod set_node_feature { + use super::runtime_types; + pub type Index = ::core::primitive::u8; + pub type Value = ::core::primitive::bool; + } + impl ::subxt::blocks::StaticExtrinsic for SetNodeFeature { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_node_feature"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::set_approval_voting_params`]."] + pub struct SetApprovalVotingParams { + pub new: set_approval_voting_params::New, + } + pub mod set_approval_voting_params { + use super::runtime_types; + pub type New = + runtime_types::polkadot_primitives::vstaging::ApprovalVotingParams; + } + impl ::subxt::blocks::StaticExtrinsic for SetApprovalVotingParams { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_approval_voting_params"; + } } pub struct TransactionApi; impl TransactionApi { @@ -28189,20 +28996,19 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_on_demand_cores`]."] - pub fn set_on_demand_cores( + #[doc = "See [`Pallet::set_coretime_cores`]."] + pub fn set_coretime_cores( &self, - new: types::set_on_demand_cores::New, - ) -> ::subxt::tx::Payload { + new: types::set_coretime_cores::New, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Configuration", - "set_on_demand_cores", - types::SetOnDemandCores { new }, + "set_coretime_cores", + types::SetCoretimeCores { new }, [ - 157u8, 26u8, 82u8, 103u8, 83u8, 214u8, 92u8, 176u8, 93u8, 70u8, 32u8, - 217u8, 139u8, 30u8, 145u8, 237u8, 34u8, 121u8, 190u8, 17u8, 128u8, - 243u8, 241u8, 181u8, 85u8, 141u8, 107u8, 70u8, 121u8, 119u8, 20u8, - 104u8, + 179u8, 131u8, 211u8, 152u8, 167u8, 6u8, 108u8, 94u8, 179u8, 97u8, 87u8, + 227u8, 57u8, 120u8, 133u8, 130u8, 59u8, 243u8, 224u8, 2u8, 11u8, 86u8, + 251u8, 77u8, 159u8, 177u8, 145u8, 34u8, 117u8, 93u8, 28u8, 52u8, ], ) } @@ -28734,9 +29540,9 @@ pub mod api { "set_executor_params", types::SetExecutorParams { new }, [ - 219u8, 27u8, 25u8, 162u8, 61u8, 189u8, 61u8, 32u8, 101u8, 139u8, 89u8, - 51u8, 191u8, 223u8, 94u8, 145u8, 109u8, 247u8, 22u8, 64u8, 178u8, 97u8, - 239u8, 0u8, 125u8, 20u8, 62u8, 210u8, 110u8, 79u8, 225u8, 43u8, + 79u8, 167u8, 242u8, 14u8, 22u8, 177u8, 240u8, 134u8, 154u8, 77u8, + 233u8, 188u8, 110u8, 223u8, 25u8, 52u8, 58u8, 241u8, 226u8, 255u8, 2u8, + 26u8, 8u8, 241u8, 125u8, 33u8, 63u8, 204u8, 93u8, 31u8, 229u8, 0u8, ], ) } @@ -28840,6 +29646,40 @@ pub mod api { ], ) } + #[doc = "See [`Pallet::set_node_feature`]."] + pub fn set_node_feature( + &self, + index: types::set_node_feature::Index, + value: types::set_node_feature::Value, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_node_feature", + types::SetNodeFeature { index, value }, + [ + 255u8, 19u8, 208u8, 76u8, 122u8, 6u8, 42u8, 182u8, 118u8, 151u8, 245u8, + 80u8, 162u8, 243u8, 45u8, 57u8, 122u8, 148u8, 98u8, 170u8, 157u8, 40u8, + 92u8, 234u8, 12u8, 141u8, 54u8, 80u8, 97u8, 249u8, 115u8, 27u8, + ], + ) + } + #[doc = "See [`Pallet::set_approval_voting_params`]."] + pub fn set_approval_voting_params( + &self, + new: types::set_approval_voting_params::New, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_approval_voting_params", + types::SetApprovalVotingParams { new }, + [ + 248u8, 81u8, 74u8, 103u8, 28u8, 108u8, 190u8, 177u8, 201u8, 252u8, + 87u8, 236u8, 20u8, 189u8, 192u8, 173u8, 40u8, 160u8, 170u8, 187u8, + 42u8, 108u8, 184u8, 131u8, 120u8, 237u8, 229u8, 240u8, 128u8, 49u8, + 163u8, 11u8, + ], + ) + } } } pub mod storage { @@ -28876,10 +29716,9 @@ pub mod api { "ActiveConfig", vec![], [ - 126u8, 223u8, 107u8, 199u8, 21u8, 114u8, 19u8, 172u8, 27u8, 108u8, - 189u8, 165u8, 33u8, 220u8, 57u8, 81u8, 137u8, 242u8, 204u8, 148u8, - 61u8, 161u8, 156u8, 36u8, 20u8, 172u8, 117u8, 30u8, 152u8, 210u8, - 207u8, 161u8, + 241u8, 129u8, 175u8, 69u8, 121u8, 171u8, 135u8, 98u8, 205u8, 87u8, + 244u8, 201u8, 27u8, 143u8, 112u8, 77u8, 83u8, 107u8, 22u8, 120u8, 58u8, + 74u8, 48u8, 72u8, 236u8, 132u8, 248u8, 60u8, 131u8, 107u8, 7u8, 98u8, ], ) } @@ -28904,10 +29743,9 @@ pub mod api { "PendingConfigs", vec![], [ - 105u8, 89u8, 53u8, 156u8, 60u8, 53u8, 196u8, 187u8, 5u8, 122u8, 186u8, - 196u8, 162u8, 133u8, 254u8, 178u8, 130u8, 143u8, 90u8, 23u8, 234u8, - 105u8, 9u8, 121u8, 142u8, 123u8, 136u8, 166u8, 95u8, 215u8, 176u8, - 46u8, + 29u8, 220u8, 218u8, 233u8, 222u8, 28u8, 203u8, 86u8, 0u8, 34u8, 78u8, + 157u8, 206u8, 57u8, 211u8, 206u8, 34u8, 22u8, 126u8, 92u8, 13u8, 71u8, + 156u8, 156u8, 121u8, 2u8, 30u8, 72u8, 37u8, 12u8, 88u8, 210u8, ], ) } @@ -29417,9 +30255,10 @@ pub mod api { "enter", types::Enter { data }, [ - 145u8, 120u8, 158u8, 39u8, 139u8, 223u8, 236u8, 209u8, 253u8, 108u8, - 188u8, 21u8, 23u8, 61u8, 25u8, 171u8, 30u8, 203u8, 161u8, 117u8, 90u8, - 55u8, 50u8, 107u8, 26u8, 52u8, 26u8, 158u8, 56u8, 218u8, 186u8, 142u8, + 43u8, 145u8, 39u8, 208u8, 205u8, 120u8, 57u8, 196u8, 192u8, 128u8, + 144u8, 83u8, 121u8, 232u8, 191u8, 82u8, 200u8, 129u8, 139u8, 27u8, + 126u8, 177u8, 240u8, 158u8, 232u8, 180u8, 26u8, 180u8, 116u8, 148u8, + 168u8, 41u8, ], ) } @@ -29484,10 +30323,10 @@ pub mod api { "OnChainVotes", vec![], [ - 200u8, 210u8, 42u8, 153u8, 85u8, 71u8, 171u8, 108u8, 148u8, 212u8, - 108u8, 61u8, 178u8, 77u8, 129u8, 90u8, 120u8, 218u8, 228u8, 152u8, - 120u8, 226u8, 29u8, 82u8, 239u8, 146u8, 41u8, 164u8, 193u8, 207u8, - 246u8, 115u8, + 65u8, 20u8, 36u8, 37u8, 239u8, 150u8, 32u8, 78u8, 226u8, 88u8, 80u8, + 240u8, 12u8, 156u8, 176u8, 75u8, 231u8, 204u8, 37u8, 24u8, 204u8, + 228u8, 75u8, 235u8, 43u8, 163u8, 174u8, 152u8, 166u8, 17u8, 232u8, + 33u8, ], ) } @@ -29521,7 +30360,7 @@ pub mod api { } pub mod claim_queue { use super::runtime_types; - pub type ClaimQueue = :: subxt :: utils :: KeyedVec < runtime_types :: polkadot_primitives :: v6 :: CoreIndex , :: std :: vec :: Vec < :: core :: option :: Option < runtime_types :: polkadot_runtime_parachains :: scheduler :: pallet :: ParasEntry < :: core :: primitive :: u32 > > > > ; + pub type ClaimQueue = :: subxt :: utils :: KeyedVec < runtime_types :: polkadot_primitives :: v6 :: CoreIndex , :: std :: vec :: Vec < runtime_types :: polkadot_runtime_parachains :: scheduler :: pallet :: ParasEntry < :: core :: primitive :: u32 > > > ; } } pub struct StorageApi; @@ -29575,9 +30414,10 @@ pub mod api { "AvailabilityCores", vec![], [ - 134u8, 59u8, 206u8, 4u8, 69u8, 72u8, 73u8, 25u8, 139u8, 152u8, 202u8, - 43u8, 224u8, 77u8, 64u8, 57u8, 218u8, 245u8, 254u8, 222u8, 227u8, 95u8, - 119u8, 134u8, 218u8, 47u8, 154u8, 233u8, 229u8, 172u8, 100u8, 86u8, + 250u8, 177u8, 44u8, 237u8, 5u8, 116u8, 135u8, 99u8, 136u8, 209u8, + 181u8, 145u8, 254u8, 57u8, 42u8, 92u8, 236u8, 67u8, 128u8, 171u8, + 200u8, 88u8, 40u8, 31u8, 163u8, 128u8, 15u8, 96u8, 181u8, 224u8, 162u8, + 188u8, ], ) } @@ -29627,9 +30467,10 @@ pub mod api { "ClaimQueue", vec![], [ - 132u8, 78u8, 109u8, 225u8, 170u8, 78u8, 17u8, 53u8, 56u8, 218u8, 14u8, - 17u8, 230u8, 247u8, 11u8, 223u8, 18u8, 98u8, 92u8, 164u8, 223u8, 143u8, - 241u8, 64u8, 185u8, 108u8, 228u8, 137u8, 122u8, 100u8, 29u8, 239u8, + 192u8, 65u8, 227u8, 114u8, 125u8, 169u8, 134u8, 70u8, 201u8, 99u8, + 246u8, 23u8, 0u8, 143u8, 163u8, 87u8, 216u8, 1u8, 184u8, 124u8, 23u8, + 180u8, 132u8, 143u8, 202u8, 81u8, 144u8, 242u8, 15u8, 141u8, 124u8, + 126u8, ], ) } @@ -33094,10 +33935,9 @@ pub mod api { "SessionExecutorParams", vec![], [ - 102u8, 51u8, 28u8, 199u8, 238u8, 229u8, 99u8, 38u8, 116u8, 154u8, - 250u8, 136u8, 240u8, 122u8, 82u8, 13u8, 139u8, 160u8, 149u8, 218u8, - 162u8, 130u8, 109u8, 251u8, 10u8, 109u8, 200u8, 158u8, 32u8, 157u8, - 84u8, 234u8, + 38u8, 80u8, 118u8, 112u8, 189u8, 55u8, 95u8, 184u8, 19u8, 8u8, 114u8, + 6u8, 173u8, 80u8, 254u8, 98u8, 107u8, 202u8, 215u8, 107u8, 149u8, + 157u8, 145u8, 8u8, 249u8, 255u8, 83u8, 199u8, 47u8, 179u8, 208u8, 83u8, ], ) } @@ -33119,10 +33959,9 @@ pub mod api { _0.borrow(), )], [ - 102u8, 51u8, 28u8, 199u8, 238u8, 229u8, 99u8, 38u8, 116u8, 154u8, - 250u8, 136u8, 240u8, 122u8, 82u8, 13u8, 139u8, 160u8, 149u8, 218u8, - 162u8, 130u8, 109u8, 251u8, 10u8, 109u8, 200u8, 158u8, 32u8, 157u8, - 84u8, 234u8, + 38u8, 80u8, 118u8, 112u8, 189u8, 55u8, 95u8, 184u8, 19u8, 8u8, 114u8, + 6u8, 173u8, 80u8, 254u8, 98u8, 107u8, 202u8, 215u8, 107u8, 149u8, + 157u8, 145u8, 8u8, 249u8, 255u8, 83u8, 199u8, 47u8, 179u8, 208u8, 83u8, ], ) } @@ -33914,7 +34753,7 @@ pub mod api { } pub mod processing_failed { use super::runtime_types; - pub type Id = [::core::primitive::u8; 32usize]; + pub type Id = ::subxt::utils::H256; pub type Origin = runtime_types::polkadot_runtime_parachains::inclusion::AggregateMessageOrigin; pub type Error = @@ -33943,7 +34782,7 @@ pub mod api { } pub mod processed { use super::runtime_types; - pub type Id = [::core::primitive::u8; 32usize]; + pub type Id = ::subxt::utils::H256; pub type Origin = runtime_types::polkadot_runtime_parachains::inclusion::AggregateMessageOrigin; pub type WeightUsed = runtime_types::sp_weights::weight_v2::Weight; @@ -34235,18 +35074,6 @@ pub mod api { } } } - pub mod para_assignment_provider { - use super::root_mod; - use super::runtime_types; - pub mod storage { - use super::runtime_types; - pub mod types { - use super::runtime_types; - } - pub struct StorageApi; - impl StorageApi {} - } - } pub mod on_demand_assignment_provider { use super::root_mod; use super::runtime_types; @@ -34418,9 +35245,7 @@ pub mod api { } pub mod on_demand_queue { use super::runtime_types; - pub type OnDemandQueue = ::std::vec::Vec< - runtime_types::polkadot_runtime_parachains::scheduler::common::Assignment, - >; + pub type OnDemandQueue = :: std :: vec :: Vec < runtime_types :: polkadot_runtime_parachains :: assigner_on_demand :: EnqueuedOrder > ; } pub mod para_id_affinity { use super::runtime_types; @@ -34553,6 +35378,167 @@ pub mod api { use super::root_mod; use super::runtime_types; } + pub mod coretime_assignment_provider { + use super::root_mod; + use super::runtime_types; + #[doc = "The `Error` enum of this pallet."] + pub type Error = + runtime_types::polkadot_runtime_parachains::assigner_coretime::pallet::Error; + pub mod storage { + use super::runtime_types; + pub mod types { + use super::runtime_types; + pub mod core_schedules { + use super::runtime_types; + pub type CoreSchedules = + runtime_types::polkadot_runtime_parachains::assigner_coretime::Schedule< + ::core::primitive::u32, + >; + pub type Param0 = ::core::primitive::u32; + pub type Param1 = runtime_types::polkadot_primitives::v6::CoreIndex; + } + pub mod core_descriptors { + use super::runtime_types; + pub type CoreDescriptors = runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: CoreDescriptor < :: core :: primitive :: u32 > ; + pub type Param0 = runtime_types::polkadot_primitives::v6::CoreIndex; + } + } + pub struct StorageApi; + impl StorageApi { + #[doc = " Scheduled assignment sets."] + #[doc = ""] + #[doc = " Assignments as of the given block number. They will go into state once the block number is"] + #[doc = " reached (and replace whatever was in there before)."] + pub fn core_schedules_iter( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::core_schedules::CoreSchedules, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "CoretimeAssignmentProvider", + "CoreSchedules", + vec![], + [ + 34u8, 85u8, 91u8, 158u8, 28u8, 200u8, 76u8, 188u8, 253u8, 91u8, 153u8, + 42u8, 42u8, 227u8, 119u8, 181u8, 247u8, 44u8, 29u8, 24u8, 128u8, 49u8, + 57u8, 248u8, 24u8, 145u8, 34u8, 74u8, 21u8, 225u8, 159u8, 232u8, + ], + ) + } + #[doc = " Scheduled assignment sets."] + #[doc = ""] + #[doc = " Assignments as of the given block number. They will go into state once the block number is"] + #[doc = " reached (and replace whatever was in there before)."] + pub fn core_schedules_iter1( + &self, + _0: impl ::std::borrow::Borrow, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::core_schedules::CoreSchedules, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "CoretimeAssignmentProvider", + "CoreSchedules", + vec![::subxt::storage::address::make_static_storage_map_key( + _0.borrow(), + )], + [ + 34u8, 85u8, 91u8, 158u8, 28u8, 200u8, 76u8, 188u8, 253u8, 91u8, 153u8, + 42u8, 42u8, 227u8, 119u8, 181u8, 247u8, 44u8, 29u8, 24u8, 128u8, 49u8, + 57u8, 248u8, 24u8, 145u8, 34u8, 74u8, 21u8, 225u8, 159u8, 232u8, + ], + ) + } + #[doc = " Scheduled assignment sets."] + #[doc = ""] + #[doc = " Assignments as of the given block number. They will go into state once the block number is"] + #[doc = " reached (and replace whatever was in there before)."] + pub fn core_schedules( + &self, + _0: impl ::std::borrow::Borrow, + _1: impl ::std::borrow::Borrow, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::core_schedules::CoreSchedules, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "CoretimeAssignmentProvider", + "CoreSchedules", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 34u8, 85u8, 91u8, 158u8, 28u8, 200u8, 76u8, 188u8, 253u8, 91u8, 153u8, + 42u8, 42u8, 227u8, 119u8, 181u8, 247u8, 44u8, 29u8, 24u8, 128u8, 49u8, + 57u8, 248u8, 24u8, 145u8, 34u8, 74u8, 21u8, 225u8, 159u8, 232u8, + ], + ) + } + #[doc = " Assignments which are currently active."] + #[doc = ""] + #[doc = " They will be picked from `PendingAssignments` once we reach the scheduled block number in"] + #[doc = " `PendingAssignments`."] + pub fn core_descriptors_iter( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::core_descriptors::CoreDescriptors, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "CoretimeAssignmentProvider", + "CoreDescriptors", + vec![], + [ + 1u8, 90u8, 208u8, 119u8, 150u8, 241u8, 133u8, 74u8, 22u8, 166u8, 13u8, + 7u8, 73u8, 136u8, 105u8, 61u8, 251u8, 245u8, 164u8, 7u8, 45u8, 68u8, + 190u8, 224u8, 34u8, 22u8, 30u8, 250u8, 171u8, 152u8, 238u8, 120u8, + ], + ) + } + #[doc = " Assignments which are currently active."] + #[doc = ""] + #[doc = " They will be picked from `PendingAssignments` once we reach the scheduled block number in"] + #[doc = " `PendingAssignments`."] + pub fn core_descriptors( + &self, + _0: impl ::std::borrow::Borrow, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::core_descriptors::CoreDescriptors, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "CoretimeAssignmentProvider", + "CoreDescriptors", + vec![::subxt::storage::address::make_static_storage_map_key( + _0.borrow(), + )], + [ + 1u8, 90u8, 208u8, 119u8, 150u8, 241u8, 133u8, 74u8, 22u8, 166u8, 13u8, + 7u8, 73u8, 136u8, 105u8, 61u8, 251u8, 245u8, 164u8, 7u8, 45u8, 68u8, + 190u8, 224u8, 34u8, 22u8, 30u8, 250u8, 171u8, 152u8, 238u8, 120u8, + ], + ) + } + } + } + } pub mod registrar { use super::root_mod; use super::runtime_types; @@ -37065,6 +38051,187 @@ pub mod api { } } } + pub mod coretime { + use super::root_mod; + use super::runtime_types; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::polkadot_runtime_parachains::coretime::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::polkadot_runtime_parachains::coretime::pallet::Call; + pub mod calls { + use super::root_mod; + use super::runtime_types; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::request_core_count`]."] + pub struct RequestCoreCount { + pub count: request_core_count::Count, + } + pub mod request_core_count { + use super::runtime_types; + pub type Count = ::core::primitive::u16; + } + impl ::subxt::blocks::StaticExtrinsic for RequestCoreCount { + const PALLET: &'static str = "Coretime"; + const CALL: &'static str = "request_core_count"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::assign_core`]."] + pub struct AssignCore { + pub core: assign_core::Core, + pub begin: assign_core::Begin, + pub assignment: assign_core::Assignment, + pub end_hint: assign_core::EndHint, + } + pub mod assign_core { + use super::runtime_types; + pub type Core = ::core::primitive::u16; + pub type Begin = ::core::primitive::u32; + pub type Assignment = ::std::vec::Vec<( + runtime_types::pallet_broker::coretime_interface::CoreAssignment, + runtime_types::polkadot_runtime_parachains::assigner_coretime::PartsOf57600, + )>; + pub type EndHint = ::core::option::Option<::core::primitive::u32>; + } + impl ::subxt::blocks::StaticExtrinsic for AssignCore { + const PALLET: &'static str = "Coretime"; + const CALL: &'static str = "assign_core"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::request_core_count`]."] + pub fn request_core_count( + &self, + count: types::request_core_count::Count, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Coretime", + "request_core_count", + types::RequestCoreCount { count }, + [ + 8u8, 225u8, 74u8, 162u8, 188u8, 3u8, 191u8, 45u8, 167u8, 21u8, 227u8, + 200u8, 65u8, 221u8, 49u8, 212u8, 12u8, 229u8, 160u8, 178u8, 136u8, + 13u8, 131u8, 42u8, 220u8, 3u8, 151u8, 241u8, 210u8, 158u8, 218u8, + 217u8, + ], + ) + } + #[doc = "See [`Pallet::assign_core`]."] + pub fn assign_core( + &self, + core: types::assign_core::Core, + begin: types::assign_core::Begin, + assignment: types::assign_core::Assignment, + end_hint: types::assign_core::EndHint, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Coretime", + "assign_core", + types::AssignCore { + core, + begin, + assignment, + end_hint, + }, + [ + 113u8, 133u8, 153u8, 202u8, 209u8, 53u8, 168u8, 214u8, 153u8, 232u8, + 170u8, 35u8, 63u8, 87u8, 5u8, 108u8, 188u8, 55u8, 111u8, 55u8, 22u8, + 1u8, 190u8, 216u8, 233u8, 185u8, 135u8, 172u8, 15u8, 254u8, 91u8, 92u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::polkadot_runtime_parachains::coretime::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The broker chain has asked for revenue information for a specific block."] + pub struct RevenueInfoRequested { + pub when: revenue_info_requested::When, + } + pub mod revenue_info_requested { + use super::runtime_types; + pub type When = ::core::primitive::u32; + } + impl ::subxt::events::StaticEvent for RevenueInfoRequested { + const PALLET: &'static str = "Coretime"; + const EVENT: &'static str = "RevenueInfoRequested"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A core has received a new assignment from the broker chain."] + pub struct CoreAssigned { + pub core: core_assigned::Core, + } + pub mod core_assigned { + use super::runtime_types; + pub type Core = runtime_types::polkadot_primitives::v6::CoreIndex; + } + impl ::subxt::events::StaticEvent for CoreAssigned { + const PALLET: &'static str = "Coretime"; + const EVENT: &'static str = "CoreAssigned"; + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The ParaId of the broker system parachain."] + pub fn broker_id(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Coretime", + "BrokerId", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + } + } + } pub mod xcm_pallet { use super::root_mod; use super::runtime_types; @@ -37095,7 +38262,7 @@ pub mod api { } pub mod send { use super::runtime_types; - pub type Dest = runtime_types::xcm::VersionedMultiLocation; + pub type Dest = runtime_types::xcm::VersionedLocation; pub type Message = runtime_types::xcm::VersionedXcm; } impl ::subxt::blocks::StaticExtrinsic for Send { @@ -37121,9 +38288,9 @@ pub mod api { } pub mod teleport_assets { use super::runtime_types; - pub type Dest = runtime_types::xcm::VersionedMultiLocation; - pub type Beneficiary = runtime_types::xcm::VersionedMultiLocation; - pub type Assets = runtime_types::xcm::VersionedMultiAssets; + pub type Dest = runtime_types::xcm::VersionedLocation; + pub type Beneficiary = runtime_types::xcm::VersionedLocation; + pub type Assets = runtime_types::xcm::VersionedAssets; pub type FeeAssetItem = ::core::primitive::u32; } impl ::subxt::blocks::StaticExtrinsic for TeleportAssets { @@ -37149,9 +38316,9 @@ pub mod api { } pub mod reserve_transfer_assets { use super::runtime_types; - pub type Dest = runtime_types::xcm::VersionedMultiLocation; - pub type Beneficiary = runtime_types::xcm::VersionedMultiLocation; - pub type Assets = runtime_types::xcm::VersionedMultiAssets; + pub type Dest = runtime_types::xcm::VersionedLocation; + pub type Beneficiary = runtime_types::xcm::VersionedLocation; + pub type Assets = runtime_types::xcm::VersionedAssets; pub type FeeAssetItem = ::core::primitive::u32; } impl ::subxt::blocks::StaticExtrinsic for ReserveTransferAssets { @@ -37199,8 +38366,7 @@ pub mod api { } pub mod force_xcm_version { use super::runtime_types; - pub type Location = - runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Location = runtime_types::staging_xcm::v4::location::Location; pub type Version = ::core::primitive::u32; } impl ::subxt::blocks::StaticExtrinsic for ForceXcmVersion { @@ -37245,7 +38411,7 @@ pub mod api { } pub mod force_subscribe_version_notify { use super::runtime_types; - pub type Location = runtime_types::xcm::VersionedMultiLocation; + pub type Location = runtime_types::xcm::VersionedLocation; } impl ::subxt::blocks::StaticExtrinsic for ForceSubscribeVersionNotify { const PALLET: &'static str = "XcmPallet"; @@ -37267,7 +38433,7 @@ pub mod api { } pub mod force_unsubscribe_version_notify { use super::runtime_types; - pub type Location = runtime_types::xcm::VersionedMultiLocation; + pub type Location = runtime_types::xcm::VersionedLocation; } impl ::subxt::blocks::StaticExtrinsic for ForceUnsubscribeVersionNotify { const PALLET: &'static str = "XcmPallet"; @@ -37294,9 +38460,9 @@ pub mod api { } pub mod limited_reserve_transfer_assets { use super::runtime_types; - pub type Dest = runtime_types::xcm::VersionedMultiLocation; - pub type Beneficiary = runtime_types::xcm::VersionedMultiLocation; - pub type Assets = runtime_types::xcm::VersionedMultiAssets; + pub type Dest = runtime_types::xcm::VersionedLocation; + pub type Beneficiary = runtime_types::xcm::VersionedLocation; + pub type Assets = runtime_types::xcm::VersionedAssets; pub type FeeAssetItem = ::core::primitive::u32; pub type WeightLimit = runtime_types::xcm::v3::WeightLimit; } @@ -37324,9 +38490,9 @@ pub mod api { } pub mod limited_teleport_assets { use super::runtime_types; - pub type Dest = runtime_types::xcm::VersionedMultiLocation; - pub type Beneficiary = runtime_types::xcm::VersionedMultiLocation; - pub type Assets = runtime_types::xcm::VersionedMultiAssets; + pub type Dest = runtime_types::xcm::VersionedLocation; + pub type Beneficiary = runtime_types::xcm::VersionedLocation; + pub type Assets = runtime_types::xcm::VersionedAssets; pub type FeeAssetItem = ::core::primitive::u32; pub type WeightLimit = runtime_types::xcm::v3::WeightLimit; } @@ -37356,6 +38522,36 @@ pub mod api { const PALLET: &'static str = "XcmPallet"; const CALL: &'static str = "force_suspension"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::transfer_assets`]."] + pub struct TransferAssets { + pub dest: ::std::boxed::Box, + pub beneficiary: ::std::boxed::Box, + pub assets: ::std::boxed::Box, + pub fee_asset_item: transfer_assets::FeeAssetItem, + pub weight_limit: transfer_assets::WeightLimit, + } + pub mod transfer_assets { + use super::runtime_types; + pub type Dest = runtime_types::xcm::VersionedLocation; + pub type Beneficiary = runtime_types::xcm::VersionedLocation; + pub type Assets = runtime_types::xcm::VersionedAssets; + pub type FeeAssetItem = ::core::primitive::u32; + pub type WeightLimit = runtime_types::xcm::v3::WeightLimit; + } + impl ::subxt::blocks::StaticExtrinsic for TransferAssets { + const PALLET: &'static str = "XcmPallet"; + const CALL: &'static str = "transfer_assets"; + } } pub struct TransactionApi; impl TransactionApi { @@ -37373,9 +38569,10 @@ pub mod api { message: ::std::boxed::Box::new(message), }, [ - 147u8, 255u8, 86u8, 82u8, 17u8, 159u8, 225u8, 145u8, 220u8, 89u8, 71u8, - 23u8, 193u8, 249u8, 12u8, 70u8, 19u8, 140u8, 232u8, 97u8, 12u8, 220u8, - 113u8, 65u8, 4u8, 255u8, 138u8, 10u8, 231u8, 122u8, 67u8, 105u8, + 47u8, 63u8, 128u8, 176u8, 10u8, 137u8, 124u8, 238u8, 155u8, 37u8, + 193u8, 160u8, 83u8, 240u8, 21u8, 179u8, 169u8, 131u8, 27u8, 104u8, + 195u8, 208u8, 123u8, 14u8, 221u8, 12u8, 45u8, 81u8, 148u8, 76u8, 17u8, + 100u8, ], ) } @@ -37397,9 +38594,9 @@ pub mod api { fee_asset_item, }, [ - 56u8, 144u8, 237u8, 60u8, 157u8, 5u8, 7u8, 129u8, 41u8, 149u8, 160u8, - 100u8, 233u8, 102u8, 181u8, 140u8, 115u8, 213u8, 29u8, 132u8, 16u8, - 30u8, 23u8, 82u8, 140u8, 134u8, 37u8, 87u8, 3u8, 99u8, 172u8, 42u8, + 124u8, 191u8, 118u8, 61u8, 45u8, 225u8, 97u8, 83u8, 198u8, 20u8, 139u8, + 117u8, 241u8, 1u8, 19u8, 54u8, 79u8, 181u8, 131u8, 112u8, 11u8, 118u8, + 147u8, 12u8, 89u8, 156u8, 123u8, 123u8, 195u8, 45u8, 50u8, 107u8, ], ) } @@ -37421,9 +38618,10 @@ pub mod api { fee_asset_item, }, [ - 21u8, 167u8, 44u8, 22u8, 210u8, 73u8, 148u8, 7u8, 91u8, 108u8, 148u8, - 205u8, 170u8, 243u8, 142u8, 224u8, 205u8, 119u8, 252u8, 22u8, 203u8, - 32u8, 73u8, 200u8, 178u8, 14u8, 167u8, 147u8, 166u8, 55u8, 14u8, 231u8, + 97u8, 102u8, 230u8, 44u8, 135u8, 197u8, 43u8, 53u8, 182u8, 125u8, + 140u8, 141u8, 229u8, 73u8, 29u8, 55u8, 159u8, 104u8, 197u8, 20u8, + 124u8, 234u8, 250u8, 94u8, 133u8, 253u8, 189u8, 6u8, 216u8, 162u8, + 218u8, 89u8, ], ) } @@ -37441,9 +38639,10 @@ pub mod api { max_weight, }, [ - 15u8, 97u8, 86u8, 111u8, 105u8, 116u8, 109u8, 206u8, 70u8, 8u8, 57u8, - 232u8, 133u8, 132u8, 30u8, 219u8, 34u8, 69u8, 0u8, 213u8, 98u8, 241u8, - 186u8, 93u8, 216u8, 39u8, 73u8, 24u8, 193u8, 87u8, 92u8, 31u8, + 71u8, 109u8, 92u8, 110u8, 198u8, 150u8, 140u8, 125u8, 248u8, 236u8, + 177u8, 156u8, 198u8, 223u8, 51u8, 15u8, 52u8, 240u8, 20u8, 200u8, 68u8, + 145u8, 36u8, 156u8, 159u8, 153u8, 125u8, 48u8, 181u8, 61u8, 53u8, + 208u8, ], ) } @@ -37461,9 +38660,9 @@ pub mod api { version, }, [ - 110u8, 11u8, 78u8, 255u8, 66u8, 2u8, 55u8, 108u8, 92u8, 151u8, 231u8, - 175u8, 75u8, 156u8, 34u8, 191u8, 0u8, 56u8, 104u8, 197u8, 70u8, 204u8, - 73u8, 234u8, 173u8, 251u8, 88u8, 226u8, 3u8, 136u8, 228u8, 136u8, + 69u8, 151u8, 198u8, 154u8, 69u8, 181u8, 41u8, 111u8, 145u8, 230u8, + 103u8, 42u8, 237u8, 91u8, 235u8, 6u8, 156u8, 65u8, 187u8, 48u8, 171u8, + 200u8, 49u8, 4u8, 9u8, 210u8, 229u8, 152u8, 187u8, 88u8, 80u8, 246u8, ], ) } @@ -37496,9 +38695,9 @@ pub mod api { location: ::std::boxed::Box::new(location), }, [ - 112u8, 254u8, 138u8, 12u8, 203u8, 176u8, 251u8, 167u8, 223u8, 0u8, - 71u8, 148u8, 19u8, 179u8, 47u8, 96u8, 188u8, 189u8, 14u8, 172u8, 1u8, - 1u8, 192u8, 107u8, 137u8, 158u8, 22u8, 9u8, 138u8, 241u8, 32u8, 47u8, + 203u8, 171u8, 70u8, 130u8, 46u8, 63u8, 76u8, 50u8, 105u8, 23u8, 249u8, + 190u8, 115u8, 74u8, 70u8, 125u8, 132u8, 112u8, 138u8, 60u8, 33u8, 35u8, + 45u8, 29u8, 95u8, 103u8, 187u8, 182u8, 188u8, 196u8, 248u8, 152u8, ], ) } @@ -37514,10 +38713,9 @@ pub mod api { location: ::std::boxed::Box::new(location), }, [ - 205u8, 143u8, 230u8, 143u8, 166u8, 184u8, 53u8, 252u8, 118u8, 184u8, - 209u8, 227u8, 225u8, 184u8, 254u8, 244u8, 101u8, 56u8, 27u8, 128u8, - 40u8, 159u8, 178u8, 62u8, 63u8, 164u8, 59u8, 236u8, 1u8, 168u8, 202u8, - 42u8, + 6u8, 113u8, 168u8, 215u8, 233u8, 202u8, 249u8, 134u8, 131u8, 8u8, + 142u8, 203u8, 142u8, 95u8, 216u8, 70u8, 38u8, 99u8, 166u8, 97u8, 218u8, + 132u8, 247u8, 14u8, 42u8, 99u8, 4u8, 115u8, 200u8, 180u8, 213u8, 50u8, ], ) } @@ -37541,10 +38739,10 @@ pub mod api { weight_limit, }, [ - 10u8, 139u8, 165u8, 239u8, 92u8, 178u8, 169u8, 62u8, 166u8, 236u8, - 50u8, 12u8, 196u8, 3u8, 233u8, 209u8, 3u8, 159u8, 184u8, 234u8, 171u8, - 46u8, 145u8, 134u8, 241u8, 155u8, 221u8, 173u8, 166u8, 94u8, 147u8, - 88u8, + 198u8, 66u8, 204u8, 162u8, 222u8, 246u8, 141u8, 165u8, 241u8, 62u8, + 43u8, 236u8, 56u8, 200u8, 54u8, 47u8, 174u8, 83u8, 167u8, 220u8, 174u8, + 111u8, 123u8, 202u8, 248u8, 232u8, 166u8, 80u8, 152u8, 223u8, 86u8, + 141u8, ], ) } @@ -37568,10 +38766,9 @@ pub mod api { weight_limit, }, [ - 156u8, 205u8, 105u8, 18u8, 120u8, 130u8, 144u8, 67u8, 152u8, 188u8, - 109u8, 121u8, 4u8, 240u8, 123u8, 112u8, 72u8, 153u8, 2u8, 111u8, 183u8, - 170u8, 199u8, 82u8, 33u8, 117u8, 43u8, 133u8, 208u8, 44u8, 118u8, - 107u8, + 70u8, 61u8, 32u8, 43u8, 101u8, 104u8, 251u8, 60u8, 212u8, 124u8, 113u8, + 243u8, 241u8, 183u8, 5u8, 231u8, 209u8, 231u8, 136u8, 3u8, 145u8, + 242u8, 179u8, 171u8, 185u8, 185u8, 7u8, 34u8, 5u8, 203u8, 21u8, 210u8, ], ) } @@ -37591,6 +38788,33 @@ pub mod api { ], ) } + #[doc = "See [`Pallet::transfer_assets`]."] + pub fn transfer_assets( + &self, + dest: types::transfer_assets::Dest, + beneficiary: types::transfer_assets::Beneficiary, + assets: types::transfer_assets::Assets, + fee_asset_item: types::transfer_assets::FeeAssetItem, + weight_limit: types::transfer_assets::WeightLimit, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "XcmPallet", + "transfer_assets", + types::TransferAssets { + dest: ::std::boxed::Box::new(dest), + beneficiary: ::std::boxed::Box::new(beneficiary), + assets: ::std::boxed::Box::new(assets), + fee_asset_item, + weight_limit, + }, + [ + 44u8, 155u8, 182u8, 37u8, 123u8, 148u8, 150u8, 191u8, 117u8, 32u8, + 16u8, 238u8, 121u8, 188u8, 217u8, 110u8, 10u8, 236u8, 174u8, 91u8, + 100u8, 201u8, 109u8, 109u8, 60u8, 177u8, 233u8, 66u8, 181u8, 191u8, + 105u8, 37u8, + ], + ) + } } } #[doc = "The `Event` enum of this pallet"] @@ -37613,7 +38837,7 @@ pub mod api { } pub mod attempted { use super::runtime_types; - pub type Outcome = runtime_types::xcm::v3::traits::Outcome; + pub type Outcome = runtime_types::staging_xcm::v4::traits::Outcome; } impl ::subxt::events::StaticEvent for Attempted { const PALLET: &'static str = "XcmPallet"; @@ -37638,9 +38862,9 @@ pub mod api { } pub mod sent { use super::runtime_types; - pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type Destination = runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type Message = runtime_types::xcm::v3::Xcm; + pub type Origin = runtime_types::staging_xcm::v4::location::Location; + pub type Destination = runtime_types::staging_xcm::v4::location::Location; + pub type Message = runtime_types::staging_xcm::v4::Xcm; pub type MessageId = [::core::primitive::u8; 32usize]; } impl ::subxt::events::StaticEvent for Sent { @@ -37666,7 +38890,7 @@ pub mod api { } pub mod unexpected_response { use super::runtime_types; - pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Origin = runtime_types::staging_xcm::v4::location::Location; pub type QueryId = ::core::primitive::u64; } impl ::subxt::events::StaticEvent for UnexpectedResponse { @@ -37692,7 +38916,7 @@ pub mod api { pub mod response_ready { use super::runtime_types; pub type QueryId = ::core::primitive::u64; - pub type Response = runtime_types::xcm::v3::Response; + pub type Response = runtime_types::staging_xcm::v4::Response; } impl ::subxt::events::StaticEvent for ResponseReady { const PALLET: &'static str = "XcmPallet"; @@ -37832,11 +39056,10 @@ pub mod api { } pub mod invalid_responder { use super::runtime_types; - pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Origin = runtime_types::staging_xcm::v4::location::Location; pub type QueryId = ::core::primitive::u64; - pub type ExpectedLocation = ::core::option::Option< - runtime_types::staging_xcm::v3::multilocation::MultiLocation, - >; + pub type ExpectedLocation = + ::core::option::Option; } impl ::subxt::events::StaticEvent for InvalidResponder { const PALLET: &'static str = "XcmPallet"; @@ -37865,7 +39088,7 @@ pub mod api { } pub mod invalid_responder_version { use super::runtime_types; - pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Origin = runtime_types::staging_xcm::v4::location::Location; pub type QueryId = ::core::primitive::u64; } impl ::subxt::events::StaticEvent for InvalidResponderVersion { @@ -37913,8 +39136,8 @@ pub mod api { pub mod assets_trapped { use super::runtime_types; pub type Hash = ::subxt::utils::H256; - pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type Assets = runtime_types::xcm::VersionedMultiAssets; + pub type Origin = runtime_types::staging_xcm::v4::location::Location; + pub type Assets = runtime_types::xcm::VersionedAssets; } impl ::subxt::events::StaticEvent for AssetsTrapped { const PALLET: &'static str = "XcmPallet"; @@ -37941,9 +39164,9 @@ pub mod api { } pub mod version_change_notified { use super::runtime_types; - pub type Destination = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Destination = runtime_types::staging_xcm::v4::location::Location; pub type Result = ::core::primitive::u32; - pub type Cost = runtime_types::xcm::v3::multiasset::MultiAssets; + pub type Cost = runtime_types::staging_xcm::v4::asset::Assets; pub type MessageId = [::core::primitive::u8; 32usize]; } impl ::subxt::events::StaticEvent for VersionChangeNotified { @@ -37968,7 +39191,7 @@ pub mod api { } pub mod supported_version_changed { use super::runtime_types; - pub type Location = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Location = runtime_types::staging_xcm::v4::location::Location; pub type Version = ::core::primitive::u32; } impl ::subxt::events::StaticEvent for SupportedVersionChanged { @@ -37994,7 +39217,7 @@ pub mod api { } pub mod notify_target_send_fail { use super::runtime_types; - pub type Location = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Location = runtime_types::staging_xcm::v4::location::Location; pub type QueryId = ::core::primitive::u64; pub type Error = runtime_types::xcm::v3::traits::Error; } @@ -38020,7 +39243,7 @@ pub mod api { } pub mod notify_target_migration_fail { use super::runtime_types; - pub type Location = runtime_types::xcm::VersionedMultiLocation; + pub type Location = runtime_types::xcm::VersionedLocation; pub type QueryId = ::core::primitive::u64; } impl ::subxt::events::StaticEvent for NotifyTargetMigrationFail { @@ -38050,7 +39273,7 @@ pub mod api { } pub mod invalid_querier_version { use super::runtime_types; - pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Origin = runtime_types::staging_xcm::v4::location::Location; pub type QueryId = ::core::primitive::u64; } impl ::subxt::events::StaticEvent for InvalidQuerierVersion { @@ -38078,13 +39301,11 @@ pub mod api { } pub mod invalid_querier { use super::runtime_types; - pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Origin = runtime_types::staging_xcm::v4::location::Location; pub type QueryId = ::core::primitive::u64; - pub type ExpectedQuerier = - runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type MaybeActualQuerier = ::core::option::Option< - runtime_types::staging_xcm::v3::multilocation::MultiLocation, - >; + pub type ExpectedQuerier = runtime_types::staging_xcm::v4::location::Location; + pub type MaybeActualQuerier = + ::core::option::Option; } impl ::subxt::events::StaticEvent for InvalidQuerier { const PALLET: &'static str = "XcmPallet"; @@ -38109,8 +39330,8 @@ pub mod api { } pub mod version_notify_started { use super::runtime_types; - pub type Destination = runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type Cost = runtime_types::xcm::v3::multiasset::MultiAssets; + pub type Destination = runtime_types::staging_xcm::v4::location::Location; + pub type Cost = runtime_types::staging_xcm::v4::asset::Assets; pub type MessageId = [::core::primitive::u8; 32usize]; } impl ::subxt::events::StaticEvent for VersionNotifyStarted { @@ -38135,8 +39356,8 @@ pub mod api { } pub mod version_notify_requested { use super::runtime_types; - pub type Destination = runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type Cost = runtime_types::xcm::v3::multiasset::MultiAssets; + pub type Destination = runtime_types::staging_xcm::v4::location::Location; + pub type Cost = runtime_types::staging_xcm::v4::asset::Assets; pub type MessageId = [::core::primitive::u8; 32usize]; } impl ::subxt::events::StaticEvent for VersionNotifyRequested { @@ -38162,8 +39383,8 @@ pub mod api { } pub mod version_notify_unrequested { use super::runtime_types; - pub type Destination = runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type Cost = runtime_types::xcm::v3::multiasset::MultiAssets; + pub type Destination = runtime_types::staging_xcm::v4::location::Location; + pub type Cost = runtime_types::staging_xcm::v4::asset::Assets; pub type MessageId = [::core::primitive::u8; 32usize]; } impl ::subxt::events::StaticEvent for VersionNotifyUnrequested { @@ -38187,8 +39408,8 @@ pub mod api { } pub mod fees_paid { use super::runtime_types; - pub type Paying = runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type Fees = runtime_types::xcm::v3::multiasset::MultiAssets; + pub type Paying = runtime_types::staging_xcm::v4::location::Location; + pub type Fees = runtime_types::staging_xcm::v4::asset::Assets; } impl ::subxt::events::StaticEvent for FeesPaid { const PALLET: &'static str = "XcmPallet"; @@ -38213,8 +39434,8 @@ pub mod api { pub mod assets_claimed { use super::runtime_types; pub type Hash = ::subxt::utils::H256; - pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type Assets = runtime_types::xcm::VersionedMultiAssets; + pub type Origin = runtime_types::staging_xcm::v4::location::Location; + pub type Assets = runtime_types::xcm::VersionedAssets; } impl ::subxt::events::StaticEvent for AssetsClaimed { const PALLET: &'static str = "XcmPallet"; @@ -38248,13 +39469,13 @@ pub mod api { use super::runtime_types; pub type SupportedVersion = ::core::primitive::u32; pub type Param0 = ::core::primitive::u32; - pub type Param1 = runtime_types::xcm::VersionedMultiLocation; + pub type Param1 = runtime_types::xcm::VersionedLocation; } pub mod version_notifiers { use super::runtime_types; pub type VersionNotifiers = ::core::primitive::u64; pub type Param0 = ::core::primitive::u32; - pub type Param1 = runtime_types::xcm::VersionedMultiLocation; + pub type Param1 = runtime_types::xcm::VersionedLocation; } pub mod version_notify_targets { use super::runtime_types; @@ -38264,13 +39485,13 @@ pub mod api { ::core::primitive::u32, ); pub type Param0 = ::core::primitive::u32; - pub type Param1 = runtime_types::xcm::VersionedMultiLocation; + pub type Param1 = runtime_types::xcm::VersionedLocation; } pub mod version_discovery_queue { use super::runtime_types; pub type VersionDiscoveryQueue = runtime_types::bounded_collections::bounded_vec::BoundedVec<( - runtime_types::xcm::VersionedMultiLocation, + runtime_types::xcm::VersionedLocation, ::core::primitive::u32, )>; } @@ -38292,7 +39513,7 @@ pub mod api { pub type LockedFungibles = runtime_types::bounded_collections::bounded_vec::BoundedVec<( ::core::primitive::u128, - runtime_types::xcm::VersionedMultiLocation, + runtime_types::xcm::VersionedLocation, )>; pub type Param0 = ::subxt::utils::AccountId32; } @@ -38340,9 +39561,10 @@ pub mod api { "Queries", vec![], [ - 119u8, 5u8, 12u8, 91u8, 117u8, 240u8, 52u8, 192u8, 135u8, 139u8, 220u8, - 78u8, 207u8, 199u8, 71u8, 163u8, 100u8, 17u8, 6u8, 65u8, 200u8, 245u8, - 191u8, 82u8, 232u8, 128u8, 126u8, 70u8, 39u8, 63u8, 148u8, 219u8, + 246u8, 75u8, 240u8, 129u8, 106u8, 114u8, 99u8, 154u8, 176u8, 188u8, + 146u8, 125u8, 244u8, 103u8, 187u8, 171u8, 60u8, 119u8, 4u8, 90u8, 58u8, + 180u8, 48u8, 165u8, 145u8, 125u8, 227u8, 233u8, 11u8, 142u8, 122u8, + 3u8, ], ) } @@ -38364,15 +39586,16 @@ pub mod api { _0.borrow(), )], [ - 119u8, 5u8, 12u8, 91u8, 117u8, 240u8, 52u8, 192u8, 135u8, 139u8, 220u8, - 78u8, 207u8, 199u8, 71u8, 163u8, 100u8, 17u8, 6u8, 65u8, 200u8, 245u8, - 191u8, 82u8, 232u8, 128u8, 126u8, 70u8, 39u8, 63u8, 148u8, 219u8, + 246u8, 75u8, 240u8, 129u8, 106u8, 114u8, 99u8, 154u8, 176u8, 188u8, + 146u8, 125u8, 244u8, 103u8, 187u8, 171u8, 60u8, 119u8, 4u8, 90u8, 58u8, + 180u8, 48u8, 165u8, 145u8, 125u8, 227u8, 233u8, 11u8, 142u8, 122u8, + 3u8, ], ) } #[doc = " The existing asset traps."] #[doc = ""] - #[doc = " Key is the blake2 256 hash of (origin, versioned `MultiAssets`) pair. Value is the number of"] + #[doc = " Key is the blake2 256 hash of (origin, versioned `Assets`) pair. Value is the number of"] #[doc = " times this pair has been trapped (usually just 1 if it exists at all)."] pub fn asset_traps_iter( &self, @@ -38396,7 +39619,7 @@ pub mod api { } #[doc = " The existing asset traps."] #[doc = ""] - #[doc = " Key is the blake2 256 hash of (origin, versioned `MultiAssets`) pair. Value is the number of"] + #[doc = " Key is the blake2 256 hash of (origin, versioned `Assets`) pair. Value is the number of"] #[doc = " times this pair has been trapped (usually just 1 if it exists at all)."] pub fn asset_traps( &self, @@ -38459,9 +39682,10 @@ pub mod api { "SupportedVersion", vec![], [ - 144u8, 22u8, 91u8, 30u8, 139u8, 164u8, 95u8, 149u8, 97u8, 247u8, 12u8, - 212u8, 96u8, 16u8, 134u8, 236u8, 74u8, 57u8, 244u8, 169u8, 68u8, 63u8, - 111u8, 86u8, 65u8, 229u8, 104u8, 51u8, 44u8, 100u8, 47u8, 191u8, + 144u8, 218u8, 177u8, 254u8, 210u8, 8u8, 84u8, 149u8, 163u8, 162u8, + 238u8, 37u8, 157u8, 28u8, 140u8, 121u8, 201u8, 173u8, 204u8, 92u8, + 133u8, 45u8, 156u8, 38u8, 61u8, 51u8, 153u8, 161u8, 147u8, 146u8, + 202u8, 24u8, ], ) } @@ -38483,9 +39707,10 @@ pub mod api { _0.borrow(), )], [ - 144u8, 22u8, 91u8, 30u8, 139u8, 164u8, 95u8, 149u8, 97u8, 247u8, 12u8, - 212u8, 96u8, 16u8, 134u8, 236u8, 74u8, 57u8, 244u8, 169u8, 68u8, 63u8, - 111u8, 86u8, 65u8, 229u8, 104u8, 51u8, 44u8, 100u8, 47u8, 191u8, + 144u8, 218u8, 177u8, 254u8, 210u8, 8u8, 84u8, 149u8, 163u8, 162u8, + 238u8, 37u8, 157u8, 28u8, 140u8, 121u8, 201u8, 173u8, 204u8, 92u8, + 133u8, 45u8, 156u8, 38u8, 61u8, 51u8, 153u8, 161u8, 147u8, 146u8, + 202u8, 24u8, ], ) } @@ -38509,9 +39734,10 @@ pub mod api { ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), ], [ - 144u8, 22u8, 91u8, 30u8, 139u8, 164u8, 95u8, 149u8, 97u8, 247u8, 12u8, - 212u8, 96u8, 16u8, 134u8, 236u8, 74u8, 57u8, 244u8, 169u8, 68u8, 63u8, - 111u8, 86u8, 65u8, 229u8, 104u8, 51u8, 44u8, 100u8, 47u8, 191u8, + 144u8, 218u8, 177u8, 254u8, 210u8, 8u8, 84u8, 149u8, 163u8, 162u8, + 238u8, 37u8, 157u8, 28u8, 140u8, 121u8, 201u8, 173u8, 204u8, 92u8, + 133u8, 45u8, 156u8, 38u8, 61u8, 51u8, 153u8, 161u8, 147u8, 146u8, + 202u8, 24u8, ], ) } @@ -38530,9 +39756,10 @@ pub mod api { "VersionNotifiers", vec![], [ - 49u8, 190u8, 73u8, 67u8, 91u8, 69u8, 121u8, 206u8, 25u8, 82u8, 29u8, - 170u8, 157u8, 201u8, 168u8, 93u8, 181u8, 55u8, 226u8, 142u8, 136u8, - 46u8, 117u8, 208u8, 130u8, 90u8, 129u8, 39u8, 151u8, 92u8, 118u8, 75u8, + 175u8, 206u8, 29u8, 14u8, 111u8, 123u8, 211u8, 109u8, 159u8, 131u8, + 80u8, 149u8, 216u8, 196u8, 181u8, 105u8, 117u8, 138u8, 80u8, 69u8, + 237u8, 116u8, 195u8, 66u8, 209u8, 102u8, 42u8, 126u8, 222u8, 176u8, + 201u8, 49u8, ], ) } @@ -38554,9 +39781,10 @@ pub mod api { _0.borrow(), )], [ - 49u8, 190u8, 73u8, 67u8, 91u8, 69u8, 121u8, 206u8, 25u8, 82u8, 29u8, - 170u8, 157u8, 201u8, 168u8, 93u8, 181u8, 55u8, 226u8, 142u8, 136u8, - 46u8, 117u8, 208u8, 130u8, 90u8, 129u8, 39u8, 151u8, 92u8, 118u8, 75u8, + 175u8, 206u8, 29u8, 14u8, 111u8, 123u8, 211u8, 109u8, 159u8, 131u8, + 80u8, 149u8, 216u8, 196u8, 181u8, 105u8, 117u8, 138u8, 80u8, 69u8, + 237u8, 116u8, 195u8, 66u8, 209u8, 102u8, 42u8, 126u8, 222u8, 176u8, + 201u8, 49u8, ], ) } @@ -38580,9 +39808,10 @@ pub mod api { ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), ], [ - 49u8, 190u8, 73u8, 67u8, 91u8, 69u8, 121u8, 206u8, 25u8, 82u8, 29u8, - 170u8, 157u8, 201u8, 168u8, 93u8, 181u8, 55u8, 226u8, 142u8, 136u8, - 46u8, 117u8, 208u8, 130u8, 90u8, 129u8, 39u8, 151u8, 92u8, 118u8, 75u8, + 175u8, 206u8, 29u8, 14u8, 111u8, 123u8, 211u8, 109u8, 159u8, 131u8, + 80u8, 149u8, 216u8, 196u8, 181u8, 105u8, 117u8, 138u8, 80u8, 69u8, + 237u8, 116u8, 195u8, 66u8, 209u8, 102u8, 42u8, 126u8, 222u8, 176u8, + 201u8, 49u8, ], ) } @@ -38602,10 +39831,9 @@ pub mod api { "VersionNotifyTargets", vec![], [ - 1u8, 195u8, 40u8, 83u8, 216u8, 175u8, 241u8, 95u8, 42u8, 7u8, 85u8, - 253u8, 223u8, 241u8, 195u8, 41u8, 41u8, 21u8, 17u8, 171u8, 216u8, - 150u8, 39u8, 165u8, 215u8, 194u8, 201u8, 225u8, 179u8, 12u8, 52u8, - 173u8, + 113u8, 77u8, 150u8, 42u8, 82u8, 49u8, 195u8, 120u8, 96u8, 80u8, 152u8, + 67u8, 27u8, 142u8, 10u8, 74u8, 66u8, 134u8, 35u8, 202u8, 77u8, 187u8, + 174u8, 22u8, 207u8, 199u8, 57u8, 85u8, 53u8, 208u8, 146u8, 81u8, ], ) } @@ -38628,10 +39856,9 @@ pub mod api { _0.borrow(), )], [ - 1u8, 195u8, 40u8, 83u8, 216u8, 175u8, 241u8, 95u8, 42u8, 7u8, 85u8, - 253u8, 223u8, 241u8, 195u8, 41u8, 41u8, 21u8, 17u8, 171u8, 216u8, - 150u8, 39u8, 165u8, 215u8, 194u8, 201u8, 225u8, 179u8, 12u8, 52u8, - 173u8, + 113u8, 77u8, 150u8, 42u8, 82u8, 49u8, 195u8, 120u8, 96u8, 80u8, 152u8, + 67u8, 27u8, 142u8, 10u8, 74u8, 66u8, 134u8, 35u8, 202u8, 77u8, 187u8, + 174u8, 22u8, 207u8, 199u8, 57u8, 85u8, 53u8, 208u8, 146u8, 81u8, ], ) } @@ -38656,10 +39883,9 @@ pub mod api { ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), ], [ - 1u8, 195u8, 40u8, 83u8, 216u8, 175u8, 241u8, 95u8, 42u8, 7u8, 85u8, - 253u8, 223u8, 241u8, 195u8, 41u8, 41u8, 21u8, 17u8, 171u8, 216u8, - 150u8, 39u8, 165u8, 215u8, 194u8, 201u8, 225u8, 179u8, 12u8, 52u8, - 173u8, + 113u8, 77u8, 150u8, 42u8, 82u8, 49u8, 195u8, 120u8, 96u8, 80u8, 152u8, + 67u8, 27u8, 142u8, 10u8, 74u8, 66u8, 134u8, 35u8, 202u8, 77u8, 187u8, + 174u8, 22u8, 207u8, 199u8, 57u8, 85u8, 53u8, 208u8, 146u8, 81u8, ], ) } @@ -38680,9 +39906,10 @@ pub mod api { "VersionDiscoveryQueue", vec![], [ - 110u8, 87u8, 102u8, 193u8, 125u8, 129u8, 0u8, 221u8, 218u8, 229u8, - 101u8, 94u8, 74u8, 229u8, 246u8, 180u8, 113u8, 11u8, 15u8, 159u8, 98u8, - 90u8, 30u8, 112u8, 164u8, 236u8, 151u8, 220u8, 19u8, 83u8, 67u8, 248u8, + 95u8, 74u8, 97u8, 94u8, 40u8, 140u8, 175u8, 176u8, 224u8, 222u8, 83u8, + 199u8, 170u8, 102u8, 3u8, 77u8, 127u8, 208u8, 155u8, 122u8, 176u8, + 51u8, 15u8, 253u8, 231u8, 245u8, 91u8, 192u8, 60u8, 144u8, 101u8, + 168u8, ], ) } @@ -38722,9 +39949,10 @@ pub mod api { "RemoteLockedFungibles", vec![], [ - 74u8, 249u8, 83u8, 245u8, 44u8, 230u8, 152u8, 82u8, 4u8, 163u8, 230u8, - 121u8, 87u8, 143u8, 184u8, 12u8, 117u8, 112u8, 131u8, 160u8, 232u8, - 62u8, 175u8, 15u8, 81u8, 198u8, 182u8, 255u8, 37u8, 81u8, 6u8, 57u8, + 247u8, 124u8, 77u8, 42u8, 208u8, 183u8, 99u8, 196u8, 50u8, 113u8, + 250u8, 221u8, 222u8, 170u8, 10u8, 60u8, 143u8, 172u8, 149u8, 198u8, + 125u8, 154u8, 196u8, 196u8, 145u8, 209u8, 68u8, 28u8, 241u8, 241u8, + 201u8, 150u8, ], ) } @@ -38746,9 +39974,10 @@ pub mod api { _0.borrow(), )], [ - 74u8, 249u8, 83u8, 245u8, 44u8, 230u8, 152u8, 82u8, 4u8, 163u8, 230u8, - 121u8, 87u8, 143u8, 184u8, 12u8, 117u8, 112u8, 131u8, 160u8, 232u8, - 62u8, 175u8, 15u8, 81u8, 198u8, 182u8, 255u8, 37u8, 81u8, 6u8, 57u8, + 247u8, 124u8, 77u8, 42u8, 208u8, 183u8, 99u8, 196u8, 50u8, 113u8, + 250u8, 221u8, 222u8, 170u8, 10u8, 60u8, 143u8, 172u8, 149u8, 198u8, + 125u8, 154u8, 196u8, 196u8, 145u8, 209u8, 68u8, 28u8, 241u8, 241u8, + 201u8, 150u8, ], ) } @@ -38772,9 +40001,10 @@ pub mod api { ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), ], [ - 74u8, 249u8, 83u8, 245u8, 44u8, 230u8, 152u8, 82u8, 4u8, 163u8, 230u8, - 121u8, 87u8, 143u8, 184u8, 12u8, 117u8, 112u8, 131u8, 160u8, 232u8, - 62u8, 175u8, 15u8, 81u8, 198u8, 182u8, 255u8, 37u8, 81u8, 6u8, 57u8, + 247u8, 124u8, 77u8, 42u8, 208u8, 183u8, 99u8, 196u8, 50u8, 113u8, + 250u8, 221u8, 222u8, 170u8, 10u8, 60u8, 143u8, 172u8, 149u8, 198u8, + 125u8, 154u8, 196u8, 196u8, 145u8, 209u8, 68u8, 28u8, 241u8, 241u8, + 201u8, 150u8, ], ) } @@ -38800,9 +40030,10 @@ pub mod api { ::subxt::storage::address::make_static_storage_map_key(_2.borrow()), ], [ - 74u8, 249u8, 83u8, 245u8, 44u8, 230u8, 152u8, 82u8, 4u8, 163u8, 230u8, - 121u8, 87u8, 143u8, 184u8, 12u8, 117u8, 112u8, 131u8, 160u8, 232u8, - 62u8, 175u8, 15u8, 81u8, 198u8, 182u8, 255u8, 37u8, 81u8, 6u8, 57u8, + 247u8, 124u8, 77u8, 42u8, 208u8, 183u8, 99u8, 196u8, 50u8, 113u8, + 250u8, 221u8, 222u8, 170u8, 10u8, 60u8, 143u8, 172u8, 149u8, 198u8, + 125u8, 154u8, 196u8, 196u8, 145u8, 209u8, 68u8, 28u8, 241u8, 241u8, + 201u8, 150u8, ], ) } @@ -38821,10 +40052,9 @@ pub mod api { "LockedFungibles", vec![], [ - 110u8, 220u8, 127u8, 176u8, 219u8, 23u8, 132u8, 36u8, 224u8, 187u8, - 25u8, 103u8, 126u8, 99u8, 34u8, 105u8, 57u8, 182u8, 162u8, 69u8, 24u8, - 67u8, 221u8, 103u8, 79u8, 139u8, 187u8, 162u8, 113u8, 109u8, 163u8, - 35u8, + 254u8, 234u8, 1u8, 27u8, 27u8, 32u8, 217u8, 24u8, 47u8, 30u8, 62u8, + 80u8, 86u8, 125u8, 120u8, 24u8, 143u8, 229u8, 161u8, 153u8, 240u8, + 246u8, 80u8, 15u8, 49u8, 189u8, 20u8, 204u8, 239u8, 198u8, 97u8, 174u8, ], ) } @@ -38846,10 +40076,9 @@ pub mod api { _0.borrow(), )], [ - 110u8, 220u8, 127u8, 176u8, 219u8, 23u8, 132u8, 36u8, 224u8, 187u8, - 25u8, 103u8, 126u8, 99u8, 34u8, 105u8, 57u8, 182u8, 162u8, 69u8, 24u8, - 67u8, 221u8, 103u8, 79u8, 139u8, 187u8, 162u8, 113u8, 109u8, 163u8, - 35u8, + 254u8, 234u8, 1u8, 27u8, 27u8, 32u8, 217u8, 24u8, 47u8, 30u8, 62u8, + 80u8, 86u8, 125u8, 120u8, 24u8, 143u8, 229u8, 161u8, 153u8, 240u8, + 246u8, 80u8, 15u8, 49u8, 189u8, 20u8, 204u8, 239u8, 198u8, 97u8, 174u8, ], ) } @@ -38877,6 +40106,155 @@ pub mod api { } } } + pub mod identity_migrator { + use super::root_mod; + use super::runtime_types; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::polkadot_runtime_common::identity_migrator::pallet::Call; + pub mod calls { + use super::root_mod; + use super::runtime_types; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::reap_identity`]."] + pub struct ReapIdentity { + pub who: reap_identity::Who, + } + pub mod reap_identity { + use super::runtime_types; + pub type Who = ::subxt::utils::AccountId32; + } + impl ::subxt::blocks::StaticExtrinsic for ReapIdentity { + const PALLET: &'static str = "IdentityMigrator"; + const CALL: &'static str = "reap_identity"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::poke_deposit`]."] + pub struct PokeDeposit { + pub who: poke_deposit::Who, + } + pub mod poke_deposit { + use super::runtime_types; + pub type Who = ::subxt::utils::AccountId32; + } + impl ::subxt::blocks::StaticExtrinsic for PokeDeposit { + const PALLET: &'static str = "IdentityMigrator"; + const CALL: &'static str = "poke_deposit"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::reap_identity`]."] + pub fn reap_identity( + &self, + who: types::reap_identity::Who, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "IdentityMigrator", + "reap_identity", + types::ReapIdentity { who }, + [ + 187u8, 110u8, 202u8, 220u8, 54u8, 240u8, 242u8, 171u8, 5u8, 83u8, + 129u8, 93u8, 213u8, 208u8, 21u8, 236u8, 121u8, 128u8, 127u8, 121u8, + 153u8, 118u8, 232u8, 44u8, 20u8, 124u8, 214u8, 185u8, 249u8, 182u8, + 136u8, 96u8, + ], + ) + } + #[doc = "See [`Pallet::poke_deposit`]."] + pub fn poke_deposit( + &self, + who: types::poke_deposit::Who, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "IdentityMigrator", + "poke_deposit", + types::PokeDeposit { who }, + [ + 42u8, 67u8, 168u8, 124u8, 75u8, 32u8, 143u8, 173u8, 14u8, 28u8, 76u8, + 35u8, 196u8, 255u8, 250u8, 33u8, 128u8, 159u8, 132u8, 124u8, 51u8, + 243u8, 166u8, 55u8, 208u8, 101u8, 188u8, 133u8, 36u8, 18u8, 119u8, + 146u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::polkadot_runtime_common::identity_migrator::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The identity and all sub accounts were reaped for `who`."] + pub struct IdentityReaped { + pub who: identity_reaped::Who, + } + pub mod identity_reaped { + use super::runtime_types; + pub type Who = ::subxt::utils::AccountId32; + } + impl ::subxt::events::StaticEvent for IdentityReaped { + const PALLET: &'static str = "IdentityMigrator"; + const EVENT: &'static str = "IdentityReaped"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The deposits held for `who` were updated. `identity` is the new deposit held for"] + #[doc = "identity info, and `subs` is the new deposit held for the sub-accounts."] + pub struct DepositUpdated { + pub who: deposit_updated::Who, + pub identity: deposit_updated::Identity, + pub subs: deposit_updated::Subs, + } + pub mod deposit_updated { + use super::runtime_types; + pub type Who = ::subxt::utils::AccountId32; + pub type Identity = ::core::primitive::u128; + pub type Subs = ::core::primitive::u128; + } + impl ::subxt::events::StaticEvent for DepositUpdated { + const PALLET: &'static str = "IdentityMigrator"; + const EVENT: &'static str = "DepositUpdated"; + } + } + } pub mod paras_sudo_wrapper { use super::root_mod; use super::runtime_types; @@ -39118,10 +40496,9 @@ pub mod api { xcm: ::std::boxed::Box::new(xcm), }, [ - 144u8, 179u8, 113u8, 39u8, 46u8, 58u8, 218u8, 220u8, 98u8, 232u8, - 121u8, 119u8, 127u8, 99u8, 52u8, 189u8, 232u8, 28u8, 233u8, 54u8, - 122u8, 206u8, 155u8, 7u8, 88u8, 167u8, 203u8, 251u8, 96u8, 156u8, 23u8, - 54u8, + 35u8, 59u8, 126u8, 248u8, 211u8, 246u8, 239u8, 67u8, 252u8, 100u8, + 231u8, 46u8, 197u8, 83u8, 150u8, 54u8, 215u8, 188u8, 76u8, 193u8, 60u8, + 38u8, 251u8, 162u8, 19u8, 15u8, 214u8, 51u8, 24u8, 2u8, 9u8, 116u8, ], ) } @@ -40450,7 +41827,7 @@ pub mod api { #[doc = " - [`frame_support::storage::StorageDoubleMap`]: 96 byte"] #[doc = ""] #[doc = " For more info see"] - #[doc = " "] + #[doc = " "] pub fn max_key_len(&self) -> ::subxt::constants::Address<::core::primitive::u32> { ::subxt::constants::Address::new_static( "StateTrieMigration", @@ -40571,19 +41948,11 @@ pub mod api { const EVENT: &'static str = "DefensiveTestCall"; } } - pub mod storage { - use super::runtime_types; - pub mod types { - use super::runtime_types; - } - pub struct StorageApi; - impl StorageApi {} - } } pub mod sudo { use super::root_mod; use super::runtime_types; - #[doc = "Error for the Sudo pallet"] + #[doc = "Error for the Sudo pallet."] pub type Error = runtime_types::pallet_sudo::pallet::Error; #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_sudo::pallet::Call; @@ -40685,6 +42054,22 @@ pub mod api { const PALLET: &'static str = "Sudo"; const CALL: &'static str = "sudo_as"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::remove_key`]."] + pub struct RemoveKey; + impl ::subxt::blocks::StaticExtrinsic for RemoveKey { + const PALLET: &'static str = "Sudo"; + const CALL: &'static str = "remove_key"; + } } pub struct TransactionApi; impl TransactionApi { @@ -40697,10 +42082,10 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 230u8, 66u8, 61u8, 240u8, 132u8, 75u8, 17u8, 14u8, 12u8, 233u8, 24u8, - 192u8, 91u8, 200u8, 209u8, 133u8, 251u8, 154u8, 221u8, 95u8, 165u8, - 112u8, 49u8, 192u8, 126u8, 134u8, 46u8, 221u8, 150u8, 120u8, 178u8, - 103u8, + 126u8, 191u8, 96u8, 252u8, 103u8, 117u8, 232u8, 59u8, 13u8, 216u8, + 200u8, 186u8, 103u8, 56u8, 211u8, 188u8, 66u8, 63u8, 12u8, 200u8, + 114u8, 107u8, 46u8, 113u8, 249u8, 239u8, 130u8, 235u8, 107u8, 167u8, + 28u8, 234u8, ], ) } @@ -40718,10 +42103,9 @@ pub mod api { weight, }, [ - 39u8, 207u8, 214u8, 172u8, 135u8, 112u8, 167u8, 27u8, 210u8, 182u8, - 160u8, 163u8, 128u8, 207u8, 98u8, 136u8, 35u8, 14u8, 163u8, 243u8, - 224u8, 232u8, 254u8, 35u8, 244u8, 13u8, 212u8, 137u8, 99u8, 158u8, - 249u8, 164u8, + 115u8, 252u8, 134u8, 42u8, 167u8, 146u8, 239u8, 12u8, 141u8, 126u8, + 53u8, 7u8, 6u8, 51u8, 253u8, 87u8, 111u8, 24u8, 23u8, 167u8, 28u8, + 210u8, 65u8, 219u8, 65u8, 167u8, 41u8, 51u8, 139u8, 44u8, 132u8, 82u8, ], ) } @@ -40755,9 +42139,23 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 97u8, 37u8, 226u8, 52u8, 181u8, 51u8, 13u8, 232u8, 250u8, 246u8, 195u8, - 219u8, 186u8, 236u8, 187u8, 3u8, 246u8, 172u8, 203u8, 35u8, 30u8, - 227u8, 242u8, 134u8, 51u8, 90u8, 105u8, 119u8, 1u8, 65u8, 79u8, 36u8, + 51u8, 226u8, 36u8, 234u8, 26u8, 132u8, 248u8, 140u8, 45u8, 72u8, 176u8, + 70u8, 127u8, 173u8, 147u8, 25u8, 21u8, 188u8, 41u8, 93u8, 2u8, 214u8, + 39u8, 150u8, 155u8, 68u8, 91u8, 193u8, 73u8, 101u8, 118u8, 119u8, + ], + ) + } + #[doc = "See [`Pallet::remove_key`]."] + pub fn remove_key(&self) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Sudo", + "remove_key", + types::RemoveKey {}, + [ + 133u8, 253u8, 54u8, 175u8, 202u8, 239u8, 5u8, 198u8, 180u8, 138u8, + 25u8, 28u8, 109u8, 40u8, 30u8, 56u8, 126u8, 100u8, 52u8, 205u8, 250u8, + 191u8, 61u8, 195u8, 172u8, 142u8, 184u8, 239u8, 247u8, 10u8, 211u8, + 79u8, ], ) } @@ -40802,11 +42200,13 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "The sudo key has been updated."] pub struct KeyChanged { - pub old_sudoer: key_changed::OldSudoer, + pub old: key_changed::Old, + pub new: key_changed::New, } pub mod key_changed { use super::runtime_types; - pub type OldSudoer = ::core::option::Option<::subxt::utils::AccountId32>; + pub type Old = ::core::option::Option<::subxt::utils::AccountId32>; + pub type New = ::subxt::utils::AccountId32; } impl ::subxt::events::StaticEvent for KeyChanged { const PALLET: &'static str = "Sudo"; @@ -40822,6 +42222,22 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The key was permanently removed."] + pub struct KeyRemoved; + impl ::subxt::events::StaticEvent for KeyRemoved { + const PALLET: &'static str = "Sudo"; + const EVENT: &'static str = "KeyRemoved"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "A [sudo_as](Pallet::sudo_as) call just took place."] pub struct SudoAsDone { pub sudo_result: sudo_as_done::SudoResult, @@ -41393,6 +42809,17 @@ pub mod api { remark_with_event { remark: ::std::vec::Vec<::core::primitive::u8>, }, + #[codec(index = 9)] + #[doc = "See [`Pallet::authorize_upgrade`]."] + authorize_upgrade { code_hash: ::subxt::utils::H256 }, + #[codec(index = 10)] + #[doc = "See [`Pallet::authorize_upgrade_without_checks`]."] + authorize_upgrade_without_checks { code_hash: ::subxt::utils::H256 }, + #[codec(index = 11)] + #[doc = "See [`Pallet::apply_authorized_upgrade`]."] + apply_authorized_upgrade { + code: ::std::vec::Vec<::core::primitive::u8>, + }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -41428,6 +42855,12 @@ pub mod api { #[codec(index = 5)] #[doc = "The origin filter prevent the call to be dispatched."] CallFiltered, + #[codec(index = 6)] + #[doc = "No upgrade authorized."] + NothingAuthorized, + #[codec(index = 7)] + #[doc = "The submitted code is not authorized."] + Unauthorized, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -41471,6 +42904,12 @@ pub mod api { sender: ::subxt::utils::AccountId32, hash: ::subxt::utils::H256, }, + #[codec(index = 6)] + #[doc = "An upgrade was authorized."] + UpgradeAuthorized { + code_hash: ::subxt::utils::H256, + check_version: ::core::primitive::bool, + }, } } #[derive( @@ -41500,6 +42939,20 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CodeUpgradeAuthorization { + pub code_hash: ::subxt::utils::H256, + pub check_version: ::core::primitive::bool, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct EventRecord<_0, _1> { pub phase: runtime_types::frame_system::Phase, pub event: _0, @@ -42587,6 +44040,30 @@ pub mod api { }, } } + pub mod pallet_broker { + use super::runtime_types; + pub mod coretime_interface { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum CoreAssignment { + #[codec(index = 0)] + Idle, + #[codec(index = 1)] + Pool, + #[codec(index = 2)] + Task(::core::primitive::u32), + } + } + } pub mod pallet_child_bounties { use super::runtime_types; pub mod pallet { @@ -43347,6 +44824,54 @@ pub mod api { #[codec(index = 14)] #[doc = "See [`Pallet::quit_sub`]."] quit_sub, + #[codec(index = 15)] + #[doc = "See [`Pallet::add_username_authority`]."] + add_username_authority { + authority: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + suffix: ::std::vec::Vec<::core::primitive::u8>, + allocation: ::core::primitive::u32, + }, + #[codec(index = 16)] + #[doc = "See [`Pallet::remove_username_authority`]."] + remove_username_authority { + authority: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + }, + #[codec(index = 17)] + #[doc = "See [`Pallet::set_username_for`]."] + set_username_for { + who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + username: ::std::vec::Vec<::core::primitive::u8>, + signature: + ::core::option::Option, + }, + #[codec(index = 18)] + #[doc = "See [`Pallet::accept_username`]."] + accept_username { + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + }, + #[codec(index = 19)] + #[doc = "See [`Pallet::remove_expired_approval`]."] + remove_expired_approval { + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + }, + #[codec(index = 20)] + #[doc = "See [`Pallet::set_primary_username`]."] + set_primary_username { + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + }, + #[codec(index = 21)] + #[doc = "See [`Pallet::remove_dangling_username`]."] + remove_dangling_username { + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -43411,6 +44936,33 @@ pub mod api { #[codec(index = 16)] #[doc = "Error that occurs when there is an issue paying for judgement."] JudgementPaymentFailed, + #[codec(index = 17)] + #[doc = "The provided suffix is too long."] + InvalidSuffix, + #[codec(index = 18)] + #[doc = "The sender does not have permission to issue a username."] + NotUsernameAuthority, + #[codec(index = 19)] + #[doc = "The authority cannot allocate any more usernames."] + NoAllocation, + #[codec(index = 20)] + #[doc = "The signature on a username was not valid."] + InvalidSignature, + #[codec(index = 21)] + #[doc = "Setting this username requires a signature, but none was provided."] + RequiresSignature, + #[codec(index = 22)] + #[doc = "The username does not meet the requirements."] + InvalidUsername, + #[codec(index = 23)] + #[doc = "The username is already taken."] + UsernameTaken, + #[codec(index = 24)] + #[doc = "The requested username does not exist."] + NoUsername, + #[codec(index = 25)] + #[doc = "The username cannot be forcefully removed because it can still be accepted."] + NotExpired, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -43484,6 +45036,53 @@ pub mod api { main: ::subxt::utils::AccountId32, deposit: ::core::primitive::u128, }, + #[codec(index = 10)] + #[doc = "A username authority was added."] + AuthorityAdded { + authority: ::subxt::utils::AccountId32, + }, + #[codec(index = 11)] + #[doc = "A username authority was removed."] + AuthorityRemoved { + authority: ::subxt::utils::AccountId32, + }, + #[codec(index = 12)] + #[doc = "A username was set for `who`."] + UsernameSet { + who: ::subxt::utils::AccountId32, + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + }, + #[codec(index = 13)] + #[doc = "A username was queued, but `who` must accept it prior to `expiration`."] + UsernameQueued { + who: ::subxt::utils::AccountId32, + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + expiration: ::core::primitive::u32, + }, + #[codec(index = 14)] + #[doc = "A queued username passed its expiration without being claimed and was removed."] + PreapprovalExpired { whose: ::subxt::utils::AccountId32 }, + #[codec(index = 15)] + #[doc = "A username was set as a primary and can be looked up from `who`."] + PrimaryUsernameSet { + who: ::subxt::utils::AccountId32, + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + }, + #[codec(index = 16)] + #[doc = "A dangling username (as in, a username corresponding to an account that has removed its"] + #[doc = "identity) has been removed."] + DanglingUsernameRemoved { + who: ::subxt::utils::AccountId32, + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + }, } } pub mod types { @@ -43498,6 +45097,20 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AuthorityProperties<_0> { + pub suffix: _0, + pub allocation: ::core::primitive::u32, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum Data { #[codec(index = 0)] None, @@ -43637,121 +45250,6 @@ pub mod api { } } } - pub mod pallet_im_online { - use super::runtime_types; - pub mod pallet { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub enum Call { - #[codec(index = 0)] - #[doc = "See [`Pallet::heartbeat`]."] - heartbeat { - heartbeat: - runtime_types::pallet_im_online::Heartbeat<::core::primitive::u32>, - signature: runtime_types::pallet_im_online::sr25519::app_sr25519::Signature, - }, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The `Error` enum of this pallet."] - pub enum Error { - #[codec(index = 0)] - #[doc = "Non existent public key."] - InvalidKey, - #[codec(index = 1)] - #[doc = "Duplicated heartbeat."] - DuplicatedHeartbeat, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The `Event` enum of this pallet"] - pub enum Event { - #[codec(index = 0)] - #[doc = "A new heartbeat was received from `AuthorityId`."] - HeartbeatReceived { - authority_id: runtime_types::pallet_im_online::sr25519::app_sr25519::Public, - }, - #[codec(index = 1)] - #[doc = "At the end of the session, no offence was committed."] - AllGood, - #[codec(index = 2)] - #[doc = "At the end of the session, at least one validator was found to be offline."] - SomeOffline { - offline: ::std::vec::Vec<(::subxt::utils::AccountId32, ())>, - }, - } - } - pub mod sr25519 { - use super::runtime_types; - pub mod app_sr25519 { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Public(pub runtime_types::sp_core::sr25519::Public); - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Signature(pub runtime_types::sp_core::sr25519::Signature); - } - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Heartbeat<_0> { - pub block_number: _0, - pub session_index: ::core::primitive::u32, - pub authority_index: ::core::primitive::u32, - pub validators_len: ::core::primitive::u32, - } - } pub mod pallet_indices { use super::runtime_types; pub mod pallet { @@ -43908,6 +45406,9 @@ pub mod api { #[doc = ""] #[doc = "This can change at any time and may resolve in the future by re-trying."] QueuePaused, + #[codec(index = 8)] + #[doc = "Another call is in progress and needs to finish before this call can happen."] + RecursiveDisallowed, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -43921,7 +45422,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "The `Event` enum of this pallet"] pub enum Event { - # [codec (index = 0)] # [doc = "Message discarded due to an error in the `MessageProcessor` (usually a format error)."] ProcessingFailed { id : [:: core :: primitive :: u8 ; 32usize] , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , error : runtime_types :: frame_support :: traits :: messages :: ProcessMessageError , } , # [codec (index = 1)] # [doc = "Message is processed."] Processed { id : [:: core :: primitive :: u8 ; 32usize] , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , weight_used : runtime_types :: sp_weights :: weight_v2 :: Weight , success : :: core :: primitive :: bool , } , # [codec (index = 2)] # [doc = "Message placed in overweight queue."] OverweightEnqueued { id : [:: core :: primitive :: u8 ; 32usize] , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page_index : :: core :: primitive :: u32 , message_index : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "This page was reaped."] PageReaped { origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , index : :: core :: primitive :: u32 , } , } + # [codec (index = 0)] # [doc = "Message discarded due to an error in the `MessageProcessor` (usually a format error)."] ProcessingFailed { id : :: subxt :: utils :: H256 , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , error : runtime_types :: frame_support :: traits :: messages :: ProcessMessageError , } , # [codec (index = 1)] # [doc = "Message is processed."] Processed { id : :: subxt :: utils :: H256 , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , weight_used : runtime_types :: sp_weights :: weight_v2 :: Weight , success : :: core :: primitive :: bool , } , # [codec (index = 2)] # [doc = "Message placed in overweight queue."] OverweightEnqueued { id : [:: core :: primitive :: u8 ; 32usize] , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page_index : :: core :: primitive :: u32 , message_index : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "This page was reaped."] PageReaped { origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , index : :: core :: primitive :: u32 , } , } } #[derive( :: subxt :: ext :: codec :: Decode, @@ -46721,6 +48222,20 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum HoldReason { + #[codec(index = 0)] + SlashForMigrate, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum MigrationCompute { #[codec(index = 0)] Signed, @@ -46821,6 +48336,9 @@ pub mod api { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, call: ::std::boxed::Box, }, + #[codec(index = 4)] + #[doc = "See [`Pallet::remove_key`]."] + remove_key, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -46832,10 +48350,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Error for the Sudo pallet"] + #[doc = "Error for the Sudo pallet."] pub enum Error { #[codec(index = 0)] - #[doc = "Sender must be the Sudo account"] + #[doc = "Sender must be the Sudo account."] RequireSudo, } #[derive( @@ -46859,9 +48377,13 @@ pub mod api { #[codec(index = 1)] #[doc = "The sudo key has been updated."] KeyChanged { - old_sudoer: ::core::option::Option<::subxt::utils::AccountId32>, + old: ::core::option::Option<::subxt::utils::AccountId32>, + new: ::subxt::utils::AccountId32, }, #[codec(index = 2)] + #[doc = "The key was permanently removed."] + KeyRemoved, + #[codec(index = 3)] #[doc = "A [sudo_as](Pallet::sudo_as) call just took place."] SudoAsDone { sudo_result: @@ -47054,7 +48576,7 @@ pub mod api { >, #[codec(compact)] amount: ::core::primitive::u128, - beneficiary: ::std::boxed::Box, + beneficiary: ::std::boxed::Box, valid_from: ::core::option::Option<::core::primitive::u32>, }, #[codec(index = 6)] @@ -47185,7 +48707,7 @@ pub mod api { asset_kind: runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, amount: ::core::primitive::u128, - beneficiary: runtime_types::xcm::VersionedMultiLocation, + beneficiary: runtime_types::xcm::VersionedLocation, valid_from: ::core::primitive::u32, expire_at: ::core::primitive::u32, }, @@ -47628,23 +49150,23 @@ pub mod api { #[codec(index = 0)] #[doc = "See [`Pallet::send`]."] send { - dest: ::std::boxed::Box, + dest: ::std::boxed::Box, message: ::std::boxed::Box, }, #[codec(index = 1)] #[doc = "See [`Pallet::teleport_assets`]."] teleport_assets { - dest: ::std::boxed::Box, - beneficiary: ::std::boxed::Box, - assets: ::std::boxed::Box, + dest: ::std::boxed::Box, + beneficiary: ::std::boxed::Box, + assets: ::std::boxed::Box, fee_asset_item: ::core::primitive::u32, }, #[codec(index = 2)] #[doc = "See [`Pallet::reserve_transfer_assets`]."] reserve_transfer_assets { - dest: ::std::boxed::Box, - beneficiary: ::std::boxed::Box, - assets: ::std::boxed::Box, + dest: ::std::boxed::Box, + beneficiary: ::std::boxed::Box, + assets: ::std::boxed::Box, fee_asset_item: ::core::primitive::u32, }, #[codec(index = 3)] @@ -47656,9 +49178,8 @@ pub mod api { #[codec(index = 4)] #[doc = "See [`Pallet::force_xcm_version`]."] force_xcm_version { - location: ::std::boxed::Box< - runtime_types::staging_xcm::v3::multilocation::MultiLocation, - >, + location: + ::std::boxed::Box, version: ::core::primitive::u32, }, #[codec(index = 5)] @@ -47669,34 +49190,43 @@ pub mod api { #[codec(index = 6)] #[doc = "See [`Pallet::force_subscribe_version_notify`]."] force_subscribe_version_notify { - location: ::std::boxed::Box, + location: ::std::boxed::Box, }, #[codec(index = 7)] #[doc = "See [`Pallet::force_unsubscribe_version_notify`]."] force_unsubscribe_version_notify { - location: ::std::boxed::Box, + location: ::std::boxed::Box, }, #[codec(index = 8)] #[doc = "See [`Pallet::limited_reserve_transfer_assets`]."] limited_reserve_transfer_assets { - dest: ::std::boxed::Box, - beneficiary: ::std::boxed::Box, - assets: ::std::boxed::Box, + dest: ::std::boxed::Box, + beneficiary: ::std::boxed::Box, + assets: ::std::boxed::Box, fee_asset_item: ::core::primitive::u32, weight_limit: runtime_types::xcm::v3::WeightLimit, }, #[codec(index = 9)] #[doc = "See [`Pallet::limited_teleport_assets`]."] limited_teleport_assets { - dest: ::std::boxed::Box, - beneficiary: ::std::boxed::Box, - assets: ::std::boxed::Box, + dest: ::std::boxed::Box, + beneficiary: ::std::boxed::Box, + assets: ::std::boxed::Box, fee_asset_item: ::core::primitive::u32, weight_limit: runtime_types::xcm::v3::WeightLimit, }, #[codec(index = 10)] #[doc = "See [`Pallet::force_suspension`]."] force_suspension { suspended: ::core::primitive::bool }, + #[codec(index = 11)] + #[doc = "See [`Pallet::transfer_assets`]."] + transfer_assets { + dest: ::std::boxed::Box, + beneficiary: ::std::boxed::Box, + assets: ::std::boxed::Box, + fee_asset_item: ::core::primitive::u32, + weight_limit: runtime_types::xcm::v3::WeightLimit, + }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -47725,7 +49255,7 @@ pub mod api { #[doc = "The message's weight could not be determined."] UnweighableMessage, #[codec(index = 4)] - #[doc = "The destination `MultiLocation` provided cannot be inverted."] + #[doc = "The destination `Location` provided cannot be inverted."] DestinationNotInvertible, #[codec(index = 5)] #[doc = "The assets to be sent are empty."] @@ -47753,8 +49283,8 @@ pub mod api { #[doc = "The location is invalid since it already has a subscription from us."] AlreadySubscribed, #[codec(index = 13)] - #[doc = "Invalid asset for the operation."] - InvalidAsset, + #[doc = "Could not check-out the assets for teleportation to the destination chain."] + CannotCheckOutTeleport, #[codec(index = 14)] #[doc = "The owner does not own (all) of the asset that they wish to do the operation on."] LowBalance, @@ -47773,6 +49303,21 @@ pub mod api { #[codec(index = 19)] #[doc = "The unlock operation cannot succeed because there are still consumers of the lock."] InUse, + #[codec(index = 20)] + #[doc = "Invalid non-concrete asset."] + InvalidAssetNotConcrete, + #[codec(index = 21)] + #[doc = "Invalid asset, reserve chain could not be determined for it."] + InvalidAssetUnknownReserve, + #[codec(index = 22)] + #[doc = "Invalid asset, do not support remote asset reserves with different fees reserves."] + InvalidAssetUnsupportedReserve, + #[codec(index = 23)] + #[doc = "Too many assets with different reserve locations have been attempted for transfer."] + TooManyReserves, + #[codec(index = 24)] + #[doc = "Local XCM execution incomplete."] + LocalExecutionIncomplete, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -47789,14 +49334,14 @@ pub mod api { #[codec(index = 0)] #[doc = "Execution of an XCM message was attempted."] Attempted { - outcome: runtime_types::xcm::v3::traits::Outcome, + outcome: runtime_types::staging_xcm::v4::traits::Outcome, }, #[codec(index = 1)] #[doc = "A XCM message was sent."] Sent { - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - message: runtime_types::xcm::v3::Xcm, + origin: runtime_types::staging_xcm::v4::location::Location, + destination: runtime_types::staging_xcm::v4::location::Location, + message: runtime_types::staging_xcm::v4::Xcm, message_id: [::core::primitive::u8; 32usize], }, #[codec(index = 2)] @@ -47804,7 +49349,7 @@ pub mod api { #[doc = "matching query was never registered, it may be because it is a duplicate response, or"] #[doc = "because the query timed out."] UnexpectedResponse { - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + origin: runtime_types::staging_xcm::v4::location::Location, query_id: ::core::primitive::u64, }, #[codec(index = 3)] @@ -47812,7 +49357,7 @@ pub mod api { #[doc = "no registered notification call."] ResponseReady { query_id: ::core::primitive::u64, - response: runtime_types::xcm::v3::Response, + response: runtime_types::staging_xcm::v4::Response, }, #[codec(index = 4)] #[doc = "Query response has been received and query is removed. The registered notification has"] @@ -47855,10 +49400,10 @@ pub mod api { #[doc = "not match that expected. The query remains registered for a later, valid, response to"] #[doc = "be received and acted upon."] InvalidResponder { - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + origin: runtime_types::staging_xcm::v4::location::Location, query_id: ::core::primitive::u64, expected_location: ::core::option::Option< - runtime_types::staging_xcm::v3::multilocation::MultiLocation, + runtime_types::staging_xcm::v4::location::Location, >, }, #[codec(index = 9)] @@ -47870,7 +49415,7 @@ pub mod api { #[doc = "valid response will be dropped. Manual governance intervention is probably going to be"] #[doc = "needed."] InvalidResponderVersion { - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + origin: runtime_types::staging_xcm::v4::location::Location, query_id: ::core::primitive::u64, }, #[codec(index = 10)] @@ -47880,31 +49425,31 @@ pub mod api { #[doc = "Some assets have been placed in an asset trap."] AssetsTrapped { hash: ::subxt::utils::H256, - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - assets: runtime_types::xcm::VersionedMultiAssets, + origin: runtime_types::staging_xcm::v4::location::Location, + assets: runtime_types::xcm::VersionedAssets, }, #[codec(index = 12)] #[doc = "An XCM version change notification message has been attempted to be sent."] #[doc = ""] #[doc = "The cost of sending it (borne by the chain) is included."] VersionChangeNotified { - destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + destination: runtime_types::staging_xcm::v4::location::Location, result: ::core::primitive::u32, - cost: runtime_types::xcm::v3::multiasset::MultiAssets, + cost: runtime_types::staging_xcm::v4::asset::Assets, message_id: [::core::primitive::u8; 32usize], }, #[codec(index = 13)] #[doc = "The supported version of a location has been changed. This might be through an"] #[doc = "automatic notification or a manual intervention."] SupportedVersionChanged { - location: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + location: runtime_types::staging_xcm::v4::location::Location, version: ::core::primitive::u32, }, #[codec(index = 14)] #[doc = "A given location which had a version change subscription was dropped owing to an error"] #[doc = "sending the notification to it."] NotifyTargetSendFail { - location: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + location: runtime_types::staging_xcm::v4::location::Location, query_id: ::core::primitive::u64, error: runtime_types::xcm::v3::traits::Error, }, @@ -47912,7 +49457,7 @@ pub mod api { #[doc = "A given location which had a version change subscription was dropped owing to an error"] #[doc = "migrating the location to our new XCM format."] NotifyTargetMigrationFail { - location: runtime_types::xcm::VersionedMultiLocation, + location: runtime_types::xcm::VersionedLocation, query_id: ::core::primitive::u64, }, #[codec(index = 16)] @@ -47924,7 +49469,7 @@ pub mod api { #[doc = "valid response will be dropped. Manual governance intervention is probably going to be"] #[doc = "needed."] InvalidQuerierVersion { - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + origin: runtime_types::staging_xcm::v4::location::Location, query_id: ::core::primitive::u64, }, #[codec(index = 17)] @@ -47932,49 +49477,48 @@ pub mod api { #[doc = "not match the expected. The query remains registered for a later, valid, response to"] #[doc = "be received and acted upon."] InvalidQuerier { - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + origin: runtime_types::staging_xcm::v4::location::Location, query_id: ::core::primitive::u64, - expected_querier: - runtime_types::staging_xcm::v3::multilocation::MultiLocation, + expected_querier: runtime_types::staging_xcm::v4::location::Location, maybe_actual_querier: ::core::option::Option< - runtime_types::staging_xcm::v3::multilocation::MultiLocation, + runtime_types::staging_xcm::v4::location::Location, >, }, #[codec(index = 18)] #[doc = "A remote has requested XCM version change notification from us and we have honored it."] #[doc = "A version information message is sent to them and its cost is included."] VersionNotifyStarted { - destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - cost: runtime_types::xcm::v3::multiasset::MultiAssets, + destination: runtime_types::staging_xcm::v4::location::Location, + cost: runtime_types::staging_xcm::v4::asset::Assets, message_id: [::core::primitive::u8; 32usize], }, #[codec(index = 19)] #[doc = "We have requested that a remote chain send us XCM version change notifications."] VersionNotifyRequested { - destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - cost: runtime_types::xcm::v3::multiasset::MultiAssets, + destination: runtime_types::staging_xcm::v4::location::Location, + cost: runtime_types::staging_xcm::v4::asset::Assets, message_id: [::core::primitive::u8; 32usize], }, #[codec(index = 20)] #[doc = "We have requested that a remote chain stops sending us XCM version change"] #[doc = "notifications."] VersionNotifyUnrequested { - destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - cost: runtime_types::xcm::v3::multiasset::MultiAssets, + destination: runtime_types::staging_xcm::v4::location::Location, + cost: runtime_types::staging_xcm::v4::asset::Assets, message_id: [::core::primitive::u8; 32usize], }, #[codec(index = 21)] #[doc = "Fees were paid from a location for an operation (often for using `SendXcm`)."] FeesPaid { - paying: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - fees: runtime_types::xcm::v3::multiasset::MultiAssets, + paying: runtime_types::staging_xcm::v4::location::Location, + fees: runtime_types::staging_xcm::v4::asset::Assets, }, #[codec(index = 22)] #[doc = "Some assets have been claimed from an asset trap"] AssetsClaimed { hash: ::subxt::utils::H256, - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - assets: runtime_types::xcm::VersionedMultiAssets, + origin: runtime_types::staging_xcm::v4::location::Location, + assets: runtime_types::xcm::VersionedAssets, }, } #[derive( @@ -47989,9 +49533,9 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum Origin { #[codec(index = 0)] - Xcm(runtime_types::staging_xcm::v3::multilocation::MultiLocation), + Xcm(runtime_types::staging_xcm::v4::location::Location), #[codec(index = 1)] - Response(runtime_types::staging_xcm::v3::multilocation::MultiLocation), + Response(runtime_types::staging_xcm::v4::location::Location), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -48006,16 +49550,16 @@ pub mod api { pub enum QueryStatus<_0> { #[codec(index = 0)] Pending { - responder: runtime_types::xcm::VersionedMultiLocation, + responder: runtime_types::xcm::VersionedLocation, maybe_match_querier: - ::core::option::Option, + ::core::option::Option, maybe_notify: ::core::option::Option<(::core::primitive::u8, ::core::primitive::u8)>, timeout: _0, }, #[codec(index = 1)] VersionNotifier { - origin: runtime_types::xcm::VersionedMultiLocation, + origin: runtime_types::xcm::VersionedLocation, is_active: ::core::primitive::bool, }, #[codec(index = 2)] @@ -48036,8 +49580,8 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct RemoteLockedFungibleRecord<_0> { pub amount: ::core::primitive::u128, - pub owner: runtime_types::xcm::VersionedMultiLocation, - pub locker: runtime_types::xcm::VersionedMultiLocation, + pub owner: runtime_types::xcm::VersionedLocation, + pub locker: runtime_types::xcm::VersionedLocation, pub consumers: runtime_types::bounded_collections::bounded_vec::BoundedVec<( _0, ::core::primitive::u128, @@ -48339,12 +49883,12 @@ pub mod api { PrecheckingMaxMemory(::core::primitive::u64), #[codec(index = 5)] PvfPrepTimeout( - runtime_types::polkadot_primitives::v6::PvfPrepTimeoutKind, + runtime_types::polkadot_primitives::v6::PvfPrepKind, ::core::primitive::u64, ), #[codec(index = 6)] PvfExecTimeout( - runtime_types::polkadot_primitives::v6::PvfExecTimeoutKind, + runtime_types::polkadot_primitives::v6::PvfExecKind, ::core::primitive::u64, ), #[codec(index = 7)] @@ -48885,7 +50429,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum PvfExecTimeoutKind { + pub enum PvfExecKind { #[codec(index = 0)] Backing, #[codec(index = 1)] @@ -48901,11 +50445,11 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum PvfPrepTimeoutKind { + pub enum PvfPrepKind { #[codec(index = 0)] Precheck, #[codec(index = 1)] - Lenient, + Prepare, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -49030,6 +50574,10 @@ pub mod api { BackingValid(::subxt::utils::H256), #[codec(index = 3)] ApprovalChecking, + #[codec(index = 4)] + ApprovalCheckingMultipleCandidates( + ::std::vec::Vec, + ), } #[derive( :: subxt :: ext :: codec :: CompactAs, @@ -49060,6 +50608,23 @@ pub mod api { Explicit(runtime_types::polkadot_primitives::v6::validator_app::Signature), } } + pub mod vstaging { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ApprovalVotingParams { + pub max_approval_coalesce_count: ::core::primitive::u32, + } + } } pub mod polkadot_runtime_common { use super::runtime_types; @@ -49776,6 +51341,55 @@ pub mod api { Ending(_0), } } + pub mod identity_migrator { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::reap_identity`]."] + reap_identity { who: ::subxt::utils::AccountId32 }, + #[codec(index = 1)] + #[doc = "See [`Pallet::poke_deposit`]."] + poke_deposit { who: ::subxt::utils::AccountId32 }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "The identity and all sub accounts were reaped for `who`."] + IdentityReaped { who: ::subxt::utils::AccountId32 }, + #[codec(index = 1)] + #[doc = "The deposits held for `who` were updated. `identity` is the new deposit held for"] + #[doc = "identity info, and `subs` is the new deposit held for the sub-accounts."] + DepositUpdated { + who: ::subxt::utils::AccountId32, + identity: ::core::primitive::u128, + subs: ::core::primitive::u128, + }, + } + } + } pub mod impls { use super::runtime_types; #[derive( @@ -49794,6 +51408,11 @@ pub mod api { location: runtime_types::staging_xcm::v3::multilocation::MultiLocation, asset_id: runtime_types::xcm::v3::multiasset::AssetId, }, + #[codec(index = 4)] + V4 { + location: runtime_types::staging_xcm::v4::location::Location, + asset_id: runtime_types::staging_xcm::v4::asset::AssetId, + }, } } pub mod paras_registrar { @@ -50009,6 +51628,9 @@ pub mod api { #[codec(index = 7)] #[doc = "Cannot downgrade lease holding parachain to on-demand."] CannotDowngrade, + #[codec(index = 8)] + #[doc = "There are more cores than supported by the runtime."] + TooManyCores, } } } @@ -50102,6 +51724,125 @@ pub mod api { } pub mod polkadot_runtime_parachains { use super::runtime_types; + pub mod assigner_coretime { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + AssignmentsEmpty, + #[codec(index = 1)] + #[doc = "Assignments together exceeded 57600."] + OverScheduled, + #[codec(index = 2)] + #[doc = "Assignments together less than 57600"] + UnderScheduled, + #[codec(index = 3)] + #[doc = "assign_core is only allowed to append new assignments at the end of already existing"] + #[doc = "ones."] + DisallowedInsert, + #[codec(index = 4)] + #[doc = "Tried to insert a schedule for the same core and block number as an existing schedule"] + DuplicateInsert, + #[codec(index = 5)] + #[doc = "Tried to add an unsorted set of assignments"] + AssignmentsNotSorted, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AssignmentState { + pub ratio: + runtime_types::polkadot_runtime_parachains::assigner_coretime::PartsOf57600, + pub remaining: + runtime_types::polkadot_runtime_parachains::assigner_coretime::PartsOf57600, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CoreDescriptor < _0 > { pub queue : :: core :: option :: Option < runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: QueueDescriptor < _0 > > , pub current_work : :: core :: option :: Option < runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: WorkState < _0 > > , } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PartsOf57600(pub ::core::primitive::u16); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct QueueDescriptor<_0> { + pub first: _0, + pub last: _0, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Schedule<_0> { + pub assignments: ::std::vec::Vec<( + runtime_types::pallet_broker::coretime_interface::CoreAssignment, + runtime_types::polkadot_runtime_parachains::assigner_coretime::PartsOf57600, + )>, + pub end_hint: ::core::option::Option<_0>, + pub next_schedule: ::core::option::Option<_0>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct WorkState < _0 > { pub assignments : :: std :: vec :: Vec < (runtime_types :: pallet_broker :: coretime_interface :: CoreAssignment , runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: AssignmentState ,) > , pub end_hint : :: core :: option :: Option < _0 > , pub pos : :: core :: primitive :: u16 , pub step : runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: PartsOf57600 , } + } pub mod assigner_on_demand { use super::runtime_types; pub mod pallet { @@ -50154,10 +51895,6 @@ pub mod api { #[doc = "The current spot price is higher than the max amount specified in the `place_order`"] #[doc = "call, making it invalid."] SpotPriceHigherThanMaxAmount, - #[codec(index = 3)] - #[doc = "There are no on demand cores available. `place_order` will not add anything to the"] - #[doc = "queue."] - NoOnDemandCores, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -50198,6 +51935,19 @@ pub mod api { pub core_idx: runtime_types::polkadot_primitives::v6::CoreIndex, pub count: ::core::primitive::u32, } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct EnqueuedOrder { + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + } } pub mod configuration { use super::runtime_types; @@ -50215,7 +51965,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "See [`Pallet::set_validation_upgrade_cooldown`]."] set_validation_upgrade_cooldown { new : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "See [`Pallet::set_validation_upgrade_delay`]."] set_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 2)] # [doc = "See [`Pallet::set_code_retention_period`]."] set_code_retention_period { new : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "See [`Pallet::set_max_code_size`]."] set_max_code_size { new : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "See [`Pallet::set_max_pov_size`]."] set_max_pov_size { new : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "See [`Pallet::set_max_head_data_size`]."] set_max_head_data_size { new : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "See [`Pallet::set_on_demand_cores`]."] set_on_demand_cores { new : :: core :: primitive :: u32 , } , # [codec (index = 7)] # [doc = "See [`Pallet::set_on_demand_retries`]."] set_on_demand_retries { new : :: core :: primitive :: u32 , } , # [codec (index = 8)] # [doc = "See [`Pallet::set_group_rotation_frequency`]."] set_group_rotation_frequency { new : :: core :: primitive :: u32 , } , # [codec (index = 9)] # [doc = "See [`Pallet::set_paras_availability_period`]."] set_paras_availability_period { new : :: core :: primitive :: u32 , } , # [codec (index = 11)] # [doc = "See [`Pallet::set_scheduling_lookahead`]."] set_scheduling_lookahead { new : :: core :: primitive :: u32 , } , # [codec (index = 12)] # [doc = "See [`Pallet::set_max_validators_per_core`]."] set_max_validators_per_core { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 13)] # [doc = "See [`Pallet::set_max_validators`]."] set_max_validators { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 14)] # [doc = "See [`Pallet::set_dispute_period`]."] set_dispute_period { new : :: core :: primitive :: u32 , } , # [codec (index = 15)] # [doc = "See [`Pallet::set_dispute_post_conclusion_acceptance_period`]."] set_dispute_post_conclusion_acceptance_period { new : :: core :: primitive :: u32 , } , # [codec (index = 18)] # [doc = "See [`Pallet::set_no_show_slots`]."] set_no_show_slots { new : :: core :: primitive :: u32 , } , # [codec (index = 19)] # [doc = "See [`Pallet::set_n_delay_tranches`]."] set_n_delay_tranches { new : :: core :: primitive :: u32 , } , # [codec (index = 20)] # [doc = "See [`Pallet::set_zeroth_delay_tranche_width`]."] set_zeroth_delay_tranche_width { new : :: core :: primitive :: u32 , } , # [codec (index = 21)] # [doc = "See [`Pallet::set_needed_approvals`]."] set_needed_approvals { new : :: core :: primitive :: u32 , } , # [codec (index = 22)] # [doc = "See [`Pallet::set_relay_vrf_modulo_samples`]."] set_relay_vrf_modulo_samples { new : :: core :: primitive :: u32 , } , # [codec (index = 23)] # [doc = "See [`Pallet::set_max_upward_queue_count`]."] set_max_upward_queue_count { new : :: core :: primitive :: u32 , } , # [codec (index = 24)] # [doc = "See [`Pallet::set_max_upward_queue_size`]."] set_max_upward_queue_size { new : :: core :: primitive :: u32 , } , # [codec (index = 25)] # [doc = "See [`Pallet::set_max_downward_message_size`]."] set_max_downward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 27)] # [doc = "See [`Pallet::set_max_upward_message_size`]."] set_max_upward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 28)] # [doc = "See [`Pallet::set_max_upward_message_num_per_candidate`]."] set_max_upward_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 29)] # [doc = "See [`Pallet::set_hrmp_open_request_ttl`]."] set_hrmp_open_request_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 30)] # [doc = "See [`Pallet::set_hrmp_sender_deposit`]."] set_hrmp_sender_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 31)] # [doc = "See [`Pallet::set_hrmp_recipient_deposit`]."] set_hrmp_recipient_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 32)] # [doc = "See [`Pallet::set_hrmp_channel_max_capacity`]."] set_hrmp_channel_max_capacity { new : :: core :: primitive :: u32 , } , # [codec (index = 33)] # [doc = "See [`Pallet::set_hrmp_channel_max_total_size`]."] set_hrmp_channel_max_total_size { new : :: core :: primitive :: u32 , } , # [codec (index = 34)] # [doc = "See [`Pallet::set_hrmp_max_parachain_inbound_channels`]."] set_hrmp_max_parachain_inbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 36)] # [doc = "See [`Pallet::set_hrmp_channel_max_message_size`]."] set_hrmp_channel_max_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 37)] # [doc = "See [`Pallet::set_hrmp_max_parachain_outbound_channels`]."] set_hrmp_max_parachain_outbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 39)] # [doc = "See [`Pallet::set_hrmp_max_message_num_per_candidate`]."] set_hrmp_max_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 42)] # [doc = "See [`Pallet::set_pvf_voting_ttl`]."] set_pvf_voting_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 43)] # [doc = "See [`Pallet::set_minimum_validation_upgrade_delay`]."] set_minimum_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 44)] # [doc = "See [`Pallet::set_bypass_consistency_check`]."] set_bypass_consistency_check { new : :: core :: primitive :: bool , } , # [codec (index = 45)] # [doc = "See [`Pallet::set_async_backing_params`]."] set_async_backing_params { new : runtime_types :: polkadot_primitives :: v6 :: async_backing :: AsyncBackingParams , } , # [codec (index = 46)] # [doc = "See [`Pallet::set_executor_params`]."] set_executor_params { new : runtime_types :: polkadot_primitives :: v6 :: executor_params :: ExecutorParams , } , # [codec (index = 47)] # [doc = "See [`Pallet::set_on_demand_base_fee`]."] set_on_demand_base_fee { new : :: core :: primitive :: u128 , } , # [codec (index = 48)] # [doc = "See [`Pallet::set_on_demand_fee_variability`]."] set_on_demand_fee_variability { new : runtime_types :: sp_arithmetic :: per_things :: Perbill , } , # [codec (index = 49)] # [doc = "See [`Pallet::set_on_demand_queue_max_size`]."] set_on_demand_queue_max_size { new : :: core :: primitive :: u32 , } , # [codec (index = 50)] # [doc = "See [`Pallet::set_on_demand_target_queue_utilization`]."] set_on_demand_target_queue_utilization { new : runtime_types :: sp_arithmetic :: per_things :: Perbill , } , # [codec (index = 51)] # [doc = "See [`Pallet::set_on_demand_ttl`]."] set_on_demand_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 52)] # [doc = "See [`Pallet::set_minimum_backing_votes`]."] set_minimum_backing_votes { new : :: core :: primitive :: u32 , } , } + # [codec (index = 0)] # [doc = "See [`Pallet::set_validation_upgrade_cooldown`]."] set_validation_upgrade_cooldown { new : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "See [`Pallet::set_validation_upgrade_delay`]."] set_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 2)] # [doc = "See [`Pallet::set_code_retention_period`]."] set_code_retention_period { new : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "See [`Pallet::set_max_code_size`]."] set_max_code_size { new : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "See [`Pallet::set_max_pov_size`]."] set_max_pov_size { new : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "See [`Pallet::set_max_head_data_size`]."] set_max_head_data_size { new : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "See [`Pallet::set_coretime_cores`]."] set_coretime_cores { new : :: core :: primitive :: u32 , } , # [codec (index = 7)] # [doc = "See [`Pallet::set_on_demand_retries`]."] set_on_demand_retries { new : :: core :: primitive :: u32 , } , # [codec (index = 8)] # [doc = "See [`Pallet::set_group_rotation_frequency`]."] set_group_rotation_frequency { new : :: core :: primitive :: u32 , } , # [codec (index = 9)] # [doc = "See [`Pallet::set_paras_availability_period`]."] set_paras_availability_period { new : :: core :: primitive :: u32 , } , # [codec (index = 11)] # [doc = "See [`Pallet::set_scheduling_lookahead`]."] set_scheduling_lookahead { new : :: core :: primitive :: u32 , } , # [codec (index = 12)] # [doc = "See [`Pallet::set_max_validators_per_core`]."] set_max_validators_per_core { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 13)] # [doc = "See [`Pallet::set_max_validators`]."] set_max_validators { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 14)] # [doc = "See [`Pallet::set_dispute_period`]."] set_dispute_period { new : :: core :: primitive :: u32 , } , # [codec (index = 15)] # [doc = "See [`Pallet::set_dispute_post_conclusion_acceptance_period`]."] set_dispute_post_conclusion_acceptance_period { new : :: core :: primitive :: u32 , } , # [codec (index = 18)] # [doc = "See [`Pallet::set_no_show_slots`]."] set_no_show_slots { new : :: core :: primitive :: u32 , } , # [codec (index = 19)] # [doc = "See [`Pallet::set_n_delay_tranches`]."] set_n_delay_tranches { new : :: core :: primitive :: u32 , } , # [codec (index = 20)] # [doc = "See [`Pallet::set_zeroth_delay_tranche_width`]."] set_zeroth_delay_tranche_width { new : :: core :: primitive :: u32 , } , # [codec (index = 21)] # [doc = "See [`Pallet::set_needed_approvals`]."] set_needed_approvals { new : :: core :: primitive :: u32 , } , # [codec (index = 22)] # [doc = "See [`Pallet::set_relay_vrf_modulo_samples`]."] set_relay_vrf_modulo_samples { new : :: core :: primitive :: u32 , } , # [codec (index = 23)] # [doc = "See [`Pallet::set_max_upward_queue_count`]."] set_max_upward_queue_count { new : :: core :: primitive :: u32 , } , # [codec (index = 24)] # [doc = "See [`Pallet::set_max_upward_queue_size`]."] set_max_upward_queue_size { new : :: core :: primitive :: u32 , } , # [codec (index = 25)] # [doc = "See [`Pallet::set_max_downward_message_size`]."] set_max_downward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 27)] # [doc = "See [`Pallet::set_max_upward_message_size`]."] set_max_upward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 28)] # [doc = "See [`Pallet::set_max_upward_message_num_per_candidate`]."] set_max_upward_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 29)] # [doc = "See [`Pallet::set_hrmp_open_request_ttl`]."] set_hrmp_open_request_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 30)] # [doc = "See [`Pallet::set_hrmp_sender_deposit`]."] set_hrmp_sender_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 31)] # [doc = "See [`Pallet::set_hrmp_recipient_deposit`]."] set_hrmp_recipient_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 32)] # [doc = "See [`Pallet::set_hrmp_channel_max_capacity`]."] set_hrmp_channel_max_capacity { new : :: core :: primitive :: u32 , } , # [codec (index = 33)] # [doc = "See [`Pallet::set_hrmp_channel_max_total_size`]."] set_hrmp_channel_max_total_size { new : :: core :: primitive :: u32 , } , # [codec (index = 34)] # [doc = "See [`Pallet::set_hrmp_max_parachain_inbound_channels`]."] set_hrmp_max_parachain_inbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 36)] # [doc = "See [`Pallet::set_hrmp_channel_max_message_size`]."] set_hrmp_channel_max_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 37)] # [doc = "See [`Pallet::set_hrmp_max_parachain_outbound_channels`]."] set_hrmp_max_parachain_outbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 39)] # [doc = "See [`Pallet::set_hrmp_max_message_num_per_candidate`]."] set_hrmp_max_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 42)] # [doc = "See [`Pallet::set_pvf_voting_ttl`]."] set_pvf_voting_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 43)] # [doc = "See [`Pallet::set_minimum_validation_upgrade_delay`]."] set_minimum_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 44)] # [doc = "See [`Pallet::set_bypass_consistency_check`]."] set_bypass_consistency_check { new : :: core :: primitive :: bool , } , # [codec (index = 45)] # [doc = "See [`Pallet::set_async_backing_params`]."] set_async_backing_params { new : runtime_types :: polkadot_primitives :: v6 :: async_backing :: AsyncBackingParams , } , # [codec (index = 46)] # [doc = "See [`Pallet::set_executor_params`]."] set_executor_params { new : runtime_types :: polkadot_primitives :: v6 :: executor_params :: ExecutorParams , } , # [codec (index = 47)] # [doc = "See [`Pallet::set_on_demand_base_fee`]."] set_on_demand_base_fee { new : :: core :: primitive :: u128 , } , # [codec (index = 48)] # [doc = "See [`Pallet::set_on_demand_fee_variability`]."] set_on_demand_fee_variability { new : runtime_types :: sp_arithmetic :: per_things :: Perbill , } , # [codec (index = 49)] # [doc = "See [`Pallet::set_on_demand_queue_max_size`]."] set_on_demand_queue_max_size { new : :: core :: primitive :: u32 , } , # [codec (index = 50)] # [doc = "See [`Pallet::set_on_demand_target_queue_utilization`]."] set_on_demand_target_queue_utilization { new : runtime_types :: sp_arithmetic :: per_things :: Perbill , } , # [codec (index = 51)] # [doc = "See [`Pallet::set_on_demand_ttl`]."] set_on_demand_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 52)] # [doc = "See [`Pallet::set_minimum_backing_votes`]."] set_minimum_backing_votes { new : :: core :: primitive :: u32 , } , # [codec (index = 53)] # [doc = "See [`Pallet::set_node_feature`]."] set_node_feature { index : :: core :: primitive :: u8 , value : :: core :: primitive :: bool , } , # [codec (index = 54)] # [doc = "See [`Pallet::set_approval_voting_params`]."] set_approval_voting_params { new : runtime_types :: polkadot_primitives :: vstaging :: ApprovalVotingParams , } , } #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -50267,7 +52017,7 @@ pub mod api { pub executor_params: runtime_types::polkadot_primitives::v6::executor_params::ExecutorParams, pub code_retention_period: _0, - pub on_demand_cores: ::core::primitive::u32, + pub coretime_cores: ::core::primitive::u32, pub on_demand_retries: ::core::primitive::u32, pub on_demand_queue_max_size: ::core::primitive::u32, pub on_demand_target_queue_utilization: @@ -50291,6 +52041,68 @@ pub mod api { pub pvf_voting_ttl: ::core::primitive::u32, pub minimum_validation_upgrade_delay: _0, pub minimum_backing_votes: ::core::primitive::u32, + pub node_features: ::subxt::utils::bits::DecodedBits< + ::core::primitive::u8, + ::subxt::utils::bits::Lsb0, + >, + pub approval_voting_params: + runtime_types::polkadot_primitives::vstaging::ApprovalVotingParams, + } + } + pub mod coretime { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + # [codec (index = 1)] # [doc = "See [`Pallet::request_core_count`]."] request_core_count { count : :: core :: primitive :: u16 , } , # [codec (index = 4)] # [doc = "See [`Pallet::assign_core`]."] assign_core { core : :: core :: primitive :: u16 , begin : :: core :: primitive :: u32 , assignment : :: std :: vec :: Vec < (runtime_types :: pallet_broker :: coretime_interface :: CoreAssignment , runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: PartsOf57600 ,) > , end_hint : :: core :: option :: Option < :: core :: primitive :: u32 > , } , } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "The paraid making the call is not the coretime brokerage system parachain."] + NotBroker, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "The broker chain has asked for revenue information for a specific block."] + RevenueInfoRequested { when: ::core::primitive::u32 }, + #[codec(index = 1)] + #[doc = "A core has received a new assignment from the broker chain."] + CoreAssigned { + core: runtime_types::polkadot_primitives::v6::CoreIndex, + }, + } } } pub mod disputes { @@ -51193,6 +53005,9 @@ pub mod api { #[codec(index = 5)] #[doc = "A dispute statement was invalid."] DisputeInvalid, + #[codec(index = 6)] + #[doc = "A candidate was backed by a disabled validator"] + BackedByDisabled, } } } @@ -51210,8 +53025,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Assignment { - pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub enum Assignment { + #[codec(index = 0)] + Pool { + para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + core_index: runtime_types::polkadot_primitives::v6::CoreIndex, + }, + #[codec(index = 1)] + Bulk(runtime_types::polkadot_parachain_primitives::primitives::Id), } } pub mod pallet { @@ -51477,8 +53298,6 @@ pub mod api { Session(runtime_types::pallet_session::pallet::Call), #[codec(index = 10)] Grandpa(runtime_types::pallet_grandpa::pallet::Call), - #[codec(index = 11)] - ImOnline(runtime_types::pallet_im_online::pallet::Call), #[codec(index = 18)] Treasury(runtime_types::pallet_treasury::pallet::Call), #[codec(index = 20)] @@ -51559,8 +53378,14 @@ pub mod api { Auctions(runtime_types::polkadot_runtime_common::auctions::pallet::Call), #[codec(index = 73)] Crowdloan(runtime_types::polkadot_runtime_common::crowdloan::pallet::Call), + #[codec(index = 74)] + Coretime(runtime_types::polkadot_runtime_parachains::coretime::pallet::Call), #[codec(index = 99)] XcmPallet(runtime_types::pallet_xcm::pallet::Call), + #[codec(index = 248)] + IdentityMigrator( + runtime_types::polkadot_runtime_common::identity_migrator::pallet::Call, + ), #[codec(index = 250)] ParasSudoWrapper( runtime_types::polkadot_runtime_common::paras_sudo_wrapper::pallet::Call, @@ -51601,8 +53426,6 @@ pub mod api { Session(runtime_types::pallet_session::pallet::Error), #[codec(index = 10)] Grandpa(runtime_types::pallet_grandpa::pallet::Error), - #[codec(index = 11)] - ImOnline(runtime_types::pallet_im_online::pallet::Error), #[codec(index = 18)] Treasury(runtime_types::pallet_treasury::pallet::Error), #[codec(index = 20)] @@ -51671,6 +53494,10 @@ pub mod api { OnDemandAssignmentProvider( runtime_types::polkadot_runtime_parachains::assigner_on_demand::pallet::Error, ), + #[codec(index = 68)] + CoretimeAssignmentProvider( + runtime_types::polkadot_runtime_parachains::assigner_coretime::pallet::Error, + ), #[codec(index = 70)] Registrar(runtime_types::polkadot_runtime_common::paras_registrar::pallet::Error), #[codec(index = 71)] @@ -51679,6 +53506,8 @@ pub mod api { Auctions(runtime_types::polkadot_runtime_common::auctions::pallet::Error), #[codec(index = 73)] Crowdloan(runtime_types::polkadot_runtime_common::crowdloan::pallet::Error), + #[codec(index = 74)] + Coretime(runtime_types::polkadot_runtime_parachains::coretime::pallet::Error), #[codec(index = 99)] XcmPallet(runtime_types::pallet_xcm::pallet::Error), #[codec(index = 250)] @@ -51719,8 +53548,6 @@ pub mod api { Session(runtime_types::pallet_session::pallet::Event), #[codec(index = 10)] Grandpa(runtime_types::pallet_grandpa::pallet::Event), - #[codec(index = 11)] - ImOnline(runtime_types::pallet_im_online::pallet::Event), #[codec(index = 18)] Treasury(runtime_types::pallet_treasury::pallet::Event), #[codec(index = 20)] @@ -51785,8 +53612,14 @@ pub mod api { Auctions(runtime_types::polkadot_runtime_common::auctions::pallet::Event), #[codec(index = 73)] Crowdloan(runtime_types::polkadot_runtime_common::crowdloan::pallet::Event), + #[codec(index = 74)] + Coretime(runtime_types::polkadot_runtime_parachains::coretime::pallet::Event), #[codec(index = 99)] XcmPallet(runtime_types::pallet_xcm::pallet::Event), + #[codec(index = 248)] + IdentityMigrator( + runtime_types::polkadot_runtime_common::identity_migrator::pallet::Event, + ), #[codec(index = 251)] AssignedSlots( runtime_types::polkadot_runtime_common::assigned_slots::pallet::Event, @@ -51815,6 +53648,8 @@ pub mod api { Preimage(runtime_types::pallet_preimage::pallet::HoldReason), #[codec(index = 38)] Nis(runtime_types::pallet_nis::pallet::HoldReason), + #[codec(index = 254)] + StateTrieMigration(runtime_types::pallet_state_trie_migration::pallet::HoldReason), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -51829,7 +53664,6 @@ pub mod api { pub struct SessionKeys { pub grandpa: runtime_types::sp_consensus_grandpa::app::Public, pub babe: runtime_types::sp_consensus_babe::app::Public, - pub im_online: runtime_types::pallet_im_online::sr25519::app_sr25519::Public, pub para_validator: runtime_types::polkadot_primitives::v6::validator_app::Public, pub para_assignment: runtime_types::polkadot_primitives::v6::assignment_app::Public, pub authority_discovery: runtime_types::sp_authority_discovery::app::Public, @@ -52455,7 +54289,7 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct VrfSignature { - pub output: [::core::primitive::u8; 32usize], + pub pre_output: [::core::primitive::u8; 32usize], pub proof: [::core::primitive::u8; 64usize], } } @@ -53611,6 +55445,858 @@ pub mod api { } } } + pub mod v4 { + use super::runtime_types; + pub mod asset { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Asset { + pub id: runtime_types::staging_xcm::v4::asset::AssetId, + pub fun: runtime_types::staging_xcm::v4::asset::Fungibility, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum AssetFilter { + #[codec(index = 0)] + Definite(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 1)] + Wild(runtime_types::staging_xcm::v4::asset::WildAsset), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AssetId(pub runtime_types::staging_xcm::v4::location::Location); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum AssetInstance { + #[codec(index = 0)] + Undefined, + #[codec(index = 1)] + Index(#[codec(compact)] ::core::primitive::u128), + #[codec(index = 2)] + Array4([::core::primitive::u8; 4usize]), + #[codec(index = 3)] + Array8([::core::primitive::u8; 8usize]), + #[codec(index = 4)] + Array16([::core::primitive::u8; 16usize]), + #[codec(index = 5)] + Array32([::core::primitive::u8; 32usize]), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Assets( + pub ::std::vec::Vec, + ); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Fungibility { + #[codec(index = 0)] + Fungible(#[codec(compact)] ::core::primitive::u128), + #[codec(index = 1)] + NonFungible(runtime_types::staging_xcm::v4::asset::AssetInstance), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum WildAsset { + #[codec(index = 0)] + All, + #[codec(index = 1)] + AllOf { + id: runtime_types::staging_xcm::v4::asset::AssetId, + fun: runtime_types::staging_xcm::v4::asset::WildFungibility, + }, + #[codec(index = 2)] + AllCounted(#[codec(compact)] ::core::primitive::u32), + #[codec(index = 3)] + AllOfCounted { + id: runtime_types::staging_xcm::v4::asset::AssetId, + fun: runtime_types::staging_xcm::v4::asset::WildFungibility, + #[codec(compact)] + count: ::core::primitive::u32, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum WildFungibility { + #[codec(index = 0)] + Fungible, + #[codec(index = 1)] + NonFungible, + } + } + pub mod junction { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Junction { + #[codec(index = 0)] + Parachain(#[codec(compact)] ::core::primitive::u32), + #[codec(index = 1)] + AccountId32 { + network: ::core::option::Option< + runtime_types::staging_xcm::v4::junction::NetworkId, + >, + id: [::core::primitive::u8; 32usize], + }, + #[codec(index = 2)] + AccountIndex64 { + network: ::core::option::Option< + runtime_types::staging_xcm::v4::junction::NetworkId, + >, + #[codec(compact)] + index: ::core::primitive::u64, + }, + #[codec(index = 3)] + AccountKey20 { + network: ::core::option::Option< + runtime_types::staging_xcm::v4::junction::NetworkId, + >, + key: [::core::primitive::u8; 20usize], + }, + #[codec(index = 4)] + PalletInstance(::core::primitive::u8), + #[codec(index = 5)] + GeneralIndex(#[codec(compact)] ::core::primitive::u128), + #[codec(index = 6)] + GeneralKey { + length: ::core::primitive::u8, + data: [::core::primitive::u8; 32usize], + }, + #[codec(index = 7)] + OnlyChild, + #[codec(index = 8)] + Plurality { + id: runtime_types::xcm::v3::junction::BodyId, + part: runtime_types::xcm::v3::junction::BodyPart, + }, + #[codec(index = 9)] + GlobalConsensus(runtime_types::staging_xcm::v4::junction::NetworkId), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum NetworkId { + #[codec(index = 0)] + ByGenesis([::core::primitive::u8; 32usize]), + #[codec(index = 1)] + ByFork { + block_number: ::core::primitive::u64, + block_hash: [::core::primitive::u8; 32usize], + }, + #[codec(index = 2)] + Polkadot, + #[codec(index = 3)] + Kusama, + #[codec(index = 4)] + Westend, + #[codec(index = 5)] + Rococo, + #[codec(index = 6)] + Wococo, + #[codec(index = 7)] + Ethereum { + #[codec(compact)] + chain_id: ::core::primitive::u64, + }, + #[codec(index = 8)] + BitcoinCore, + #[codec(index = 9)] + BitcoinCash, + #[codec(index = 10)] + PolkadotBulletin, + } + } + pub mod junctions { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Junctions { + #[codec(index = 0)] + Here, + #[codec(index = 1)] + X1([runtime_types::staging_xcm::v4::junction::Junction; 1usize]), + #[codec(index = 2)] + X2([runtime_types::staging_xcm::v4::junction::Junction; 2usize]), + #[codec(index = 3)] + X3([runtime_types::staging_xcm::v4::junction::Junction; 3usize]), + #[codec(index = 4)] + X4([runtime_types::staging_xcm::v4::junction::Junction; 4usize]), + #[codec(index = 5)] + X5([runtime_types::staging_xcm::v4::junction::Junction; 5usize]), + #[codec(index = 6)] + X6([runtime_types::staging_xcm::v4::junction::Junction; 6usize]), + #[codec(index = 7)] + X7([runtime_types::staging_xcm::v4::junction::Junction; 7usize]), + #[codec(index = 8)] + X8([runtime_types::staging_xcm::v4::junction::Junction; 8usize]), + } + } + pub mod location { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Location { + pub parents: ::core::primitive::u8, + pub interior: runtime_types::staging_xcm::v4::junctions::Junctions, + } + } + pub mod traits { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Outcome { + #[codec(index = 0)] + Complete { + used: runtime_types::sp_weights::weight_v2::Weight, + }, + #[codec(index = 1)] + Incomplete { + used: runtime_types::sp_weights::weight_v2::Weight, + error: runtime_types::xcm::v3::traits::Error, + }, + #[codec(index = 2)] + Error { + error: runtime_types::xcm::v3::traits::Error, + }, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Instruction { + #[codec(index = 0)] + WithdrawAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 1)] + ReserveAssetDeposited(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 2)] + ReceiveTeleportedAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 3)] + QueryResponse { + #[codec(compact)] + query_id: ::core::primitive::u64, + response: runtime_types::staging_xcm::v4::Response, + max_weight: runtime_types::sp_weights::weight_v2::Weight, + querier: ::core::option::Option< + runtime_types::staging_xcm::v4::location::Location, + >, + }, + #[codec(index = 4)] + TransferAsset { + assets: runtime_types::staging_xcm::v4::asset::Assets, + beneficiary: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 5)] + TransferReserveAsset { + assets: runtime_types::staging_xcm::v4::asset::Assets, + dest: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 6)] + Transact { + origin_kind: runtime_types::xcm::v2::OriginKind, + require_weight_at_most: runtime_types::sp_weights::weight_v2::Weight, + call: runtime_types::xcm::double_encoded::DoubleEncoded, + }, + #[codec(index = 7)] + HrmpNewChannelOpenRequest { + #[codec(compact)] + sender: ::core::primitive::u32, + #[codec(compact)] + max_message_size: ::core::primitive::u32, + #[codec(compact)] + max_capacity: ::core::primitive::u32, + }, + #[codec(index = 8)] + HrmpChannelAccepted { + #[codec(compact)] + recipient: ::core::primitive::u32, + }, + #[codec(index = 9)] + HrmpChannelClosing { + #[codec(compact)] + initiator: ::core::primitive::u32, + #[codec(compact)] + sender: ::core::primitive::u32, + #[codec(compact)] + recipient: ::core::primitive::u32, + }, + #[codec(index = 10)] + ClearOrigin, + #[codec(index = 11)] + DescendOrigin(runtime_types::staging_xcm::v4::junctions::Junctions), + #[codec(index = 12)] + ReportError(runtime_types::staging_xcm::v4::QueryResponseInfo), + #[codec(index = 13)] + DepositAsset { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + beneficiary: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 14)] + DepositReserveAsset { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + dest: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 15)] + ExchangeAsset { + give: runtime_types::staging_xcm::v4::asset::AssetFilter, + want: runtime_types::staging_xcm::v4::asset::Assets, + maximal: ::core::primitive::bool, + }, + #[codec(index = 16)] + InitiateReserveWithdraw { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + reserve: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 17)] + InitiateTeleport { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + dest: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 18)] + ReportHolding { + response_info: runtime_types::staging_xcm::v4::QueryResponseInfo, + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + }, + #[codec(index = 19)] + BuyExecution { + fees: runtime_types::staging_xcm::v4::asset::Asset, + weight_limit: runtime_types::xcm::v3::WeightLimit, + }, + #[codec(index = 20)] + RefundSurplus, + #[codec(index = 21)] + SetErrorHandler(runtime_types::staging_xcm::v4::Xcm), + #[codec(index = 22)] + SetAppendix(runtime_types::staging_xcm::v4::Xcm), + #[codec(index = 23)] + ClearError, + #[codec(index = 24)] + ClaimAsset { + assets: runtime_types::staging_xcm::v4::asset::Assets, + ticket: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 25)] + Trap(#[codec(compact)] ::core::primitive::u64), + #[codec(index = 26)] + SubscribeVersion { + #[codec(compact)] + query_id: ::core::primitive::u64, + max_response_weight: runtime_types::sp_weights::weight_v2::Weight, + }, + #[codec(index = 27)] + UnsubscribeVersion, + #[codec(index = 28)] + BurnAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 29)] + ExpectAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 30)] + ExpectOrigin( + ::core::option::Option, + ), + #[codec(index = 31)] + ExpectError( + ::core::option::Option<( + ::core::primitive::u32, + runtime_types::xcm::v3::traits::Error, + )>, + ), + #[codec(index = 32)] + ExpectTransactStatus(runtime_types::xcm::v3::MaybeErrorCode), + #[codec(index = 33)] + QueryPallet { + module_name: ::std::vec::Vec<::core::primitive::u8>, + response_info: runtime_types::staging_xcm::v4::QueryResponseInfo, + }, + #[codec(index = 34)] + ExpectPallet { + #[codec(compact)] + index: ::core::primitive::u32, + name: ::std::vec::Vec<::core::primitive::u8>, + module_name: ::std::vec::Vec<::core::primitive::u8>, + #[codec(compact)] + crate_major: ::core::primitive::u32, + #[codec(compact)] + min_crate_minor: ::core::primitive::u32, + }, + #[codec(index = 35)] + ReportTransactStatus(runtime_types::staging_xcm::v4::QueryResponseInfo), + #[codec(index = 36)] + ClearTransactStatus, + #[codec(index = 37)] + UniversalOrigin(runtime_types::staging_xcm::v4::junction::Junction), + #[codec(index = 38)] + ExportMessage { + network: runtime_types::staging_xcm::v4::junction::NetworkId, + destination: runtime_types::staging_xcm::v4::junctions::Junctions, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 39)] + LockAsset { + asset: runtime_types::staging_xcm::v4::asset::Asset, + unlocker: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 40)] + UnlockAsset { + asset: runtime_types::staging_xcm::v4::asset::Asset, + target: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 41)] + NoteUnlockable { + asset: runtime_types::staging_xcm::v4::asset::Asset, + owner: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 42)] + RequestUnlock { + asset: runtime_types::staging_xcm::v4::asset::Asset, + locker: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 43)] + SetFeesMode { + jit_withdraw: ::core::primitive::bool, + }, + #[codec(index = 44)] + SetTopic([::core::primitive::u8; 32usize]), + #[codec(index = 45)] + ClearTopic, + #[codec(index = 46)] + AliasOrigin(runtime_types::staging_xcm::v4::location::Location), + #[codec(index = 47)] + UnpaidExecution { + weight_limit: runtime_types::xcm::v3::WeightLimit, + check_origin: ::core::option::Option< + runtime_types::staging_xcm::v4::location::Location, + >, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Instruction2 { + #[codec(index = 0)] + WithdrawAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 1)] + ReserveAssetDeposited(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 2)] + ReceiveTeleportedAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 3)] + QueryResponse { + #[codec(compact)] + query_id: ::core::primitive::u64, + response: runtime_types::staging_xcm::v4::Response, + max_weight: runtime_types::sp_weights::weight_v2::Weight, + querier: ::core::option::Option< + runtime_types::staging_xcm::v4::location::Location, + >, + }, + #[codec(index = 4)] + TransferAsset { + assets: runtime_types::staging_xcm::v4::asset::Assets, + beneficiary: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 5)] + TransferReserveAsset { + assets: runtime_types::staging_xcm::v4::asset::Assets, + dest: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 6)] + Transact { + origin_kind: runtime_types::xcm::v2::OriginKind, + require_weight_at_most: runtime_types::sp_weights::weight_v2::Weight, + call: runtime_types::xcm::double_encoded::DoubleEncoded2, + }, + #[codec(index = 7)] + HrmpNewChannelOpenRequest { + #[codec(compact)] + sender: ::core::primitive::u32, + #[codec(compact)] + max_message_size: ::core::primitive::u32, + #[codec(compact)] + max_capacity: ::core::primitive::u32, + }, + #[codec(index = 8)] + HrmpChannelAccepted { + #[codec(compact)] + recipient: ::core::primitive::u32, + }, + #[codec(index = 9)] + HrmpChannelClosing { + #[codec(compact)] + initiator: ::core::primitive::u32, + #[codec(compact)] + sender: ::core::primitive::u32, + #[codec(compact)] + recipient: ::core::primitive::u32, + }, + #[codec(index = 10)] + ClearOrigin, + #[codec(index = 11)] + DescendOrigin(runtime_types::staging_xcm::v4::junctions::Junctions), + #[codec(index = 12)] + ReportError(runtime_types::staging_xcm::v4::QueryResponseInfo), + #[codec(index = 13)] + DepositAsset { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + beneficiary: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 14)] + DepositReserveAsset { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + dest: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 15)] + ExchangeAsset { + give: runtime_types::staging_xcm::v4::asset::AssetFilter, + want: runtime_types::staging_xcm::v4::asset::Assets, + maximal: ::core::primitive::bool, + }, + #[codec(index = 16)] + InitiateReserveWithdraw { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + reserve: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 17)] + InitiateTeleport { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + dest: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 18)] + ReportHolding { + response_info: runtime_types::staging_xcm::v4::QueryResponseInfo, + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + }, + #[codec(index = 19)] + BuyExecution { + fees: runtime_types::staging_xcm::v4::asset::Asset, + weight_limit: runtime_types::xcm::v3::WeightLimit, + }, + #[codec(index = 20)] + RefundSurplus, + #[codec(index = 21)] + SetErrorHandler(runtime_types::staging_xcm::v4::Xcm2), + #[codec(index = 22)] + SetAppendix(runtime_types::staging_xcm::v4::Xcm2), + #[codec(index = 23)] + ClearError, + #[codec(index = 24)] + ClaimAsset { + assets: runtime_types::staging_xcm::v4::asset::Assets, + ticket: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 25)] + Trap(#[codec(compact)] ::core::primitive::u64), + #[codec(index = 26)] + SubscribeVersion { + #[codec(compact)] + query_id: ::core::primitive::u64, + max_response_weight: runtime_types::sp_weights::weight_v2::Weight, + }, + #[codec(index = 27)] + UnsubscribeVersion, + #[codec(index = 28)] + BurnAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 29)] + ExpectAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 30)] + ExpectOrigin( + ::core::option::Option, + ), + #[codec(index = 31)] + ExpectError( + ::core::option::Option<( + ::core::primitive::u32, + runtime_types::xcm::v3::traits::Error, + )>, + ), + #[codec(index = 32)] + ExpectTransactStatus(runtime_types::xcm::v3::MaybeErrorCode), + #[codec(index = 33)] + QueryPallet { + module_name: ::std::vec::Vec<::core::primitive::u8>, + response_info: runtime_types::staging_xcm::v4::QueryResponseInfo, + }, + #[codec(index = 34)] + ExpectPallet { + #[codec(compact)] + index: ::core::primitive::u32, + name: ::std::vec::Vec<::core::primitive::u8>, + module_name: ::std::vec::Vec<::core::primitive::u8>, + #[codec(compact)] + crate_major: ::core::primitive::u32, + #[codec(compact)] + min_crate_minor: ::core::primitive::u32, + }, + #[codec(index = 35)] + ReportTransactStatus(runtime_types::staging_xcm::v4::QueryResponseInfo), + #[codec(index = 36)] + ClearTransactStatus, + #[codec(index = 37)] + UniversalOrigin(runtime_types::staging_xcm::v4::junction::Junction), + #[codec(index = 38)] + ExportMessage { + network: runtime_types::staging_xcm::v4::junction::NetworkId, + destination: runtime_types::staging_xcm::v4::junctions::Junctions, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 39)] + LockAsset { + asset: runtime_types::staging_xcm::v4::asset::Asset, + unlocker: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 40)] + UnlockAsset { + asset: runtime_types::staging_xcm::v4::asset::Asset, + target: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 41)] + NoteUnlockable { + asset: runtime_types::staging_xcm::v4::asset::Asset, + owner: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 42)] + RequestUnlock { + asset: runtime_types::staging_xcm::v4::asset::Asset, + locker: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 43)] + SetFeesMode { + jit_withdraw: ::core::primitive::bool, + }, + #[codec(index = 44)] + SetTopic([::core::primitive::u8; 32usize]), + #[codec(index = 45)] + ClearTopic, + #[codec(index = 46)] + AliasOrigin(runtime_types::staging_xcm::v4::location::Location), + #[codec(index = 47)] + UnpaidExecution { + weight_limit: runtime_types::xcm::v3::WeightLimit, + check_origin: ::core::option::Option< + runtime_types::staging_xcm::v4::location::Location, + >, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PalletInfo { + #[codec(compact)] + pub index: ::core::primitive::u32, + pub name: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + pub module_name: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + #[codec(compact)] + pub major: ::core::primitive::u32, + #[codec(compact)] + pub minor: ::core::primitive::u32, + #[codec(compact)] + pub patch: ::core::primitive::u32, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct QueryResponseInfo { + pub destination: runtime_types::staging_xcm::v4::location::Location, + #[codec(compact)] + pub query_id: ::core::primitive::u64, + pub max_weight: runtime_types::sp_weights::weight_v2::Weight, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Response { + #[codec(index = 0)] + Null, + #[codec(index = 1)] + Assets(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 2)] + ExecutionResult( + ::core::option::Option<( + ::core::primitive::u32, + runtime_types::xcm::v3::traits::Error, + )>, + ), + #[codec(index = 3)] + Version(::core::primitive::u32), + #[codec(index = 4)] + PalletsInfo( + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::staging_xcm::v4::PalletInfo, + >, + ), + #[codec(index = 5)] + DispatchResult(runtime_types::xcm::v3::MaybeErrorCode), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Xcm(pub ::std::vec::Vec); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Xcm2(pub ::std::vec::Vec); + } } pub mod xcm { use super::runtime_types; @@ -54636,6 +57322,8 @@ pub mod api { BitcoinCore, #[codec(index = 9)] BitcoinCash, + #[codec(index = 10)] + PolkadotBulletin, } } pub mod junctions { @@ -54953,27 +57641,6 @@ pub mod api { #[codec(index = 39)] ExceedsStackLimit, } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum Outcome { - #[codec(index = 0)] - Complete(runtime_types::sp_weights::weight_v2::Weight), - #[codec(index = 1)] - Incomplete( - runtime_types::sp_weights::weight_v2::Weight, - runtime_types::xcm::v3::traits::Error, - ), - #[codec(index = 2)] - Error(runtime_types::xcm::v3::traits::Error), - } } #[derive( :: subxt :: ext :: codec :: Decode, @@ -55568,6 +58235,8 @@ pub mod api { pub enum VersionedAssetId { #[codec(index = 3)] V3(runtime_types::xcm::v3::multiasset::AssetId), + #[codec(index = 4)] + V4(runtime_types::staging_xcm::v4::asset::AssetId), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -55579,11 +58248,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum VersionedMultiAssets { + pub enum VersionedAssets { #[codec(index = 1)] V2(runtime_types::xcm::v2::multiasset::MultiAssets), #[codec(index = 3)] V3(runtime_types::xcm::v3::multiasset::MultiAssets), + #[codec(index = 4)] + V4(runtime_types::staging_xcm::v4::asset::Assets), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -55595,11 +58266,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum VersionedMultiLocation { + pub enum VersionedLocation { #[codec(index = 1)] V2(runtime_types::xcm::v2::multilocation::MultiLocation), #[codec(index = 3)] V3(runtime_types::staging_xcm::v3::multilocation::MultiLocation), + #[codec(index = 4)] + V4(runtime_types::staging_xcm::v4::location::Location), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -55616,6 +58289,8 @@ pub mod api { V2(runtime_types::xcm::v2::Response), #[codec(index = 3)] V3(runtime_types::xcm::v3::Response), + #[codec(index = 4)] + V4(runtime_types::staging_xcm::v4::Response), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -55632,6 +58307,8 @@ pub mod api { V2(runtime_types::xcm::v2::Xcm), #[codec(index = 3)] V3(runtime_types::xcm::v3::Xcm), + #[codec(index = 4)] + V4(runtime_types::staging_xcm::v4::Xcm), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -55648,6 +58325,8 @@ pub mod api { V2(runtime_types::xcm::v2::Xcm2), #[codec(index = 3)] V3(runtime_types::xcm::v3::Xcm2), + #[codec(index = 4)] + V4(runtime_types::staging_xcm::v4::Xcm2), } } } diff --git a/testing/substrate-runner/src/lib.rs b/testing/substrate-runner/src/lib.rs index 2b0434872a..15d390b793 100644 --- a/testing/substrate-runner/src/lib.rs +++ b/testing/substrate-runner/src/lib.rs @@ -21,7 +21,7 @@ pub struct SubstrateNodeBuilder { impl Default for SubstrateNodeBuilder { fn default() -> Self { - Self::new() + SubstrateNodeBuilder::new() } } @@ -29,11 +29,23 @@ impl SubstrateNodeBuilder { /// Configure a new Substrate node. pub fn new() -> Self { SubstrateNodeBuilder { - binary_paths: vec!["substrate-node".into(), "substrate".into()], + binary_paths: vec![], custom_flags: Default::default(), } } + /// Provide "substrate-node" and "substrate" as binary paths + pub fn substrate(&mut self) -> &mut Self { + self.binary_paths = vec!["substrate-node".into(), "substrate".into()]; + self + } + + /// Provide "polkadot" as binary path. + pub fn polkadot(&mut self) -> &mut Self { + self.binary_paths = vec!["polkadot".into()]; + self + } + /// Set the path to the `substrate` binary; defaults to "substrate-node" /// or "substrate". pub fn binary_paths(&mut self, paths: Paths) -> &mut Self From 63a02a9e3fc83679d08ef1a2c33dd9b77e67c1aa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 09:45:51 +0100 Subject: [PATCH 03/66] build(deps): bump andymckay/cancel-action from 0.3 to 0.4 (#1417) Bumps [andymckay/cancel-action](https://github.com/andymckay/cancel-action) from 0.3 to 0.4. - [Release notes](https://github.com/andymckay/cancel-action/releases) - [Commits](https://github.com/andymckay/cancel-action/compare/b9280e3f8986d7a8e91c7462efc0fa318010c8b1...271cfbfa11ca9222f7be99a47e8f929574549e0a) --- updated-dependencies: - dependency-name: andymckay/cancel-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/rust.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 1ae0289609..661c2b7778 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -47,7 +47,7 @@ jobs: args: --all -- --check - if: "failure()" - uses: "andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1" # v0.3 + uses: "andymckay/cancel-action@271cfbfa11ca9222f7be99a47e8f929574549e0a" # v0.4 machete: name: "Check unused dependencies" @@ -78,7 +78,7 @@ jobs: command: machete - if: "failure()" - uses: "andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1" # v0.3 + uses: "andymckay/cancel-action@271cfbfa11ca9222f7be99a47e8f929574549e0a" # v0.4 clippy: name: Cargo clippy @@ -110,7 +110,7 @@ jobs: cargo clippy -p subxt --no-default-features --features web,unstable-light-client -- -D warnings - if: "failure()" - uses: "andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1" # v0.3 + uses: "andymckay/cancel-action@271cfbfa11ca9222f7be99a47e8f929574549e0a" # v0.4 wasm_clippy: name: Cargo clippy (WASM) @@ -141,7 +141,7 @@ jobs: args: -p subxt --no-default-features --features web,unstable-light-client,jsonrpsee --target wasm32-unknown-unknown -- -D warnings - if: "failure()" - uses: "andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1" # v0.3 + uses: "andymckay/cancel-action@271cfbfa11ca9222f7be99a47e8f929574549e0a" # v0.4 check: name: Cargo check @@ -203,7 +203,7 @@ jobs: run: cargo check --manifest-path examples/parachain-example/Cargo.toml - if: "failure()" - uses: "andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1" # v0.3 + uses: "andymckay/cancel-action@271cfbfa11ca9222f7be99a47e8f929574549e0a" # v0.4 wasm_check: name: Cargo check (WASM) @@ -230,7 +230,7 @@ jobs: cargo check --manifest-path examples/wasm-example/Cargo.toml --target wasm32-unknown-unknown - if: "failure()" - uses: "andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1" # v0.3 + uses: "andymckay/cancel-action@271cfbfa11ca9222f7be99a47e8f929574549e0a" # v0.4 docs: name: Check documentation and run doc tests @@ -263,7 +263,7 @@ jobs: args: --doc - if: "failure()" - uses: "andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1" # v0.3 + uses: "andymckay/cancel-action@271cfbfa11ca9222f7be99a47e8f929574549e0a" # v0.4 tests: name: "Test (Native)" @@ -297,7 +297,7 @@ jobs: args: run --workspace - if: "failure()" - uses: "andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1" # v0.3 + uses: "andymckay/cancel-action@271cfbfa11ca9222f7be99a47e8f929574549e0a" # v0.4 unstable_backend_tests: name: "Test (Unstable Backend)" @@ -331,7 +331,7 @@ jobs: args: run --workspace --features unstable-backend-client - if: "failure()" - uses: "andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1" # v0.3 + uses: "andymckay/cancel-action@271cfbfa11ca9222f7be99a47e8f929574549e0a" # v0.4 light_client_tests: name: "Test (Light Client)" @@ -362,7 +362,7 @@ jobs: args: --release --package integration-tests --features unstable-light-client - if: "failure()" - uses: "andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1" # v0.3 + uses: "andymckay/cancel-action@271cfbfa11ca9222f7be99a47e8f929574549e0a" # v0.4 wasm_tests: name: Test (WASM) @@ -418,4 +418,4 @@ jobs: working-directory: signer/wasm-tests - if: "failure()" - uses: "andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1" # v0.3 + uses: "andymckay/cancel-action@271cfbfa11ca9222f7be99a47e8f929574549e0a" # v0.4 From f87570b4c2f9d5d3def6d78a12532c5e8032ea76 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 09:46:03 +0100 Subject: [PATCH 04/66] build(deps): bump peter-evans/create-pull-request from 5 to 6 (#1416) Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 5 to 6. - [Release notes](https://github.com/peter-evans/create-pull-request/releases) - [Commits](https://github.com/peter-evans/create-pull-request/compare/v5...v6) --- updated-dependencies: - dependency-name: peter-evans/create-pull-request dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/update-artifacts.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-artifacts.yml b/.github/workflows/update-artifacts.yml index a8f4d03812..03a9e53806 100644 --- a/.github/workflows/update-artifacts.yml +++ b/.github/workflows/update-artifacts.yml @@ -46,7 +46,7 @@ jobs: run: rm ./substrate-node - name: Create Pull Request - uses: peter-evans/create-pull-request@v5 + uses: peter-evans/create-pull-request@v6 with: base: master branch: update-artifacts From fd9d99189d76c85c3c825d23bad5cb32010a9514 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 09:46:14 +0100 Subject: [PATCH 05/66] build(deps): bump baptiste0928/cargo-install from 2 to 3 (#1415) Bumps [baptiste0928/cargo-install](https://github.com/baptiste0928/cargo-install) from 2 to 3. - [Release notes](https://github.com/baptiste0928/cargo-install/releases) - [Changelog](https://github.com/baptiste0928/cargo-install/blob/main/CHANGELOG.md) - [Commits](https://github.com/baptiste0928/cargo-install/compare/v2...v3) --- updated-dependencies: - dependency-name: baptiste0928/cargo-install dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/rust.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 661c2b7778..ac5c82e3e4 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -165,7 +165,7 @@ jobs: uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 - name: Install cargo-hack - uses: baptiste0928/cargo-install@v2 + uses: baptiste0928/cargo-install@v3 with: crate: cargo-hack version: 0.5 From e82dd99c2574e301e02ca2870882c00a40b40c30 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 11:49:15 +0200 Subject: [PATCH 06/66] build(deps): bump tokio from 1.35.1 to 1.36.0 (#1414) Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.35.1 to 1.36.0. - [Release notes](https://github.com/tokio-rs/tokio/releases) - [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.35.1...tokio-1.36.0) --- updated-dependencies: - dependency-name: tokio dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7f72441dda..7923c40f65 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4727,9 +4727,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.35.1" +version = "1.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104" +checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" dependencies = [ "backtrace", "bytes", diff --git a/Cargo.toml b/Cargo.toml index 16bfeb416a..e4e4b202be 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -87,7 +87,7 @@ serde = { version = "1.0.196" } serde_json = { version = "1.0.113" } syn = { version = "2.0.15", features = ["full", "extra-traits"] } thiserror = "1.0.53" -tokio = { version = "1.35", default-features = false } +tokio = { version = "1.36", default-features = false } tracing = "0.1.40" tracing-wasm = "0.2.1" tracing-subscriber = "0.3.18" From 9bcfd6cd94a756281a46b6ee590076bf94a1e5dc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 11:49:23 +0200 Subject: [PATCH 07/66] build(deps): bump secp256k1 from 0.28.1 to 0.28.2 (#1413) Bumps [secp256k1](https://github.com/rust-bitcoin/rust-secp256k1) from 0.28.1 to 0.28.2. - [Changelog](https://github.com/rust-bitcoin/rust-secp256k1/blob/master/CHANGELOG.md) - [Commits](https://github.com/rust-bitcoin/rust-secp256k1/compare/secp256k1-0.28.1...secp256k1-0.28.2) --- updated-dependencies: - dependency-name: secp256k1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7923c40f65..120b338b37 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3632,9 +3632,9 @@ dependencies = [ [[package]] name = "secp256k1" -version = "0.28.1" +version = "0.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f622567e3b4b38154fb8190bcf6b160d7a4301d70595a49195b48c116007a27" +checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" dependencies = [ "secp256k1-sys", ] diff --git a/Cargo.toml b/Cargo.toml index e4e4b202be..195a0f6195 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -139,7 +139,7 @@ bip39 = "2.0.0" hmac = "0.12.1" pbkdf2 = { version = "0.12.2", default-features = false } schnorrkel = "0.11.4" -secp256k1 = "0.28.1" +secp256k1 = "0.28.2" secrecy = "0.8.0" sha2 = "0.10.8" zeroize = { version = "1", default-features = false } From 61ab6b915ec20e5e056f9b3a8405c1cad1fc3551 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 11:49:30 +0200 Subject: [PATCH 08/66] build(deps): bump darling from 0.20.3 to 0.20.5 (#1412) Bumps [darling](https://github.com/TedDriggs/darling) from 0.20.3 to 0.20.5. - [Release notes](https://github.com/TedDriggs/darling/releases) - [Changelog](https://github.com/TedDriggs/darling/blob/master/CHANGELOG.md) - [Commits](https://github.com/TedDriggs/darling/commits) --- updated-dependencies: - dependency-name: darling dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 20 ++++++++++---------- Cargo.toml | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 120b338b37..584c330a32 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1213,12 +1213,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.3" +version = "0.20.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" +checksum = "fc5d6b04b3fd0ba9926f945895de7d806260a2d7431ba82e7edaecb043c4c6b8" dependencies = [ - "darling_core 0.20.3", - "darling_macro 0.20.3", + "darling_core 0.20.5", + "darling_macro 0.20.5", ] [[package]] @@ -1237,9 +1237,9 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.3" +version = "0.20.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" +checksum = "04e48a959bcd5c761246f5d090ebc2fbf7b9cd527a492b07a67510c108f1e7e3" dependencies = [ "fnv", "ident_case", @@ -1262,11 +1262,11 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.3" +version = "0.20.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" +checksum = "1d1545d67a2149e1d93b7e5c7752dce5a7426eb5d1357ddcfd89336b94444f77" dependencies = [ - "darling_core 0.20.3", + "darling_core 0.20.5", "quote", "syn 2.0.48", ] @@ -4559,7 +4559,7 @@ dependencies = [ name = "subxt-macro" version = "0.34.0" dependencies = [ - "darling 0.20.3", + "darling 0.20.5", "parity-scale-codec", "proc-macro-error", "quote", diff --git a/Cargo.toml b/Cargo.toml index 195a0f6195..6b92bf697d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -61,7 +61,7 @@ criterion = "0.4" codec = { package = "parity-scale-codec", version = "3.4.0", default-features = false } color-eyre = "0.6.1" console_error_panic_hook = "0.1.7" -darling = "0.20.3" +darling = "0.20.5" derivative = "2.2.0" either = "1.9.0" frame-metadata = { version = "16.0.0", default-features = false, features = ["current", "std"] } From cb67f944558a76f53167be7855c4725cdf80580c Mon Sep 17 00:00:00 2001 From: Niklas Adolfsson Date: Thu, 8 Feb 2024 13:19:06 +0100 Subject: [PATCH 09/66] feat: add `reconnecting-rpc-client` (#1396) * initial commit * update to reconnecting-ws-client v0.2 * re-export: reconnecting_rpc_client behind feature * add helper function for reconnect * fix nit in example * simplify code without weird error fmt * address grumbles * address grumbles * update reconnecting-ws-client 0.3 * cleanup error message --- Cargo.lock | 131 ++++++++++++++++-- subxt/Cargo.toml | 11 ++ subxt/examples/reconnecting_rpc_client.rs | 73 ++++++++++ subxt/src/backend/rpc/mod.rs | 8 +- .../rpc/reconnecting_jsonrpsee_impl.rs | 52 +++++++ subxt/src/error/mod.rs | 12 +- subxt/src/macros.rs | 16 ++- 7 files changed, 287 insertions(+), 16 deletions(-) create mode 100644 subxt/examples/reconnecting_rpc_client.rs create mode 100644 subxt/src/backend/rpc/reconnecting_jsonrpsee_impl.rs diff --git a/Cargo.lock b/Cargo.lock index 584c330a32..7c17152bc6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2302,10 +2302,21 @@ version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9579d0ca9fb30da026bac2f0f7d9576ec93489aeb7cd4971dd5b4617d82c79b2" dependencies = [ - "jsonrpsee-client-transport", - "jsonrpsee-core", + "jsonrpsee-client-transport 0.21.0", + "jsonrpsee-core 0.21.0", "jsonrpsee-http-client", - "jsonrpsee-types", + "jsonrpsee-types 0.21.0", +] + +[[package]] +name = "jsonrpsee" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a95f7cc23d5fab0cdeeaf6bad8c8f5e7a3aa7f0d211957ea78232b327ab27b0" +dependencies = [ + "jsonrpsee-core 0.22.0", + "jsonrpsee-types 0.22.0", + "jsonrpsee-ws-client", ] [[package]] @@ -2318,7 +2329,28 @@ dependencies = [ "futures-util", "gloo-net", "http", - "jsonrpsee-core", + "jsonrpsee-core 0.21.0", + "pin-project", + "rustls-native-certs 0.7.0", + "rustls-pki-types", + "soketto", + "thiserror", + "tokio", + "tokio-rustls 0.25.0", + "tokio-util", + "tracing", + "url", +] + +[[package]] +name = "jsonrpsee-client-transport" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b1736cfa3845fd9f8f43751f2b8e0e83f7b6081e754502f7d63b6587692cc83" +dependencies = [ + "futures-util", + "http", + "jsonrpsee-core 0.22.0", "pin-project", "rustls-native-certs 0.7.0", "rustls-pki-types", @@ -2344,7 +2376,7 @@ dependencies = [ "futures-timer", "futures-util", "hyper", - "jsonrpsee-types", + "jsonrpsee-types 0.21.0", "pin-project", "rustc-hash", "serde", @@ -2356,6 +2388,29 @@ dependencies = [ "wasm-bindgen-futures", ] +[[package]] +name = "jsonrpsee-core" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82030d038658974732103e623ba2e0abec03bbbe175b39c0a2fafbada60c5868" +dependencies = [ + "anyhow", + "async-lock 3.3.0", + "async-trait", + "beef", + "futures-timer", + "futures-util", + "jsonrpsee-types 0.22.0", + "pin-project", + "rustc-hash", + "serde", + "serde_json", + "thiserror", + "tokio", + "tokio-stream", + "tracing", +] + [[package]] name = "jsonrpsee-http-client" version = "0.21.0" @@ -2365,8 +2420,8 @@ dependencies = [ "async-trait", "hyper", "hyper-rustls", - "jsonrpsee-core", - "jsonrpsee-types", + "jsonrpsee-core 0.21.0", + "jsonrpsee-types 0.21.0", "serde", "serde_json", "thiserror", @@ -2389,6 +2444,32 @@ dependencies = [ "thiserror", ] +[[package]] +name = "jsonrpsee-types" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a48fdc1202eafc51c63e00406575e59493284ace8b8b61aa16f3a6db5d64f1a" +dependencies = [ + "anyhow", + "beef", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "jsonrpsee-ws-client" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5ce25d70a8e4d3cc574bbc3cad0137c326ad64b194793d5e7bbdd3fa4504181" +dependencies = [ + "http", + "jsonrpsee-client-transport 0.22.0", + "jsonrpsee-core 0.22.0", + "jsonrpsee-types 0.22.0", + "url", +] + [[package]] name = "keccak" version = "0.1.5" @@ -3145,6 +3226,22 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "reconnecting-jsonrpsee-ws-client" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea5cf7b021db88f1af45a9b2ecdbe5bc1c5cbebc146632269d572cdd435f5cf" +dependencies = [ + "futures", + "jsonrpsee 0.22.0", + "serde_json", + "thiserror", + "tokio", + "tokio-retry", + "tokio-stream", + "tracing", +] + [[package]] name = "redox_syscall" version = "0.4.1" @@ -4453,9 +4550,10 @@ dependencies = [ "hex", "impl-serde", "instant", - "jsonrpsee", + "jsonrpsee 0.21.0", "parity-scale-codec", "primitive-types", + "reconnecting-jsonrpsee-ws-client", "scale-bits", "scale-decode", "scale-encode", @@ -4490,7 +4588,7 @@ dependencies = [ "heck", "hex", "indoc", - "jsonrpsee", + "jsonrpsee 0.21.0", "parity-scale-codec", "pretty_assertions", "quote", @@ -4517,7 +4615,7 @@ dependencies = [ "getrandom", "heck", "hex", - "jsonrpsee", + "jsonrpsee 0.21.0", "parity-scale-codec", "proc-macro2", "quote", @@ -4654,7 +4752,7 @@ version = "0.34.0" dependencies = [ "hex", "impl-serde", - "jsonrpsee", + "jsonrpsee 0.21.0", "parity-scale-codec", "serde", "substrate-runner", @@ -4753,6 +4851,17 @@ dependencies = [ "syn 2.0.48", ] +[[package]] +name = "tokio-retry" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" +dependencies = [ + "pin-project", + "rand", + "tokio", +] + [[package]] name = "tokio-rustls" version = "0.24.1" diff --git a/subxt/Cargo.toml b/subxt/Cargo.toml index 0686a8c897..5ff125d191 100644 --- a/subxt/Cargo.toml +++ b/subxt/Cargo.toml @@ -42,6 +42,9 @@ web = [ "instant/wasm-bindgen" ] +# Enable this to use the reconnecting rpc client +unstable-reconnecting-rpc-client = ["dep:reconnecting-jsonrpsee-ws-client"] + # Enable this to use jsonrpsee (allowing for example `OnlineClient::from_url`). jsonrpsee = ["dep:jsonrpsee"] @@ -103,6 +106,9 @@ subxt-lightclient = { workspace = true, optional = true, default-features = fals # Light client support: tokio-stream = { workspace = true, optional = true } +# Reconnecting jsonrpc ws client +reconnecting-jsonrpsee-ws-client = { version = "0.3", optional = true } + # For parsing urls to disallow insecure schemes url = { workspace = true } @@ -138,6 +144,11 @@ name = "light_client_parachains" path = "examples/light_client_parachains.rs" required-features = ["unstable-light-client", "jsonrpsee", "native"] +[[example]] +name = "reconnecting_rpc_client" +path = "examples/reconnecting_rpc_client.rs" +required-features = ["unstable-reconnecting-rpc-client"] + [package.metadata.docs.rs] features = ["default", "substrate-compat", "unstable-light-client"] rustdoc-args = ["--cfg", "docsrs"] diff --git a/subxt/examples/reconnecting_rpc_client.rs b/subxt/examples/reconnecting_rpc_client.rs new file mode 100644 index 0000000000..b21be899f6 --- /dev/null +++ b/subxt/examples/reconnecting_rpc_client.rs @@ -0,0 +1,73 @@ +//! Example to utilize the `reconnecting rpc client` in subxt +//! which hidden behind behind `--feature unstable-reconnecting-rpc-client` +//! +//! To utilize full logs from the RPC client use: +//! `RUST_LOG="jsonrpsee=trace,reconnecting_jsonrpsee_ws_client=trace"` + +#![allow(missing_docs)] + +use std::time::Duration; + +use subxt::backend::rpc::reconnecting_rpc_client::{Client, ExponentialBackoff, PingConfig}; +use subxt::backend::rpc::RpcClient; +use subxt::error::{Error, RpcError}; +use subxt::{OnlineClient, PolkadotConfig}; + +// Generate an interface that we can use from the node's metadata. +#[subxt::subxt(runtime_metadata_path = "../artifacts/polkadot_metadata_small.scale")] +pub mod polkadot {} + +#[tokio::main] +async fn main() -> Result<(), Box> { + tracing_subscriber::fmt::init(); + + // Create a new client with with a reconnecting RPC client. + let rpc = Client::builder() + // Reconnect with exponential backoff + // + // This API is "iterator-like" so one could limit it to only + // reconnect x times and then quit. + .retry_policy(ExponentialBackoff::from_millis(100).max_delay(Duration::from_secs(10))) + // Send period WebSocket pings/pongs every 6th second and if it's not ACK:ed in 30 seconds + // then disconnect. + // + // This is just a way to ensure that the connection isn't idle if no message is sent that often + .enable_ws_ping( + PingConfig::new() + .ping_interval(Duration::from_secs(6)) + .inactive_limit(Duration::from_secs(30)), + ) + // There are other configurations as well that can be found here: + // + .build("ws://localhost:9944".to_string()) + .await?; + + let api: OnlineClient = + OnlineClient::from_rpc_client(RpcClient::new(rpc.clone())).await?; + + // Subscribe to all finalized blocks: + let mut blocks_sub = api.blocks().subscribe_finalized().await?; + + // For each block, print a bunch of information about it: + while let Some(block) = blocks_sub.next().await { + let block = match block { + Ok(b) => b, + Err(Error::Rpc(RpcError::DisconnectedWillReconnect(err))) => { + println!("{err}"); + continue; + } + Err(e) => { + return Err(e.into()); + } + }; + + let block_number = block.header().number; + let block_hash = block.hash(); + + println!("Block #{block_number} ({block_hash})"); + } + + println!("RPC client reconnected `{}` times", rpc.reconnect_count()); + + Ok(()) +} diff --git a/subxt/src/backend/rpc/mod.rs b/subxt/src/backend/rpc/mod.rs index 12910939e7..19101dd5df 100644 --- a/subxt/src/backend/rpc/mod.rs +++ b/subxt/src/backend/rpc/mod.rs @@ -60,9 +60,13 @@ crate::macros::cfg_jsonrpsee! { mod jsonrpsee_impl; } +crate::macros::cfg_reconnecting_rpc_client! { + mod reconnecting_jsonrpsee_impl; + pub use reconnecting_jsonrpsee_ws_client as reconnecting_rpc_client; +} + mod rpc_client; mod rpc_client_t; -pub use rpc_client_t::{RawRpcFuture, RawRpcSubscription, RawValue, RpcClientT}; - pub use rpc_client::{rpc_params, RpcClient, RpcParams, RpcSubscription}; +pub use rpc_client_t::{RawRpcFuture, RawRpcSubscription, RawValue, RpcClientT}; diff --git a/subxt/src/backend/rpc/reconnecting_jsonrpsee_impl.rs b/subxt/src/backend/rpc/reconnecting_jsonrpsee_impl.rs new file mode 100644 index 0000000000..da37b267e0 --- /dev/null +++ b/subxt/src/backend/rpc/reconnecting_jsonrpsee_impl.rs @@ -0,0 +1,52 @@ +// Copyright 2019-2023 Parity Technologies (UK) Ltd. +// This file is dual-licensed as Apache-2.0 or GPL-3.0. +// see LICENSE for license details. + +use super::{RawRpcFuture, RawRpcSubscription, RpcClientT}; +use crate::error::RpcError; +use futures::{FutureExt, StreamExt, TryStreamExt}; +use reconnecting_jsonrpsee_ws_client::SubscriptionId; +use serde_json::value::RawValue; + +impl RpcClientT for reconnecting_jsonrpsee_ws_client::Client { + fn request_raw<'a>( + &'a self, + method: &'a str, + params: Option>, + ) -> RawRpcFuture<'a, Box> { + async { + self.request_raw(method.to_string(), params) + .await + .map_err(|e| RpcError::ClientError(Box::new(e))) + } + .boxed() + } + + fn subscribe_raw<'a>( + &'a self, + sub: &'a str, + params: Option>, + unsub: &'a str, + ) -> RawRpcFuture<'a, RawRpcSubscription> { + async { + let sub = self + .subscribe_raw(sub.to_string(), params, unsub.to_string()) + .await + .map_err(|e| RpcError::ClientError(Box::new(e)))?; + + let id = match sub.id() { + SubscriptionId::Num(n) => n.to_string(), + SubscriptionId::Str(s) => s.to_string(), + }; + let stream = sub + .map_err(|e| RpcError::DisconnectedWillReconnect(e.to_string())) + .boxed(); + + Ok(RawRpcSubscription { + stream, + id: Some(id), + }) + } + .boxed() + } +} diff --git a/subxt/src/error/mod.rs b/subxt/src/error/mod.rs index 78c5528012..41dbc11d31 100644 --- a/subxt/src/error/mod.rs +++ b/subxt/src/error/mod.rs @@ -6,8 +6,6 @@ mod dispatch_error; -use core::fmt::Debug; - crate::macros::cfg_unstable_light_client! { pub use crate::client::LightClientError; } @@ -100,6 +98,13 @@ impl From for Error { } } +impl Error { + /// Checks whether the error was caused by a RPC re-connection. + pub fn is_disconnected_will_reconnect(&self) -> bool { + matches!(self, Error::Rpc(RpcError::DisconnectedWillReconnect(_))) + } +} + /// An RPC error. Since we are generic over the RPC client that is used, /// the error is boxed and could be casted. #[derive(Debug, thiserror::Error)] @@ -120,6 +125,9 @@ pub enum RpcError { /// The requested URL is insecure. #[error("RPC error: insecure URL: {0}")] InsecureUrl(String), + /// The connection was lost and automatically reconnected. + #[error("RPC error: the connection was lost `{0}`; reconnect automatically initiated")] + DisconnectedWillReconnect(String), } impl RpcError { diff --git a/subxt/src/macros.rs b/subxt/src/macros.rs index a8d86ada69..47362f18ca 100644 --- a/subxt/src/macros.rs +++ b/subxt/src/macros.rs @@ -52,7 +52,21 @@ macro_rules! cfg_jsonrpsee_web { } } -pub(crate) use {cfg_feature, cfg_jsonrpsee, cfg_substrate_compat, cfg_unstable_light_client}; +#[allow(unused)] +macro_rules! cfg_reconnecting_rpc_client { + ($($item:item)*) => { + $( + #[cfg(all(feature = "unstable-reconnecting-rpc-client"))] + #[cfg_attr(docsrs, doc(cfg(feature = "unstable-reconnecting-rpc-client")))] + $item + )* + } +} + +pub(crate) use { + cfg_feature, cfg_jsonrpsee, cfg_reconnecting_rpc_client, cfg_substrate_compat, + cfg_unstable_light_client, +}; // Only used by light-client. #[allow(unused)] From 75bd8fbd4e749112fcacef6a8beb0ac5ad1e59ac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Feb 2024 11:11:51 +0200 Subject: [PATCH 10/66] build(deps): bump js-sys from 0.3.67 to 0.3.68 (#1428) Bumps [js-sys](https://github.com/rustwasm/wasm-bindgen) from 0.3.67 to 0.3.68. - [Release notes](https://github.com/rustwasm/wasm-bindgen/releases) - [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/rustwasm/wasm-bindgen/commits) --- updated-dependencies: - dependency-name: js-sys dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 24 ++++++++++++------------ Cargo.toml | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7c17152bc6..24fa08b271 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2289,9 +2289,9 @@ checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "js-sys" -version = "0.3.67" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1" +checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" dependencies = [ "wasm-bindgen", ] @@ -5356,9 +5356,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406" +checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -5366,9 +5366,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd" +checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" dependencies = [ "bumpalo", "log", @@ -5393,9 +5393,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999" +checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5403,9 +5403,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7" +checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" dependencies = [ "proc-macro2", "quote", @@ -5416,9 +5416,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b" +checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" [[package]] name = "wasmi" diff --git a/Cargo.toml b/Cargo.toml index 6b92bf697d..1052322006 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -112,7 +112,7 @@ pin-project = "1.1.4" web-sys = { version = "0.3.67", features = ["BinaryType", "CloseEvent", "MessageEvent", "WebSocket"] } wasm-bindgen = "0.2.90" send_wrapper = "0.6.0" -js-sys = "0.3.67" +js-sys = "0.3.68" wasm-bindgen-futures = "0.4.38" futures-timer = "3" instant = { version = "0.1.12", default-features = false } From d6f93402ffbf2ff7658c4db637e5ef9535996bbf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Feb 2024 11:12:04 +0200 Subject: [PATCH 11/66] build(deps): bump clap from 4.4.18 to 4.5.0 (#1427) Bumps [clap](https://github.com/clap-rs/clap) from 4.4.18 to 4.5.0. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/v4.4.18...clap_complete-v4.5.0) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 32 +++++++++++++++++++------------- Cargo.toml | 2 +- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 24fa08b271..0972c7342b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -854,9 +854,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.18" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c" +checksum = "80c21025abd42669a92efc996ef13cfb2c5c627858421ea58d5c3b331a6c134f" dependencies = [ "clap_builder", "clap_derive", @@ -864,21 +864,21 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.18" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7" +checksum = "458bf1f341769dfcf849846f65dffdf9146daa56bcd2a47cb4e1de9915567c99" dependencies = [ "anstream", "anstyle", - "clap_lex 0.6.0", - "strsim", + "clap_lex 0.7.0", + "strsim 0.11.0", ] [[package]] name = "clap_derive" -version = "4.4.7" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47" dependencies = [ "heck", "proc-macro2", @@ -897,9 +897,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" +checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" [[package]] name = "cmake" @@ -1231,7 +1231,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "strsim", + "strsim 0.10.0", "syn 1.0.109", ] @@ -1245,7 +1245,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "strsim", + "strsim 0.10.0", "syn 2.0.48", ] @@ -4488,6 +4488,12 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +[[package]] +name = "strsim" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" + [[package]] name = "strum" version = "0.24.1" @@ -4582,7 +4588,7 @@ dependencies = [ name = "subxt-cli" version = "0.34.0" dependencies = [ - "clap 4.4.18", + "clap 4.5.0", "color-eyre", "frame-metadata 16.0.0", "heck", diff --git a/Cargo.toml b/Cargo.toml index 1052322006..83b6cd9e2a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -56,7 +56,7 @@ assert_matches = "1.5.0" base58 = { version = "0.2.0" } bitvec = { version = "1", default-features = false } blake2 = { version = "0.10.6", default-features = false } -clap = { version = "4.4.18", features = ["derive", "cargo"] } +clap = { version = "4.5.0", features = ["derive", "cargo"] } criterion = "0.4" codec = { package = "parity-scale-codec", version = "3.4.0", default-features = false } color-eyre = "0.6.1" From a65184cc24d0f3f023e9ae8db0b1a7a032df66d9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Feb 2024 11:12:24 +0200 Subject: [PATCH 12/66] build(deps): bump either from 1.9.0 to 1.10.0 (#1425) Bumps [either](https://github.com/rayon-rs/either) from 1.9.0 to 1.10.0. - [Commits](https://github.com/rayon-rs/either/compare/1.9.0...1.10.0) --- updated-dependencies: - dependency-name: either dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0972c7342b..b20b521cfc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1466,9 +1466,9 @@ dependencies = [ [[package]] name = "either" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" [[package]] name = "environmental" diff --git a/Cargo.toml b/Cargo.toml index 83b6cd9e2a..41b89f26bb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -63,7 +63,7 @@ color-eyre = "0.6.1" console_error_panic_hook = "0.1.7" darling = "0.20.5" derivative = "2.2.0" -either = "1.9.0" +either = "1.10.0" frame-metadata = { version = "16.0.0", default-features = false, features = ["current", "std"] } futures = { version = "0.3.30", default-features = false, features = ["std"] } getrandom = { version = "0.2", default-features = false } From af1fdf82575160f830a93ceff16807dd73037130 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Feb 2024 11:12:37 +0200 Subject: [PATCH 13/66] build(deps): bump thiserror from 1.0.56 to 1.0.57 (#1424) Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.56 to 1.0.57. - [Release notes](https://github.com/dtolnay/thiserror/releases) - [Commits](https://github.com/dtolnay/thiserror/compare/1.0.56...1.0.57) --- updated-dependencies: - dependency-name: thiserror dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b20b521cfc..f86662aff7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4776,18 +4776,18 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.56" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" +checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.56" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" +checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 41b89f26bb..1eb24c2437 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -86,7 +86,7 @@ scale-encode = "0.5.0" serde = { version = "1.0.196" } serde_json = { version = "1.0.113" } syn = { version = "2.0.15", features = ["full", "extra-traits"] } -thiserror = "1.0.53" +thiserror = "1.0.57" tokio = { version = "1.36", default-features = false } tracing = "0.1.40" tracing-wasm = "0.2.1" From 06ca274d1d7b59ab29df60873cfe67b44693c913 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Feb 2024 16:30:47 +0100 Subject: [PATCH 14/66] build(deps): bump jsonrpsee from 0.21.0 to 0.22.0 (#1426) * build(deps): bump jsonrpsee from 0.21.0 to 0.22.0 Bumps [jsonrpsee](https://github.com/paritytech/jsonrpsee) from 0.21.0 to 0.22.0. - [Release notes](https://github.com/paritytech/jsonrpsee/releases) - [Changelog](https://github.com/paritytech/jsonrpsee/blob/master/CHANGELOG.md) - [Commits](https://github.com/paritytech/jsonrpsee/compare/v0.21.0...v0.22.0) --- updated-dependencies: - dependency-name: jsonrpsee dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Update Cargo.lock --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: James Wilson Co-authored-by: Niklas Adolfsson --- Cargo.lock | 111 +++++++++++------------------------------------------ Cargo.toml | 2 +- 2 files changed, 23 insertions(+), 90 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f86662aff7..f082ecbe3d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2296,61 +2296,30 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "jsonrpsee" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9579d0ca9fb30da026bac2f0f7d9576ec93489aeb7cd4971dd5b4617d82c79b2" -dependencies = [ - "jsonrpsee-client-transport 0.21.0", - "jsonrpsee-core 0.21.0", - "jsonrpsee-http-client", - "jsonrpsee-types 0.21.0", -] - [[package]] name = "jsonrpsee" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a95f7cc23d5fab0cdeeaf6bad8c8f5e7a3aa7f0d211957ea78232b327ab27b0" dependencies = [ - "jsonrpsee-core 0.22.0", - "jsonrpsee-types 0.22.0", + "jsonrpsee-client-transport", + "jsonrpsee-core", + "jsonrpsee-http-client", + "jsonrpsee-types", "jsonrpsee-ws-client", ] -[[package]] -name = "jsonrpsee-client-transport" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9f9ed46590a8d5681975f126e22531698211b926129a40a2db47cbca429220" -dependencies = [ - "futures-channel", - "futures-util", - "gloo-net", - "http", - "jsonrpsee-core 0.21.0", - "pin-project", - "rustls-native-certs 0.7.0", - "rustls-pki-types", - "soketto", - "thiserror", - "tokio", - "tokio-rustls 0.25.0", - "tokio-util", - "tracing", - "url", -] - [[package]] name = "jsonrpsee-client-transport" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b1736cfa3845fd9f8f43751f2b8e0e83f7b6081e754502f7d63b6587692cc83" dependencies = [ + "futures-channel", "futures-util", + "gloo-net", "http", - "jsonrpsee-core 0.22.0", + "jsonrpsee-core", "pin-project", "rustls-native-certs 0.7.0", "rustls-pki-types", @@ -2363,31 +2332,6 @@ dependencies = [ "url", ] -[[package]] -name = "jsonrpsee-core" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "776d009e2f591b78c038e0d053a796f94575d66ca4e77dd84bfc5e81419e436c" -dependencies = [ - "anyhow", - "async-lock 3.3.0", - "async-trait", - "beef", - "futures-timer", - "futures-util", - "hyper", - "jsonrpsee-types 0.21.0", - "pin-project", - "rustc-hash", - "serde", - "serde_json", - "thiserror", - "tokio", - "tokio-stream", - "tracing", - "wasm-bindgen-futures", -] - [[package]] name = "jsonrpsee-core" version = "0.22.0" @@ -2400,7 +2344,8 @@ dependencies = [ "beef", "futures-timer", "futures-util", - "jsonrpsee-types 0.22.0", + "hyper", + "jsonrpsee-types", "pin-project", "rustc-hash", "serde", @@ -2409,19 +2354,20 @@ dependencies = [ "tokio", "tokio-stream", "tracing", + "wasm-bindgen-futures", ] [[package]] name = "jsonrpsee-http-client" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b7de9f3219d95985eb77fd03194d7c1b56c19bce1abfcc9d07462574b15572" +checksum = "36a06ef0de060005fddf772d54597bb6a8b0413da47dcffd304b0306147b9678" dependencies = [ "async-trait", "hyper", "hyper-rustls", - "jsonrpsee-core 0.21.0", - "jsonrpsee-types 0.21.0", + "jsonrpsee-core", + "jsonrpsee-types", "serde", "serde_json", "thiserror", @@ -2431,19 +2377,6 @@ dependencies = [ "url", ] -[[package]] -name = "jsonrpsee-types" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3266dfb045c9174b24c77c2dfe0084914bb23a6b2597d70c9dc6018392e1cd1b" -dependencies = [ - "anyhow", - "beef", - "serde", - "serde_json", - "thiserror", -] - [[package]] name = "jsonrpsee-types" version = "0.22.0" @@ -2464,9 +2397,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5ce25d70a8e4d3cc574bbc3cad0137c326ad64b194793d5e7bbdd3fa4504181" dependencies = [ "http", - "jsonrpsee-client-transport 0.22.0", - "jsonrpsee-core 0.22.0", - "jsonrpsee-types 0.22.0", + "jsonrpsee-client-transport", + "jsonrpsee-core", + "jsonrpsee-types", "url", ] @@ -3233,7 +3166,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ea5cf7b021db88f1af45a9b2ecdbe5bc1c5cbebc146632269d572cdd435f5cf" dependencies = [ "futures", - "jsonrpsee 0.22.0", + "jsonrpsee", "serde_json", "thiserror", "tokio", @@ -4556,7 +4489,7 @@ dependencies = [ "hex", "impl-serde", "instant", - "jsonrpsee 0.21.0", + "jsonrpsee", "parity-scale-codec", "primitive-types", "reconnecting-jsonrpsee-ws-client", @@ -4594,7 +4527,7 @@ dependencies = [ "heck", "hex", "indoc", - "jsonrpsee 0.21.0", + "jsonrpsee", "parity-scale-codec", "pretty_assertions", "quote", @@ -4621,7 +4554,7 @@ dependencies = [ "getrandom", "heck", "hex", - "jsonrpsee 0.21.0", + "jsonrpsee", "parity-scale-codec", "proc-macro2", "quote", @@ -4758,7 +4691,7 @@ version = "0.34.0" dependencies = [ "hex", "impl-serde", - "jsonrpsee 0.21.0", + "jsonrpsee", "parity-scale-codec", "serde", "substrate-runner", diff --git a/Cargo.toml b/Cargo.toml index 1eb24c2437..1bc484aca6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -71,7 +71,7 @@ hex = "0.4.3" heck = "0.4.1" impl-serde = { version = "0.4.0" } indoc = "2" -jsonrpsee = { version = "0.21" } +jsonrpsee = { version = "0.22" } pretty_assertions = "1.4.0" primitive-types = { version = "0.12.2", default-features = false, features = ["codec", "scale-info", "serde"] } proc-macro-error = "1.0.4" From 25ff4ecc8ba67eb1bc6c01c5afea84d7e4b56dae Mon Sep 17 00:00:00 2001 From: Alexandru Vasile <60601340+lexnv@users.noreply.github.com> Date: Tue, 13 Feb 2024 12:06:28 +0200 Subject: [PATCH 15/66] subxt: Derive `std::cmp` traits for subxt payloads and addresses (#1429) * subxt/tx: Derive std::cmp traits Signed-off-by: Alexandru Vasile * subxt/runtime_api: Derive std::cmp traits Signed-off-by: Alexandru Vasile * subxt/constants: Derive std::cmp traits Signed-off-by: Alexandru Vasile * subxt/custom_values: Derive std::cmp traits Signed-off-by: Alexandru Vasile * subxt/storage: Derive std::cmp traits Signed-off-by: Alexandru Vasile * subxt: Fix non_canonical_partial_ord_impl clippy introduced in 1.73 Signed-off-by: Alexandru Vasile * subxt: Add comment wrt derivative issue that triggers clippy warning Signed-off-by: Alexandru Vasile * Update subxt/src/backend/mod.rs * Update subxt/src/constants/constant_address.rs --------- Signed-off-by: Alexandru Vasile Co-authored-by: Niklas Adolfsson --- subxt/src/backend/mod.rs | 1 + subxt/src/constants/constant_address.rs | 15 ++++++++++++++- subxt/src/custom_values/custom_value_address.rs | 14 +++++++++++++- subxt/src/runtime_api/runtime_payload.rs | 6 +++++- subxt/src/storage/storage_address.rs | 6 +++++- subxt/src/tx/tx_payload.rs | 11 ++++++++++- 6 files changed, 48 insertions(+), 5 deletions(-) diff --git a/subxt/src/backend/mod.rs b/subxt/src/backend/mod.rs index 3db06818b3..e816bc904c 100644 --- a/subxt/src/backend/mod.rs +++ b/subxt/src/backend/mod.rs @@ -184,6 +184,7 @@ impl PartialEq for BlockRef { } impl Eq for BlockRef {} +// Manual implementation to work around https://github.com/mcarton/rust-derivative/issues/115. impl PartialOrd for BlockRef { fn partial_cmp(&self, other: &Self) -> Option { self.hash.partial_cmp(&other.hash) diff --git a/subxt/src/constants/constant_address.rs b/subxt/src/constants/constant_address.rs index e9a0eb37b0..3765d4c84b 100644 --- a/subxt/src/constants/constant_address.rs +++ b/subxt/src/constants/constant_address.rs @@ -28,7 +28,13 @@ pub trait ConstantAddress { /// This represents the address of a constant. #[derive(Derivative)] -#[derivative(Clone(bound = ""), Debug(bound = ""))] +#[derivative( + Clone(bound = ""), + Debug(bound = ""), + Eq(bound = ""), + Ord(bound = ""), + PartialEq(bound = "") +)] pub struct Address { pallet_name: Cow<'static, str>, constant_name: Cow<'static, str>, @@ -36,6 +42,13 @@ pub struct Address { _marker: std::marker::PhantomData, } +// Manual implementation to work around https://github.com/mcarton/rust-derivative/issues/115. +impl PartialOrd for Address { + fn partial_cmp(&self, other: &Self) -> Option { + Some(self.cmp(other)) + } +} + /// The type of address typically used to return dynamic constant values. pub type DynamicAddress = Address; diff --git a/subxt/src/custom_values/custom_value_address.rs b/subxt/src/custom_values/custom_value_address.rs index f8034a161b..6e2f7f77ea 100644 --- a/subxt/src/custom_values/custom_value_address.rs +++ b/subxt/src/custom_values/custom_value_address.rs @@ -38,13 +38,25 @@ pub struct Yes; /// A static address to a custom value. #[derive(Derivative)] -#[derivative(Clone(bound = ""), Debug(bound = ""))] +#[derivative( + Clone(bound = ""), + Debug(bound = ""), + Eq(bound = ""), + Ord(bound = ""), + PartialEq(bound = "") +)] pub struct StaticAddress { name: &'static str, hash: Option<[u8; 32]>, phantom: PhantomData<(ReturnTy, IsDecodable)>, } +impl PartialOrd for StaticAddress { + fn partial_cmp(&self, other: &Self) -> Option { + Some(self.cmp(other)) + } +} + impl StaticAddress { #[doc(hidden)] /// Creates a new StaticAddress. diff --git a/subxt/src/runtime_api/runtime_payload.rs b/subxt/src/runtime_api/runtime_payload.rs index cd5a3355b8..ff776eb14f 100644 --- a/subxt/src/runtime_api/runtime_payload.rs +++ b/subxt/src/runtime_api/runtime_payload.rs @@ -69,7 +69,11 @@ pub trait RuntimeApiPayload { #[derive(Derivative)] #[derivative( Clone(bound = "ArgsData: Clone"), - Debug(bound = "ArgsData: std::fmt::Debug") + Debug(bound = "ArgsData: std::fmt::Debug"), + Eq(bound = "ArgsData: std::cmp::Eq"), + Ord(bound = "ArgsData: std::cmp::Ord"), + PartialEq(bound = "ArgsData: std::cmp::PartialEq"), + PartialOrd(bound = "ArgsData: std::cmp::PartialOrd") )] pub struct Payload { trait_name: Cow<'static, str>, diff --git a/subxt/src/storage/storage_address.rs b/subxt/src/storage/storage_address.rs index 893474b518..2211b20def 100644 --- a/subxt/src/storage/storage_address.rs +++ b/subxt/src/storage/storage_address.rs @@ -55,7 +55,11 @@ pub struct Yes; #[derive(Derivative)] #[derivative( Clone(bound = "StorageKey: Clone"), - Debug(bound = "StorageKey: std::fmt::Debug") + Debug(bound = "StorageKey: std::fmt::Debug"), + Eq(bound = "StorageKey: std::cmp::Eq"), + Ord(bound = "StorageKey: std::cmp::Ord"), + PartialEq(bound = "StorageKey: std::cmp::PartialEq"), + PartialOrd(bound = "StorageKey: std::cmp::PartialOrd") )] pub struct Address { pallet_name: Cow<'static, str>, diff --git a/subxt/src/tx/tx_payload.rs b/subxt/src/tx/tx_payload.rs index 508a6a99e6..ff9c71fd21 100644 --- a/subxt/src/tx/tx_payload.rs +++ b/subxt/src/tx/tx_payload.rs @@ -11,6 +11,7 @@ use crate::{ metadata::Metadata, }; use codec::Encode; +use derivative::Derivative; use scale_encode::EncodeAsFields; use scale_value::{Composite, ValueDef, Variant}; use std::{borrow::Cow, sync::Arc}; @@ -48,7 +49,15 @@ pub struct ValidationDetails<'a> { } /// A transaction payload containing some generic `CallData`. -#[derive(Clone, Debug)] +#[derive(Derivative)] +#[derivative( + Clone(bound = "CallData: Clone"), + Debug(bound = "CallData: std::fmt::Debug"), + Eq(bound = "CallData: std::cmp::Eq"), + Ord(bound = "CallData: std::cmp::Ord"), + PartialEq(bound = "CallData: std::cmp::PartialEq"), + PartialOrd(bound = "CallData: std::cmp::PartialOrd") +)] pub struct Payload { pallet_name: Cow<'static, str>, call_name: Cow<'static, str>, From e783d9f883c71d5b7c7608df298335cf3d6bca5d Mon Sep 17 00:00:00 2001 From: Alexander Samusev <41779041+alvicsam@users.noreply.github.com> Date: Wed, 14 Feb 2024 11:33:38 +0100 Subject: [PATCH 16/66] [ci] Run cronjob with app secrets (#1420) * [ci] Run cronjob with app secrets * rm github url * move token creation closer to pr creation * return checkout * check that credentials work * test gha * add more test * create test file * rm tests * add compression+decompression to avoid >100MB * add shell field to action * move zipped file to correct location * strip binaries --------- Co-authored-by: Tadeo hepperle --- .../workflows/actions/use-nodes/action.yml | 6 +++++ .github/workflows/build-nodes.yml | 22 ++++++++++++++----- .github/workflows/update-artifacts.yml | 8 ++++++- 3 files changed, 29 insertions(+), 7 deletions(-) diff --git a/.github/workflows/actions/use-nodes/action.yml b/.github/workflows/actions/use-nodes/action.yml index afbfe7584d..b1785f9067 100644 --- a/.github/workflows/actions/use-nodes/action.yml +++ b/.github/workflows/actions/use-nodes/action.yml @@ -17,6 +17,12 @@ runs: workflow: build-nodes.yml name: nightly-polkadot-binary + - name: decompress polkadot binary + shell: bash + run: | + tar -xzvf ./polkadot.tar.gz + cp ./target/release/polkadot ./polkadot + - name: Prepare binaries shell: bash run: | diff --git a/.github/workflows/build-nodes.yml b/.github/workflows/build-nodes.yml index 045355e8ea..9abd2a05fd 100644 --- a/.github/workflows/build-nodes.yml +++ b/.github/workflows/build-nodes.yml @@ -35,6 +35,17 @@ jobs: command: build args: --release --manifest-path substrate/bin/node/cli/Cargo.toml + - name: build polkadot binary + uses: actions-rs/cargo@v1 + with: + command: build + args: --release --manifest-path polkadot/Cargo.toml + + - name: Strip binaries + run: | + cargo install cargo-strip + cargo strip + - name: upload substrate binary uses: actions/upload-artifact@v3 with: @@ -43,18 +54,17 @@ jobs: retention-days: 2 if-no-files-found: error - - name: build polkadot binary - uses: actions-rs/cargo@v1 - with: - command: build - args: --release --manifest-path polkadot/Cargo.toml + # Note: Uncompressed polkadot binary is ~124MB -> too large for git (max 100MB) without git lfs. Compressed it is only ~45MB + - name: compress polkadot binary + run: | + tar -zcvf target/release/polkadot.tar.gz target/release/polkadot - name: upload polkadot binary uses: actions/upload-artifact@v3 with: name: nightly-polkadot-binary path: | - target/release/polkadot + target/release/polkadot.tar.gz target/release/polkadot-execute-worker target/release/polkadot-prepare-worker retention-days: 2 diff --git a/.github/workflows/update-artifacts.yml b/.github/workflows/update-artifacts.yml index 03a9e53806..49c2a86d18 100644 --- a/.github/workflows/update-artifacts.yml +++ b/.github/workflows/update-artifacts.yml @@ -19,7 +19,6 @@ jobs: steps: - name: Checkout sources uses: actions/checkout@v4 - # We run this (up-to-date) node locally to fetch metadata from it for the artifacts - name: Use substrate and polkadot node binaries uses: ./.github/workflows/actions/use-nodes @@ -45,9 +44,16 @@ jobs: - name: Delete substrate node binary run: rm ./substrate-node + - uses: actions/create-github-app-token@v1 + id: app-token + with: + app-id: ${{ secrets.SUBXT_PR_MAKER_APP_ID }} + private-key: ${{ secrets.SUBXT_PR_MAKER_APP_KEY }} + - name: Create Pull Request uses: peter-evans/create-pull-request@v6 with: + token: ${{ steps.app-token.outputs.token }} base: master branch: update-artifacts commit-message: Update Artifacts (auto-generated) From 78e957481315efbcb7358d0876a5a30cd511a1fe Mon Sep 17 00:00:00 2001 From: Tadeo Hepperle <62739623+tadeohepperle@users.noreply.github.com> Date: Wed, 14 Feb 2024 16:02:51 +0100 Subject: [PATCH 17/66] [Fix] Auto-generated PR: delete polkadot binaries from working directory. (#1431) * delete substrate and polkadot binaries * use nodes should move instead of copy and remove the archive --- .github/workflows/actions/use-nodes/action.yml | 9 +++++---- .github/workflows/update-artifacts.yml | 3 --- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/workflows/actions/use-nodes/action.yml b/.github/workflows/actions/use-nodes/action.yml index b1785f9067..bb2b9723d4 100644 --- a/.github/workflows/actions/use-nodes/action.yml +++ b/.github/workflows/actions/use-nodes/action.yml @@ -33,7 +33,8 @@ runs: ./substrate-node --version ./polkadot --version mkdir -p ~/.local/bin - cp ./substrate-node ~/.local/bin - cp ./polkadot ~/.local/bin - cp ./polkadot-execute-worker ~/.local/bin - cp ./polkadot-prepare-worker ~/.local/bin + mv ./substrate-node ~/.local/bin + mv ./polkadot ~/.local/bin + mv ./polkadot-execute-worker ~/.local/bin + mv ./polkadot-prepare-worker ~/.local/bin + rm ./polkadot.tar.gz diff --git a/.github/workflows/update-artifacts.yml b/.github/workflows/update-artifacts.yml index 49c2a86d18..491f8d4099 100644 --- a/.github/workflows/update-artifacts.yml +++ b/.github/workflows/update-artifacts.yml @@ -41,9 +41,6 @@ jobs: - name: Fetch Artifacts run: cargo run --bin artifacts - - name: Delete substrate node binary - run: rm ./substrate-node - - uses: actions/create-github-app-token@v1 id: app-token with: From e39791a5bc42aeb192cdd38d08ebf57569566c4b Mon Sep 17 00:00:00 2001 From: Tadeo Hepperle <62739623+tadeohepperle@users.noreply.github.com> Date: Wed, 14 Feb 2024 17:17:08 +0100 Subject: [PATCH 18/66] Add missing codegen mod in integration tests (#1418) * add codgen mod to the module tree * port codegen tests to scale-typegen * remove test flag --- .../src/full_client/codegen/codegen_tests.rs | 214 ------------------ .../src/full_client/codegen/documentation.rs | 2 +- .../src/full_client/codegen/mod.rs | 1 - .../integration-tests/src/full_client/mod.rs | 7 +- 4 files changed, 2 insertions(+), 222 deletions(-) delete mode 100644 testing/integration-tests/src/full_client/codegen/codegen_tests.rs diff --git a/testing/integration-tests/src/full_client/codegen/codegen_tests.rs b/testing/integration-tests/src/full_client/codegen/codegen_tests.rs deleted file mode 100644 index 5722270e24..0000000000 --- a/testing/integration-tests/src/full_client/codegen/codegen_tests.rs +++ /dev/null @@ -1,214 +0,0 @@ -// Copyright 2019-2023 Parity Technologies (UK) Ltd. -// This file is dual-licensed as Apache-2.0 or GPL-3.0. -// see LICENSE for license details. - -use frame_metadata::{ - v15::{ExtrinsicMetadata, RuntimeMetadataV15}, - RuntimeMetadataPrefixed, -}; -use scale_info::{meta_type, IntoPortable, PortableRegistry, Registry, TypeInfo}; -use subxt_codegen::CodegenBuilder; -use syn::__private::quote; - -fn generate_runtime_interface_from_metadata(metadata: RuntimeMetadataPrefixed) -> String { - // Generate a runtime interface from the provided metadata. - let metadata = metadata - .try_into() - .expect("frame_metadata should be convertible into Metadata"); - - CodegenBuilder::new() - .no_docs() - .generate(metadata) - .expect("API generation must be valid") - .to_string() -} - -fn generate_runtime_interface_with_type_registry(f: F) -> String -where - F: Fn(&mut scale_info::Registry), -{ - #[derive(TypeInfo)] - struct Runtime; - #[derive(TypeInfo)] - enum RuntimeCall {} - #[derive(TypeInfo)] - enum RuntimeEvent {} - #[derive(TypeInfo)] - pub enum DispatchError {} - - // We need these types for codegen to work: - let mut registry = scale_info::Registry::new(); - let ty = registry.register_type(&meta_type::()); - registry.register_type(&meta_type::()); - registry.register_type(&meta_type::()); - registry.register_type(&meta_type::()); - - // Allow custom types to be added for testing: - f(&mut registry); - - let extrinsic = ExtrinsicMetadata { - ty: meta_type::<()>(), - version: 0, - signed_extensions: vec![], - } - .into_portable(&mut registry); - let metadata = RuntimeMetadataV15 { - types: registry.into(), - pallets: Vec::new(), - extrinsic, - ty, - apis: vec![], - }; - - let metadata = RuntimeMetadataPrefixed::from(metadata); - generate_runtime_interface_from_metadata(metadata) -} - -#[test] -fn dupe_types_do_not_overwrite_each_other() { - let interface = generate_runtime_interface_with_type_registry(|registry| { - // Now we duplicate some types with same type info. We need two unique types here, - // and can't just add one type to the registry twice, because the registry knows if - // type IDs are the same. - enum Foo {} - impl TypeInfo for Foo { - type Identity = Self; - fn type_info() -> scale_info::Type { - scale_info::Type::builder() - .path(scale_info::Path::new("DuplicateType", "dupe_mod")) - .variant( - scale_info::build::Variants::new() - .variant("FirstDupeTypeVariant", |builder| builder.index(0)), - ) - } - } - enum Bar {} - impl TypeInfo for Bar { - type Identity = Self; - fn type_info() -> scale_info::Type { - scale_info::Type::builder() - .path(scale_info::Path::new("DuplicateType", "dupe_mod")) - .variant( - scale_info::build::Variants::new() - .variant("SecondDupeTypeVariant", |builder| builder.index(0)), - ) - } - } - - registry.register_type(&meta_type::()); - registry.register_type(&meta_type::()); - }); - - assert!(interface.contains("DuplicateType")); - assert!(interface.contains("FirstDupeTypeVariant")); - - assert!(interface.contains("DuplicateType2")); - assert!(interface.contains("SecondDupeTypeVariant")); -} - -#[test] -fn generic_types_overwrite_each_other() { - let interface = generate_runtime_interface_with_type_registry(|registry| { - // If we have two types mentioned in the registry that have generic params, - // only one type will be output (the codegen assumes that the generic param will disambiguate) - enum Foo {} - impl TypeInfo for Foo { - type Identity = Self; - fn type_info() -> scale_info::Type { - scale_info::Type::builder() - .path(scale_info::Path::new("DuplicateType", "dupe_mod")) - .type_params([scale_info::TypeParameter::new("T", Some(meta_type::()))]) - .variant(scale_info::build::Variants::new()) - } - } - enum Bar {} - impl TypeInfo for Bar { - type Identity = Self; - fn type_info() -> scale_info::Type { - scale_info::Type::builder() - .path(scale_info::Path::new("DuplicateType", "dupe_mod")) - .type_params([scale_info::TypeParameter::new("T", Some(meta_type::()))]) - .variant(scale_info::build::Variants::new()) - } - } - - registry.register_type(&meta_type::()); - registry.register_type(&meta_type::()); - }); - - assert!(interface.contains("DuplicateType")); - // We do _not_ expect this to exist, since a generic is present on the type: - assert!(!interface.contains("DuplicateType2")); -} - -#[test] -fn more_than_1_generic_parameters_work() { - #[allow(unused)] - #[derive(TypeInfo)] - struct Foo { - a: T, - b: U, - c: V, - d: W, - } - - #[allow(unused)] - #[derive(TypeInfo)] - struct Bar { - p: Foo, - q: Foo, - } - - let mut registry = Registry::new(); - registry.register_type(&meta_type::()); - let portable_types: PortableRegistry = registry.into(); - - let type_gen = subxt_codegen::TypeGenerator::new( - &portable_types, - "root", - Default::default(), - Default::default(), - CratePath::default(), - false, - ); - - let types = type_gen.generate_types_mod().unwrap(); - let generated_mod = quote::quote!( #types); - - let expected_mod = quote::quote! { - pub mod root { - use super::root; - pub mod integration_tests { - use super::root; - pub mod codegen { - use super::root; - pub mod codegen_tests { - use super::root; - pub struct Bar { - pub p: root::integration_tests::codegen::codegen_tests::Foo< - ::core::primitive::u32, - ::core::primitive::u32, - ::core::primitive::u64, - ::core::primitive::u128 - >, - pub q: root::integration_tests::codegen::codegen_tests::Foo< - ::core::primitive::u8, - ::core::primitive::u8, - ::core::primitive::u8, - ::core::primitive::u8 - >, - } - pub struct Foo<_0, _1, _2, _3> { - pub a: _0, - pub b: _1, - pub c: _2, - pub d: _3, - } - } - } - } - } - }; - - assert_eq!(generated_mod.to_string(), expected_mod.to_string()); -} diff --git a/testing/integration-tests/src/full_client/codegen/documentation.rs b/testing/integration-tests/src/full_client/codegen/documentation.rs index 8eead47760..fea4e78f64 100644 --- a/testing/integration-tests/src/full_client/codegen/documentation.rs +++ b/testing/integration-tests/src/full_client/codegen/documentation.rs @@ -4,7 +4,7 @@ use codec::Decode; use regex::Regex; -use subxt_codegen::{ syn, CodegenBuilder }; +use subxt_codegen::{syn, CodegenBuilder}; use subxt_metadata::Metadata; fn load_test_metadata() -> Metadata { diff --git a/testing/integration-tests/src/full_client/codegen/mod.rs b/testing/integration-tests/src/full_client/codegen/mod.rs index f2b3a97658..e17b92a0b7 100644 --- a/testing/integration-tests/src/full_client/codegen/mod.rs +++ b/testing/integration-tests/src/full_client/codegen/mod.rs @@ -14,5 +14,4 @@ #[allow(clippy::all)] mod polkadot; -mod codegen_tests; mod documentation; diff --git a/testing/integration-tests/src/full_client/mod.rs b/testing/integration-tests/src/full_client/mod.rs index 5b496ccea3..f5e0a72510 100644 --- a/testing/integration-tests/src/full_client/mod.rs +++ b/testing/integration-tests/src/full_client/mod.rs @@ -2,15 +2,10 @@ // This file is dual-licensed as Apache-2.0 or GPL-3.0. // see LICENSE for license details. -#[cfg(test)] mod blocks; -#[cfg(test)] mod client; -#[cfg(test)] +mod codegen; mod frame; -#[cfg(test)] mod metadata; -#[cfg(test)] mod runtime_api; -#[cfg(test)] mod storage; From 54470357165c08fd703373678f38dcc633465cec Mon Sep 17 00:00:00 2001 From: Tadeo Hepperle <62739623+tadeohepperle@users.noreply.github.com> Date: Thu, 15 Feb 2024 10:49:15 +0100 Subject: [PATCH 19/66] Subxt Metadata: `#[no_std]` compatibility (#1401) * no-std tests and porting of subxt-metadata * update pipeline * fix generate custom metadata test * fix cargo run command * adjust pipeline * remove prelude from subxt-metadata * revert autoformatting of Cargo.toml * remove alloc::format! again, still causes linker errors * add no-std-build for thumbv7em-none-eabi target * remove std feature flag * remove libc and add small readme with test instructions * change ci for nightly no std --- .github/workflows/rust.yml | 34 ++ Cargo.lock | 287 ++++++----- Cargo.toml | 10 +- metadata/Cargo.toml | 13 +- metadata/src/from_into/mod.rs | 18 +- metadata/src/from_into/v14.rs | 31 +- metadata/src/from_into/v15.rs | 4 +- metadata/src/lib.rs | 11 +- metadata/src/utils/ordered_map.rs | 16 +- metadata/src/utils/retain.rs | 3 +- metadata/src/utils/validation.rs | 3 +- .../src/utils/validation/outer_enum_hashes.rs | 2 +- metadata/src/utils/variant_index.rs | 8 +- subxt/Cargo.toml | 16 +- testing/generate-custom-metadata/Cargo.toml | 6 +- testing/no-std-tests/.gitignore | 1 + testing/no-std-tests/Cargo.lock | 487 ++++++++++++++++++ testing/no-std-tests/Cargo.toml | 21 + testing/no-std-tests/README.md | 7 + testing/no-std-tests/rust-toolchain | 1 + testing/no-std-tests/src/main.rs | 47 ++ 21 files changed, 851 insertions(+), 175 deletions(-) create mode 100644 testing/no-std-tests/.gitignore create mode 100644 testing/no-std-tests/Cargo.lock create mode 100644 testing/no-std-tests/Cargo.toml create mode 100644 testing/no-std-tests/README.md create mode 100644 testing/no-std-tests/rust-toolchain create mode 100644 testing/no-std-tests/src/main.rs diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index ac5c82e3e4..327a77bd31 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -419,3 +419,37 @@ jobs: - if: "failure()" uses: "andymckay/cancel-action@271cfbfa11ca9222f7be99a47e8f929574549e0a" # v0.4 + + no-std-tests: + name: "Test (no_std)" + runs-on: ubuntu-latest + needs: [machete, docs] + timeout-minutes: 30 + steps: + - name: Checkout sources + uses: actions/checkout@v4 + + # Note: needs nighly toolchain because otherwise we cannot define custom lang-items. + - name: Install Rust nightly toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: nightly + override: true + target: thumbv7em-none-eabi + + - name: Install the gcc-arm-none-eabi linker + run: sudo apt install gcc-arm-none-eabi + + - name: Rust Cache + uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 + + # Note: We currently do not have a way to run real tests in a `no_std` environment. + # We can only make sure that they compile to ARM thumb ISA. + # Running the binary and inspecting the output would require an actual machine with matching ISA or some sort of emulator. + - name: Compile `no-std-tests` crate to `thumbv7em-none-eabi` target. + run: cargo build --target thumbv7em-none-eabi + working-directory: testing/no-std-tests + + - if: "failure()" + uses: "andymckay/cancel-action@271cfbfa11ca9222f7be99a47e8f929574549e0a" # v0.4 diff --git a/Cargo.lock b/Cargo.lock index f082ecbe3d..6fe5bf2575 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -48,9 +48,9 @@ dependencies = [ [[package]] name = "ahash" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ "getrandom", "once_cell", @@ -59,9 +59,9 @@ dependencies = [ [[package]] name = "ahash" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01" +checksum = "42cd52102d3df161c77a887b608d7a4897d7cc112886a9537b738a887a03aaff" dependencies = [ "cfg-if", "getrandom", @@ -131,9 +131,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.4" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" +checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" [[package]] name = "anstyle-parse" @@ -346,13 +346,13 @@ checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" [[package]] name = "async-channel" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ca33f4bc4ed1babef42cad36cc1f51fa88be00420404e5b1e80ab1b18f7678c" +checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3" dependencies = [ "concurrent-queue", - "event-listener 4.0.3", - "event-listener-strategy", + "event-listener 5.0.0", + "event-listener-strategy 0.5.0", "futures-core", "pin-project-lite", ] @@ -373,9 +373,9 @@ dependencies = [ [[package]] name = "async-fs" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd1f344136bad34df1f83a47f3fd7f2ab85d75cb8a940af4ccf6d482a84ea01b" +checksum = "bc19683171f287921f2405677dd2ed2549c3b3bda697a563ebc3a121ace2aba1" dependencies = [ "async-lock 3.3.0", "blocking", @@ -384,9 +384,9 @@ dependencies = [ [[package]] name = "async-io" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb41eb19024a91746eba0773aa5e16036045bbf45733766661099e182ea6a744" +checksum = "8f97ab0c5b00a7cdbe5a371b9a782ee7be1316095885c8a4ea1daf490eb0ef65" dependencies = [ "async-lock 3.3.0", "cfg-if", @@ -395,7 +395,7 @@ dependencies = [ "futures-lite", "parking", "polling", - "rustix 0.38.30", + "rustix 0.38.31", "slab", "tracing", "windows-sys 0.52.0", @@ -417,7 +417,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" dependencies = [ "event-listener 4.0.3", - "event-listener-strategy", + "event-listener-strategy 0.4.0", "pin-project-lite", ] @@ -446,7 +446,7 @@ dependencies = [ "cfg-if", "event-listener 4.0.3", "futures-lite", - "rustix 0.38.30", + "rustix 0.38.31", "windows-sys 0.52.0", ] @@ -462,7 +462,7 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix 0.38.30", + "rustix 0.38.31", "signal-hook-registry", "slab", "windows-sys 0.48.0", @@ -793,9 +793,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.32" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41daef31d7a747c5c847246f36de49ced6f7403b4cdabc807a97b5cc184cda7a" +checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b" dependencies = [ "android-tzdata", "iana-time-zone", @@ -805,9 +805,9 @@ dependencies = [ [[package]] name = "ciborium" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" dependencies = [ "ciborium-io", "ciborium-ll", @@ -816,15 +816,15 @@ dependencies = [ [[package]] name = "ciborium-io" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" [[package]] name = "ciborium-ll" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" dependencies = [ "ciborium-io", "half", @@ -1033,9 +1033,9 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" dependencies = [ "cfg-if", ] @@ -1175,9 +1175,9 @@ dependencies = [ [[package]] name = "curve25519-dalek" -version = "4.1.1" +version = "4.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89b8c6a2e4b1f45971ad09761aafb85514a84744b67a95e32c3cc1352d1f65c" +checksum = "0a677b8922c94e01bdbb12126b0bc852f00447528dee1782229af9c720c3f348" dependencies = [ "cfg-if", "cpufeatures", @@ -1213,12 +1213,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.5" +version = "0.20.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc5d6b04b3fd0ba9926f945895de7d806260a2d7431ba82e7edaecb043c4c6b8" +checksum = "c376d08ea6aa96aafe61237c7200d1241cb177b7d3a542d791f2d118e9cbb955" dependencies = [ - "darling_core 0.20.5", - "darling_macro 0.20.5", + "darling_core 0.20.6", + "darling_macro 0.20.6", ] [[package]] @@ -1237,9 +1237,9 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.5" +version = "0.20.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04e48a959bcd5c761246f5d090ebc2fbf7b9cd527a492b07a67510c108f1e7e3" +checksum = "33043dcd19068b8192064c704b3f83eb464f91f1ff527b44a4e2b08d9cdb8855" dependencies = [ "fnv", "ident_case", @@ -1262,11 +1262,11 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.5" +version = "0.20.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1545d67a2149e1d93b7e5c7752dce5a7426eb5d1357ddcfd89336b94444f77" +checksum = "c5a91391accf613803c2a9bf9abccdbaa07c54b4244a5b64883f9c3c137c86be" dependencies = [ - "darling_core 0.20.5", + "darling_core 0.20.6", "quote", "syn 2.0.48", ] @@ -1423,11 +1423,11 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f628eaec48bfd21b865dc2950cfa014450c01d2fa2b69a86c2fd5844ec523c0" +checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" dependencies = [ - "curve25519-dalek 4.1.1", + "curve25519-dalek 4.1.2", "ed25519", "serde", "sha2 0.10.8", @@ -1455,7 +1455,7 @@ version = "4.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d9ce6874da5d4415896cd45ffbc4d1cfc0c4f9c079427bd870742c30f2f65a9" dependencies = [ - "curve25519-dalek 4.1.1", + "curve25519-dalek 4.1.2", "ed25519", "hashbrown 0.14.3", "hex", @@ -1509,6 +1509,17 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "event-listener" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b72557800024fabbaa2449dd4bf24e37b93702d457a4d4f2b0dd1f0f039f20c1" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + [[package]] name = "event-listener-strategy" version = "0.4.0" @@ -1519,6 +1530,16 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "event-listener-strategy" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "feedafcaa9b749175d5ac357452a9d41ea2911da598fde46ce1fe02c37751291" +dependencies = [ + "event-listener 5.0.0", + "pin-project-lite", +] + [[package]] name = "expander" version = "2.0.0" @@ -1534,9 +1555,9 @@ dependencies = [ [[package]] name = "eyre" -version = "0.6.11" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6267a1fa6f59179ea4afc8e50fd8612a3cc60bc858f786ff877a4a8cb042799" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" dependencies = [ "indenter", "once_cell", @@ -1562,9 +1583,9 @@ checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "fiat-crypto" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27573eac26f4dd11e2b1916c3fe1baa56407c83c71a773a8ba17ec0bca03b6b7" +checksum = "1676f435fc1dadde4d03e43f5d62b259e1ce5f40bd4ffb21db2b42ebe59c1382" [[package]] name = "fixed-hash" @@ -1882,7 +1903,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 2.1.0", + "indexmap 2.2.3", "slab", "tokio", "tokio-util", @@ -1891,9 +1912,13 @@ dependencies = [ [[package]] name = "half" -version = "1.8.2" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" +checksum = "bc52e53916c08643f1b56ec082790d1e86a32e58dc5268f897f313fbae7b4872" +dependencies = [ + "cfg-if", + "crunchy", +] [[package]] name = "hash-db" @@ -1916,7 +1941,7 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "ahash 0.7.7", + "ahash 0.7.8", ] [[package]] @@ -1925,7 +1950,7 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ - "ahash 0.8.7", + "ahash 0.8.8", ] [[package]] @@ -1934,7 +1959,7 @@ version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" dependencies = [ - "ahash 0.8.7", + "ahash 0.8.8", "allocator-api2", "serde", ] @@ -1956,9 +1981,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.4" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d3d0e0f38255e7fa3cf31335b3a56f05febd18025f4db5ef7a0cfb4f8da651f" +checksum = "bd5256b483761cd23699d0da46cc6fd2ee3be420bbe6d020ae4a091e70b7e9fd" [[package]] name = "hex" @@ -2091,9 +2116,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.59" +version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6a67363e2aa4443928ce15e57ebae94fd8949958fd1223c4cfc0cd473ad7539" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -2176,9 +2201,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.1.0" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +checksum = "233cf39063f058ea2caae4091bf4a3ef70a653afbc026f5c4a4135d114e3c177" dependencies = [ "equivalent", "hashbrown 0.14.3", @@ -2258,7 +2283,7 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.4", + "hermit-abi 0.3.6", "libc", "windows-sys 0.48.0", ] @@ -2274,9 +2299,9 @@ dependencies = [ [[package]] name = "itertools" -version = "0.12.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" dependencies = [ "either", ] @@ -2420,9 +2445,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.152" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "libm" @@ -2508,9 +2533,9 @@ checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "lru" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2994eeba8ed550fd9b47a0b38f0242bc3344e496483c6180b69139cc2fa5d1d7" +checksum = "db2c024b41519440580066ba82aab04092b333e09066a5eb86c7c4890df31f22" dependencies = [ "hashbrown 0.14.3", ] @@ -2545,7 +2570,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2cffa4ad52c6f791f4f8b15f0c05f9824b2ced1160e88cc393d64fff9a8ac64" dependencies = [ - "rustix 0.38.30", + "rustix 0.38.31", ] [[package]] @@ -2598,9 +2623,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" dependencies = [ "adler", ] @@ -2677,11 +2702,10 @@ dependencies = [ [[package]] name = "num-integer" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "autocfg", "num-traits", ] @@ -2699,9 +2723,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" dependencies = [ "autocfg", ] @@ -2712,7 +2736,7 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.4", + "hermit-abi 0.3.6", "libc", ] @@ -2966,14 +2990,14 @@ dependencies = [ [[package]] name = "polling" -version = "3.3.2" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "545c980a3880efd47b2e262f6a4bb6daad6555cf3367aa9c4e52895f69537a41" +checksum = "30054e72317ab98eddd8561db0f6524df3367636884b7b21b703e4b280a84a14" dependencies = [ "cfg-if", "concurrent-queue", "pin-project-lite", - "rustix 0.38.30", + "rustix 0.38.31", "tracing", "windows-sys 0.52.0", ] @@ -3043,7 +3067,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" dependencies = [ - "toml_edit 0.21.0", + "toml_edit 0.21.1", ] [[package]] @@ -3212,7 +3236,7 @@ checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.4", + "regex-automata 0.4.5", "regex-syntax 0.8.2", ] @@ -3227,9 +3251,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b7fa1134405e2ec9353fd416b17f8dacd46c473d7d3fd1cf202706a14eb792a" +checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" dependencies = [ "aho-corasick", "memchr", @@ -3305,9 +3329,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.30" +version = "0.38.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca" +checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" dependencies = [ "bitflags 2.4.2", "errno", @@ -3337,7 +3361,7 @@ dependencies = [ "log", "ring", "rustls-pki-types", - "rustls-webpki 0.102.1", + "rustls-webpki 0.102.2", "subtle", "zeroize", ] @@ -3388,9 +3412,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e9d979b3ce68192e42760c7810125eb6cf2ea10efae545a156063e61f314e2a" +checksum = "048a63e5b3ac996d78d402940b5fa47973d2d080c6c6fffa1d0f19c4445310b7" [[package]] name = "rustls-webpki" @@ -3404,9 +3428,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.102.1" +version = "0.102.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef4ca26037c909dedb327b48c3327d0ba91d3dd3c4e05dad328f210ffb68e95b" +checksum = "faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610" dependencies = [ "ring", "rustls-pki-types", @@ -3604,7 +3628,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "772575a524feeb803e5b0fcbc6dd9f367e579488197c94c6e4023aad2305774d" dependencies = [ - "ahash 0.8.7", + "ahash 0.8.8", "cfg-if", "hashbrown 0.13.2", ] @@ -3634,7 +3658,7 @@ dependencies = [ "aead", "arrayref", "arrayvec 0.7.4", - "curve25519-dalek 4.1.1", + "curve25519-dalek 4.1.2", "getrandom_or_panic", "merlin 3.0.0", "rand_core 0.6.4", @@ -3932,7 +3956,7 @@ dependencies = [ "hashbrown 0.14.3", "hex", "hmac 0.12.1", - "itertools 0.12.0", + "itertools 0.12.1", "libm", "libsecp256k1", "merlin 3.0.0", @@ -3981,7 +4005,7 @@ dependencies = [ "futures-util", "hashbrown 0.14.3", "hex", - "itertools 0.12.0", + "itertools 0.12.1", "log", "lru", "no-std-net", @@ -4314,7 +4338,7 @@ version = "29.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e4d24d84a0beb44a71dcac1b41980e1edf7fb722c7f3046710136a283cd479b" dependencies = [ - "ahash 0.8.7", + "ahash 0.8.8", "hash-db", "lazy_static", "memory-db", @@ -4596,7 +4620,7 @@ dependencies = [ name = "subxt-macro" version = "0.34.0" dependencies = [ - "darling 0.20.5", + "darling 0.20.6", "parity-scale-codec", "proc-macro-error", "quote", @@ -4612,11 +4636,12 @@ dependencies = [ "assert_matches", "bitvec", "criterion", + "derive_more", "frame-metadata 16.0.0", + "hashbrown 0.14.3", "parity-scale-codec", "scale-info", "sp-core-hashing", - "thiserror", ] [[package]] @@ -4850,14 +4875,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35" +checksum = "9a9aad4a3066010876e8dcf5a8a06e70a558751117a145c6ce2b82c2e2054290" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.21.0", + "toml_edit 0.22.5", ] [[package]] @@ -4875,9 +4900,9 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.1.0", + "indexmap 2.2.3", "toml_datetime", - "winnow", + "winnow 0.5.40", ] [[package]] @@ -4886,22 +4911,33 @@ version = "0.20.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" dependencies = [ - "indexmap 2.1.0", + "indexmap 2.2.3", "toml_datetime", - "winnow", + "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.21.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ - "indexmap 2.1.0", + "indexmap 2.2.3", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99e68c159e8f5ba8a28c4eb7b0c0c190d77bb479047ca713270048145a9ad28a" +dependencies = [ + "indexmap 2.2.3", "serde", "serde_spanned", "toml_datetime", - "winnow", + "winnow 0.6.1", ] [[package]] @@ -5320,9 +5356,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.40" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bde2032aeb86bdfaecc8b261eef3cba735cc426c1f3a3416d1e0791be95fc461" +checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97" dependencies = [ "cfg-if", "js-sys", @@ -5361,9 +5397,9 @@ checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" [[package]] name = "wasmi" -version = "0.31.1" +version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acfc1e384a36ca532d070a315925887247f3c7e23567e23e0ac9b1c5d6b8bf76" +checksum = "77a8281d1d660cdf54c76a3efa9ddd0c270cada1383a995db3ccb43d166456c7" dependencies = [ "smallvec", "spin", @@ -5374,9 +5410,9 @@ dependencies = [ [[package]] name = "wasmi_arena" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "401c1f35e413fac1846d4843745589d9ec678977ab35a384db8ae7830525d468" +checksum = "104a7f73be44570cac297b3035d76b169d6599637631cf37a1703326a0727073" [[package]] name = "wasmi_core" @@ -5543,9 +5579,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.67" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed" +checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446" dependencies = [ "js-sys", "wasm-bindgen", @@ -5560,7 +5596,7 @@ dependencies = [ "either", "home", "once_cell", - "rustix 0.38.30", + "rustix 0.38.31", "windows-sys 0.48.0", ] @@ -5804,9 +5840,18 @@ checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "winnow" -version = "0.5.34" +version = "0.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7cf47b659b318dccbd69cc4797a39ae128f533dce7902a1096044d1967b9c16" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d90f4e0f530c4c69f62b80d839e9ef3855edc9cba471a160c4d692deed62b401" dependencies = [ "memchr", ] @@ -5822,11 +5867,11 @@ dependencies = [ [[package]] name = "x25519-dalek" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb66477291e7e8d2b0ff1bcb900bf29489a9692816d79874bea351e7a8b6de96" +checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" dependencies = [ - "curve25519-dalek 4.1.1", + "curve25519-dalek 4.1.2", "rand_core 0.6.4", "serde", "zeroize", diff --git a/Cargo.toml b/Cargo.toml index 1bc484aca6..7ba4afe8a2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,7 +18,7 @@ members = [ # We exclude any crates that would depend on non mutually # exclusive feature flags and thus can't compile with the # workspace: -exclude = ["testing/wasm-rpc-tests", "testing/wasm-lightclient-tests", "signer/wasm-tests", "examples/wasm-example", "examples/parachain-example"] +exclude = ["testing/no-std-tests", "testing/wasm-rpc-tests", "testing/wasm-lightclient-tests", "signer/wasm-tests", "examples/wasm-example", "examples/parachain-example"] resolver = "2" [workspace.package] @@ -58,15 +58,17 @@ bitvec = { version = "1", default-features = false } blake2 = { version = "0.10.6", default-features = false } clap = { version = "4.5.0", features = ["derive", "cargo"] } criterion = "0.4" -codec = { package = "parity-scale-codec", version = "3.4.0", default-features = false } +codec = { package = "parity-scale-codec", version = "3.6.9", default-features = false } color-eyre = "0.6.1" console_error_panic_hook = "0.1.7" darling = "0.20.5" derivative = "2.2.0" +derive_more = "0.99.17" either = "1.10.0" -frame-metadata = { version = "16.0.0", default-features = false, features = ["current", "std"] } +frame-metadata = { version = "16.0.0", default-features = false } futures = { version = "0.3.30", default-features = false, features = ["std"] } getrandom = { version = "0.2", default-features = false } +hashbrown = "0.14.3" hex = "0.4.3" heck = "0.4.1" impl-serde = { version = "0.4.0" } @@ -78,7 +80,7 @@ proc-macro-error = "1.0.4" proc-macro2 = "1.0.78" quote = "1.0.35" regex = "1.10.3" -scale-info = "2.10.0" +scale-info = { version = "2.10.0", default-features = false } scale-value = "0.13.0" scale-bits = "0.4.0" scale-decode = "0.10.0" diff --git a/metadata/Cargo.toml b/metadata/Cargo.toml index 6e3669278d..a6e15de0aa 100644 --- a/metadata/Cargo.toml +++ b/metadata/Cargo.toml @@ -13,12 +13,17 @@ documentation.workspace = true homepage.workspace = true description = "Command line utilities for checking metadata compatibility between nodes." +[features] +default = ["std"] +std = ["scale-info/std", "frame-metadata/std"] + [dependencies] -codec = { package = "parity-scale-codec", workspace = true, features = ["derive"] } -frame-metadata = { workspace = true } -scale-info = { workspace = true } +scale-info = { workspace = true, default-features = false } +frame-metadata = { workspace = true, default-features = false, features = ["current", "decode"] } +codec = { package = "parity-scale-codec", workspace = true, default-features = false, features = ["derive"] } sp-core-hashing = { workspace = true } -thiserror = { workspace = true } +hashbrown = { workspace = true } +derive_more = { workspace = true } [dev-dependencies] bitvec = { workspace = true, features = ["alloc"] } diff --git a/metadata/src/from_into/mod.rs b/metadata/src/from_into/mod.rs index 8170bc6133..1a950e1d5a 100644 --- a/metadata/src/from_into/mod.rs +++ b/metadata/src/from_into/mod.rs @@ -2,31 +2,37 @@ // This file is dual-licensed as Apache-2.0 or GPL-3.0. // see LICENSE for license details. +use alloc::string::String; +use derive_more::Display; + mod v14; mod v15; /// An error emitted if something goes wrong converting [`frame_metadata`] /// types into [`crate::Metadata`]. -#[derive(Debug, thiserror::Error, PartialEq, Eq)] +#[derive(Debug, Display, PartialEq, Eq)] #[non_exhaustive] pub enum TryFromError { /// Type missing from type registry - #[error("Type id {0} is expected but not found in the type registry")] + #[display(fmt = "Type id {_0} is expected but not found in the type registry")] TypeNotFound(u32), /// Type was not a variant/enum type - #[error("Type {0} was not a variant/enum type, but is expected to be one")] + #[display(fmt = "Type {_0} was not a variant/enum type, but is expected to be one")] VariantExpected(u32), /// An unsupported metadata version was provided. - #[error("Cannot convert v{0} metadata into Metadata type")] + #[display(fmt = "Cannot convert v{_0} metadata into Metadata type")] UnsupportedMetadataVersion(u32), /// Type name missing from type registry - #[error("Type name {0} is expected but not found in the type registry")] + #[display(fmt = "Type name {_0} is expected but not found in the type registry")] TypeNameNotFound(String), /// Invalid type path. - #[error("Type has an invalid path {0}")] + #[display(fmt = "Type has an invalid path {_0}")] InvalidTypePath(String), } +#[cfg(feature = "std")] +impl std::error::Error for TryFromError {} + impl From for frame_metadata::RuntimeMetadataPrefixed { fn from(value: crate::Metadata) -> Self { let m: frame_metadata::v15::RuntimeMetadataV15 = value.into(); diff --git a/metadata/src/from_into/v14.rs b/metadata/src/from_into/v14.rs index 7df5e95347..b9b13cf681 100644 --- a/metadata/src/from_into/v14.rs +++ b/metadata/src/from_into/v14.rs @@ -2,11 +2,15 @@ // This file is dual-licensed as Apache-2.0 or GPL-3.0. // see LICENSE for license details. -use std::collections::HashMap; - use super::TryFromError; use crate::Metadata; +use alloc::borrow::ToOwned; +use alloc::string::String; +use alloc::vec; +use alloc::vec::Vec; +use core::fmt::Write; use frame_metadata::{v14, v15}; +use hashbrown::HashMap; use scale_info::TypeDef; impl TryFrom for Metadata { @@ -31,27 +35,27 @@ fn v15_to_v14(mut metadata: v15::RuntimeMetadataV15) -> v14::RuntimeMetadataV14 let extrinsic_type = scale_info::Type { path: scale_info::Path { segments: vec![ - "primitives".to_string(), - "runtime".to_string(), - "generic".to_string(), - "UncheckedExtrinsic".to_string(), + "primitives".to_owned(), + "runtime".to_owned(), + "generic".to_owned(), + "UncheckedExtrinsic".to_owned(), ], }, type_params: vec![ scale_info::TypeParameter:: { - name: "Address".to_string(), + name: "Address".to_owned(), ty: Some(metadata.extrinsic.address_ty), }, scale_info::TypeParameter:: { - name: "Call".to_string(), + name: "Call".to_owned(), ty: Some(metadata.extrinsic.call_ty), }, scale_info::TypeParameter:: { - name: "Signature".to_string(), + name: "Signature".to_owned(), ty: Some(metadata.extrinsic.signature_ty), }, scale_info::TypeParameter:: { - name: "Extra".to_string(), + name: "Extra".to_owned(), ty: Some(metadata.extrinsic.extra_ty), }, ], @@ -342,7 +346,7 @@ fn generate_outer_enums( let Some(last) = call_path.last_mut() else { return Err(TryFromError::InvalidTypePath("RuntimeCall".into())); }; - *last = "RuntimeError".to_string(); + *last = "RuntimeError".to_owned(); generate_outer_error_enum_type(metadata, call_path) }; @@ -368,7 +372,10 @@ fn generate_outer_error_enum_type( return None; }; - let path = format!("{}Error", pallet.name); + // Note: using the `alloc::format!` macro like in `let path = format!("{}Error", pallet.name);` + // leads to linker errors about extern function `_Unwind_Resume` not being defined. + let mut path = String::new(); + write!(path, "{}Error", pallet.name).expect("Cannot panic, qed;"); let ty = error.ty.id.into(); Some(scale_info::Variant { diff --git a/metadata/src/from_into/v15.rs b/metadata/src/from_into/v15.rs index f210089dce..37e4336543 100644 --- a/metadata/src/from_into/v15.rs +++ b/metadata/src/from_into/v15.rs @@ -3,6 +3,7 @@ // see LICENSE for license details. use super::TryFromError; + use crate::utils::variant_index::VariantIndex; use crate::{ utils::ordered_map::OrderedMap, ArcStr, ConstantMetadata, ExtrinsicMetadata, Metadata, @@ -10,9 +11,10 @@ use crate::{ RuntimeApiMethodParamMetadata, SignedExtensionMetadata, StorageEntryMetadata, StorageEntryModifier, StorageEntryType, StorageHasher, StorageMetadata, }; +use alloc::borrow::ToOwned; use frame_metadata::v15; +use hashbrown::HashMap; use scale_info::form::PortableForm; -use std::collections::HashMap; // Converting from V15 metadata into our Subxt repr. mod from_v15 { diff --git a/metadata/src/lib.rs b/metadata/src/lib.rs index 4ebc68a44e..59a3ba484b 100644 --- a/metadata/src/lib.rs +++ b/metadata/src/lib.rs @@ -14,14 +14,19 @@ //! 2. Obtaining [`frame_metadata::RuntimeMetadataPrefixed`], and then //! using `.try_into()` to convert it into [`Metadata`]. +#![cfg_attr(not(feature = "std"), no_std)] #![deny(missing_docs)] +extern crate alloc; + mod from_into; mod utils; +use alloc::string::String; +use alloc::sync::Arc; +use alloc::vec::Vec; +use hashbrown::HashMap; use scale_info::{form::PortableForm, PortableRegistry, Variant}; -use std::collections::HashMap; -use std::sync::Arc; use utils::variant_index::VariantIndex; use utils::{ordered_map::OrderedMap, validation::outer_enum_hashes::OuterEnumHashes}; @@ -200,7 +205,7 @@ impl Metadata { // its name to ensure that every unique type has a unique path, too. if *visited_count > 1 { if let Some(name) = ty.ty.path.segments.last_mut() { - *name = format!("{name}{visited_count}"); + *name = alloc::format!("{name}{visited_count}"); } } } diff --git a/metadata/src/utils/ordered_map.rs b/metadata/src/utils/ordered_map.rs index c9a9a40f46..614c25cf65 100644 --- a/metadata/src/utils/ordered_map.rs +++ b/metadata/src/utils/ordered_map.rs @@ -2,7 +2,9 @@ // This file is dual-licensed as Apache-2.0 or GPL-3.0. // see LICENSE for license details. -use std::collections::HashMap; +use alloc::vec::Vec; +use core::mem; +use hashbrown::HashMap; /// A minimal ordered map to let one search for /// things by key or get the values in insert order. @@ -23,7 +25,7 @@ impl Default for OrderedMap { impl OrderedMap where - K: PartialEq + Eq + std::hash::Hash, + K: PartialEq + Eq + core::hash::Hash, { /// Create a new, empty [`OrderedMap`]. pub fn new() -> Self { @@ -47,8 +49,8 @@ where where F: FnMut(&V) -> bool, { - let values = std::mem::take(&mut self.values); - let map = std::mem::take(&mut self.map); + let values = mem::take(&mut self.values); + let map = mem::take(&mut self.map); // Filter the values, storing a map from old to new positions: let mut new_values = Vec::new(); @@ -78,8 +80,8 @@ where /// Get an item by its key. pub fn get_by_key(&self, key: &Q) -> Option<&V> where - K: std::borrow::Borrow, - Q: std::hash::Hash + Eq + ?Sized, + K: alloc::borrow::Borrow, + Q: core::hash::Hash + Eq + ?Sized, { self.map.get(key).and_then(|&v| self.values.get(v)) } @@ -107,7 +109,7 @@ where impl FromIterator<(K, V)> for OrderedMap where - K: PartialEq + Eq + std::hash::Hash, + K: PartialEq + Eq + core::hash::Hash, { fn from_iter>(iter: T) -> Self { let mut map = OrderedMap::new(); diff --git a/metadata/src/utils/retain.rs b/metadata/src/utils/retain.rs index d33315c2aa..a160609597 100644 --- a/metadata/src/utils/retain.rs +++ b/metadata/src/utils/retain.rs @@ -8,8 +8,9 @@ use crate::{ ExtrinsicMetadata, Metadata, OuterEnumsMetadata, PalletMetadataInner, RuntimeApiMetadataInner, StorageEntryType, }; +use alloc::collections::BTreeMap; +use hashbrown::HashSet; use scale_info::TypeDef; -use std::collections::{BTreeMap, HashSet}; /// Collect all type IDs needed to represent the provided pallet. fn collect_pallet_types(pallet: &PalletMetadataInner, type_ids: &mut HashSet) { diff --git a/metadata/src/utils/validation.rs b/metadata/src/utils/validation.rs index 81c50b4593..2b1b1f5e33 100644 --- a/metadata/src/utils/validation.rs +++ b/metadata/src/utils/validation.rs @@ -8,9 +8,10 @@ use crate::{ CustomMetadata, CustomValueMetadata, ExtrinsicMetadata, Metadata, PalletMetadata, RuntimeApiMetadata, RuntimeApiMethodMetadata, StorageEntryMetadata, StorageEntryType, }; +use alloc::vec::Vec; +use hashbrown::HashMap; use outer_enum_hashes::OuterEnumHashes; use scale_info::{form::PortableForm, Field, PortableRegistry, TypeDef, TypeDefVariant, Variant}; -use std::collections::HashMap; pub mod outer_enum_hashes; diff --git a/metadata/src/utils/validation/outer_enum_hashes.rs b/metadata/src/utils/validation/outer_enum_hashes.rs index 33bd4f52c1..5e50fcb40e 100644 --- a/metadata/src/utils/validation/outer_enum_hashes.rs +++ b/metadata/src/utils/validation/outer_enum_hashes.rs @@ -1,6 +1,6 @@ //! Hash representations of the `frame_metadata::v15::OuterEnums`. -use std::collections::HashMap; +use hashbrown::HashMap; use scale_info::{PortableRegistry, TypeDef}; diff --git a/metadata/src/utils/variant_index.rs b/metadata/src/utils/variant_index.rs index bcc8a78902..9019aee3ab 100644 --- a/metadata/src/utils/variant_index.rs +++ b/metadata/src/utils/variant_index.rs @@ -2,8 +2,10 @@ // This file is dual-licensed as Apache-2.0 or GPL-3.0. // see LICENSE for license details. +use alloc::borrow::ToOwned; +use alloc::string::String; +use hashbrown::HashMap; use scale_info::{form::PortableForm, PortableRegistry, TypeDef, Variant}; -use std::collections::HashMap; /// Given some type ID and type registry, build a couple of /// indexes to look up variants by index or name. If the ID provided @@ -62,8 +64,8 @@ impl VariantIndex { types: &'a PortableRegistry, ) -> Option<&'a Variant> where - String: std::borrow::Borrow, - K: std::hash::Hash + Eq + ?Sized, + String: alloc::borrow::Borrow, + K: core::hash::Hash + Eq + ?Sized, { let pos = *self.by_name.get(name)?; let variants = Self::get(variant_id, types)?; diff --git a/subxt/Cargo.toml b/subxt/Cargo.toml index 5ff125d191..4a18bb2b41 100644 --- a/subxt/Cargo.toml +++ b/subxt/Cargo.toml @@ -25,20 +25,20 @@ default = ["jsonrpsee", "native"] # Enable this for native (ie non web/wasm builds). # Exactly 1 of "web" and "native" is expected. native = [ - "jsonrpsee?/async-client", - "jsonrpsee?/client-ws-transport-native-tls", - "subxt-lightclient?/native", + "jsonrpsee?/async-client", + "jsonrpsee?/client-ws-transport-native-tls", + "subxt-lightclient?/native", "tokio-util" ] # Enable this for web/wasm builds. # Exactly 1 of "web" and "native" is expected. web = [ - "jsonrpsee?/async-wasm-client", - "jsonrpsee?/client-web-transport", - "getrandom/js", - "subxt-lightclient?/web", - "subxt-macro/web", + "jsonrpsee?/async-wasm-client", + "jsonrpsee?/client-web-transport", + "getrandom/js", + "subxt-lightclient?/web", + "subxt-macro/web", "instant/wasm-bindgen" ] diff --git a/testing/generate-custom-metadata/Cargo.toml b/testing/generate-custom-metadata/Cargo.toml index 9ebff6bb13..14da285a13 100644 --- a/testing/generate-custom-metadata/Cargo.toml +++ b/testing/generate-custom-metadata/Cargo.toml @@ -12,6 +12,6 @@ homepage.workspace = true # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -scale-info = { workspace = true, features = ["bit-vec"] } -frame-metadata = { workspace = true } -codec = { package = "parity-scale-codec", workspace = true, features = ["derive", "bit-vec"] } +scale-info = { workspace = true, features = ["std", "bit-vec"] } +frame-metadata = { workspace = true, features = ["decode", "current"] } +codec = { package = "parity-scale-codec", workspace = true, features = ["std", "derive", "bit-vec"] } diff --git a/testing/no-std-tests/.gitignore b/testing/no-std-tests/.gitignore new file mode 100644 index 0000000000..c41cc9e35e --- /dev/null +++ b/testing/no-std-tests/.gitignore @@ -0,0 +1 @@ +/target \ No newline at end of file diff --git a/testing/no-std-tests/Cargo.lock b/testing/no-std-tests/Cargo.lock new file mode 100644 index 0000000000..ee4afadfe7 --- /dev/null +++ b/testing/no-std-tests/Cargo.lock @@ -0,0 +1,487 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "ahash" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + +[[package]] +name = "arrayref" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "blake2b_simd" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23285ad32269793932e830392f2fe2f83e26488fd3ec778883a93c8323735780" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "byte-slice-cast" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "constant_time_eq" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn 1.0.109", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "frame-metadata" +version = "16.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cf1549fba25a6fcac22785b61698317d958e96cac72a59102ea45b9ae64692" +dependencies = [ + "cfg-if", + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "hashbrown" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +dependencies = [ + "ahash", + "allocator-api2", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "indexmap" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "libc" +version = "0.2.152" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" + +[[package]] +name = "libc_alloc" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a835c038b748123287f9fb1743d565e7c635879997f43c345a18a026690364e" + +[[package]] +name = "memchr" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "parity-scale-codec" +version = "3.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "881331e34fa842a2fb61cc2db9643a8fedc615e47cfcc52597d1af0db9a7e8fe" +dependencies = [ + "arrayvec", + "byte-slice-cast", + "impl-trait-for-tuples", + "parity-scale-codec-derive", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be30eaf4b0a9fba5336683b38de57bb86d179a35862ba6bfcf57625d006bde5b" +dependencies = [ + "proc-macro-crate 2.0.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97dc5fea232fc28d2f597b37c4876b348a40e33f3b02cc975c8d006d78d94b1a" +dependencies = [ + "toml_datetime", + "toml_edit 0.20.2", +] + +[[package]] +name = "proc-macro2" +version = "1.0.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "scale-info" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7d66a1128282b7ef025a8ead62a4a9fcf017382ec53b8ffbf4d7bf77bd3c60" +dependencies = [ + "cfg-if", + "derive_more", + "parity-scale-codec", + "scale-info-derive", +] + +[[package]] +name = "scale-info-derive" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abf2c68b89cafb3b8d918dd07b42be0da66ff202cf1155c5739a4e0c1ea0dc19" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "semver" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest", + "keccak", +] + +[[package]] +name = "sp-core-hashing" +version = "15.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0f4990add7b2cefdeca883c0efa99bb4d912cb2196120e1500c0cc099553b0" +dependencies = [ + "blake2b_simd", + "byteorder", + "digest", + "sha2", + "sha3", + "twox-hash", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "subxt-core-no-std-tests" +version = "0.0.0" +dependencies = [ + "libc_alloc", + "parity-scale-codec", + "subxt-metadata", +] + +[[package]] +name = "subxt-metadata" +version = "0.34.0" +dependencies = [ + "derive_more", + "frame-metadata", + "hashbrown", + "parity-scale-codec", + "scale-info", + "sp-core-hashing", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "twox-hash" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" +dependencies = [ + "cfg-if", + "digest", + "static_assertions", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "winnow" +version = "0.5.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7cf47b659b318dccbd69cc4797a39ae128f533dce7902a1096044d1967b9c16" +dependencies = [ + "memchr", +] + +[[package]] +name = "zerocopy" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] diff --git a/testing/no-std-tests/Cargo.toml b/testing/no-std-tests/Cargo.toml new file mode 100644 index 0000000000..503326d5b5 --- /dev/null +++ b/testing/no-std-tests/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "subxt-core-no-std-tests" +edition = "2021" +publish = false +version = "0.0.0" +resolver = "2" + +[dependencies] +subxt-metadata = { path = "../../metadata", default-features = false } +codec = { package = "parity-scale-codec", version = "3.6.9", default-features = false, features = ["derive"] } +libc_alloc = { version = "1.0.6" } + +[profile.dev] +panic = "abort" + +[profile.release] +panic = "abort" + +# this shouldn't be needed, it's in workspace.exclude, but still +# I get the complaint unless I add it... +[workspace] diff --git a/testing/no-std-tests/README.md b/testing/no-std-tests/README.md new file mode 100644 index 0000000000..2b662bb455 --- /dev/null +++ b/testing/no-std-tests/README.md @@ -0,0 +1,7 @@ +# No-Std Testing Crate + +To test the no-std compatibility of various subxt-* crates, please run: + +```bash +cargo build --target thumbv7em-none-eabi +``` \ No newline at end of file diff --git a/testing/no-std-tests/rust-toolchain b/testing/no-std-tests/rust-toolchain new file mode 100644 index 0000000000..07ade694b1 --- /dev/null +++ b/testing/no-std-tests/rust-toolchain @@ -0,0 +1 @@ +nightly \ No newline at end of file diff --git a/testing/no-std-tests/src/main.rs b/testing/no-std-tests/src/main.rs new file mode 100644 index 0000000000..09d8775fc5 --- /dev/null +++ b/testing/no-std-tests/src/main.rs @@ -0,0 +1,47 @@ +// Copyright 2019-2023 Parity Technologies (UK) Ltd. +// This file is dual-licensed as Apache-2.0 or GPL-3.0. +// see LICENSE for license details. + +#![allow(internal_features)] +#![feature(lang_items, start)] +#![feature(alloc_error_handler)] +#![no_std] + +#[start] +fn start(_argc: isize, _argv: *const *const u8) -> isize { + compile_test(); + 0 +} + +#[lang = "eh_personality"] +#[no_mangle] +pub extern "C" fn rust_eh_personality() {} + +#[panic_handler] +fn panic(_info: &core::panic::PanicInfo) -> ! { + loop {} +} + +use libc_alloc::LibcAlloc; + +#[global_allocator] +static ALLOCATOR: LibcAlloc = LibcAlloc; + +////////////////////////////////////////////////////////////////////////////// + +extern crate alloc; + +/// Including code here makes sure it is not pruned. +/// We want all code included to compile fine for the `thumbv7em-none-eabi` target. +fn compile_test() { + subxt_metadata_compiles(); +} + +fn subxt_metadata_compiles() { + use codec::Decode; + let bytes: alloc::vec::Vec = alloc::vec![0, 1, 2, 3, 4]; + subxt_metadata::Metadata::decode(&mut &bytes[..]).expect_err("invalid byte sequence"); + + const METADATA: &[u8] = include_bytes!("../../../artifacts/polkadot_metadata_small.scale"); + subxt_metadata::Metadata::decode(&mut &METADATA[..]).expect("should be valid metadata"); +} From 89c886429f6a5a44dcb44f7e7b0d7a536cb98ab1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Feb 2024 09:32:17 +0100 Subject: [PATCH 20/66] build(deps): bump JasonEtco/create-an-issue from 2.9.1 to 2.9.2 (#1435) Bumps [JasonEtco/create-an-issue](https://github.com/jasonetco/create-an-issue) from 2.9.1 to 2.9.2. - [Release notes](https://github.com/jasonetco/create-an-issue/releases) - [Commits](https://github.com/jasonetco/create-an-issue/compare/e27dddc79c92bc6e4562f268fffa5ed752639abd...1b14a70e4d8dc185e5cc76d3bec9eab20257b2c5) --- updated-dependencies: - dependency-name: JasonEtco/create-an-issue dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/nightly.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index e19296d1da..889737598e 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -37,7 +37,7 @@ jobs: # If any previous step fails, create a new Github issue to notify us about it. - if: ${{ failure() }} - uses: JasonEtco/create-an-issue@e27dddc79c92bc6e4562f268fffa5ed752639abd # v2.9.1 + uses: JasonEtco/create-an-issue@1b14a70e4d8dc185e5cc76d3bec9eab20257b2c5 # v2.9.2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: From 8efe5b93d4ed8dfe3bc1e91152cf0190efcd1ac6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Feb 2024 09:32:50 +0100 Subject: [PATCH 21/66] build(deps): bump clap from 4.5.0 to 4.5.1 (#1434) Bumps [clap](https://github.com/clap-rs/clap) from 4.5.0 to 4.5.1. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.0...clap_complete-v4.5.1) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 10 +++++----- Cargo.toml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6fe5bf2575..44752f835d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -854,9 +854,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.0" +version = "4.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80c21025abd42669a92efc996ef13cfb2c5c627858421ea58d5c3b331a6c134f" +checksum = "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da" dependencies = [ "clap_builder", "clap_derive", @@ -864,9 +864,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.0" +version = "4.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "458bf1f341769dfcf849846f65dffdf9146daa56bcd2a47cb4e1de9915567c99" +checksum = "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb" dependencies = [ "anstream", "anstyle", @@ -4545,7 +4545,7 @@ dependencies = [ name = "subxt-cli" version = "0.34.0" dependencies = [ - "clap 4.5.0", + "clap 4.5.1", "color-eyre", "frame-metadata 16.0.0", "heck", diff --git a/Cargo.toml b/Cargo.toml index 7ba4afe8a2..31e3db26af 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -56,7 +56,7 @@ assert_matches = "1.5.0" base58 = { version = "0.2.0" } bitvec = { version = "1", default-features = false } blake2 = { version = "0.10.6", default-features = false } -clap = { version = "4.5.0", features = ["derive", "cargo"] } +clap = { version = "4.5.1", features = ["derive", "cargo"] } criterion = "0.4" codec = { package = "parity-scale-codec", version = "3.6.9", default-features = false } color-eyre = "0.6.1" From 1ea84c6cde94ac313dddf735e2fa3eda701cf06f Mon Sep 17 00:00:00 2001 From: "paritytech-subxt-pr-maker[bot]" <159533160+paritytech-subxt-pr-maker[bot]@users.noreply.github.com> Date: Mon, 19 Feb 2024 10:32:24 +0100 Subject: [PATCH 22/66] Update Artifacts (auto-generated) (#1433) Co-authored-by: tadeohepperle <62739623+tadeohepperle@users.noreply.github.com> --- artifacts/demo_chain_specs/polkadot.json | 8 +- artifacts/polkadot_metadata_full.scale | Bin 305434 -> 307427 bytes artifacts/polkadot_metadata_small.scale | Bin 60492 -> 60878 bytes artifacts/polkadot_metadata_tiny.scale | Bin 37934 -> 37920 bytes .../src/full_client/codegen/polkadot.rs | 2110 +++++++++++------ 5 files changed, 1392 insertions(+), 726 deletions(-) diff --git a/artifacts/demo_chain_specs/polkadot.json b/artifacts/demo_chain_specs/polkadot.json index 0b5bec371c..dc940872f8 100644 --- a/artifacts/demo_chain_specs/polkadot.json +++ b/artifacts/demo_chain_specs/polkadot.json @@ -43,10 +43,10 @@ }, "id": "polkadot", "lightSyncState": { - "babeEpochChanges": "0x048524e13c03dabdfcd58bf3a783eb3f8af9f3beb1f83bf64f1edc5661ddbdcc76f44d260101f382f41000000000538cf4100000000004e49e35131f3b10c66f75045405b11e5742a400edb67f0fde4bcfc7a4d70839d94857260101538cf41000000000b395f41000000000048974cd9ebacb99e3425c068b00ff967287bafef687494d06c649cb83d42311079460260101b395f41000000000139ff4100000000000000c8524e13c03dabdfcd58bf3a783eb3f8af9f3beb1f83bf64f1edc5661ddbdcc76f44d260101891f000000000000f382f410000000006009000000000000a50474a0fc84f72a4a9b8493379b7dfc59ca58a261a2e94997600d14b6b444c1475901000000000000009c40155989f6072e82caba245d7db7e40a60f866b403257976b89aba6be2b55b010000000000000014b0a3a620f70ada506d6ef1b7ab099219f2f05689523af7eebc81f9ba258e6001000000000000007067d4c5b492b11e2052a2bb0b4f729a52b3667afbca7dfefa863011254b5272010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec2145417501000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000000c78c9dfc0033ff87657c56b7ab8cec4d1249be2de18729f743f385343af0f160100000000000000da541448a6094ef017385fa5492aefcc1880f3182fc1db64e551143604dcdc00010000000000000060f472588bedcbf6b27b576dcf2ac751e412b377a39fa82bc2b79f72ac9373140100000000000000002e496e564f088a075525d2f9155aadd1a7eb017fa36f9e16096e9db7e169330100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a9350100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000c48c594bb4e173544a0379055b65d995af53256f653d04f2cf4fdf8f35489439010000000000000024d917b35ee19a72512caea1dbf92fa75f5ac2c247c4a0184d330f477c750543010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000466c0e97d043a4b0f4c3ac4849e11f901e9b31b28f8b3e40b7cdb0ba7f7748080100000000000000aac890275190872d403950ad91e6c6c18538b3d1d65f63609e7317bf1869b40f0100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000d8f30bc2ee88e69f60d0278998414c80f4a130b8e1738e873bcd14ef31e58d36010000000000000042e377034ce6b2a582bfd66c465252ab10ce790e4f0d3bbe99a42ff86b29965c01000000000000007e91ca522b14cbb71b45348c699b7d65c3198516ee771079b672ee3d7cfc577501000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b740100000000000000f44300f7ca18c59e32cb7d396a17c4c3b2a56bdd4aadc93b55922bb94a114a4c010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc19010000000000000012a64d79e44f1adb33c85c4f2bdfcd8d8b38a34d984604f39289c9a7624a442d01000000000000009214538470b98cfa7437e630ad2f26ee55bfbd270c0a72d38e26c4f48e049d130100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a670100000000000000e297620b731b4958e3c6aa06611c6aa5a45f7e116362d64954a0a330d2a98f330100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000000e5e5f8e89cd8d58ef83abddd3d1c2079691dec4f6965af70436e84411c31f3901000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f5101000000000000007c21799f6143fa837a8c18bebe3368d60f4e009b114f61490b54e6344034040d01000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e01000000000000000aaa5fa196c5c2583c1cec2aa1c991b582fd819d8bd74e91ab76da894c4a0e3b010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000005a63824687de4f60534ee18a430396b95263f75a077655c751bc2045ca2ec84d010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000c665d82a27136f294df943ffa86053c5aefeca16630abc81c12943e1aebcec3401000000000000007c3526dc5579f1ef841101b573c655c20f4346fa4a6b0b6ed773d147c3ad6d7f0100000000000000ee579514d7f544fc9fb8d6383ed7d109ee98a411bb4b0b45b9354b0f73fed9720100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf08010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b640100000000000000ec56243ac035f65b377444e20bc8fa7e3e75242a59b5ffa5f44270f451315f2b01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b0100000000000000c0e36251f9ce24d6fe429ecf14bc9599285e3e27c0a541d5ac0ad1902d7ad6140100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000005620922a6765fd47abc96615ef5b8b8575f18aaf8507f6afb86129bc1080994f0100000000000000b4b145ce385b4a3d83f2daac46a61874f80e58c468dd624acc09a558be02c27d0100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b01000000000000009eab0bf9d73d6ec7f04a484806584d29e59920968a9b9e699e45888d0767b5560100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c360100000000000000ae272f5ae4e197a1fc8e670d3aa7bcab325a39d1653b5440bb7593788d0526280100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d8708132010000000000000080413d2894759b53a03874bf96ffcb66117e4a08ad7f159c008f2b3b6cfcbb470100000000000000ea885fca10a9473631bcca2549cb8183beef534a7ee2bd59a0a6f74d97bcfc4401000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000f2e49b313ed23755c61ca69aaae54996c4b15e8ef882056b33c440bc7c6976170100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000902741c83009936926e687f91a203fc2bb0dea691895ef4dfd1d85d86f408c7c010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d030100000000000000584bf60b8b17ddaf70f87f371bd2b425a3637e05c1b75469f45ea85717063b6901000000000000004688e3afe0224c7d9f9ce7308a282aba1ddbcce69b0f18c10b1ec2fbc253d77d010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e01000000000000000ea183680db6337b592f7eb5e9112295d101bbd140b6064d6a662a93d13202000100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b351501000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000402a67126cd160c84edcb39374164f3a39aec59ae72cb66dd9fbd1e9891aa27c010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000c63dfd97609d6fbdd6300bb957b3feba86755bbd5a36d6b4ca40bea6a1b2517001000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c744501000000000000009604f5be9d0b0e4ee57cb7f1428abbad605be0423c4600cebbda85cbcb17ce300100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd555801000000000000001682c3264fc0b2a36eff3a5864cdacfe726bf5972ca8f4c5cad6f18bd450d23e0100000000000000d412fb5e47b946e69918a6391ac30283949ba6d99c491d78fc5014aaa2144b59010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000b013a8307c3572f939c1a9759a832f35babc847cc022588903572c8def43267d0100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f8450100000000000000760016d0fe1d719588ff1b1e8057f1e7a14aa6c34947540e6fdaea91ca5c602601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000de5f9f5ad3209502cf429630c2038b8818b6f8ce5685c2730077349802c5792501000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f49533301000000000000007878535e43226cf81c42183db4bbef4b1eed2a460f6cd423c03af9e86674647a010000000000000052c9327ca5c1ca830f8ff712d813a8cdc2a8be122f16bf0d1d9e77b7a9789372010000000000000026f2af62a2f0d847e3d2cccc93ec7f98c80a7b6d1bcca4cf1c4a6fc7f81775010100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d71010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000000481a58bfdafecabbc96bd170a0ec04cc35100f1f928cca3ecc63b3639e476790100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000dac9ac99a034e57ae0f558ad981c1b12243c08cb140c483ba5dce6878ddab74d0100000000000000e4be18b8f5905bc41fe3cba2e5350d405e76036328042ae7edfbb6b6a9b43d5a010000000000000046d6f6331c4776c946073cfb18164ac2b7b0ab2836711373465794ef4a6d3c2f01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d4101000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b14020100000000000000507e2aa1a2409b289b89c80f7ccb129e91a32e8d44c98723f8a97307f54a2d0601000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000078d986932e680d7bebce126a5aedae3e11ba0f4e28c03d63a491e8bcbd05ad2201000000000000007c552599ae2d251c1fb693009a0f904e41e59183027af5adfb8bba4133fc13620100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca220100000000000000e6e897a3011883adfe5d7c58e45c769c806277a5d8bb7aa36e232297b747b04f0100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d465010000000000000044c47763e8f2f1675b480c01304c4da58c8d276b5ecee722e45d17afdc3d391d01000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000007873ecedbae63dfbe5594da935e52c14dbd0e131b12879d573b9c002c6e5c4400100000000000000fc53d15453457faadc5540c5853f54324eec395d3647fbf99d5e6e97ef38767601000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000b8a51609827d3b5283567a63d2585b896a64cdeae91803154a419cb6febac0090100000000000000864cbd281011a154d93d0320865ad67ae442bf0985f0ec220e2c7db4b09599310100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e17601000000000000009cd8560fd122845a222340da6458ce97af240b695b3d22fdcd4287665cf5b3440100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000d2fb72b7c3d020239ba45289122d0ae3fb560d01d0cb3caec01efa0c8701d45e0100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000052a0f4ee4ffddedc5b9fd2154ca213cf3f49df94f4b5c36c2d8f877f5a701022010000000000000096a550a5b080ba4f333c58a9f4113a664c6e335dfdbfa227bb6f4808351c045b0100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da720100000000000000005330f74dbf024dccb42c34e008d84a5d5d8ee33603029b4176ad6579bc504f010000000000000060868aebd495f442d029a4a0eeab5285bf7ccc82988417429030dfeb4080fe3401000000000000006ef86d4533f47ffd133c63b9575c17234309ab6e16f487ae7cd8914169183c66010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c0100000000000000b45837a3683c303ef060d8126c919a1d13fe45b84c42ba393ce99eb28a9f70480100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c010000000000000088b3ccf1680a221f1ae9f8879fa7963262ab735078ded24cc2fb209f9188031b01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f010000000000000050f5f5863f99e896975813fda8768c72ff25fb54e25385a4263d1ff9a19152500100000000000000ccb5a9652f3be5d85fcab3d0b8c2eae27519ae2f7befa40c34b89751bbcce40001000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f5259050100000000000000540926fefa2d0424fd451bfca39a01c0e1a3fc811406e127d1dbfdc6cf9e9770010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000009cf033522e1b00e5e1e4862b8de818c62a353c2ef900717405861a7b8afd911f01000000000000009a53749c83cc06460148d884f1ea5b71897466b237cf16baa45395d78ce48c1a010000000000000064615e1323ea003b7c5a63ba2c8bed2023103458eeee7cf45244580d3ca59b6a0100000000000000b60ce4c500ac9859bf4a3ad89aa03f37e4b25b33da50fd825ba53dcb222c9f45010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000048afb25f7981cc67a66853ec05675d83a2d99e6318a6a7a135ed2916cb70a26e01000000000000008a0e2d0af87ffb812f6e6ec229d02056e812cc4f5f5743cc638a7d3f279f0153010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac5610100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000004a09f648a1583e14379a3a2543bb6d67201cae1ac2cc90f351f58d5574e02f6201000000000000000e21a03fbe9885a475c4875f3f912c8703945e99cd2a85f75258fda7b6022b7c0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000e063e31ccdf34c3372902f92ec915f213538370658d9272f9ba6d8d6943ccd13010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a01000000000000000e99696f88e19e20d306ad6f8afb760f16c34a1e7bfe6cd70848e2d55cd2463401000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee1901000000000000002271d61469f9f1e5a0832af7de453015b89979fd740526080116295f4a4a516d0100000000000000645077cf303943059891df150649d1d828052ea4249bf50ca3b6d29c6ef1984c010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f3401000000000000008681a5d5d2138be72753e197ea3616c760e062e2bf2660bc6b33a37615edb03f0100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000f2060145fed18a41469c808b9c9f489ab28bdd327529621512b7077add309d1e0100000000000000ac08cb32400c07259add7bea3d895233f121f29c1b6387bddbb121d5c122e3570100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e7993300100000000000000ea03f9dc29ae9b7a053c12b6079664592d2cf46a30b43edbb2d2d980223deb11010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe83233001000000000000003c8330f5d7f34fbec333663bab066cbac4403f892df7659b1c118c185c4f16220100000000000000b20050395fc81aa60508e362f02c75faebe3e4909c7a23721182ce791bb701130100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d69010000000000000068147c36d367eb1a203b303c65ab3d32fe777cabbca8d39e08ffcfd624b3614d0100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f0100000000000000c4687b6d8e527d1ad3be71f2b242bed92eac25b159d9e142e6922ace2dfe5f2101000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f01000000000000009ea2cb3e6c59685087e59d6d45fdccdd5e6fd4f77fd90b4749f65113e23f086f0100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a01000000000000004a7791775365fadbb61f37a0d2f6d298c0c7c3a4c9402821ec909972fd5f8a4c01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000cc52bd9b4a740735cf134a31165a2d024441d5ec6b561904c00d2193da41d15601000000000000005ee252f56786ec8e512d233a09c3bbda21d0bd3a6ed7e8e8c0fe035dfe7989330100000000000000408e999ea747d52cf805617489435c05b3e91fea3d7013aaeb6134065bac863f0100000000000000b08365edcdd4d34a08e76edcb6a883a99eb396bcff3534f65a5c722e6d15fe020100000000000000e0d28dc9623e77eeff6b0aee79793b3a00cf8b1c46fb79c8e6ff8cfeecc4af120100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa35020100000000000000fcf9f322548d27f949946778fac8738b187065d56fc3ef164055a14e1ff8192701000000000000001e1f47deab3e4083f7d353b746b719a9f5aaee3ae2cf6b37a4d710f95d489a6101000000000000006638aad1c437c5f2f2ab4c46b786db51bb8c7e6af2ee745934811712f8d83e0601000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f0768520100000000000000c88d83d7927e1c1dff61de6b8321ee64746d983173bfb3a03c3d4789ae3f202701000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba620100000000000000102ed4107066f497e13d3c484a9fa60e506587e19541069dd4555a91d63f27040100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000003afb6b0dac3a05453f125943b8a26269202d297b991e054ca851fa68bb4c0853010000000000000048970bde717a65371534a2b878995c8bc6c230d556035fa003da1c523092332a01000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e4601000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009265e7be28a8f56a974027b630bc37703b7ef21b1b1e4253c54d605f4d10da1e010000000000000046b14e55053a02087c957664d32fdcae6ba1c96051239191c63df564d784e17201000000000000005cf9e506e47672dd81188ac6eb1f4663ef21002e3b99689c772a21d52cdae553010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000fa2b11bf5823233f9811719bc222d1a99fe1ed274ff1761aec90b89be97c945c01000000000000009c4d874baeccbb19733cf93f6ffb2f44d9b9f5191ead84f3550c7b767a75061f0100000000000000ecc12a9407afd557edbf63ecf4e31c6d56c3a4b9f7b4a123ff3d4af9cdb4c6050100000000000000541be93561ac4abba30ffd6362cd8e0b0cc2e1dbdcca8e5394eaa80167e6993d0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000a49dbb103be9a66d67ad5c0d11032866488f39d0a106de579d913dc7099a09260100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a184322010000000000000040884e6b9876fe866d109aae2a5a6f1a18bfe3655ec9c1fee848ca92734468720100000000000000fd91e3922a7945adc06dd75738a64c9a2d79d223fc60ce9fa68f247ce34a8ee401000000000000000400000000000000028974cd9ebacb99e3425c068b00ff967287bafef687494d06c649cb83d423110794602601018b1f000000000000b395f410000000006009000000000000a50474a0fc84f72a4a9b8493379b7dfc59ca58a261a2e94997600d14b6b444c1475901000000000000009c40155989f6072e82caba245d7db7e40a60f866b403257976b89aba6be2b55b010000000000000014b0a3a620f70ada506d6ef1b7ab099219f2f05689523af7eebc81f9ba258e6001000000000000007067d4c5b492b11e2052a2bb0b4f729a52b3667afbca7dfefa863011254b5272010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec2145417501000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000000c78c9dfc0033ff87657c56b7ab8cec4d1249be2de18729f743f385343af0f160100000000000000da541448a6094ef017385fa5492aefcc1880f3182fc1db64e551143604dcdc00010000000000000060f472588bedcbf6b27b576dcf2ac751e412b377a39fa82bc2b79f72ac9373140100000000000000002e496e564f088a075525d2f9155aadd1a7eb017fa36f9e16096e9db7e169330100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a9350100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000c48c594bb4e173544a0379055b65d995af53256f653d04f2cf4fdf8f35489439010000000000000024d917b35ee19a72512caea1dbf92fa75f5ac2c247c4a0184d330f477c750543010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000466c0e97d043a4b0f4c3ac4849e11f901e9b31b28f8b3e40b7cdb0ba7f7748080100000000000000aac890275190872d403950ad91e6c6c18538b3d1d65f63609e7317bf1869b40f0100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000d8f30bc2ee88e69f60d0278998414c80f4a130b8e1738e873bcd14ef31e58d36010000000000000042e377034ce6b2a582bfd66c465252ab10ce790e4f0d3bbe99a42ff86b29965c01000000000000007e91ca522b14cbb71b45348c699b7d65c3198516ee771079b672ee3d7cfc577501000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b740100000000000000f44300f7ca18c59e32cb7d396a17c4c3b2a56bdd4aadc93b55922bb94a114a4c010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc19010000000000000012a64d79e44f1adb33c85c4f2bdfcd8d8b38a34d984604f39289c9a7624a442d01000000000000009214538470b98cfa7437e630ad2f26ee55bfbd270c0a72d38e26c4f48e049d130100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a670100000000000000e297620b731b4958e3c6aa06611c6aa5a45f7e116362d64954a0a330d2a98f330100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000000e5e5f8e89cd8d58ef83abddd3d1c2079691dec4f6965af70436e84411c31f3901000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f5101000000000000007c21799f6143fa837a8c18bebe3368d60f4e009b114f61490b54e6344034040d01000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e01000000000000000aaa5fa196c5c2583c1cec2aa1c991b582fd819d8bd74e91ab76da894c4a0e3b010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000005a63824687de4f60534ee18a430396b95263f75a077655c751bc2045ca2ec84d010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000c665d82a27136f294df943ffa86053c5aefeca16630abc81c12943e1aebcec3401000000000000007c3526dc5579f1ef841101b573c655c20f4346fa4a6b0b6ed773d147c3ad6d7f0100000000000000ee579514d7f544fc9fb8d6383ed7d109ee98a411bb4b0b45b9354b0f73fed9720100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf08010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b640100000000000000ec56243ac035f65b377444e20bc8fa7e3e75242a59b5ffa5f44270f451315f2b01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b0100000000000000c0e36251f9ce24d6fe429ecf14bc9599285e3e27c0a541d5ac0ad1902d7ad6140100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000005620922a6765fd47abc96615ef5b8b8575f18aaf8507f6afb86129bc1080994f0100000000000000b4b145ce385b4a3d83f2daac46a61874f80e58c468dd624acc09a558be02c27d0100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b01000000000000009eab0bf9d73d6ec7f04a484806584d29e59920968a9b9e699e45888d0767b5560100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c360100000000000000ae272f5ae4e197a1fc8e670d3aa7bcab325a39d1653b5440bb7593788d0526280100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d8708132010000000000000080413d2894759b53a03874bf96ffcb66117e4a08ad7f159c008f2b3b6cfcbb470100000000000000ea885fca10a9473631bcca2549cb8183beef534a7ee2bd59a0a6f74d97bcfc4401000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000f2e49b313ed23755c61ca69aaae54996c4b15e8ef882056b33c440bc7c6976170100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000902741c83009936926e687f91a203fc2bb0dea691895ef4dfd1d85d86f408c7c010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d030100000000000000584bf60b8b17ddaf70f87f371bd2b425a3637e05c1b75469f45ea85717063b6901000000000000004688e3afe0224c7d9f9ce7308a282aba1ddbcce69b0f18c10b1ec2fbc253d77d010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e01000000000000000ea183680db6337b592f7eb5e9112295d101bbd140b6064d6a662a93d13202000100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b351501000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000402a67126cd160c84edcb39374164f3a39aec59ae72cb66dd9fbd1e9891aa27c010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000c63dfd97609d6fbdd6300bb957b3feba86755bbd5a36d6b4ca40bea6a1b2517001000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c744501000000000000009604f5be9d0b0e4ee57cb7f1428abbad605be0423c4600cebbda85cbcb17ce300100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd555801000000000000001682c3264fc0b2a36eff3a5864cdacfe726bf5972ca8f4c5cad6f18bd450d23e0100000000000000d412fb5e47b946e69918a6391ac30283949ba6d99c491d78fc5014aaa2144b59010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000b013a8307c3572f939c1a9759a832f35babc847cc022588903572c8def43267d0100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f8450100000000000000760016d0fe1d719588ff1b1e8057f1e7a14aa6c34947540e6fdaea91ca5c602601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000de5f9f5ad3209502cf429630c2038b8818b6f8ce5685c2730077349802c5792501000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f49533301000000000000007878535e43226cf81c42183db4bbef4b1eed2a460f6cd423c03af9e86674647a010000000000000052c9327ca5c1ca830f8ff712d813a8cdc2a8be122f16bf0d1d9e77b7a9789372010000000000000026f2af62a2f0d847e3d2cccc93ec7f98c80a7b6d1bcca4cf1c4a6fc7f81775010100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d71010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000000481a58bfdafecabbc96bd170a0ec04cc35100f1f928cca3ecc63b3639e476790100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000dac9ac99a034e57ae0f558ad981c1b12243c08cb140c483ba5dce6878ddab74d0100000000000000e4be18b8f5905bc41fe3cba2e5350d405e76036328042ae7edfbb6b6a9b43d5a010000000000000046d6f6331c4776c946073cfb18164ac2b7b0ab2836711373465794ef4a6d3c2f01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d4101000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b14020100000000000000507e2aa1a2409b289b89c80f7ccb129e91a32e8d44c98723f8a97307f54a2d0601000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000078d986932e680d7bebce126a5aedae3e11ba0f4e28c03d63a491e8bcbd05ad2201000000000000007c552599ae2d251c1fb693009a0f904e41e59183027af5adfb8bba4133fc13620100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca220100000000000000e6e897a3011883adfe5d7c58e45c769c806277a5d8bb7aa36e232297b747b04f0100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d465010000000000000044c47763e8f2f1675b480c01304c4da58c8d276b5ecee722e45d17afdc3d391d01000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000007873ecedbae63dfbe5594da935e52c14dbd0e131b12879d573b9c002c6e5c4400100000000000000fc53d15453457faadc5540c5853f54324eec395d3647fbf99d5e6e97ef38767601000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000b8a51609827d3b5283567a63d2585b896a64cdeae91803154a419cb6febac0090100000000000000864cbd281011a154d93d0320865ad67ae442bf0985f0ec220e2c7db4b09599310100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e17601000000000000009cd8560fd122845a222340da6458ce97af240b695b3d22fdcd4287665cf5b3440100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000d2fb72b7c3d020239ba45289122d0ae3fb560d01d0cb3caec01efa0c8701d45e0100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000052a0f4ee4ffddedc5b9fd2154ca213cf3f49df94f4b5c36c2d8f877f5a701022010000000000000096a550a5b080ba4f333c58a9f4113a664c6e335dfdbfa227bb6f4808351c045b0100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da720100000000000000005330f74dbf024dccb42c34e008d84a5d5d8ee33603029b4176ad6579bc504f010000000000000060868aebd495f442d029a4a0eeab5285bf7ccc82988417429030dfeb4080fe3401000000000000006ef86d4533f47ffd133c63b9575c17234309ab6e16f487ae7cd8914169183c66010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c0100000000000000b45837a3683c303ef060d8126c919a1d13fe45b84c42ba393ce99eb28a9f70480100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c010000000000000088b3ccf1680a221f1ae9f8879fa7963262ab735078ded24cc2fb209f9188031b01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f010000000000000050f5f5863f99e896975813fda8768c72ff25fb54e25385a4263d1ff9a19152500100000000000000ccb5a9652f3be5d85fcab3d0b8c2eae27519ae2f7befa40c34b89751bbcce40001000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f5259050100000000000000540926fefa2d0424fd451bfca39a01c0e1a3fc811406e127d1dbfdc6cf9e9770010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000009cf033522e1b00e5e1e4862b8de818c62a353c2ef900717405861a7b8afd911f01000000000000009a53749c83cc06460148d884f1ea5b71897466b237cf16baa45395d78ce48c1a010000000000000064615e1323ea003b7c5a63ba2c8bed2023103458eeee7cf45244580d3ca59b6a0100000000000000b60ce4c500ac9859bf4a3ad89aa03f37e4b25b33da50fd825ba53dcb222c9f45010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000048afb25f7981cc67a66853ec05675d83a2d99e6318a6a7a135ed2916cb70a26e01000000000000008a0e2d0af87ffb812f6e6ec229d02056e812cc4f5f5743cc638a7d3f279f0153010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac5610100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000004a09f648a1583e14379a3a2543bb6d67201cae1ac2cc90f351f58d5574e02f6201000000000000000e21a03fbe9885a475c4875f3f912c8703945e99cd2a85f75258fda7b6022b7c0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000e063e31ccdf34c3372902f92ec915f213538370658d9272f9ba6d8d6943ccd13010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a01000000000000000e99696f88e19e20d306ad6f8afb760f16c34a1e7bfe6cd70848e2d55cd2463401000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee1901000000000000002271d61469f9f1e5a0832af7de453015b89979fd740526080116295f4a4a516d0100000000000000645077cf303943059891df150649d1d828052ea4249bf50ca3b6d29c6ef1984c010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f3401000000000000008681a5d5d2138be72753e197ea3616c760e062e2bf2660bc6b33a37615edb03f0100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000f2060145fed18a41469c808b9c9f489ab28bdd327529621512b7077add309d1e0100000000000000ac08cb32400c07259add7bea3d895233f121f29c1b6387bddbb121d5c122e3570100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e7993300100000000000000ea03f9dc29ae9b7a053c12b6079664592d2cf46a30b43edbb2d2d980223deb11010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe83233001000000000000003c8330f5d7f34fbec333663bab066cbac4403f892df7659b1c118c185c4f16220100000000000000b20050395fc81aa60508e362f02c75faebe3e4909c7a23721182ce791bb701130100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d69010000000000000068147c36d367eb1a203b303c65ab3d32fe777cabbca8d39e08ffcfd624b3614d0100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f0100000000000000c4687b6d8e527d1ad3be71f2b242bed92eac25b159d9e142e6922ace2dfe5f2101000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f01000000000000009ea2cb3e6c59685087e59d6d45fdccdd5e6fd4f77fd90b4749f65113e23f086f0100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a01000000000000004a7791775365fadbb61f37a0d2f6d298c0c7c3a4c9402821ec909972fd5f8a4c01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000cc52bd9b4a740735cf134a31165a2d024441d5ec6b561904c00d2193da41d15601000000000000005ee252f56786ec8e512d233a09c3bbda21d0bd3a6ed7e8e8c0fe035dfe7989330100000000000000408e999ea747d52cf805617489435c05b3e91fea3d7013aaeb6134065bac863f0100000000000000b08365edcdd4d34a08e76edcb6a883a99eb396bcff3534f65a5c722e6d15fe020100000000000000e0d28dc9623e77eeff6b0aee79793b3a00cf8b1c46fb79c8e6ff8cfeecc4af120100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa35020100000000000000fcf9f322548d27f949946778fac8738b187065d56fc3ef164055a14e1ff8192701000000000000001e1f47deab3e4083f7d353b746b719a9f5aaee3ae2cf6b37a4d710f95d489a6101000000000000006638aad1c437c5f2f2ab4c46b786db51bb8c7e6af2ee745934811712f8d83e0601000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f0768520100000000000000c88d83d7927e1c1dff61de6b8321ee64746d983173bfb3a03c3d4789ae3f202701000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba620100000000000000102ed4107066f497e13d3c484a9fa60e506587e19541069dd4555a91d63f27040100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000003afb6b0dac3a05453f125943b8a26269202d297b991e054ca851fa68bb4c0853010000000000000048970bde717a65371534a2b878995c8bc6c230d556035fa003da1c523092332a01000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e4601000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009265e7be28a8f56a974027b630bc37703b7ef21b1b1e4253c54d605f4d10da1e010000000000000046b14e55053a02087c957664d32fdcae6ba1c96051239191c63df564d784e17201000000000000005cf9e506e47672dd81188ac6eb1f4663ef21002e3b99689c772a21d52cdae553010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000fa2b11bf5823233f9811719bc222d1a99fe1ed274ff1761aec90b89be97c945c01000000000000009c4d874baeccbb19733cf93f6ffb2f44d9b9f5191ead84f3550c7b767a75061f0100000000000000ecc12a9407afd557edbf63ecf4e31c6d56c3a4b9f7b4a123ff3d4af9cdb4c6050100000000000000541be93561ac4abba30ffd6362cd8e0b0cc2e1dbdcca8e5394eaa80167e6993d0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000a49dbb103be9a66d67ad5c0d11032866488f39d0a106de579d913dc7099a09260100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a184322010000000000000040884e6b9876fe866d109aae2a5a6f1a18bfe3655ec9c1fee848ca92734468720100000000000000551fc1f1f1606e53e38c244789213966e68960a5c2957ac8a3568a3fcd7369490100000000000000040000000000000002e49e35131f3b10c66f75045405b11e5742a400edb67f0fde4bcfc7a4d70839d948572601018a1f000000000000538cf410000000006009000000000000a50474a0fc84f72a4a9b8493379b7dfc59ca58a261a2e94997600d14b6b444c1475901000000000000009c40155989f6072e82caba245d7db7e40a60f866b403257976b89aba6be2b55b010000000000000014b0a3a620f70ada506d6ef1b7ab099219f2f05689523af7eebc81f9ba258e6001000000000000007067d4c5b492b11e2052a2bb0b4f729a52b3667afbca7dfefa863011254b5272010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec2145417501000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000000c78c9dfc0033ff87657c56b7ab8cec4d1249be2de18729f743f385343af0f160100000000000000da541448a6094ef017385fa5492aefcc1880f3182fc1db64e551143604dcdc00010000000000000060f472588bedcbf6b27b576dcf2ac751e412b377a39fa82bc2b79f72ac9373140100000000000000002e496e564f088a075525d2f9155aadd1a7eb017fa36f9e16096e9db7e169330100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a9350100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000c48c594bb4e173544a0379055b65d995af53256f653d04f2cf4fdf8f35489439010000000000000024d917b35ee19a72512caea1dbf92fa75f5ac2c247c4a0184d330f477c750543010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000466c0e97d043a4b0f4c3ac4849e11f901e9b31b28f8b3e40b7cdb0ba7f7748080100000000000000aac890275190872d403950ad91e6c6c18538b3d1d65f63609e7317bf1869b40f0100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000d8f30bc2ee88e69f60d0278998414c80f4a130b8e1738e873bcd14ef31e58d36010000000000000042e377034ce6b2a582bfd66c465252ab10ce790e4f0d3bbe99a42ff86b29965c01000000000000007e91ca522b14cbb71b45348c699b7d65c3198516ee771079b672ee3d7cfc577501000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b740100000000000000f44300f7ca18c59e32cb7d396a17c4c3b2a56bdd4aadc93b55922bb94a114a4c010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc19010000000000000012a64d79e44f1adb33c85c4f2bdfcd8d8b38a34d984604f39289c9a7624a442d01000000000000009214538470b98cfa7437e630ad2f26ee55bfbd270c0a72d38e26c4f48e049d130100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a670100000000000000e297620b731b4958e3c6aa06611c6aa5a45f7e116362d64954a0a330d2a98f330100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000000e5e5f8e89cd8d58ef83abddd3d1c2079691dec4f6965af70436e84411c31f3901000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f5101000000000000007c21799f6143fa837a8c18bebe3368d60f4e009b114f61490b54e6344034040d01000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e01000000000000000aaa5fa196c5c2583c1cec2aa1c991b582fd819d8bd74e91ab76da894c4a0e3b010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000005a63824687de4f60534ee18a430396b95263f75a077655c751bc2045ca2ec84d010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000c665d82a27136f294df943ffa86053c5aefeca16630abc81c12943e1aebcec3401000000000000007c3526dc5579f1ef841101b573c655c20f4346fa4a6b0b6ed773d147c3ad6d7f0100000000000000ee579514d7f544fc9fb8d6383ed7d109ee98a411bb4b0b45b9354b0f73fed9720100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf08010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b640100000000000000ec56243ac035f65b377444e20bc8fa7e3e75242a59b5ffa5f44270f451315f2b01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b0100000000000000c0e36251f9ce24d6fe429ecf14bc9599285e3e27c0a541d5ac0ad1902d7ad6140100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000005620922a6765fd47abc96615ef5b8b8575f18aaf8507f6afb86129bc1080994f0100000000000000b4b145ce385b4a3d83f2daac46a61874f80e58c468dd624acc09a558be02c27d0100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b01000000000000009eab0bf9d73d6ec7f04a484806584d29e59920968a9b9e699e45888d0767b5560100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c360100000000000000ae272f5ae4e197a1fc8e670d3aa7bcab325a39d1653b5440bb7593788d0526280100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d8708132010000000000000080413d2894759b53a03874bf96ffcb66117e4a08ad7f159c008f2b3b6cfcbb470100000000000000ea885fca10a9473631bcca2549cb8183beef534a7ee2bd59a0a6f74d97bcfc4401000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000f2e49b313ed23755c61ca69aaae54996c4b15e8ef882056b33c440bc7c6976170100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000902741c83009936926e687f91a203fc2bb0dea691895ef4dfd1d85d86f408c7c010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d030100000000000000584bf60b8b17ddaf70f87f371bd2b425a3637e05c1b75469f45ea85717063b6901000000000000004688e3afe0224c7d9f9ce7308a282aba1ddbcce69b0f18c10b1ec2fbc253d77d010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e01000000000000000ea183680db6337b592f7eb5e9112295d101bbd140b6064d6a662a93d13202000100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b351501000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000402a67126cd160c84edcb39374164f3a39aec59ae72cb66dd9fbd1e9891aa27c010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000c63dfd97609d6fbdd6300bb957b3feba86755bbd5a36d6b4ca40bea6a1b2517001000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c744501000000000000009604f5be9d0b0e4ee57cb7f1428abbad605be0423c4600cebbda85cbcb17ce300100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd555801000000000000001682c3264fc0b2a36eff3a5864cdacfe726bf5972ca8f4c5cad6f18bd450d23e0100000000000000d412fb5e47b946e69918a6391ac30283949ba6d99c491d78fc5014aaa2144b59010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000b013a8307c3572f939c1a9759a832f35babc847cc022588903572c8def43267d0100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f8450100000000000000760016d0fe1d719588ff1b1e8057f1e7a14aa6c34947540e6fdaea91ca5c602601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000de5f9f5ad3209502cf429630c2038b8818b6f8ce5685c2730077349802c5792501000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f49533301000000000000007878535e43226cf81c42183db4bbef4b1eed2a460f6cd423c03af9e86674647a010000000000000052c9327ca5c1ca830f8ff712d813a8cdc2a8be122f16bf0d1d9e77b7a9789372010000000000000026f2af62a2f0d847e3d2cccc93ec7f98c80a7b6d1bcca4cf1c4a6fc7f81775010100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d71010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000000481a58bfdafecabbc96bd170a0ec04cc35100f1f928cca3ecc63b3639e476790100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000dac9ac99a034e57ae0f558ad981c1b12243c08cb140c483ba5dce6878ddab74d0100000000000000e4be18b8f5905bc41fe3cba2e5350d405e76036328042ae7edfbb6b6a9b43d5a010000000000000046d6f6331c4776c946073cfb18164ac2b7b0ab2836711373465794ef4a6d3c2f01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d4101000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b14020100000000000000507e2aa1a2409b289b89c80f7ccb129e91a32e8d44c98723f8a97307f54a2d0601000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000078d986932e680d7bebce126a5aedae3e11ba0f4e28c03d63a491e8bcbd05ad2201000000000000007c552599ae2d251c1fb693009a0f904e41e59183027af5adfb8bba4133fc13620100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca220100000000000000e6e897a3011883adfe5d7c58e45c769c806277a5d8bb7aa36e232297b747b04f0100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d465010000000000000044c47763e8f2f1675b480c01304c4da58c8d276b5ecee722e45d17afdc3d391d01000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000007873ecedbae63dfbe5594da935e52c14dbd0e131b12879d573b9c002c6e5c4400100000000000000fc53d15453457faadc5540c5853f54324eec395d3647fbf99d5e6e97ef38767601000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000b8a51609827d3b5283567a63d2585b896a64cdeae91803154a419cb6febac0090100000000000000864cbd281011a154d93d0320865ad67ae442bf0985f0ec220e2c7db4b09599310100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e17601000000000000009cd8560fd122845a222340da6458ce97af240b695b3d22fdcd4287665cf5b3440100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000d2fb72b7c3d020239ba45289122d0ae3fb560d01d0cb3caec01efa0c8701d45e0100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000052a0f4ee4ffddedc5b9fd2154ca213cf3f49df94f4b5c36c2d8f877f5a701022010000000000000096a550a5b080ba4f333c58a9f4113a664c6e335dfdbfa227bb6f4808351c045b0100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da720100000000000000005330f74dbf024dccb42c34e008d84a5d5d8ee33603029b4176ad6579bc504f010000000000000060868aebd495f442d029a4a0eeab5285bf7ccc82988417429030dfeb4080fe3401000000000000006ef86d4533f47ffd133c63b9575c17234309ab6e16f487ae7cd8914169183c66010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c0100000000000000b45837a3683c303ef060d8126c919a1d13fe45b84c42ba393ce99eb28a9f70480100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c010000000000000088b3ccf1680a221f1ae9f8879fa7963262ab735078ded24cc2fb209f9188031b01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f010000000000000050f5f5863f99e896975813fda8768c72ff25fb54e25385a4263d1ff9a19152500100000000000000ccb5a9652f3be5d85fcab3d0b8c2eae27519ae2f7befa40c34b89751bbcce40001000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f5259050100000000000000540926fefa2d0424fd451bfca39a01c0e1a3fc811406e127d1dbfdc6cf9e9770010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000009cf033522e1b00e5e1e4862b8de818c62a353c2ef900717405861a7b8afd911f01000000000000009a53749c83cc06460148d884f1ea5b71897466b237cf16baa45395d78ce48c1a010000000000000064615e1323ea003b7c5a63ba2c8bed2023103458eeee7cf45244580d3ca59b6a0100000000000000b60ce4c500ac9859bf4a3ad89aa03f37e4b25b33da50fd825ba53dcb222c9f45010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000048afb25f7981cc67a66853ec05675d83a2d99e6318a6a7a135ed2916cb70a26e01000000000000008a0e2d0af87ffb812f6e6ec229d02056e812cc4f5f5743cc638a7d3f279f0153010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac5610100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000004a09f648a1583e14379a3a2543bb6d67201cae1ac2cc90f351f58d5574e02f6201000000000000000e21a03fbe9885a475c4875f3f912c8703945e99cd2a85f75258fda7b6022b7c0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000e063e31ccdf34c3372902f92ec915f213538370658d9272f9ba6d8d6943ccd13010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a01000000000000000e99696f88e19e20d306ad6f8afb760f16c34a1e7bfe6cd70848e2d55cd2463401000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee1901000000000000002271d61469f9f1e5a0832af7de453015b89979fd740526080116295f4a4a516d0100000000000000645077cf303943059891df150649d1d828052ea4249bf50ca3b6d29c6ef1984c010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f3401000000000000008681a5d5d2138be72753e197ea3616c760e062e2bf2660bc6b33a37615edb03f0100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000f2060145fed18a41469c808b9c9f489ab28bdd327529621512b7077add309d1e0100000000000000ac08cb32400c07259add7bea3d895233f121f29c1b6387bddbb121d5c122e3570100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e7993300100000000000000ea03f9dc29ae9b7a053c12b6079664592d2cf46a30b43edbb2d2d980223deb11010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe83233001000000000000003c8330f5d7f34fbec333663bab066cbac4403f892df7659b1c118c185c4f16220100000000000000b20050395fc81aa60508e362f02c75faebe3e4909c7a23721182ce791bb701130100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d69010000000000000068147c36d367eb1a203b303c65ab3d32fe777cabbca8d39e08ffcfd624b3614d0100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f0100000000000000c4687b6d8e527d1ad3be71f2b242bed92eac25b159d9e142e6922ace2dfe5f2101000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f01000000000000009ea2cb3e6c59685087e59d6d45fdccdd5e6fd4f77fd90b4749f65113e23f086f0100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a01000000000000004a7791775365fadbb61f37a0d2f6d298c0c7c3a4c9402821ec909972fd5f8a4c01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000cc52bd9b4a740735cf134a31165a2d024441d5ec6b561904c00d2193da41d15601000000000000005ee252f56786ec8e512d233a09c3bbda21d0bd3a6ed7e8e8c0fe035dfe7989330100000000000000408e999ea747d52cf805617489435c05b3e91fea3d7013aaeb6134065bac863f0100000000000000b08365edcdd4d34a08e76edcb6a883a99eb396bcff3534f65a5c722e6d15fe020100000000000000e0d28dc9623e77eeff6b0aee79793b3a00cf8b1c46fb79c8e6ff8cfeecc4af120100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa35020100000000000000fcf9f322548d27f949946778fac8738b187065d56fc3ef164055a14e1ff8192701000000000000001e1f47deab3e4083f7d353b746b719a9f5aaee3ae2cf6b37a4d710f95d489a6101000000000000006638aad1c437c5f2f2ab4c46b786db51bb8c7e6af2ee745934811712f8d83e0601000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f0768520100000000000000c88d83d7927e1c1dff61de6b8321ee64746d983173bfb3a03c3d4789ae3f202701000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba620100000000000000102ed4107066f497e13d3c484a9fa60e506587e19541069dd4555a91d63f27040100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000003afb6b0dac3a05453f125943b8a26269202d297b991e054ca851fa68bb4c0853010000000000000048970bde717a65371534a2b878995c8bc6c230d556035fa003da1c523092332a01000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e4601000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009265e7be28a8f56a974027b630bc37703b7ef21b1b1e4253c54d605f4d10da1e010000000000000046b14e55053a02087c957664d32fdcae6ba1c96051239191c63df564d784e17201000000000000005cf9e506e47672dd81188ac6eb1f4663ef21002e3b99689c772a21d52cdae553010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000fa2b11bf5823233f9811719bc222d1a99fe1ed274ff1761aec90b89be97c945c01000000000000009c4d874baeccbb19733cf93f6ffb2f44d9b9f5191ead84f3550c7b767a75061f0100000000000000ecc12a9407afd557edbf63ecf4e31c6d56c3a4b9f7b4a123ff3d4af9cdb4c6050100000000000000541be93561ac4abba30ffd6362cd8e0b0cc2e1dbdcca8e5394eaa80167e6993d0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000a49dbb103be9a66d67ad5c0d11032866488f39d0a106de579d913dc7099a09260100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a184322010000000000000040884e6b9876fe866d109aae2a5a6f1a18bfe3655ec9c1fee848ca92734468720100000000000000e281b9e781d0d122cad53deec70cd1880eb29c2a034201c2821014b6fe84d1ff0100000000000000040000000000000002", - "babeFinalizedBlockWeight": 4816932, - "finalizedBlockHeader": "0xf292bdff983836444cd51784c192c3925d734c7936f309581c817f9f74c51d380e8b9904f4fb3330f79ddda3ffbbce59c7b93774122fe32463d7de711ffc820fa69508525cb2b1a9b578fa9e8dd457f2c904649d00557bb1724bb8d7b313e9a1211eccdd080642414245b501015c000000878ef41000000000c4d48a2a2e5364af41319264fee671a26023eebdb6d98a1687466dc44e8fb239263e94e02749bd0e7c63a41103dd01d531405bf5e18d535a9553bd14816aa7047c2019652e0c689625fb677b0f43de704da3daa485ad1d8a0a1b3b754bdcab0e054241424501017659dc71591dfa2561e074163f1aca684a515928b07bbf63f300beabd8d8b4720ee75fa0a487f1e7ef90840e0caaed103e489eec9a1a3b4f70aff8c76e6e6982", - "grandpaAuthoritySet": "0xa5042f8da08bb2421ef844015c3b2ea23464fc66a9dcb4a2215fe0241f892d19afc50100000000000000fff437ff18629bf1490e5c9b3ec6f1515d46bb9b2aeaa6e39e36611f2479b50d01000000000000000334021ff54e46fb7da4bd257cf113519a0c7ee4a2251b66fe48466fed5853520100000000000000d95f04dc8ea4ac05deea7077457f0406fdd152bd03a7480e7d0de0983b959d3c010000000000000047f940bc985355be7187c709ded2b689b66d69e61e293a507f1d4f90bdbeceee01000000000000004a3fc0fe1020c7f460c7bd23d0b657c03368552b2f0a12d80a1c406fd066e0db01000000000000009b992b5e9b99eb2cd3b2b648d6db81ed722a2feb4938d998b58dcb5d159fadfa0100000000000000aee9de3938173700b3e3f4fbf2b200ae296173a0854157f40de2598dd4cad8f10100000000000000243f110deac5efe8e963d794eb8706a1895ae1942523ab0fe9e1623515b7dea80100000000000000b61e9b13e849779be8f5378a670d61991875d8e091f359384d7be73d02d506930100000000000000426b2be4596a759a15028d84e08c5c56440e6cede68d088f47c671cc3387c3e6010000000000000070ba6e5985990ba1b1392713236f1b50df750f10f744cc6eb95fa7c5cfbc687601000000000000005b27660cd4c375f2654c6d923b29fd8abbab7e96ee040c79598be14f832f56ca0100000000000000d3cc98d4ef2959052d0850c5803739a81b4fb31196cb8602c45e19a7a56977cf0100000000000000577f3db377f6b69115658f17f32323071b8e0c67695057353d0ad9ad2d8eea1a010000000000000057ae0c85ebaf333a6ec3251f577cab910cce072f238d1e50046322b83bbc0dd50100000000000000a15896b8bbf01f757f120813bc2e78b21388eea66db4b0dc2e1afeabd3d46dc001000000000000000139b946b46bee4c61be50c986f2a9ef2e76917644e2ecd842c59d61a94ee612010000000000000019a9d56ea35496122fc44fcb5c29d27fbb43520556d6f8d97753767aaa0f228e01000000000000007cd50f6921fade39653f847bddd48360668004225081a6a3ad7997f78debd34c0100000000000000f1578b8007e34ba6b1c4c480a8249758eaa356a6e5b1be0efbe5c35e802fe3cf0100000000000000a5b094ae7c156592baa68ce18dab6368d5b665e9a0f07dfc5f54f58309e086c1010000000000000053352e16d2a27fb3525d5d8750d6ad7f46b303a45e434a409ac727d5cb80432b0100000000000000f2c819e8ed3ae8aab35a7edb7d21cabc889eb5928dd6a5281b42f3b00f808e1b010000000000000041ef4a31eb7dc1e01f4630604e1908e644d7cdee3f66a60f98d6d59605326f8b010000000000000097743d6364cdb6c4790cd37c4c2ab5fbc6c65e8bb606625e70a6ee04ed1650d9010000000000000008cc1d6c743da905511a39a6f0a68809a6bc32f8ac25e53bb2d6aca4f493fc9b0100000000000000acd71d4269b3ba2a9de822d494c4d841708e1519c08de41d7fc6153eaf48da810100000000000000d04d64a07f144638f20f081de122b88fed0cc8bda57e4810e7afb38036dd8bbf0100000000000000f26945a8a64032a1defa76e720a99649125b55751b6088205e7acab901de670b01000000000000005cba2c6f569da1edc3778308da406f266aa53140381dbb3f14f22909ba6e30040100000000000000c9a741ab82126c4d4eaa6a758cfc1209bbd7b29330e89ccd97fb62ae567c8d4301000000000000009b94bc45bf79bb33f70430c82880456cd7bd5fb3ea131c1b26d493d01c5fe7100100000000000000a1a9debad5e4afb076cf293c2c797f0b5901ffdb8bd01611235e762411a0db3901000000000000006f4855725ebb9eced957bae43ffa7d30657ce7d06b251ce20e2218bcf929e40501000000000000001165cac368b7336c0dfd184027e03ae2945761538b05365611ad4d731f4917fc0100000000000000749556da4a259bc1f0b8ea8e3726c2251656b92205c30b635ec9f42038f8defb01000000000000000ce4d93e25fa5302f4b059456f680047f87be428ae88579e0b862502b5ceed600100000000000000c1758f7cbffeb844419bc494a9dc65fb394259f01e9bf23789a75acc29d7d9620100000000000000c1c1ff5f66fefb5c0849e3b2333411d1f7e9dd4888600e334e7a33623f15fa360100000000000000fe240e80ff8a48a77947b394979cf361017cd906ddaab637d72cf72e729d79bf010000000000000006854c73f5703242d31d2576ac2297c93f0b5dc16ade0097c59d5dc0faa43c550100000000000000c650b1a6b34347bd80ed06b48aa4ae1a33adaa507e8ac23bf6c6b94223b63b9d01000000000000000d2892cca10a62c24727ffacba6a57b1a35b0dea5c9d82d7d6c971e2335ced7001000000000000008aabd4f6d7ecec7a749c83fc7be33f3b4818cca6f93a4927b4964900df9454e50100000000000000b9186b95c90d2d00a31e7c68066bd37d73408271762604e3608e2f2c983f830901000000000000003948bfd09bbbc2fe6ac5dfe53146e32df50828eecf7b2b18cdcff8dc385cbd7501000000000000001ba602a293ccdb7a77042fb486c6e010d48b13dff2bef0a26c53637312aac7f701000000000000002385953f1ac49461b9c243159d9668b26e7322e19fff7bc18d90634f0f767ce80100000000000000ba8180cbc0dceb098ee6b22fe89978bf92ebf196a280470b1501bc2138ec02c70100000000000000070bae15860ce96e4a0cbdcc051c75e37a458c8e6c5ae59681d0ed938e588d4501000000000000003ec37919f9f43a9f85f539edfde3ceebea1b0e8279cb036641d588a9da81a6ad01000000000000005e48598ca89db19a4c279a251216d81e33f6b69e7d2ab4450968a1f9409df4a30100000000000000f510cb6c7032c9134dd3e50014ff6d391cfc91606d003fd4acd37e00f919d8350100000000000000cbd74a646a84b73518eadc73b1983dc9733839739576af9a98c698070a3a4b590100000000000000950459187f6d368ccf940574b1fad05f88aea3303858daaae072443b219410a90100000000000000d2e72b0ab02a001b2e573c0d3b78404a7d3c600c3a9fd8ef38e823cad6ed3d6601000000000000003047f8f7e9c47fda9130ccd57d5dc8d407bd89b8dcf8ecbaccf00da184c73a570100000000000000024743c39cd9e151344dc23c65ee0346132d190a224b687be5c5ae31c5e7bb0a01000000000000004e3fb8c16ad624c1852777456805e5352d0221269de66949c95da4076206b35a010000000000000069a6c84df1d25f855b91040e113a5557da8a89d80644ae7bf8d0ba416ab89b6d0100000000000000cb92ffeace78dbafe6fbf275741b4b38657fb81590712aa0bca7877931f6ad390100000000000000997b35c2de1a7ee0cd6744eea2c589ff487059544539bb099ceb6fe78150b68f0100000000000000f8eb309ab851e8f98aa4bd68138a67dc4a435331598079969053a5325b874a51010000000000000059bba625d971d505a9c7d7c2f3ad69203e69e3e5e1fc1e4905fae7703fa19e030100000000000000ba95f5d0e987305bb794dfeae69d7dd6a7987aa66cd7c9d42aca15e9160ec6a10100000000000000ffd82ddc49373448bed6feb0032744e20068f4e21adc4cb6d2cbf05ce73f4ce4010000000000000016278af083f6d261762f8a97b6a09ff83e2f5927ce26c2e48f3c7e771dc7e6950100000000000000c49e3cd2c701bb845963c2870dcca12ed070c3f67ffc20144327a93aa6e896ec010000000000000082a1428bcd525a2e77b8f5fb89c73e5fe1261e96e93b383dd2d66767c855c8f001000000000000002dad5b2212ee688f2eeb9ca1fb6a90574f006dc1c6680ac3a8523363a248940b010000000000000067ccabbf18c035791cee9c748bea2ca03cf72c40f5ae786f297f84fb059732620100000000000000be0a28e5615d9ce3b866b5cf0babf6a7f0e6de06119463382e715b47c89853e40100000000000000b8183b905f28b87c68c2d5b2f39f009f2ee22b47235f6c6d6cf6e63121b490300100000000000000b7c13f1239888cda5c8e6ac9ea10675df17633368906e66a487f91ddd3268ca601000000000000007509d9697cb54f627f47b25e80f46f5d1bf483a9cab5f52df69e1a8f612e486f0100000000000000f3b1c0e43606bd49bc84e403db685b577e898b5f7c5db9052bdc3dacf38dc7ad01000000000000008a2b50acd1a4955fc814bf6720c7427902a6ce709f3a2d7c17c55b67f6f1c06301000000000000003a511828c0cdc0fd257387843fdbf6f19d5ca1ef1c29ec7e971fc9f1195eb60c0100000000000000f9e59cf53bdc07c716fda737a754e45e4aa53860054ce1511a4e8abbf1e366070100000000000000ee5605c1a9ed9484a70b8a591339830f24530eefc4599a7c6188a78896908e2c0100000000000000ad06042b85ed16ff4e46f5a68eba9ac12395366ab17c2da24b4f6747b2c8934f0100000000000000d1c146d2429a5a827660008721c7a880e71f44feaa3dc75524c1a9281bac48cd0100000000000000e4b2cffd0b9cacfc500050b27ecae3c55b9b51bd9a416d62605118c8ad4fb09f0100000000000000b28ba3f09e3521f7d09f0098c6743bc218ee2970068adfa5d908d9d06e627ae50100000000000000f6d74de7b39455519a5d6480c8f12c93fc7a4cfc9af39154fc60857a39ad888b010000000000000099f58256a4a5d6cf5d99f0cdebbcbe1477db461457647631cd21ca7f3120da6001000000000000002bb7b11dfe79a12110b0370510ef20d40ba8a563f517310f8bf37cf7f0403de40100000000000000f86e50733ff2142e88fe5b898087b4b1d6a3250064a439097f8995069624adef0100000000000000bba7a1ccb67a410afedb8e033ad69c39e7c554ce0ce6584b0e6688bae30f7d69010000000000000040533a786cd0be9618126633512666b1b1b9ab3b436fa653c93e2f65da9c196b0100000000000000be95095d93298171c6fb8a1847adfa173d127e13f53482dcb694f891d68f0c58010000000000000085b714accac0654ba57fac59b626dd35802269d2c1d995cea7c335cb05a88f7f01000000000000006a5f902cdeda2c2161d16bd21d586720c08c0bbb7b463d9c59147338d26a8a9601000000000000003a9d3ecc0b675f0c6ffb45637d48c61fbeeb5cc48dbd1422acb94e7dbc9f001a01000000000000009c11e35911f023df6e4d218e53412ab4e4a20c17961d63ba381c913b51f394c001000000000000005a16e068132523621b4e714999d3d856f2728d4667ce954a68b1fd6876bd962f0100000000000000ffcca343512faeffe1cb3a8a7ce62fa4ee0c7f6a5f3e5ac883482846e132813d010000000000000037483029302a84623f0a8db165fbed905b0a4fc25e7cfb56e975a0e98336a59b010000000000000053b5918f72e73f92f32b578d1b602f0cc554d98bee8c4e131ef0ac7a63399fb4010000000000000063e935d23d285cec7b014cb7736d65b4acffc45ca589003d3231de8e6db8a8aa01000000000000006180a56305eff3231eebe895b44751f075f826684ef42a862f11e79c3e689cd301000000000000004a6b88e9110bc8184be0e612404f4781cbeae67cd3fa510668cb21748e750e880100000000000000c7d9cab0fb88dccd0cf4abbf5df9d7f36a3de439c5070c599d397e74133bdfed0100000000000000866fe4ae134938ccf4c5caf01358881c75cfde473b0bb8a2623cc231db2ea3b901000000000000005d202a011f023dfaa6713f16bfd4409dde8bfe594abd59e2be32484c73b979820100000000000000df11dd2be629ba8bf3ef7b4b0478a91bba5c7f928adcf28f3d00ce1f27410ff60100000000000000fc555c014d927fe7838e840609916b9af5d93892ce6f394398858286802b8c6101000000000000006727561447ed474ff4e15645b952a37fa5008d4e694d4853bb55594fa34c4f340100000000000000ec295fb809e22c332aa36a57afe05f2c093b2d13e52b0971d8265c5514e4e9690100000000000000efb5f1e4c4ba37f8c159d452d897c607a58518b8355a8454620b3e3ccc3271230100000000000000f71fca8770328d06e9a45e650e5f58c15feb8ec77ca2dce397490bedfa37db4801000000000000008c3dbd5a1b928cb51e918452191e5328b0f6e8de0259517831a90b02dba3e6110100000000000000aa6fd06015b8309ea9103f4b0e29bfa7e21ab5bb1431c3a76433f591c739f8380100000000000000a892342c56149812a43e98c82b6a3dfee7eff384d9b6d832002ea63838f64900010000000000000005b78368482b0584326a9c0176949523c03ab1446a8aa021701aa9837ccf04fc010000000000000023f07bcb8dade90cefd08732183d5fe32b89ad8a4f84987b9e4e7e767c2587560100000000000000a571c0788c864df547070c9d9a1991a9664ae7466bd83495a8ae20dbe6bff6980100000000000000be6b59cb464fadec4e0b22a9f12857ba5cf7a14c4f9551439d36305d582dd7fb0100000000000000f916634f9fd7e54374e30ac6b722ad1793c13cb2d5f2ad38769eaca2f79d414b01000000000000007ba967a2dae0d8839cf44710591db994d18e53b25ec6d0f861da0037c4a4366a01000000000000004d4a140145f83598fc5a3839260723176f643ae286ff7b2fc460b897fb050a4501000000000000007e15c89cc954f1ddd6a5f2e9f482c1143f5b7b4ba406ed1264fd25a999f223f20100000000000000d0a196fdff4cbca9c7d8a893f9ed66d86038378d8faa1fd8543fcce60ff1cd8c0100000000000000d0b4aada93fb3d0b358e8d59f8914f5987acbc6f5b4f3e12a1ed8d962eded82701000000000000004f950be5bf61958a0ae6e6a036b85b33ba838de8bd5508b558cbe2602d341168010000000000000082e6b6bf1f275c59fbde0dad91393ae690d5e644d11d23898a9ccfdda025920a01000000000000004659b8114500937a2db0c810e194610c582865305e141d04e52ee989b80edd87010000000000000074b60dfb12745236ba9dc8f925efa21482b50c870c567638ba3240a05fe363d90100000000000000d761043f405069ac01285f1ff258450aac675f08d906b1ae0a1ce54eabcb36d90100000000000000b770208e14dc236c373cad93e19b092e9c6c7a90604d941c19ca19923d33013f01000000000000008da8d5949a791c5ca60438cb48670d0ee22dcd4ed87a56b5056fa171f38148220100000000000000d3b3d9703a265a51a137b9de348587c645a168981ef3e01c9dc482856751b8ef0100000000000000c0444bc7cff2374b76ba49e5ce25b632b0db77f08f6c40799077ce3f5b035f3f0100000000000000cfb9f7f1fcf903a51af729ed1647aee928630e148990309f9dc9f3b14b114b760100000000000000a2ee8d9c22eba97998d63854409d99c87b21d079f5c888d863a81d41d6abf0110100000000000000d14a779884de1b2fbf079b8e47e8c0edb1c29e282996899a4eab5aaf1f4f41130100000000000000c2344c6fb787621295335b6b5acbab9531199901492d41e13a64dfb2927f83be01000000000000002ba5634557f15c4e9198d1ce0cc525e897d3fdecb0c18af8a53fe4e3384f4a1d01000000000000004c51b84496e533a7f1bb2b806f3733a7f0a48543976d0a4e5410e831f93e04170100000000000000615d64d17a182504db609d14dc6a45a109817cfaaad1608b4c48382bee48d3780100000000000000155763a153e0c02b2eef1d8a9cd8a50a9eaac9d3af7ad1e559b1e2320b521e1c01000000000000005208fe27477acbc6750d0caa831c0b26801c58eca046a6cf9d4143f85d877e83010000000000000025ebbb2a00126545bbedf00318a78b6e61a0b52c81e30231ff45bd32e311472f01000000000000003773b05d2e2660498c8d407a1d6223423c26aa08b9b3656af94d78b861fba22f01000000000000007bbd4f800c34110b6c739ff1e8913a36ab62f25641c4bb7413cd354894b602930100000000000000500a9e1ea37636c24ebf4e32668897dae936eef42b6da49027f606d4f24a7e960100000000000000ddb8ed355e1389d3a12e9e55fb7723e89bc5020144bd832e02c47f7f672c9f14010000000000000039712f967c4e06d284d6da4735cf2823c1f770674b668f7bc896071c3fd41eda01000000000000000d4c26111d95a762e990acd0a15417be572ee390c7b9dd91f5e7ddd4a015f1bb01000000000000001e1fe4a3c9f590aff5a70b9cae569605ac78531cc10d310436fe0c306cf2e36101000000000000004df6e4d7da2c11ddb9153c714699f9ab625bbcd5e8e38f1cdeee567dc04abc610100000000000000d9b96ab14d54cf0093b00b5bb592a6ea6036f844bf7eaa3b5181d0764e1724b901000000000000009cfeed14dd2f96550a0e7edebd9c9a8c8b1d8f7efdd1abca01987654239f3c860100000000000000fd2fe2f117d597b29474a740ec767fe51cec93544d00e34269b78ddb31225f3b0100000000000000a74ff082093aff29e9a0d9adeb6e6df264b39c15ef1a82bf942e8ba76872bac401000000000000004c3b4b0a3acf902acec7f5d868f77d78b17fa4cfc5f785d393c9f3d15e04880501000000000000008404cabeb0674765bb77af690fa838ba28fa2045d602994a89f07680f4851c83010000000000000006b9e740c0a0e1f8fd31717438d5918ed8680eaccb70fdc9511931ce0d164ae50100000000000000b8cf76a8082d518016ea5588be57b64e156ed23b0f72248975522c23d15ef16101000000000000002565e04c6e0b665fac87f8238bee74837f8f621ed63409f3838d263603400a980100000000000000a4f516aea3a92e379a03a2a9f9fcc757af022ce3572b00ffff21151fda41e79601000000000000002a38a4dcdffc571d547ee3e59121fdd378335df7c65877f983f0957cdc9824130100000000000000620c78305072857b43dadced80ebc057dbfc82b58c14c7b63372ef02140867650100000000000000baf0112f613aa6fff341d67decad56d1c5744a3ebb8e3577e82febbf3535b3fe01000000000000004dc2e72680dbf0156818114fa34d3591f8e6948df25a128e191190c66f6ac35301000000000000001ebe41ca4cd399901ffe5f6f52642630820500e4a96cbef4c80c560cae38d2c601000000000000000442cfb3cd38604b2a5251638e9fa7ee6b05968c731f393b78a6604e0072b09f01000000000000007af0706d921a331b5c1f957a8d1decf15aa0e3377a80d72107693afd8614ef8f0100000000000000811038f59afeb084566271eb138b0106a8ca013f57e589d6f777bc7bb2219e760100000000000000f5e2c973d4ccbdd36d8ed4e3dae75d3b50002cc1c74eb0a1fe29ef1ef8e3f0cc0100000000000000f5df4d76a1df9b6a7940a07f23b909a0e03feaa0cc84743674678c7a1d5412760100000000000000f56f5b3de4f46bcde88569888783fd60646806795807edb1e04ec3dff85ff3e10100000000000000b1f748c87b12edf7242b4719cfe68e6761acaa4329beee538d6ff740941d3cd30100000000000000a85cec5e853b5891796fd58cdddc4c6c017140db44777c9a1e94c0d757a2e51f01000000000000008b35aa0d212e4032ede352d5426696c260c9ecffa632a2e14e6a6629a6c9f637010000000000000072341ca1eb3a0fd4e790318b51ace114315573d5355c9d5336e39382ba0642560100000000000000a79cd2241bd68004641baac25c1900da3a9e6d83101aea3ef2a58d78c657272f0100000000000000b14911cb101f45b88c437a36bd82a5f8641b1c55052060ea46ea2baea570e8bf0100000000000000b66e24ea84d5e02a7b2b58e20bbf17a0f2a19c4654bf8b07669ba3b9fc4a468101000000000000003c1dcee818434058b7de26ee874ade21bd1149185d6dcba1f67048b931ec3dda01000000000000009d31c78ebe9664e2bd8ba41cddcd9c5b9fb0cc6f8be0a2e5b91f6bcf66a5c7530100000000000000290be52ae5259f3e8bd0cdf454004607867a97c1db86d0c9ff16c8c83625bc8301000000000000005e0fad9f1e6837994babd7d55b2d4079af785ec48568cd1c4efd60ea28162e8e01000000000000004c43a374e6b3e6f7d6c5a6b8518ae0d0d232a1c46d63af8fbc800045a14cbe93010000000000000029a6535bac723c2f711e590c67f0bd60843cf7888eebca46025ae57f5ca1d92901000000000000004b3210303cc88f1495bf5a42c50dc7c51c8bc1db98bf3722b894462346e9221d01000000000000004d9b0bbfc6a294ee0492bdc595a5d8f7cf371c729c5c319a3822f0248bb4fef70100000000000000bbff79a9b92ef586f0be053cc01639b9a335ad8e2910146d070997e285007d830100000000000000ccc84b255e5e73b971f2e71d1903b5ef9bd6d0965ff3ce29c517c875bd7ab65701000000000000001babed13d56d28fdb937b07bce846689584099575382c273f7e425f822c8159f0100000000000000530f022bda69f1ea2ee55570057ca38fda313213b9c02a7c6560ee53e40b108501000000000000009bde702d9265dd3f62a8c9bd36d5e2f4e0dfb91ff812885cf2497eee667660950100000000000000ac0ef45b1c0f242a4aeb0ef03a9c0d9e3ae2a4bee8cb4c35f0293bac4331e76501000000000000001887f7937a8ca4ec67ceaedebfad3d307b10f416219de1ed4f8646409eab730a0100000000000000dfb56f8dbbc94ce17a85087b4dce709c5bd4289650c0eed35f244a21c91c1f1b010000000000000042f20843bf75f4916ade8eb2faad0ada3795b3cacd29b679f18805f2826367550100000000000000a4984d27a16bb575649bc55d16f927d12beb0b5373f8db1aac9f2f88a721628d0100000000000000be724139e9bdd099b70f7edab7d1acf0d05fa1a4ca212f5e2958d31f4272dcda0100000000000000ee40b85aa515fdbe6e559f815edc7ec1e321e0d152dd54258382ba31b54e447a010000000000000090517dbf339bac4cd01fcad403dd0803cb67a9b15bf024ce038eea2c7f24230401000000000000008dc1439b28d488419535c2fea9c821023f7bce423fa02d9f42e60c07c3d6ab560100000000000000c3150e4ca47e7bc6486f198bf0a742a18ab0871bb1efa34e82c4ce81f27926670100000000000000c2eb94269c5e5d2ab9a1a300387358679640763b053aca99ba5c1c9083ee717f0100000000000000316bafdefb60951da2738d6c9c2ef1866d139b34b5eab6944d6bae754dd3fb1101000000000000007a92827270cfa82f16145a44f9bdd9ff5038ef1b665dd520a2e61db9749094960100000000000000ebb1834a568ea7653bc66f394937a0aa4f2f617118d2161e2c11c0d7d2febb9d0100000000000000b6d7ac98d6667fe8f4a186ef12a66b017df05a54e11b45d3f2967cb3d6b6827f010000000000000012e9b2bfe3d95c70fe8036a6cc8f677d67c9c65724aef87cc2a2eba5555d81070100000000000000e5f305cd6d930d41209036f066a86d3724aad2f388d354ac4979cc763c220a5601000000000000007ef02c62a02f0c18581cfb8ab7c2dcdff34e36a453a3700c568d61fdf9c8a7b40100000000000000eea623df46d1f301cf567672971c6895edf7316a5639dcee698730641950fb8b010000000000000098a6defcfeb3dfca36ec46eb373734627a2c395cdd2d886046a11788ed6467af01000000000000007a03c321222b7f7b34946e44850798fee20b9112a64e3950398cce19064b8723010000000000000035db4f9ab121f213b695b982f50c47ac04a14c54214e831ed1bbef7b9542310c01000000000000009bbc024bfe4f072b94735afda064dc3c7da2b4bc0c50cfad44722543583a372e01000000000000002b71a8a81bc2be65f3224ba3711d1bb243446d154369e209f97d8375b5fe8deb0100000000000000496826b538d97906e14d417b48598d7d591a483ab5f4c6786cd0b96239c2f4cf0100000000000000ef27d1d5573e6419ffcc7c4372668105118256b810ab2e2dbb5e7d8280ee94250100000000000000ed3f97f83ee7799c4aeba9f40bd18134c862c1a30875fc1e038cd27bae3a739a0100000000000000348e8bacc2d40191a6a00e137c745a422ff8fb03148d2ff9cad75efbb7a670140100000000000000316d5dbafd16258b7077d46a3dc32c46986a56a3eb095094d3f8fdd6acbf91cf01000000000000006a5dcdf2c3598c00d31a010dece5bf744f203856712531b07a31babcf06d09e30100000000000000efb31c5039e45fda750af5d2ea31b3210a407b168adec8f98db1f3dbc4cd94380100000000000000e2d564796e2660ba1bf553a21581f82116f775002a0dc0f26439f54c660fd84d0100000000000000bff74b6ff5ccdce9a659408871d486511938422a6e550fe0669ccd739f80108101000000000000009ac13f915431b39f99d8c0bed7e9c62d22e1e8b6daaee809920f491154ef6f8b01000000000000002ff9330a8c344ad3adf4d97db014a2d0891d4dd69f5c8369dad3e0b25566173e01000000000000008f44b6746d8d809da87915d6ec208a07ee63481d24b275c6424429e16ff4d25e0100000000000000e01d6eda8094e949bfbb05c819b509a12eb662a414b822f841d9555d58e1ce7601000000000000008fc9be34cc95e087c83cb6f86e2d2b7a22a7015558e8fcb1260740bcbd346d630100000000000000c3576342cbf99792896ee5329b04ff2eee2fc2bb6d53c5c03d52c8957ee793fb0100000000000000de186294778cc927cb2a24ade9ad165956f3586979f1ac5f3b4a16edd2674339010000000000000043a9a2915f377cd4943f602be38c3bd6ef39e91562c09f18fb672884b4bf8eab010000000000000059dadf17dc0f84c1c334e6a815a04bdfcd0988a3f3bcb713c66ae29e17276cc6010000000000000010caeb8c977dfd960736b1c5dd8840cd623b044fccf4054bb7854a53d5cf26610100000000000000297dc7cf28b3d40a42c5e8faac876bf7227c670e6e031dd0e0537f4fb70e6fbe0100000000000000f442190c846bbf5764bda138c075360be77a8fcb27ad889adbffdc7b881a33f601000000000000004a9ff9736a4c0907996106f8de8151f1a98f4f3c7dd21fcb85829d6a0e42063d0100000000000000a5f788e86ee2d311357b7aa4a128f063fa4ee36958baf10304c10bde7421aa2c0100000000000000290321d793b7dcb12ad148c2438bb60821bd938b7e9164a0c3d0fc82987f8b630100000000000000f7bdbb5c598784ba157940b08b5c5aa967d0f3faf60da28b915650eb39afe47c0100000000000000e3a73e5e042574299206b6520770553482e099d075bf00cbeb139b5f6737afed01000000000000003bb30832d06cdd3e081afef0cf2b7770bfe81dc58081d1886443e4e4547da8a101000000000000002832b59000d2027d2bf57fdb40da04bd8aac1498923397517181cc487a92815201000000000000006c3829859c7b27da7f0528e6281a406cf713971a03fa4dbb4ea973ee33f7f3170100000000000000677358fc648638cbd854d2a009dd39b8508dd3047d0c5f13bb403a64d053ad03010000000000000073dce1727ec50c50366378cd389246e19543d900d7e9dab8e323d04cf5b202a701000000000000002ada479e1fde7211de15900ed29035f6f07506cdbadc4c232aab96d62006b9de0100000000000000ee1a56541083b083f1a13b5f8aa4042a098de2cec4c43f3250baaba8f03a52ea0100000000000000e2cc4424464983ada824bbef5aaa8995e80ef1017c15ef3b13902599841637ba01000000000000005246164c02e9e6bfb7a2dbf7ba8a5440a189f8048373678f5b1085f217464c050100000000000000dea69c3badff9b8d7571cb6c538cd099544da7460a19e1b8651c5c530a6dd53c01000000000000001889f1b031fa7d64c4b480a17cd2941be2c02681bca397c93607091f37bf5ee1010000000000000005062bede97a45c6e1c6b593675ee07ce969fae45136cc2b2afc6e705a77f4700100000000000000fd734da3c98d7d56f8b9cc92f389350f3b6de2fb5917d338fee9fd961978e2a30100000000000000dc6e03f650e4304ca8d1598dde8d4faf45891987bfc49ef785ace47c4c0b5573010000000000000084845f99ad8fe89b7aa136c30b71b791015e8801b1d42cbf9841a0b90e723aad010000000000000018ede59e820bcdd0ed2faf99a21bdc916d71577dd35117f90efe77b8513e631001000000000000008c258b4ca16dfb8e5afde4cf40fecf115307798117b4860475511b3b5d5615840100000000000000ea8c8bec277832ff4f31396f76d6117026cf73407bce46de9ccfd17c686ca11701000000000000000e7bc96895730726225e47e31c742fd44d3936f31ecd32658c694fc11df2522401000000000000002299bac5f0a0570861899eed87f7f1faf65d74bb8120b8f498a6af503762c37901000000000000008873eb6d260a77ad37a779b9d6c87eabde1fb0be17ddfbd8c8bef64200cdf0db01000000000000008600604f01fa82a628ce3cb883cc6ff391cc6b7a348f3fd0d90b6657461013260100000000000000e08a65617167ad46c5217d67de29bf79e1f8f417e0d6d8e64bed10ae13312d8401000000000000003f6aeb3ed0d67d71ee11a1c2e1ed66da77abd8cc8c0f4d995d64fe4ec873684701000000000000006375ae0c1bf2b0388e16971715fd68c31ed179f38947531c165f0da2c3fe766701000000000000000cfb71d3e8d694979c35bbfce53fd595f2df0f1679ce32799c1774a22222433d010000000000000012aa455c35356255f9ba286193962f3bc23f7fff565c1995ac21015bd946fe6e0100000000000000447a00c24ddef95382f0fce94aec3aefb0e8f0cb1a635bfb05faa030d63c1130010000000000000047ede3eca5f6c8f0a51f2d36d7d1c236aab07a8b2aaa6ab08c8ccf8d87ce3dd10100000000000000a5d172126aadfe80d2b711776674d61df5a1cd1a0129761fb2d2de58ed9d48a001000000000000006b5487e03da258c7c92add43a1b5a99a0b40f8316e758585150877bb6fe88b3201000000000000009a0ea02dca493accceb975732f31c9d249d4c90ff1ca0bd86cbe00f1728146b401000000000000004485615186ae8ad33aff337594a7f8325d3a50201ee04320fb1dd2eab9643d1601000000000000002b07c366c1ed899a2ac9722b76e092828714a8177368e51ca05ec05c565866b30100000000000000e81206b483fdcf1fe42145f27d1efb8178a57ee24b196285374037da2a53b32301000000000000001ac44a1e32a5aabcb2bd23d6586da06e7d97d49a36cd670acaee574df1b912210100000000000000ff568b8e0dbe74604c6d04b5de6f2df03b343bea074c4495c6a10e511ba473d9010000000000000032bbff551f7ed51452d264d796315e578d982e942eebb60e519ca648935d8b0c01000000000000003a4bfd825ccd308def4a61bac80c579db42b02ea5f1a0768656a326e83a0dd880100000000000000db106e27c5b78f1a0d19e0abb47b4666c54906c5539c8596b43d36dc885e927a0100000000000000b5e0d0ae74b0ac76c0195fecca9660a241920ba97cdc5a247c7e941ee1f5407c01000000000000001450fb02aedbbfce8ec62c79767acd6b9e881390ad868d07713bb1d41d9c74b90100000000000000f33b53556f28f27d250585317cd57a18f37c5d5f2b3c1bd00a0c91ea54f1636f0100000000000000e056900cabddb471de9e1846d7efdddd8b5ad400b02fc54b4402ba725c78bf9a0100000000000000f1d8f202f4766a1eddc43c209636d25771988a0058ae1e16797219337771307f010000000000000080629b67e7b2d6f57e9da3cb29cc8463a65d125039628124784f944b94c29e8801000000000000008a92eb6852ec8ed6a1721d33f6f671e488fb995c3fa36c5e55400721bcacef75010000000000000080a35afdc67bbec0e3e5ef1fa569249264c54d74df218b46e1dc0fd585149f45010000000000000079f73931b31ce353119fb4063412e844b16cb3eb92e592ebd822a8c213035548010000000000000030afa9ef79458f844a27a3881655b6eafb90b3912737f1bcddb95e78eb098c1d010000000000000095885aaa49faca9622ac9eab12f2efa509361511039934ffeff93eb948eb517d010000000000000031a46e639e57d1a11119b17f76617a35b3606d206fb5c3e87710f464f7a57de50100000000000000ed25d7114e2aef2f0e57dc2be1401a4994d8aaafb30223162634a512604a2366010000000000000012c277c98d0593ec3d0f9d01e8ce08f67813197b67fe96d2be7c5ba6481515df010000000000000008070000000000000001c362260100211c00000000000000002904050001000000000000002a0d050002000000000000002f16050003000000000000008e1f05000400000000000000ee28050005000000000000004d32050006000000000000009d3b05000700000000000000fd44050008000000000000005c4e05000900000000000000b75705000a00000000000000176105000b00000000000000766a05000c00000000000000d67305000d00000000000000357d05000e00000000000000958605000f00000000000000f58f0500100000000000000055990500110000000000000095a205001200000000000000d8ab050013000000000000000db50500140000000000000024da05001500000000000000aaec05001600000000000000f4f5050017000000000000003bff050018000000000000008b0806001900000000000000992406001a00000000000000f92d06001b000000000000000d4a06001c00000000000000685306001d00000000000000b65c06001e00000000000000f76506001f00000000000000308b060020000000000000007b940600210000000000000025a70600220000000000000033c3060023000000000000007fcc06002400000000000000c3d50600250000000000000011df060026000000000000005ae806002700000000000000a0f106002800000000000000410407002900000000000000880d07002a000000000000001b3c07002b00000000000000764507002c00000000000000357407002d00000000000000239907002e000000000000006fa207002f00000000000000c3ab070030000000000000006abe07003100000000000000bdc7070032000000000000000fd107003300000000000000b2e3070034000000000000000aed07003500000000000000971b080036000000000000009d24080037000000000000009c4008003800000000000000255308003900000000000000735c08003a000000000000000c6f08003b00000000000000048b08003c00000000000000589408003d00000000000000d3c208003e00000000000000e4de08003f000000000000003fe808004000000000000000f7fa08004100000000000000aa0d09004200000000000000153309004300000000000000fc6a090044000000000000003e74090045000000000000009a7d0900460000000000000000a30900470000000000000014db0900480000000000000020130a004900000000000000791c0a004a00000000000000364b0a004b0000000000000043830a004c00000000000000e5950a004d0000000000000045bb0a004e0000000000000059f30a004f000000000000000e060b005000000000000000812b0b005100000000000000dc340b005200000000000000ef500b005300000000000000a3630b005400000000000000b69b0b005500000000000000c7d30b005600000000000000dd0b0c005700000000000000f3430c005800000000000000087c0c00590000000000000052b30c005a0000000000000060eb0c005b00000000000000baf40c005c0000000000000072230d005d00000000000000805b0d005e000000000000007e930d005f000000000000007ccb0d00600000000000000076030e006100000000000000793b0e00620000000000000088730e00630000000000000092ab0e00640000000000000083e30e006500000000000000731b0f00660000000000000079530f006700000000000000748b0f0068000000000000001fc30f006900000000000000d0fa0f006a00000000000000633210006b00000000000000826a10006c0000000000000028a210006d0000000000000005b310006e0000000000000055d810006f000000000000004810110070000000000000006548110071000000000000008e8011007200000000000000bfb811007300000000000000bbf011007400000000000000e828120075000000000000001561120076000000000000003b991200770000000000000058d112007800000000000000770913007900000000000000944113007a00000000000000c07913007b00000000000000e7b113007c000000000000000cea13007d0000000000000067f313007e00000000000000d31814007f000000000000002e22140080000000000000008c2b14008100000000000000545a14008200000000000000ad63140083000000000000000e89140084000000000000006892140085000000000000008dca14008600000000000000b00215008700000000000000d03a15008800000000000000f3721500890000000000000015ab15008a000000000000003be315008b000000000000005d1b16008c00000000000000855316008d00000000000000b18b16008e00000000000000d3c316008f00000000000000e9fb16009000000000000000073417009100000000000000bf4617009200000000000000286c1700930000000000000029a41700940000000000000041dc17009500000000000000591418009600000000000000bf3918009700000000000000704c18009800000000000000948418009900000000000000f28d18009a00000000000000bcbc18009b00000000000000e4f418009c000000000000000b2d19009d000000000000002c6519009e00000000000000896e19009f00000000000000519d1900a00000000000000075d51900a100000000000000920d1a00a200000000000000ec161a00a300000000000000b6451a00a400000000000000887d1a00a50000000000000077b51a00a600000000000000cdbe1a00a70000000000000070ed1a00a80000000000000083091b00a9000000000000004e251b00aa00000000000000fe371b00ab00000000000000065d1b00ac000000000000005f661b00ad00000000000000bd6f1b00ae00000000000000de941b00af00000000000000fecc1b00b0000000000000001f041c00b1000000000000000c321c00b2000000000000002f3b1c00b3000000000000002e721c00b4000000000000000ca01c00b50000000000000044a91c00b60000000000000022e11c00b70000000000000044191d00b8000000000000000c481d00b9000000000000006b511d00ba000000000000008b891d00bb00000000000000a5c11d00bc0000000000000053f91d00bd00000000000000ff301e00be00000000000000054d1e00bf0000000000000002691e00c000000000000000d1a01e00c100000000000000c5d81e00c200000000000000cf101f00c30000000000000083481f00c400000000000000af801f00c500000000000000d0b81f00c600000000000000f0f01f00c7000000000000001b292000c80000000000000039612000c90000000000000054992000ca000000000000004fd12000cb000000000000004c092100cc00000000000000031c2100cd000000000000006d412100ce00000000000000cc4a2100cf0000000000000098792100d000000000000000c4b12100d100000000000000eee92100d20000000000000011222200d300000000000000325a2200d40000000000000055922200d50000000000000075ca2200d6000000000000008f022300d700000000000000b13a2300d800000000000000cd722300d90000000000000078852300da00000000000000ce8e2300db00000000000000bdaa2300dc00000000000000abe22300dd0000000000000012112400de00000000000000501a2400df0000000000000045512400e000000000000000a1882400e1000000000000005fc02400e20000000000000013f82400e30000000000000007302500e40000000000000013682500e500000000000000c37a2500e600000000000000a8962500e700000000000000fb9f2500e80000000000000000d82500e90000000000000019102600ea000000000000002b482600eb0000000000000028802600ec000000000000002eb82600ed0000000000000044d42600ee0000000000000058f02600ef00000000000000b3f92600f00000000000000065282700f10000000000000057602700f20000000000000064982700f3000000000000008dd02700f400000000000000a7ec2700f500000000000000b9082800f600000000000000e0402800f700000000000000f6782800f80000000000000019b12800f90000000000000040e92800fa000000000000006c212900fb00000000000000a0592900fc00000000000000107f2900fd00000000000000bc912900fe00000000000000eac92900ff00000000000000fd012a000001000000000000ff1d2a0001010000000000000c3a2a0002010000000000002b722a00030100000000000005aa2a000401000000000000fce12a0005010000000000004ceb2a000601000000000000e0fd2a000701000000000000c3192b000801000000000000be512b0009010000000000000a772b000a01000000000000ae892b000b01000000000000b0a52b000c01000000000000abc12b000d010000000000009bf92b000e0100000000000093312c000f0100000000000087692c00100100000000000075a12c00110100000000000074d92c00120100000000000089112d00130100000000000099492d001401000000000000b0812d001501000000000000c3b92d001601000000000000d1f12d001701000000000000d6292e001801000000000000e9612e001901000000000000ea992e001a01000000000000efd12e001b01000000000000f8092f001c01000000000000f0412f001d01000000000000e9792f001e0100000000000036832f001f01000000000000b2b12f002001000000000000a9cd2f00210100000000000094e92f0022010000000000007121300023010000000000003b5930002401000000000000089130002501000000000000599a30002601000000000000f6c830002701000000000000e30031002801000000000000c03831002901000000000000a17031002a01000000000000f27931002b010000000000007fa831002c010000000000005de031002d01000000000000aae931002e01000000000000441832002f01000000000000295032003001000000000000fe8732003101000000000000aa9a3200320100000000000010c0320033010000000000003af8320034010000000000005f303300350100000000000059683300360100000000000078a0330037010000000000009bd833003801000000000000cb1034003901000000000000f44834003a010000000000001c8134003b0100000000000044b934003c0100000000000055f134003d010000000000009dfa34003e01000000000000302935003f01000000000000c6573500400100000000000023613500410100000000000053993500420100000000000080d135004301000000000000560036004401000000000000b10936004501000000000000ce4136004601000000000000037a3600470100000000000031b2360048010000000000005fea360049010000000000007b2237004a01000000000000995a37004b01000000000000f56337004c01000000000000c69237004d01000000000000feca37004e01000000000000340338004f01000000000000683b380050010000000000009e7338005101000000000000c9ab38005201000000000000dcc7380053010000000000003cd138005401000000000000f8e338005501000000000000b0f6380056010000000000001c1c390057010000000000007a2539005801000000000000da2e39005901000000000000525439005a01000000000000878c39005b01000000000000bbc439005c01000000000000f3fc39005d0100000000000028353a005e010000000000005f6d3a005f0100000000000098a53a006001000000000000cedd3a0061010000000000000c163b006201000000000000404e3b00630100000000000019853b006401000000000000608e3b006501000000000000b8973b0066010000000000000fa13b006701000000000000a7b33b006801000000000000fabc3b00690100000000000049c63b006a010000000000009ccf3b006b01000000000000eed83b006c01000000000000c1f43b006d0100000000000014fe3b006e0100000000000066073c006f01000000000000b7103c0070010000000000009e2c3c007101000000000000ee353c00720100000000000094483c007301000000000000e0513c0074010000000000007c643c0075010000000000001d773c0076010000000000004b9c3c00770100000000000010d43c007801000000000000d80b3d0079010000000000001a153d007a0100000000000053433d007b01000000000000ea553d007c01000000000000225f3d007d0100000000000072683d007e01000000000000b4713d007f01000000000000fb7a3d0080010000000000007a8d3d008101000000000000b8963d00820100000000000006a03d00830100000000000088b23d008401000000000000c8bb3d0085010000000000000bc53d0086010000000000001dea3d008701000000000000e9053e008801000000000000b5213e0089010000000000003b343e008a01000000000000843d3e008b010000000000005e593e008c010000000000001f913e008d0100000000000065c83e008e010000000000006bed3e008f01000000000000a9f63e009001000000000000f6ff3e009101000000000000c1373f0092010000000000005c4a3f0093010000000000003b663f009401000000000000856f3f009501000000000000cf783f0096010000000000003ea73f009701000000000000ccde3f0098010000000000008516400099010000000000001e2940009a010000000000006e4e40009b01000000000000c35740009c010000000000009b8640009d01000000000000cebe40009e0100000000000001f740009f01000000000000372f4100a00100000000000097384100a10100000000000070674100a201000000000000a99f4100a30100000000000065b24100a401000000000000ddd74100a50100000000000096ea4100a6010000000000000b104200a70100000000000044484200a8010000000000009c514200a9010000000000003b804200aa0100000000000051b84200ab010000000000006fd44200ac010000000000005ef04200ad01000000000000b9f94200ae010000000000006a284300af0100000000000078604300b00100000000000077984300b101000000000000abd04300b20100000000000064e34300b30100000000000072ff4300b401000000000000d2084400b50100000000000008414400b6010000000000002e794400b7010000000000005eb14400b8010000000000007de94400b9010000000000009e214500ba010000000000005d344500bb01000000000000d0594500bc0100000000000006924500bd010000000000001aca4500be010000000000004a024600bf01000000000000603a4600c00100000000000084724600c101000000000000abaa4600c20100000000000047bd4600c3010000000000009ec64600c401000000000000a0e24600c5010000000000005df54600c601000000000000bf1a4700c701000000000000d1524700c8010000000000007f814700c901000000000000dd8a4700ca0100000000000039944700cb01000000000000f2c24700cc0100000000000010fb4700cd01000000000000d5294800ce010000000000002c334800cf01000000000000f9614800d001000000000000596b4800d10100000000000078874800d2010000000000008da34800d301000000000000aadb4800d401000000000000c6134900d501000000000000eb4b4900d601000000000000e7834900d701000000000000f9bb4900d801000000000000b6ce4900d9010000000000001bf44900da010000000000004a2c4a00db0100000000000066644a00dc010000000000002f7d4a00dd0100000000000019994a00de01000000000000c0ab4a00df01000000000000aec74a00e001000000000000fed04a00e101000000000000bbff4a00e20100000000000019094b00e301000000000000902e4b00e40100000000000041414b00e50100000000000010704b00e6010000000000006e794b00e7010000000000002b8c4b00e80100000000000094b14b00e901000000000000a4e94b00ea01000000000000d4214c00eb01000000000000d7594c00ec01000000000000e8914c00ed0100000000000004ae4c00ee01000000000000ebc94c00ef0100000000000014024d00f001000000000000fe394d00f1010000000000000a724d00f201000000000000667b4d00f30100000000000013aa4d00f40100000000000031c64d00f50100000000000037e24d00f6010000000000004afe4d00f7010000000000002c1a4e00f801000000000000ea2c4e00f90100000000000049364e00fa010000000000004e524e00fb01000000000000628a4e00fc0100000000000079a64e00fd010000000000001ab94e00fe0100000000000079c24e00ff0100000000000094de4e000002000000000000aafa4e00010200000000000059324f00020200000000000004654f000302000000000000ff764f0004020000000000000d804f0005020000000000007e924f000602000000000000c29b4f000702000000000000f4d34f000802000000000000160c50000902000000000000504450000a02000000000000877c50000b02000000000000b6b450000c02000000000000e7ec50000d0200000000000046f650000e02000000000000b61b51000f020000000000001625510010020000000000004f5d510011020000000000000f7051001202000000000000889551001302000000000000b5cd5100140200000000000014d751001502000000000000e605520016020000000000001f3e5200170200000000000053765200180200000000000089ae52001902000000000000e8b752001a02000000000000b7e652001b0200000000000074f952001c02000000000000e81e53001d020000000000001a5753001e02000000000000558f53001f020000000000008ac753002002000000000000b9ff53002102000000000000f13754002202000000000000277054002302000000000000418c54002402000000000000d1a354002502000000000000d9c8540026020000000000007edb54002702000000000000b81355002802000000000000e34b55002902000000000000c58355002a02000000000000d6bb55002b0200000000000007f455002c02000000000000c30656002d020000000000002c2c56002e020000000000005d6456002f020000000000008f9c56003002000000000000c9d456003102000000000000070d570032020000000000004345570033020000000000007a7d570034020000000000007d99570035020000000000009ab557003602000000000000b4ed57003702000000000000f225580038020000000000002f5e580039020000000000006b9658003a02000000000000a6ce58003b02000000000000e30659003c02000000000000183f59003d02000000000000517759003e02000000000000ad8059003f020000000000008baf59004002000000000000e9b859004102000000000000c5e75900420200000000000002205a0043020000000000003f585a0044020000000000007c905a004502000000000000bcc85a004602000000000000f1005b004702000000000000111d5b00480200000000000030395b0049020000000000006f715b004a02000000000000aca95b004b02000000000000e9e15b004c02000000000000251a5c004d0200000000000060525c004e020000000000009f8a5c004f02000000000000dbc25c00500200000000000019fb5c00510200000000000058335d005202000000000000956b5d005302000000000000c7a35d005402000000000000f7db5d00550200000000000031145e0056020000000000006f4c5e005702000000000000a7845e005802000000000000e0bc5e0059020000000000003fc65e005a020000000000001cf55e005b02000000000000582d5f005c0200000000000093655f005d02000000000000cf9d5f005e0200000000000005d65f005f02000000000000440e600060020000000000008346600061020000000000006a7e6000620200000000000056b46000630200000000000000ec60006402000000000000a72361006502000000000000e25b61006602000000000000f293610067020000000000001bcc61006802000000000000dade61006902000000000000590462006a02000000000000963c62006b02000000000000cc7462006c020000000000008c8762006d02000000000000ffac62006e020000000000003ae562006f02000000000000731d63007002000000000000b05563007102000000000000e98d630072020000000000001dc6630073020000000000005dfe63007402000000000000993664007502000000000000d86e6400760200000000000017a76400770200000000000051df640078020000000000008a1765007902000000000000c34f65007a02000000000000018865007b020000000000003ec065007c020000000000007af865007d02000000000000b63066007e02000000000000f06866007f0200000000000004a16600800200000000000041d966008102000000000000711167008202000000000000ac4967008302000000000000de8167008402000000000000f8b967008502000000000000b8cc6700860200000000000035f2670087020000000000006e2a680088020000000000001c3d680089020000000000007f6268008a02000000000000ba9a68008b02000000000000f3d268008c02000000000000310b69008d02000000000000704369008e02000000000000ae7b69008f02000000000000eeb3690090020000000000002bec6900910200000000000065246a009202000000000000a45c6a009302000000000000e0946a0094020000000000001dcd6a009502000000000000dbdf6a00960200000000000059056b00970200000000000018186b009802000000000000923d6b009902000000000000b0756b009a02000000000000e6ad6b009b0200000000000021e66b009c020000000000005e1e6c009d0200000000000096566c009e02000000000000d28e6c009f020000000000000ac76c00a00200000000000047ff6c00a10200000000000077376d00a202000000000000876f6d00a3020000000000000fa76d00a40200000000000059dc6d00a50200000000000022146e00a602000000000000464c6e00a70200000000000071846e00a802000000000000eea96e00a902000000000000aabc6e00aa0200000000000085eb6e00ab02000000000000e4f46e00ac020000000000001c2d6f00ad02000000000000da3f6f00ae0200000000000053656f00af020000000000008c9d6f00b002000000000000c4d56f00b102000000000000d90d7000b202000000000000d7457000b302000000000000f67d7000b402000000000000deb57000b502000000000000b2ed7000b602000000000000a9257100b702000000000000975d7100b802000000000000338c7100b9020000000000007e957100ba0200000000000068b17100bb0200000000000050cd7100bc020000000000001c057200bd02000000000000610e7200be02000000000000c13c7200bf020000000000006b747200c0020000000000005aac7200c10200000000000032e47200c202000000000000dcf67200c302000000000000321c7300c4020000000000002b547300c5020000000000007d8b7300c60200000000000020c37300c702000000000000cefa7300c8020000000000003c327400c9020000000000009b697400ca02000000000000eda07400cb0200000000000056d87400cc0200000000000090107500cd02000000000000ad2c7500ce020000000000000b367500cf02000000000000c7487500d002000000000000fe807500d10200000000000039b97500d20200000000000073f17500d30200000000000030047600d4020000000000004b207600d502000000000000a9297600d60200000000000006337600d702000000000000d3617600d80200000000000090747600d902000000000000089a7600da020000000000002fd27600db020000000000001a0a7700dc0200000000000022427700dd02000000000000007a7700de02000000000000d2b17700df02000000000000f8e97700e0020000000000002b227800e102000000000000635a7800e202000000000000a0927800e302000000000000daca7800e40200000000000011037900e502000000000000483b7900e60200000000000085737900e702000000000000b1ab7900e802000000000000dae37900e902000000000000121c7a00ea0200000000000049547a00eb02000000000000878c7a00ec02000000000000bfc47a00ed02000000000000edfc7a00ee0200000000000026357b00ef02000000000000606d7b00f0020000000000009da57b00f102000000000000cddd7b00f20200000000000006167c00f3020000000000003f4e7c00f402000000000000fb607c00f50200000000000077867c00f602000000000000b4be7c00f70200000000000014c87c00f802000000000000e0f67c00f9020000000000001b2f7d00fa0200000000000058677d00fb02000000000000959f7d00fc02000000000000d2d77d00fd02000000000000ec0f7e00fe0200000000000025487e00ff020000000000005f807e0000030000000000009ab87e000103000000000000d3f07e000203000000000000ee0c7f0003030000000000000a297f000403000000000000c53b7f00050300000000000043617f0006030000000000007b997f000703000000000000b9d17f000803000000000000f20980000903000000000000284280000a030000000000005e7a80000b0300000000000099b280000c03000000000000d2ea80000d03000000000000082381000e030000000000003e5b81000f030000000000007b9381001003000000000000b8cb81001103000000000000f30382001203000000000000313c82001303000000000000697482001403000000000000a6ac82001503000000000000c4c882001603000000000000e0e482001703000000000000ff00830018030000000000001e1d83001903000000000000dd2f83001a030000000000005b5583001b03000000000000988d83001c03000000000000d5c583001d0300000000000010fe83001e030000000000004e3684001f03000000000000826e84002003000000000000bba684002103000000000000f5de840022030000000000006f0485002303000000000000cc0d850024030000000000002c1785002503000000000000ea2985002603000000000000634f850027030000000000007e6b850028030000000000009a878500290300000000000017ad85002a03000000000000d2bf85002b0300000000000031c985002c030000000000000ef885002d030000000000004a3086002e03000000000000866886002f03000000000000bea086003003000000000000f2d8860031030000000000002a1187003203000000000000871a870033030000000000006449870034030000000000001d5c87003503000000000000998187003603000000000000cfb987003703000000000000eed5870038030000000000000cf2870039030000000000004a2a88003a03000000000000a83388003b03000000000000826288003c03000000000000b69a88003d03000000000000efd288003e030000000000002d0b89003f030000000000004d27890040030000000000006c4389004103000000000000ab7b89004203000000000000eab38900430300000000000028ec8900440300000000000068248a004503000000000000a05c8a004603000000000000b4948a004703000000000000f4cc8a00480300000000000030058b0049030000000000006f3d8b004a030000000000008e598b004b03000000000000ae758b004c03000000000000ecad8b004d0300000000000028e68b004e03000000000000331e8c004f030000000000004f568c0050030000000000008e8e8c005103000000000000c7c68c00520300000000000005ff8c00530300000000000041378d005403000000000000746f8d005503000000000000a4a78d00560300000000000064ba8d005703000000000000e4df8d0058030000000000000a188e00590300000000000023508e005a0300000000000027888e005b03000000000000d89a8e005c0300000000000043c08e005d0300000000000082f88e005e03000000000000c0308f005f03000000000000ff688f0060030000000000001ba18f00610300000000000059d98f006203000000000000981190006303000000000000d64990006403000000000000f56590006503000000000000158290006603000000000000758b9000670300000000000053ba9000680300000000000092f290006903000000000000d22a91006a03000000000000106391006b03000000000000489b91006c03000000000000a2a491006d030000000000001bd391006e03000000000000530992006f03000000000000d32e9200700300000000000090419200710300000000000074799200720300000000000094b19200730300000000000072e092007403000000000000d2e992007503000000000000b21893007603000000000000122293007703000000000000445a93007803000000000000739293007903000000000000f3b793007a03000000000000abca93007b030000000000005ddd93007c03000000000000c40294007d03000000000000e13a94007e03000000000000217394007f0300000000000059ab9400800300000000000090e394008103000000000000c31b95008203000000000000ea53950083030000000000009866950084030000000000000b8c9500850300000000000046c49500860300000000000057fc950087030000000000008f3496008803000000000000cf6c960089030000000000000ba596008a0300000000000045dd96008b03000000000000a3e696008c03000000000000801597008d03000000000000bc4d97008e03000000000000f78597008f030000000000002ebe9700900300000000000030f6970091030000000000005a2e98009203000000000000956698009303000000000000d49e9800940300000000000014d7980095030000000000003b0f990096030000000000006c4799009703000000000000ac7f9900980300000000000078b79900990300000000000026ca99009a030000000000007cef99009b0300000000000085279a009c03000000000000be5f9a009d03000000000000fd979a009e03000000000000b9aa9a009f0300000000000022d09a00a0030000000000003dec9a00a10300000000000058089b00a20300000000000074249b00a3030000000000008b409b00a403000000000000e4499b00a50300000000000038789b00a60300000000000076819b00a703000000000000e4af9b00a803000000000000b7e79b00a903000000000000731f9c00aa03000000000000a6289c00ab030000000000002f3b9c00ac0300000000000012579c00ad030000000000005d609c00ae03000000000000cb8e9c00af0300000000000057a19c00b00300000000000086c69c00b1030000000000005afe9c00b20300000000000002369d00b303000000000000bc6d9d00b40300000000000099a59d00b5030000000000004edd9d00b603000000000000db149e00b703000000000000e0399e00b803000000000000724c9e00b9030000000000002a849e00ba03000000000000ee9f9e00bb03000000000000d1bb9e00bc030000000000007df39e00bd03000000000000f02a9f00be030000000000006a629f00bf03000000000000ff999f00c0030000000000002ed19f00c1030000000000004608a000c203000000000000893fa000c303000000000000a476a000c403000000000000dfada000c5030000000000001cb7a000c6030000000000003ce5a000c703000000000000921ca100c8030000000000008c53a100c903000000000000988aa100ca0300000000000010a6a100cb03000000000000a0c1a100cc03000000000000e5d3a100cd0300000000000072f8a100ce030000000000007c2fa200cf030000000000003766a200d003000000000000389da200d10300000000000056a6a200d203000000000000a9b8a200d303000000000000cac1a200d4030000000000001ad4a200d503000000000000200ba300d6030000000000002714a300d703000000000000bc41a300d8030000000000006778a300d9030000000000000aafa300da0300000000000046dca300db0300000000000065e5a300dc03000000000000a81ba400dd03000000000000d72da400de030000000000002352a400df030000000000006288a400e003000000000000c1bea400e103000000000000f8f4a400e203000000000000212ba500e3030000000000003f61a500e403000000000000656aa500e503000000000000e497a500e60300000000000040cea500e703000000000000b204a600e803000000000000fc3aa600e9030000000000009471a600ea0300000000000037a8a600eb030000000000001adfa600ec03000000000000ea0ca700ed030000000000000e16a700ee030000000000005228a700ef030000000000007d31a700f003000000000000034da700f1030000000000002084a700f2030000000000004a8da700f303000000000000a99fa700f403000000000000f6baa700f503000000000000c1f1a700f603000000000000be28a800f703000000000000a65fa800f8030000000000003e7ba800f903000000000000c296a800fa03000000000000c3cda800fb03000000000000d504a900fc03000000000000f83ba900fd030000000000005f73a900fe03000000000000ceaaa900ff030000000000000bb4a900000400000000000005e2a90001040000000000005e19aa000204000000000000c12baa0003040000000000008e50aa000404000000000000fd62aa0005040000000000008175aa000604000000000000fa87aa0007040000000000002f91aa0008040000000000005dbfaa000904000000000000a3c8aa000a04000000000000e5f6aa000b04000000000000e41bab000c040000000000005b2eab000d04000000000000e765ab000e040000000000004c9dab000f0400000000000085a6ab001004000000000000b8d4ab001104000000000000fdddab0012040000000000003b0cac001304000000000000d043ac001404000000000000827bac001504000000000000b8a0ac0016040000000000005bb3ac00170400000000000029ebac0018040000000000006af4ac0019040000000000000e07ad001a04000000000000f422ad001b04000000000000432cad001c040000000000009935ad001d04000000000000ee3ead001e04000000000000d55aad001f04000000000000bd76ad002004000000000000a592ad00210400000000000076caad002204000000000000f6dcad002304000000000000e001ae0024040000000000004f39ae0025040000000000001371ae0026040000000000005f7aae002704000000000000fc8cae002804000000000000cda8ae0029040000000000005ebbae002a0400000000000081e0ae002b040000000000004f18af002c040000000000001e50af002d04000000000000e687af002e04000000000000a0bfaf002f040000000000005ff7af003004000000000000042fb0003104000000000000da66b00032040000000000009a9eb000330400000000000063d6b0003404000000000000300eb1003504000000000000da45b10036040000000000009a7db100370400000000000050b5b100380400000000000029edb1003904000000000000971bb2003a04000000000000e024b2003b04000000000000995cb2003c040000000000006694b2003d0400000000000048b0b2003e040000000000002eccb2003f0400000000000075d5b200400400000000000008e8b2004104000000000000e703b3004204000000000000ce1fb3004304000000000000b63bb30044040000000000000d45b30045040000000000009f57b30046040000000000007573b3004704000000000000c67cb30048040000000000003aabb3004904000000000000e4e2b3004a04000000000000651ab4004b04000000000000f951b4004c040000000000009389b4004d0400000000000025c1b4004e04000000000000f6f8b4004f04000000000000241eb5005004000000000000b130b50051040000000000007068b500520400000000000040a0b5005304000000000000ecd7b50054040000000000000510b60055040000000000003e48b60056040000000000007a80b6005704000000000000b7b8b6005804000000000000f3f0b60059040000000000002f29b7005a04000000000000ae4eb7005b040000000000006861b7005c04000000000000a599b7005d04000000000000ded1b7005e040000000000005cf7b7005f04000000000000160ab80060040000000000005042b8006104000000000000964bb8006204000000000000687ab8006304000000000000a6b2b800640400000000000066c5b8006504000000000000e5eab80066040000000000000423b90067040000000000003f5bb90068040000000000005d77b90069040000000000007b93b9006a04000000000000b7cbb9006b04000000000000ef03ba006c04000000000000133cba006d040000000000003358ba006e040000000000005174ba006f0400000000000042acba0070040000000000006ce4ba007104000000000000a21cbb007204000000000000e054bb007304000000000000405ebb0074040000000000001b8dbb0075040000000000002ec5bb0076040000000000006dfdbb007704000000000000a435bc007804000000000000d06dbc0079040000000000000ca6bc007a040000000000004adebc007b040000000000008716bd007c04000000000000c34ebd007d04000000000000fc86bd007e040000000000003bbfbd007f040000000000007af7bd008004000000000000d500be008104000000000000b32fbe008204000000000000ea67be00830400000000000027a0be00840400000000000065d8be008504000000000000a410bf008604000000000000dd48bf0087040000000000003b52bf0088040000000000001881bf0089040000000000008fb8bf008a04000000000000cbc1bf008b04000000000000f8efbf008c040000000000007602c0008d040000000000008327c0008e04000000000000075fc0008f040000000000005d96c000900400000000000009cec00091040000000000003b06c10092040000000000002d3ec10093040000000000006476c10094040000000000007aaec1009504000000000000b9e6c1009604000000000000ef1ec20097040000000000002c57c2009804000000000000698fc20099040000000000008cc7c2009a040000000000009effc2009b04000000000000da37c3009c04000000000000ee6fc3009d0400000000000029a8c3009e0400000000000067e0c3009f04000000000000240fc400a0040000000000008218c400a104000000000000b150c400a204000000000000c088c400a304000000000000d2c0c400a404000000000000f6f8c400a5040000000000001231c500a604000000000000d143c500a7040000000000004d69c500a80400000000000089a1c500a904000000000000c4d9c500aa040000000000000112c600ab040000000000005c1bc600ac040000000000003a4ac600ad040000000000007482c600ae04000000000000abbac600af04000000000000e4f2c600b0040000000000001d2bc700b1040000000000002e47c700b2040000000000004863c700b304000000000000687fc700b404000000000000829bc700b5040000000000009bd3c700b604000000000000d80bc800b7040000000000001144c800b804000000000000704dc800b904000000000000d056c800ba040000000000004e7cc800bb0400000000000080b4c800bc04000000000000b1ecc800bd040000000000009808c900be040000000000008d24c900bf04000000000000c75cc900c004000000000000df94c900c104000000000000feb0c900c2040000000000001dcdc900c3040000000000004605ca00c4040000000000006e3dca00c5040000000000009e75ca00c604000000000000029bca00c704000000000000aeadca00c8040000000000008adcca00c904000000000000eae5ca00ca04000000000000251ecb00cb04000000000000fa55cb00cc04000000000000778ccb00cd04000000000000eec3cb00ce0400000000000005fccb00cf040000000000004134cc00d004000000000000716ccc00d10400000000000096a4cc00d204000000000000d3dccc00d30400000000000086efcc00d4040000000000000215cd00d504000000000000ac27cd00d604000000000000264dcd00d7040000000000008656cd00d8040000000000006385cd00d9040000000000003bb4cd00da0400000000000099bdcd00db04000000000000d8f5cd00dc04000000000000172ece00dd040000000000005366ce00de04000000000000909ece00df04000000000000b7d6ce00e00400000000000068e9ce00e104000000000000cc0ecf00e2040000000000000547cf00e304000000000000427fcf00e40400000000000079b7cf00e504000000000000b8efcf00e604000000000000f427d000e7040000000000000b60d000e8040000000000004698d000e90400000000000083d0d000ea04000000000000c008d100eb04000000000000fa40d100ec040000000000003679d100ed0400000000000073b1d100ee0400000000000087cdd100ef04000000000000a6e9d100f004000000000000e521d200f1040000000000001e5ad200f2040000000000005692d200f30400000000000092cad200f40400000000000052ddd200f504000000000000ce02d300f604000000000000e13ad300f7040000000000003444d300f804000000000000dc56d300f904000000000000ef72d300fa040000000000004d7cd300fb0400000000000024abd300fc04000000000000a1d0d300fd040000000000005be3d300fe04000000000000901bd400ff04000000000000ce53d40000050000000000000a8cd40001050000000000003ac4d40002050000000000004ae0d400030500000000000069fcd4000405000000000000a134d50005050000000000006047d5000605000000000000de6cd50007050000000000001ba5d500080500000000000058ddd50009050000000000009415d6000a05000000000000d24dd6000b05000000000000f085d6000c050000000000001ebed6000d05000000000000fbecd6000e050000000000005bf6d6000f050000000000008b2ed7001005000000000000c566d7001105000000000000029fd700120500000000000036d7d70013050000000000006f0fd80014050000000000009f47d8001505000000000000c97fd8001605000000000000e4b7d80017050000000000001ff0d80018050000000000005928d90019050000000000009560d9001a050000000000005473d9001b05000000000000718fd9001c05000000000000d198d9001d0500000000000031a2d9001e050000000000000fd1d9001f05000000000000cfe3d90020050000000000004f09da0021050000000000008941da002205000000000000b979da002305000000000000edb1da00240500000000000047bbda00250500000000000054d7da00260500000000000007eada00270500000000000067f3da0028050000000000003a22db0029050000000000005e5adb002a050000000000007892db002b05000000000000b0cadb002c05000000000000e702dc002d05000000000000183bdc002e050000000000007644dc002f050000000000002773dc003005000000000000dd85dc0031050000000000004dabdc00320500000000000086e3dc003305000000000000bb1bdd003405000000000000944add003505000000000000f453dd003605000000000000ad66dd003705000000000000298cdd00380500000000000060c4dd0039050000000000009cfcdd003a05000000000000fa05de003b05000000000000d734de003c05000000000000b56cde003d0500000000000045a4de003e05000000000000a1d2de003f05000000000000e4dbde0040050000000000002fe5de0041050000000000003c05df004205000000000000d81adf004305000000000000d636df0044050000000000002840df004505000000000000d252df004605000000000000cf6edf004705000000000000a9a6df004805000000000000eeafdf00490500000000000047b9df004a05000000000000b1dedf004b050000000000000de8df004c050000000000006e0de0004d05000000000000cb16e0004e05000000000000d84ee0004f050000000000007886e0005005000000000000b3bee0005105000000000000c3f6e0005205000000000000fe2ee10053050000000000002c67e1005405000000000000e679e1005505000000000000a68ce1005605000000000000629fe10057050000000000009bd7e10058050000000000005806e2005905000000000000b10fe2005a05000000000000e647e2005b050000000000001880e2005c050000000000007689e2005d050000000000004cb8e2005e050000000000007ef0e2005f05000000000000b228e3006005000000000000e760e30061050000000000002499e300620500000000000060d1e30063050000000000009c09e4006405000000000000d441e4006505000000000000334be40066050000000000000a7ae4006705000000000000e0a8e400680500000000000040b2e40069050000000000006feae4006a05000000000000a022e5006b05000000000000de5ae5006c050000000000001a93e5006d0500000000000055cbe5006e050000000000000bdee5006f050000000000008203e6007005000000000000db0ce6007105000000000000b53be6007205000000000000f073e60073050000000000004e7de60074050000000000002cace60075050000000000008cb5e60076050000000000006be4e6007705000000000000a51ce7007805000000000000dc54e7007905000000000000168de7007a050000000000004ac5e7007b0500000000000057fde7007c050000000000009335e8007d05000000000000d06de8007e050000000000002e77e8007f0500000000000004a6e80080050000000000003fdee80081050000000000007b16e9008205000000000000b74ee9008305000000000000e886e900840500000000000015bfe900850500000000000046f7e9008605000000000000602fea0087050000000000000442ea0088050000000000005a4bea0089050000000000006a67ea008a05000000000000889fea008b05000000000000daa8ea008c0500000000000079d7ea008d050000000000009f0feb008e050000000000005c22eb008f050000000000001c35eb009005000000000000d847eb0091050000000000000e80eb0092050000000000003eb8eb00930500000000000076f0eb009405000000000000ad28ec009505000000000000e660ec0096050000000000002399ec00970500000000000060d1ec0098050000000000009e09ed0099050000000000005e1ced009a05000000000000da41ed009b050000000000009654ed009c050000000000005567ed009d05000000000000127aed009e050000000000004ab2ed009f0500000000000082eaed00a005000000000000e1f3ed00a105000000000000bd22ee00a205000000000000fa5aee00a3050000000000003493ee00a405000000000000929cee00a50500000000000070cbee00a605000000000000ac03ef00a705000000000000eb3bef00a805000000000000fb73ef00a905000000000000feabef00aa05000000000000bebeef00ab0500000000000038e4ef00ac050000000000004e1cf000ad050000000000008854f000ae05000000000000958cf000af05000000000000c5c4f000b005000000000000fffcf000b1050000000000002e35f100b205000000000000de47f100b305000000000000466df100b4050000000000005da5f100b50500000000000094ddf100b605000000000000c115f200b705000000000000fa4df200b8050000000000002d86f200b90500000000000067bef200ba05000000000000a0f6f200bb05000000000000b52ef300bc050000000000003254f300bd05000000000000ef66f300be05000000000000239ff300bf0500000000000032d7f300c005000000000000dde9f300c1050000000000001e0ff400c2050000000000004f47f400c3050000000000008d7ff400c4050000000000006bb7f400c5050000000000009beff400c605000000000000c927f500c705000000000000ff5ff500c8050000000000003198f500c90500000000000063d0f500ca050000000000008908f600cb05000000000000c240f600cc050000000000001d66f600cd05000000000000ca78f600ce05000000000000fbb0f600cf0500000000000031e9f600d0050000000000006021f700d1050000000000009e59f700d205000000000000d891f700d3050000000000000acaf700d4050000000000004402f800d5050000000000007b3af800d605000000000000fa5ff800d705000000000000b672f800d805000000000000ebaaf800d90500000000000048b4f800da0500000000000024e3f800db05000000000000601bf900dc050000000000009753f900dd05000000000000ac8bf900de05000000000000e3c3f900df050000000000001cfcf900e0050000000000005934fa00e105000000000000936cfa00e205000000000000a7a4fa00e305000000000000dfdcfa00e4050000000000001a15fb00e5050000000000004d4dfb00e605000000000000a656fb00e7050000000000007b85fb00e805000000000000a2bdfb00e905000000000000dff5fb00ea050000000000005f1bfc00eb050000000000001e2efc00ec050000000000005266fc00ed050000000000000c79fc00ee05000000000000cc8bfc00ef050000000000002995fc00f005000000000000899efc00f105000000000000c1d6fc00f2050000000000007ee9fc00f3050000000000003dfcfc00f405000000000000f00efd00f5050000000000004c18fd00f6050000000000001a47fd00f7050000000000004a7ffd00f80500000000000086b7fd00f905000000000000beeffd00fa050000000000001ef9fd00fb05000000000000ee27fe00fc050000000000000944fe00fd050000000000002560fe00fe05000000000000307cfe00ff050000000000002798fe000006000000000000e2aafe00010600000000000042b4fe0002060000000000005dd0fe0003060000000000009a08ff000406000000000000ca40ff000506000000000000244aff000606000000000000f278ff0007060000000000002db1ff00080600000000000063e9ff000906000000000000712100010a06000000000000313400010b060000000000004c5000010c06000000000000ac5900010d06000000000000b49100010e06000000000000e3c900010f06000000000000f60101011006000000000000103a010111060000000000003056010112060000000000004c720101130600000000000084aa01011406000000000000c2e201011506000000000000fe1a02011606000000000000235302011706000000000000618b020118060000000000009dc3020119060000000000005ad602011a06000000000000badf02011b06000000000000d7fb02011c06000000000000370503011d06000000000000f71703011e06000000000000133403011f06000000000000516c03012006000000000000107f030121060000000000008da403012206000000000000cadc03012306000000000000f81404012406000000000000324d0401250600000000000070850401260600000000000080bd040127060000000000008bf504012806000000000000842d05012906000000000000d73605012a060000000000008b6505012b06000000000000c19d05012c06000000000000f9d505012d060000000000002e0e06012e06000000000000664606012f060000000000009d7e06013006000000000000d7b60601310600000000000011ef06013206000000000000442707013306000000000000725f07013406000000000000af9707013506000000000000e7cf070136060000000000001f0808013706000000000000372408013806000000000000544008013906000000000000917808013a06000000000000c8b008013b0600000000000001e908013c060000000000000f2109013d06000000000000085909013e06000000000000a99009013f06000000000000b5c809014006000000000000c5000a014106000000000000d2380a01420600000000000006710a014306000000000000f5a80a0144060000000000002be10a01450600000000000012190b01460600000000000048510b01470600000000000086890b014806000000000000e5920b014906000000000000c4c10b014a0600000000000000fa0b014b060000000000001d320c014c060000000000000b6a0c014d06000000000000c5980c014e060000000000001aa20c014f06000000000000d7d00c0150060000000000002dda0c01510600000000000069120d015206000000000000a44a0d015306000000000000df820d0154060000000000001dbb0d01550600000000000055f30d015606000000000000852b0e01570600000000000083630e015806000000000000c39b0e0159060000000000001ba50e015a060000000000007bae0e015b06000000000000f7d30e015c06000000000000afe60e015d06000000000000290c0f015e0600000000000065440f015f06000000000000db690f016006000000000000977c0f016106000000000000d2b40f016206000000000000ecec0f016306000000000000062510016406000000000000ea5c10016506000000000000f49410016606000000000000ffcc100167060000000000005ed610016806000000000000d6fb10016906000000000000340511016a06000000000000613d11016b060000000000008b7511016c06000000000000919111016d06000000000000abad11016e06000000000000e0e511016f060000000000001d1e120170060000000000005556120171060000000000006c8e120172060000000000008aaa12017306000000000000a3c612017406000000000000bdfe12017506000000000000f83613017606000000000000126f130177060000000000006c9413017806000000000000c99d1301790600000000000029a713017a060000000000005bdf13017b06000000000000b8e813017c0600000000000016f213017d060000000000008d1714017e06000000000000ec2014017f06000000000000a43314018006000000000000bc4f14018106000000000000d58714018206000000000000919a1401830600000000000005c0140184060000000000005fc914018506000000000000f8f714018606000000000000a10a15018706000000000000fa1315018806000000000000561d15018906000000000000fa2f15018a06000000000000513915018b06000000000000aa4215018c06000000000000106815018d060000000000002f8415018e060000000000004ba015018f060000000000002cbc15019006000000000000ccce1501910600000000000019d81501920600000000000076e115019306000000000000331016019406000000000000664816019506000000000000998016019606000000000000d5b81601970600000000000093cb16019806000000000000f3d4160199060000000000000ff116019a06000000000000cd0317019b06000000000000492917019c06000000000000a33217019d06000000000000444517019e060000000000003a6117019f06000000000000117d1701a0060000000000001c991701a10600000000000059d11701a2060000000000008c091801a306000000000000c2411801a4060000000000001e4b1801a50600000000000037671801a606000000000000f2791801a7060000000000001fb21801a806000000000000dec41801a90600000000000056ea1801aa0600000000000005fd1801ab0600000000000079221901ac06000000000000b25a1901ad06000000000000e5921901ae06000000000000f9ca1901af060000000000005df01901b00600000000000017031a01b1060000000000003a3b1a01b206000000000000e64d1a01b30600000000000044731a01b406000000000000a37c1a01b50600000000000078ab1a01b6060000000000006ee31a01b706000000000000921b1b01b806000000000000be531b01b9060000000000001d5d1b01ba06000000000000ec8b1b01bb0600000000000009c41b01bc06000000000000e5fb1b01bd06000000000000f1331c01be06000000000000ef6b1c01bf06000000000000a39a1c01c006000000000000fba31c01c106000000000000f2db1c01c206000000000000f8131d01c306000000000000df4b1d01c40600000000000075831d01c506000000000000aaa81d01c6060000000000003bbb1d01c7060000000000002fd71d01c80600000000000017f31d01c90600000000000067fc1d01ca06000000000000ad211e01cb06000000000000fb2a1e01cc0600000000000052341e01cd06000000000000da621e01ce06000000000000c87e1e01cf06000000000000b09a1e01d00600000000000089d21e01d1060000000000000fe51e01d2060000000000005fee1e01d3060000000000003b0a1f01d406000000000000f8411f01d50600000000000098541f01d606000000000000ac5d1f01d70600000000000094791f01d8060000000000006eb11f01d90600000000000038e91f01da060000000000000b212001db06000000000000e6582001dc06000000000000c8902001dd0600000000000062a32001de060000000000007ac82001df060000000000001cdb2001e0060000000000005d002101e10600000000000021382101e206000000000000f76f2101e3060000000000003d792101e406000000000000cea72101e50600000000000095df2101e6060000000000006e172201e706000000000000334f2201e80600000000000085582201e90600000000000010872201ea06000000000000eea22201eb06000000000000cbbe2201ec06000000000000a9da2201ed060000000000009ef62201ee060000000000003d092301ef06000000000000782e2301f0060000000000000c412301f1060000000000005e4a2301f20600000000000045662301f3060000000000003b822301f406000000000000299e2301f506000000000000fed52301f606000000000000990d2401f7060000000000002c202401f806000000000000173c2401f90600000000000063452401fa06000000000000fd572401fb060000000000002a7d2401fc0600000000000000b52401fd06000000000000b8ec2401fe0600000000000037242501ff06000000000000155c25010007000000000000e69325010107000000000000a6cb25010207000000000000630326010307000000000000b30c260104070000000000000916260105070000000000005b1f26010607000000000000523b2601070700000000000048572601" + "babeEpochChanges": "0x04995381799ad725dd04df5a54aee81b43626c9b4cc71e43ac66440a3144b19484a8282a0101b364f81000000000136ef8100000000004af3a2ca5fca5faa3e24ad90dc0e72f18b31d593041ba8725d7944f9b97a2d9e6fa312a0101136ef810000000007377f8100000000004ceef46c2f6f08d7febe450462a46089eccf95877e1ed9578287f37d1765e4c064c3b2a01017377f81000000000d380f8100000000000000c995381799ad725dd04df5a54aee81b43626c9b4cc71e43ac66440a3144b19484a8282a0101f31f000000000000b364f810000000006009000000000000a50474a0fc84f72a4a9b8493379b7dfc59ca58a261a2e94997600d14b6b444c1475901000000000000009c40155989f6072e82caba245d7db7e40a60f866b403257976b89aba6be2b55b01000000000000007067d4c5b492b11e2052a2bb0b4f729a52b3667afbca7dfefa863011254b5272010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec214541750100000000000000e440d6dc33f6c397d85ba83f2af092ade566bf4e8ade407f7591f5743269496801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000e84529a1a5d90df032f8a38981b1e973b2551ffd11eba49d54e27849970847320100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000000c78c9dfc0033ff87657c56b7ab8cec4d1249be2de18729f743f385343af0f16010000000000000098a8b739daa9d10a8bcdc0ff71f1635d4aa68fbb50a33ee02af8f25620480672010000000000000056c549bf4c37317d15a9bb5414226e0bf44a396787a28289b84ac80e6ae42b070100000000000000002e496e564f088a075525d2f9155aadd1a7eb017fa36f9e16096e9db7e169330100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a9350100000000000000864e446469db39b6322afe9d248d17936b811eeca193b73391e50afd3874f53d0100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b010000000000000024d917b35ee19a72512caea1dbf92fa75f5ac2c247c4a0184d330f477c750543010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000d8f30bc2ee88e69f60d0278998414c80f4a130b8e1738e873bcd14ef31e58d36010000000000000042e377034ce6b2a582bfd66c465252ab10ce790e4f0d3bbe99a42ff86b29965c01000000000000007e91ca522b14cbb71b45348c699b7d65c3198516ee771079b672ee3d7cfc577501000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b74010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc19010000000000000012a64d79e44f1adb33c85c4f2bdfcd8d8b38a34d984604f39289c9a7624a442d0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a670100000000000000e297620b731b4958e3c6aa06611c6aa5a45f7e116362d64954a0a330d2a98f330100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000000e5e5f8e89cd8d58ef83abddd3d1c2079691dec4f6965af70436e84411c31f3901000000000000007c21799f6143fa837a8c18bebe3368d60f4e009b114f61490b54e6344034040d01000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000003886794c2e8881e111832b7d8922d03878611212e2a030d8efd97f68debe0b3c01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf71010000000000000056a86c7c8b52fbb0c57ba6822a26663d81447dc850ebdea70aa7e6f2ea18191501000000000000005a63824687de4f60534ee18a430396b95263f75a077655c751bc2045ca2ec84d010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000c665d82a27136f294df943ffa86053c5aefeca16630abc81c12943e1aebcec3401000000000000007c3526dc5579f1ef841101b573c655c20f4346fa4a6b0b6ed773d147c3ad6d7f0100000000000000ee579514d7f544fc9fb8d6383ed7d109ee98a411bb4b0b45b9354b0f73fed9720100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf080100000000000000be03fe6bc03a7884524047567a8ccf43b3c988bf3b447ca9e1520d1c1f83c539010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b0100000000000000c0e36251f9ce24d6fe429ecf14bc9599285e3e27c0a541d5ac0ad1902d7ad6140100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a01000000000000005620922a6765fd47abc96615ef5b8b8575f18aaf8507f6afb86129bc1080994f0100000000000000b4b145ce385b4a3d83f2daac46a61874f80e58c468dd624acc09a558be02c27d0100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b0100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d8708132010000000000000080413d2894759b53a03874bf96ffcb66117e4a08ad7f159c008f2b3b6cfcbb470100000000000000ea885fca10a9473631bcca2549cb8183beef534a7ee2bd59a0a6f74d97bcfc4401000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000902741c83009936926e687f91a203fc2bb0dea691895ef4dfd1d85d86f408c7c010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a796260100000000000000344589372873125fd660e2ff3ad9bf67230f9306acccaea070aed322a8ede264010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d030100000000000000584bf60b8b17ddaf70f87f371bd2b425a3637e05c1b75469f45ea85717063b6901000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d01000000000000006290bc648574567004b9f3f38ffc603afc0a21cc06269973d83680fe7901cb46010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e01000000000000000ea183680db6337b592f7eb5e9112295d101bbd140b6064d6a662a93d13202000100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b35150100000000000000800dd25a7aea3fd7359065185cb35b4a2fad0b81b3d58de638e6764dc8a8211d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000402a67126cd160c84edcb39374164f3a39aec59ae72cb66dd9fbd1e9891aa27c010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb1901000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd555801000000000000001682c3264fc0b2a36eff3a5864cdacfe726bf5972ca8f4c5cad6f18bd450d23e0100000000000000d412fb5e47b946e69918a6391ac30283949ba6d99c491d78fc5014aaa2144b590100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f610010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f010000000000000002c497e44d340eb4c25e391c73ebca3f2d1db9cdb49d4d3931982c92f272f81e0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f845010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000de5f9f5ad3209502cf429630c2038b8818b6f8ce5685c2730077349802c5792501000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f49533301000000000000006a1df1975c898abb890c01d2ccadc385686763dfd0579ca4e1f9414dff2ff34a0100000000000000720f2d15df84bce88952ed5ef420026c3051564205d28656bfefaf409d6f2143010000000000000026f2af62a2f0d847e3d2cccc93ec7f98c80a7b6d1bcca4cf1c4a6fc7f81775010100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d7101000000000000009c576fccaf2ffb4885a0ac8ed7ba0b80ee5fd060856fb9f80bdd3219e5d7800d01000000000000000c73fd83ff0d798ecd6be0518e340dd60c45bdd386c95236ad1db6b1572f1c7d010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000000481a58bfdafecabbc96bd170a0ec04cc35100f1f928cca3ecc63b3639e4767901000000000000002ad2d3d36a65c94716ef3476cc46e1b7122c57099316666bf37cc43dbbede0130100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000f47eaf66306fc6abafa76545f64ea76f8d81cc73176fdc45f5cc53ba0fe3fb5a0100000000000000beaefc5aaea6af4e03d3720194f65f93f34a6a26d32fd92e82cfc2acc435742a0100000000000000dac9ac99a034e57ae0f558ad981c1b12243c08cb140c483ba5dce6878ddab74d0100000000000000e4be18b8f5905bc41fe3cba2e5350d405e76036328042ae7edfbb6b6a9b43d5a01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d410100000000000000ea42174ceb9d19ac5193b4bb3a782c30a58c8fbad637a2e4a4c56882bc9d197301000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b14020100000000000000507e2aa1a2409b289b89c80f7ccb129e91a32e8d44c98723f8a97307f54a2d0601000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000078d986932e680d7bebce126a5aedae3e11ba0f4e28c03d63a491e8bcbd05ad220100000000000000502c19c77976b8cb0c47b08cd465a75bd7d25734fac0048342c697501533ee210100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca220100000000000000e6e897a3011883adfe5d7c58e45c769c806277a5d8bb7aa36e232297b747b04f0100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d465010000000000000044c47763e8f2f1675b480c01304c4da58c8d276b5ecee722e45d17afdc3d391d01000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d0100000000000000fc53d15453457faadc5540c5853f54324eec395d3647fbf99d5e6e97ef38767601000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e2529010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c0100000000000000b0ea32e1e54060b19356417c368904beb28332bd3180f76a009a7a6edc8a0d4a010000000000000096a550a5b080ba4f333c58a9f4113a664c6e335dfdbfa227bb6f4808351c045b0100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da720100000000000000005330f74dbf024dccb42c34e008d84a5d5d8ee33603029b4176ad6579bc504f0100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa529010000000000000060868aebd495f442d029a4a0eeab5285bf7ccc82988417429030dfeb4080fe34010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f010000000000000050f5f5863f99e896975813fda8768c72ff25fb54e25385a4263d1ff9a191525001000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f5259050100000000000000540926fefa2d0424fd451bfca39a01c0e1a3fc811406e127d1dbfdc6cf9e9770010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e85290100000000000000727c079c499f0ce88218e4cbaf1c4013bb81d6edf19e1cc9b540465e486ea13a01000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c321010000000000000064615e1323ea003b7c5a63ba2c8bed2023103458eeee7cf45244580d3ca59b6a01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000048afb25f7981cc67a66853ec05675d83a2d99e6318a6a7a135ed2916cb70a26e010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac56101000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000f6f94569aba4acba85b7745a91caaac8a89c95469cf2b9813891eeb94327937b010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a01000000000000000e99696f88e19e20d306ad6f8afb760f16c34a1e7bfe6cd70848e2d55cd2463401000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000645077cf303943059891df150649d1d828052ea4249bf50ca3b6d29c6ef1984c010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000f2060145fed18a41469c808b9c9f489ab28bdd327529621512b7077add309d1e010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e7993300100000000000000ea03f9dc29ae9b7a053c12b6079664592d2cf46a30b43edbb2d2d980223deb11010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe83233001000000000000003c8330f5d7f34fbec333663bab066cbac4403f892df7659b1c118c185c4f16220100000000000000b20050395fc81aa60508e362f02c75faebe3e4909c7a23721182ce791bb701130100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d69010000000000000068147c36d367eb1a203b303c65ab3d32fe777cabbca8d39e08ffcfd624b3614d0100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f0100000000000000d80eba00fd45442e9305434d637564baed7a12136c89734e4ca850db419f0c3a0100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa350201000000000000004c0a2fe2297b3beb4e005b9f3d2dfb6cda9bf21a1157b6c6aacc3eddf2d16d0801000000000000006638aad1c437c5f2f2ab4c46b786db51bb8c7e6af2ee745934811712f8d83e0601000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f0768520100000000000000ca7ce51fff68e7aac4514e9ddc6541c029960c4c1a042b2e8d8c613d3ec8f6410100000000000000c88d83d7927e1c1dff61de6b8321ee64746d983173bfb3a03c3d4789ae3f20270100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc240100000000000000102ed4107066f497e13d3c484a9fa60e506587e19541069dd4555a91d63f27040100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000003afb6b0dac3a05453f125943b8a26269202d297b991e054ca851fa68bb4c085301000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e460100000000000000c42b0534d5a51a37eb02dcbbc4bb6a1f37d340d96f035c3d630cbd207c4be20001000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c286746010000000000000046b14e55053a02087c957664d32fdcae6ba1c96051239191c63df564d784e1720100000000000000648254fe31a89615b5ae4e90ad8370236f366ef2288b262ffac131b0c78e936501000000000000005cf9e506e47672dd81188ac6eb1f4663ef21002e3b99689c772a21d52cdae553010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f01000000000000000a5b9f5821eb0a1fc7cde6134a5fc5c76c99837cdd87293066cf23a080e456490100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000da3c1c97320819739a3f7175d4ecdf33be2dd8935f49efb716ad6c0722b0441a0100000000000000b85b1b7b8ed510a5bc1d0979fdc04ec7b73d84c7d1d767dafb6faccc8dfd402c010000000000000038ab6c4b18e1c86176cf53301ea990f1cdddcdc3f2c3e0f8dde126fa59f60b2f01000000000000009c4d874baeccbb19733cf93f6ffb2f44d9b9f5191ead84f3550c7b767a75061f0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a1843220100000000000000c76e13dcd9021c51debc60215d54d7a1ed1066b27967974d3f2b987155081d080100000000000000040000000000000002af3a2ca5fca5faa3e24ad90dc0e72f18b31d593041ba8725d7944f9b97a2d9e6fa312a0101f41f000000000000136ef810000000006009000000000000a50474a0fc84f72a4a9b8493379b7dfc59ca58a261a2e94997600d14b6b444c1475901000000000000009c40155989f6072e82caba245d7db7e40a60f866b403257976b89aba6be2b55b01000000000000007067d4c5b492b11e2052a2bb0b4f729a52b3667afbca7dfefa863011254b5272010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec214541750100000000000000e440d6dc33f6c397d85ba83f2af092ade566bf4e8ade407f7591f5743269496801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000e84529a1a5d90df032f8a38981b1e973b2551ffd11eba49d54e27849970847320100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000000c78c9dfc0033ff87657c56b7ab8cec4d1249be2de18729f743f385343af0f16010000000000000098a8b739daa9d10a8bcdc0ff71f1635d4aa68fbb50a33ee02af8f25620480672010000000000000056c549bf4c37317d15a9bb5414226e0bf44a396787a28289b84ac80e6ae42b070100000000000000002e496e564f088a075525d2f9155aadd1a7eb017fa36f9e16096e9db7e169330100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a9350100000000000000864e446469db39b6322afe9d248d17936b811eeca193b73391e50afd3874f53d0100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b010000000000000024d917b35ee19a72512caea1dbf92fa75f5ac2c247c4a0184d330f477c750543010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000d8f30bc2ee88e69f60d0278998414c80f4a130b8e1738e873bcd14ef31e58d36010000000000000042e377034ce6b2a582bfd66c465252ab10ce790e4f0d3bbe99a42ff86b29965c01000000000000007e91ca522b14cbb71b45348c699b7d65c3198516ee771079b672ee3d7cfc577501000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b74010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc19010000000000000012a64d79e44f1adb33c85c4f2bdfcd8d8b38a34d984604f39289c9a7624a442d0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a670100000000000000e297620b731b4958e3c6aa06611c6aa5a45f7e116362d64954a0a330d2a98f330100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000000e5e5f8e89cd8d58ef83abddd3d1c2079691dec4f6965af70436e84411c31f3901000000000000007c21799f6143fa837a8c18bebe3368d60f4e009b114f61490b54e6344034040d01000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000003886794c2e8881e111832b7d8922d03878611212e2a030d8efd97f68debe0b3c01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf71010000000000000056a86c7c8b52fbb0c57ba6822a26663d81447dc850ebdea70aa7e6f2ea18191501000000000000005a63824687de4f60534ee18a430396b95263f75a077655c751bc2045ca2ec84d010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000c665d82a27136f294df943ffa86053c5aefeca16630abc81c12943e1aebcec3401000000000000007c3526dc5579f1ef841101b573c655c20f4346fa4a6b0b6ed773d147c3ad6d7f0100000000000000ee579514d7f544fc9fb8d6383ed7d109ee98a411bb4b0b45b9354b0f73fed9720100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf080100000000000000be03fe6bc03a7884524047567a8ccf43b3c988bf3b447ca9e1520d1c1f83c539010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b0100000000000000c0e36251f9ce24d6fe429ecf14bc9599285e3e27c0a541d5ac0ad1902d7ad6140100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a01000000000000005620922a6765fd47abc96615ef5b8b8575f18aaf8507f6afb86129bc1080994f0100000000000000b4b145ce385b4a3d83f2daac46a61874f80e58c468dd624acc09a558be02c27d0100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b0100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d8708132010000000000000080413d2894759b53a03874bf96ffcb66117e4a08ad7f159c008f2b3b6cfcbb470100000000000000ea885fca10a9473631bcca2549cb8183beef534a7ee2bd59a0a6f74d97bcfc4401000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000902741c83009936926e687f91a203fc2bb0dea691895ef4dfd1d85d86f408c7c010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a796260100000000000000344589372873125fd660e2ff3ad9bf67230f9306acccaea070aed322a8ede264010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d030100000000000000584bf60b8b17ddaf70f87f371bd2b425a3637e05c1b75469f45ea85717063b6901000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d01000000000000006290bc648574567004b9f3f38ffc603afc0a21cc06269973d83680fe7901cb46010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e01000000000000000ea183680db6337b592f7eb5e9112295d101bbd140b6064d6a662a93d13202000100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b35150100000000000000800dd25a7aea3fd7359065185cb35b4a2fad0b81b3d58de638e6764dc8a8211d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000402a67126cd160c84edcb39374164f3a39aec59ae72cb66dd9fbd1e9891aa27c010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb1901000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd555801000000000000001682c3264fc0b2a36eff3a5864cdacfe726bf5972ca8f4c5cad6f18bd450d23e0100000000000000d412fb5e47b946e69918a6391ac30283949ba6d99c491d78fc5014aaa2144b590100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f610010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f010000000000000002c497e44d340eb4c25e391c73ebca3f2d1db9cdb49d4d3931982c92f272f81e0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f845010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000de5f9f5ad3209502cf429630c2038b8818b6f8ce5685c2730077349802c5792501000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f49533301000000000000006a1df1975c898abb890c01d2ccadc385686763dfd0579ca4e1f9414dff2ff34a0100000000000000720f2d15df84bce88952ed5ef420026c3051564205d28656bfefaf409d6f2143010000000000000026f2af62a2f0d847e3d2cccc93ec7f98c80a7b6d1bcca4cf1c4a6fc7f81775010100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d7101000000000000009c576fccaf2ffb4885a0ac8ed7ba0b80ee5fd060856fb9f80bdd3219e5d7800d01000000000000000c73fd83ff0d798ecd6be0518e340dd60c45bdd386c95236ad1db6b1572f1c7d010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000000481a58bfdafecabbc96bd170a0ec04cc35100f1f928cca3ecc63b3639e4767901000000000000002ad2d3d36a65c94716ef3476cc46e1b7122c57099316666bf37cc43dbbede0130100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000f47eaf66306fc6abafa76545f64ea76f8d81cc73176fdc45f5cc53ba0fe3fb5a0100000000000000beaefc5aaea6af4e03d3720194f65f93f34a6a26d32fd92e82cfc2acc435742a0100000000000000dac9ac99a034e57ae0f558ad981c1b12243c08cb140c483ba5dce6878ddab74d0100000000000000e4be18b8f5905bc41fe3cba2e5350d405e76036328042ae7edfbb6b6a9b43d5a01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d410100000000000000ea42174ceb9d19ac5193b4bb3a782c30a58c8fbad637a2e4a4c56882bc9d197301000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b14020100000000000000507e2aa1a2409b289b89c80f7ccb129e91a32e8d44c98723f8a97307f54a2d0601000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000078d986932e680d7bebce126a5aedae3e11ba0f4e28c03d63a491e8bcbd05ad220100000000000000502c19c77976b8cb0c47b08cd465a75bd7d25734fac0048342c697501533ee210100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca220100000000000000e6e897a3011883adfe5d7c58e45c769c806277a5d8bb7aa36e232297b747b04f0100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d465010000000000000044c47763e8f2f1675b480c01304c4da58c8d276b5ecee722e45d17afdc3d391d01000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d0100000000000000fc53d15453457faadc5540c5853f54324eec395d3647fbf99d5e6e97ef38767601000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e2529010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c0100000000000000b0ea32e1e54060b19356417c368904beb28332bd3180f76a009a7a6edc8a0d4a010000000000000096a550a5b080ba4f333c58a9f4113a664c6e335dfdbfa227bb6f4808351c045b0100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da720100000000000000005330f74dbf024dccb42c34e008d84a5d5d8ee33603029b4176ad6579bc504f0100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa529010000000000000060868aebd495f442d029a4a0eeab5285bf7ccc82988417429030dfeb4080fe34010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f010000000000000050f5f5863f99e896975813fda8768c72ff25fb54e25385a4263d1ff9a191525001000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f5259050100000000000000540926fefa2d0424fd451bfca39a01c0e1a3fc811406e127d1dbfdc6cf9e9770010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e85290100000000000000727c079c499f0ce88218e4cbaf1c4013bb81d6edf19e1cc9b540465e486ea13a01000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c321010000000000000064615e1323ea003b7c5a63ba2c8bed2023103458eeee7cf45244580d3ca59b6a01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000048afb25f7981cc67a66853ec05675d83a2d99e6318a6a7a135ed2916cb70a26e010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac56101000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000f6f94569aba4acba85b7745a91caaac8a89c95469cf2b9813891eeb94327937b010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a01000000000000000e99696f88e19e20d306ad6f8afb760f16c34a1e7bfe6cd70848e2d55cd2463401000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000645077cf303943059891df150649d1d828052ea4249bf50ca3b6d29c6ef1984c010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000f2060145fed18a41469c808b9c9f489ab28bdd327529621512b7077add309d1e010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e7993300100000000000000ea03f9dc29ae9b7a053c12b6079664592d2cf46a30b43edbb2d2d980223deb11010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe83233001000000000000003c8330f5d7f34fbec333663bab066cbac4403f892df7659b1c118c185c4f16220100000000000000b20050395fc81aa60508e362f02c75faebe3e4909c7a23721182ce791bb701130100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d69010000000000000068147c36d367eb1a203b303c65ab3d32fe777cabbca8d39e08ffcfd624b3614d0100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f0100000000000000d80eba00fd45442e9305434d637564baed7a12136c89734e4ca850db419f0c3a0100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa350201000000000000004c0a2fe2297b3beb4e005b9f3d2dfb6cda9bf21a1157b6c6aacc3eddf2d16d0801000000000000006638aad1c437c5f2f2ab4c46b786db51bb8c7e6af2ee745934811712f8d83e0601000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f0768520100000000000000ca7ce51fff68e7aac4514e9ddc6541c029960c4c1a042b2e8d8c613d3ec8f6410100000000000000c88d83d7927e1c1dff61de6b8321ee64746d983173bfb3a03c3d4789ae3f20270100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc240100000000000000102ed4107066f497e13d3c484a9fa60e506587e19541069dd4555a91d63f27040100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000003afb6b0dac3a05453f125943b8a26269202d297b991e054ca851fa68bb4c085301000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e460100000000000000c42b0534d5a51a37eb02dcbbc4bb6a1f37d340d96f035c3d630cbd207c4be20001000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c286746010000000000000046b14e55053a02087c957664d32fdcae6ba1c96051239191c63df564d784e1720100000000000000648254fe31a89615b5ae4e90ad8370236f366ef2288b262ffac131b0c78e936501000000000000005cf9e506e47672dd81188ac6eb1f4663ef21002e3b99689c772a21d52cdae553010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f01000000000000000a5b9f5821eb0a1fc7cde6134a5fc5c76c99837cdd87293066cf23a080e456490100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000da3c1c97320819739a3f7175d4ecdf33be2dd8935f49efb716ad6c0722b0441a0100000000000000b85b1b7b8ed510a5bc1d0979fdc04ec7b73d84c7d1d767dafb6faccc8dfd402c010000000000000038ab6c4b18e1c86176cf53301ea990f1cdddcdc3f2c3e0f8dde126fa59f60b2f01000000000000009c4d874baeccbb19733cf93f6ffb2f44d9b9f5191ead84f3550c7b767a75061f0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a184322010000000000000064b1fdc1d65cf0b9514694eafb3f98dcf663039834880d80cd20f1fa5d9df0a10100000000000000040000000000000002ceef46c2f6f08d7febe450462a46089eccf95877e1ed9578287f37d1765e4c064c3b2a0101f51f0000000000007377f810000000006009000000000000a50474a0fc84f72a4a9b8493379b7dfc59ca58a261a2e94997600d14b6b444c1475901000000000000009c40155989f6072e82caba245d7db7e40a60f866b403257976b89aba6be2b55b01000000000000007067d4c5b492b11e2052a2bb0b4f729a52b3667afbca7dfefa863011254b5272010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec214541750100000000000000e440d6dc33f6c397d85ba83f2af092ade566bf4e8ade407f7591f5743269496801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000e84529a1a5d90df032f8a38981b1e973b2551ffd11eba49d54e27849970847320100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000000c78c9dfc0033ff87657c56b7ab8cec4d1249be2de18729f743f385343af0f16010000000000000098a8b739daa9d10a8bcdc0ff71f1635d4aa68fbb50a33ee02af8f25620480672010000000000000056c549bf4c37317d15a9bb5414226e0bf44a396787a28289b84ac80e6ae42b070100000000000000002e496e564f088a075525d2f9155aadd1a7eb017fa36f9e16096e9db7e169330100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a9350100000000000000864e446469db39b6322afe9d248d17936b811eeca193b73391e50afd3874f53d0100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b010000000000000024d917b35ee19a72512caea1dbf92fa75f5ac2c247c4a0184d330f477c750543010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000d8f30bc2ee88e69f60d0278998414c80f4a130b8e1738e873bcd14ef31e58d36010000000000000042e377034ce6b2a582bfd66c465252ab10ce790e4f0d3bbe99a42ff86b29965c01000000000000007e91ca522b14cbb71b45348c699b7d65c3198516ee771079b672ee3d7cfc577501000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b74010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc19010000000000000012a64d79e44f1adb33c85c4f2bdfcd8d8b38a34d984604f39289c9a7624a442d0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a670100000000000000e297620b731b4958e3c6aa06611c6aa5a45f7e116362d64954a0a330d2a98f330100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000000e5e5f8e89cd8d58ef83abddd3d1c2079691dec4f6965af70436e84411c31f3901000000000000007c21799f6143fa837a8c18bebe3368d60f4e009b114f61490b54e6344034040d01000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000003886794c2e8881e111832b7d8922d03878611212e2a030d8efd97f68debe0b3c01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf71010000000000000056a86c7c8b52fbb0c57ba6822a26663d81447dc850ebdea70aa7e6f2ea18191501000000000000005a63824687de4f60534ee18a430396b95263f75a077655c751bc2045ca2ec84d010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000c665d82a27136f294df943ffa86053c5aefeca16630abc81c12943e1aebcec3401000000000000007c3526dc5579f1ef841101b573c655c20f4346fa4a6b0b6ed773d147c3ad6d7f0100000000000000ee579514d7f544fc9fb8d6383ed7d109ee98a411bb4b0b45b9354b0f73fed9720100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf080100000000000000be03fe6bc03a7884524047567a8ccf43b3c988bf3b447ca9e1520d1c1f83c539010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b0100000000000000c0e36251f9ce24d6fe429ecf14bc9599285e3e27c0a541d5ac0ad1902d7ad6140100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a01000000000000005620922a6765fd47abc96615ef5b8b8575f18aaf8507f6afb86129bc1080994f0100000000000000b4b145ce385b4a3d83f2daac46a61874f80e58c468dd624acc09a558be02c27d0100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b0100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d8708132010000000000000080413d2894759b53a03874bf96ffcb66117e4a08ad7f159c008f2b3b6cfcbb470100000000000000ea885fca10a9473631bcca2549cb8183beef534a7ee2bd59a0a6f74d97bcfc4401000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000902741c83009936926e687f91a203fc2bb0dea691895ef4dfd1d85d86f408c7c010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a796260100000000000000344589372873125fd660e2ff3ad9bf67230f9306acccaea070aed322a8ede264010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d030100000000000000584bf60b8b17ddaf70f87f371bd2b425a3637e05c1b75469f45ea85717063b6901000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d01000000000000006290bc648574567004b9f3f38ffc603afc0a21cc06269973d83680fe7901cb46010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e01000000000000000ea183680db6337b592f7eb5e9112295d101bbd140b6064d6a662a93d13202000100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b35150100000000000000800dd25a7aea3fd7359065185cb35b4a2fad0b81b3d58de638e6764dc8a8211d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000402a67126cd160c84edcb39374164f3a39aec59ae72cb66dd9fbd1e9891aa27c010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb1901000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd555801000000000000001682c3264fc0b2a36eff3a5864cdacfe726bf5972ca8f4c5cad6f18bd450d23e0100000000000000d412fb5e47b946e69918a6391ac30283949ba6d99c491d78fc5014aaa2144b590100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f610010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f010000000000000002c497e44d340eb4c25e391c73ebca3f2d1db9cdb49d4d3931982c92f272f81e0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f845010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000de5f9f5ad3209502cf429630c2038b8818b6f8ce5685c2730077349802c5792501000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f49533301000000000000006a1df1975c898abb890c01d2ccadc385686763dfd0579ca4e1f9414dff2ff34a0100000000000000720f2d15df84bce88952ed5ef420026c3051564205d28656bfefaf409d6f2143010000000000000026f2af62a2f0d847e3d2cccc93ec7f98c80a7b6d1bcca4cf1c4a6fc7f81775010100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d7101000000000000009c576fccaf2ffb4885a0ac8ed7ba0b80ee5fd060856fb9f80bdd3219e5d7800d01000000000000000c73fd83ff0d798ecd6be0518e340dd60c45bdd386c95236ad1db6b1572f1c7d010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000000481a58bfdafecabbc96bd170a0ec04cc35100f1f928cca3ecc63b3639e4767901000000000000002ad2d3d36a65c94716ef3476cc46e1b7122c57099316666bf37cc43dbbede0130100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000f47eaf66306fc6abafa76545f64ea76f8d81cc73176fdc45f5cc53ba0fe3fb5a0100000000000000beaefc5aaea6af4e03d3720194f65f93f34a6a26d32fd92e82cfc2acc435742a0100000000000000dac9ac99a034e57ae0f558ad981c1b12243c08cb140c483ba5dce6878ddab74d0100000000000000e4be18b8f5905bc41fe3cba2e5350d405e76036328042ae7edfbb6b6a9b43d5a01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d410100000000000000ea42174ceb9d19ac5193b4bb3a782c30a58c8fbad637a2e4a4c56882bc9d197301000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b14020100000000000000507e2aa1a2409b289b89c80f7ccb129e91a32e8d44c98723f8a97307f54a2d0601000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000078d986932e680d7bebce126a5aedae3e11ba0f4e28c03d63a491e8bcbd05ad220100000000000000502c19c77976b8cb0c47b08cd465a75bd7d25734fac0048342c697501533ee210100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca220100000000000000e6e897a3011883adfe5d7c58e45c769c806277a5d8bb7aa36e232297b747b04f0100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d465010000000000000044c47763e8f2f1675b480c01304c4da58c8d276b5ecee722e45d17afdc3d391d01000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d0100000000000000fc53d15453457faadc5540c5853f54324eec395d3647fbf99d5e6e97ef38767601000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e2529010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c0100000000000000b0ea32e1e54060b19356417c368904beb28332bd3180f76a009a7a6edc8a0d4a010000000000000096a550a5b080ba4f333c58a9f4113a664c6e335dfdbfa227bb6f4808351c045b0100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da720100000000000000005330f74dbf024dccb42c34e008d84a5d5d8ee33603029b4176ad6579bc504f0100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa529010000000000000060868aebd495f442d029a4a0eeab5285bf7ccc82988417429030dfeb4080fe34010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f010000000000000050f5f5863f99e896975813fda8768c72ff25fb54e25385a4263d1ff9a191525001000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f5259050100000000000000540926fefa2d0424fd451bfca39a01c0e1a3fc811406e127d1dbfdc6cf9e9770010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e85290100000000000000727c079c499f0ce88218e4cbaf1c4013bb81d6edf19e1cc9b540465e486ea13a01000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c321010000000000000064615e1323ea003b7c5a63ba2c8bed2023103458eeee7cf45244580d3ca59b6a01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000048afb25f7981cc67a66853ec05675d83a2d99e6318a6a7a135ed2916cb70a26e010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac56101000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000f6f94569aba4acba85b7745a91caaac8a89c95469cf2b9813891eeb94327937b010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a01000000000000000e99696f88e19e20d306ad6f8afb760f16c34a1e7bfe6cd70848e2d55cd2463401000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000645077cf303943059891df150649d1d828052ea4249bf50ca3b6d29c6ef1984c010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000f2060145fed18a41469c808b9c9f489ab28bdd327529621512b7077add309d1e010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e7993300100000000000000ea03f9dc29ae9b7a053c12b6079664592d2cf46a30b43edbb2d2d980223deb11010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe83233001000000000000003c8330f5d7f34fbec333663bab066cbac4403f892df7659b1c118c185c4f16220100000000000000b20050395fc81aa60508e362f02c75faebe3e4909c7a23721182ce791bb701130100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d69010000000000000068147c36d367eb1a203b303c65ab3d32fe777cabbca8d39e08ffcfd624b3614d0100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f0100000000000000d80eba00fd45442e9305434d637564baed7a12136c89734e4ca850db419f0c3a0100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa350201000000000000004c0a2fe2297b3beb4e005b9f3d2dfb6cda9bf21a1157b6c6aacc3eddf2d16d0801000000000000006638aad1c437c5f2f2ab4c46b786db51bb8c7e6af2ee745934811712f8d83e0601000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f0768520100000000000000ca7ce51fff68e7aac4514e9ddc6541c029960c4c1a042b2e8d8c613d3ec8f6410100000000000000c88d83d7927e1c1dff61de6b8321ee64746d983173bfb3a03c3d4789ae3f20270100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc240100000000000000102ed4107066f497e13d3c484a9fa60e506587e19541069dd4555a91d63f27040100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000003afb6b0dac3a05453f125943b8a26269202d297b991e054ca851fa68bb4c085301000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e460100000000000000c42b0534d5a51a37eb02dcbbc4bb6a1f37d340d96f035c3d630cbd207c4be20001000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c286746010000000000000046b14e55053a02087c957664d32fdcae6ba1c96051239191c63df564d784e1720100000000000000648254fe31a89615b5ae4e90ad8370236f366ef2288b262ffac131b0c78e936501000000000000005cf9e506e47672dd81188ac6eb1f4663ef21002e3b99689c772a21d52cdae553010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f01000000000000000a5b9f5821eb0a1fc7cde6134a5fc5c76c99837cdd87293066cf23a080e456490100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000da3c1c97320819739a3f7175d4ecdf33be2dd8935f49efb716ad6c0722b0441a0100000000000000b85b1b7b8ed510a5bc1d0979fdc04ec7b73d84c7d1d767dafb6faccc8dfd402c010000000000000038ab6c4b18e1c86176cf53301ea990f1cdddcdc3f2c3e0f8dde126fa59f60b2f01000000000000009c4d874baeccbb19733cf93f6ffb2f44d9b9f5191ead84f3550c7b767a75061f0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a1843220100000000000000c95e605f993b9210a1df1a40e7c1d4844bd4a3759f243562890a353a262331410100000000000000040000000000000002", + "babeFinalizedBlockWeight": 4880043, + "finalizedBlockHeader": "0x0544895548b38749865f30625e7c37281e01e9a7b13727f4e54f0366513c29bcd6f3a80416eea677fa69ef70cf38ff3c48c1af664c89240812d09bd979177446789e47828a28c2c95a631223170a599b8e3946cc58892c16b9cbefb7382af00e76ae93ed080642414245b5010361000000bf6ff81000000000daf4b0485493c9937ed05086d2847897f05c266345e303b0a04bfcbbd70ffc09fd4c9ffee291f9652581abc726d32d508e942c8e2ad51df4027f94b709848c02f839e1612159fdd5319d9f1aa1d3865f5730f910fe442da053be3c6450f411010542414245010190ff9c581287e8e0787634ec852897806d5ed7363b2e808a5f8c3a072d61013de727fa35bb62535314e1997d35a46a6ad9d7a0611fec1caa8e2b3913226ad581", + "grandpaAuthoritySet": "0xa5042f8da08bb2421ef844015c3b2ea23464fc66a9dcb4a2215fe0241f892d19afc50100000000000000fff437ff18629bf1490e5c9b3ec6f1515d46bb9b2aeaa6e39e36611f2479b50d0100000000000000d95f04dc8ea4ac05deea7077457f0406fdd152bd03a7480e7d0de0983b959d3c010000000000000047f940bc985355be7187c709ded2b689b66d69e61e293a507f1d4f90bdbeceee010000000000000049f257921be6219e9ce64866925f721044fe934eb55994ae520748ddb14aa10501000000000000004a3fc0fe1020c7f460c7bd23d0b657c03368552b2f0a12d80a1c406fd066e0db01000000000000009b992b5e9b99eb2cd3b2b648d6db81ed722a2feb4938d998b58dcb5d159fadfa0100000000000000aee9de3938173700b3e3f4fbf2b200ae296173a0854157f40de2598dd4cad8f10100000000000000b9c2b393e56508c462faf593421cf77f52da8f2148365b8b7275e27833a7ec8d0100000000000000243f110deac5efe8e963d794eb8706a1895ae1942523ab0fe9e1623515b7dea80100000000000000b61e9b13e849779be8f5378a670d61991875d8e091f359384d7be73d02d506930100000000000000426b2be4596a759a15028d84e08c5c56440e6cede68d088f47c671cc3387c3e6010000000000000070ba6e5985990ba1b1392713236f1b50df750f10f744cc6eb95fa7c5cfbc687601000000000000005b27660cd4c375f2654c6d923b29fd8abbab7e96ee040c79598be14f832f56ca01000000000000009be9fb82257a7fd8f6d5134a38c41fd02e8cda80e2c7ad25d8e9516a08f6adad0100000000000000164c6f7863d8add0bb1f165b561f99770730d687d7c40110e11bbb5d376b2b52010000000000000057ae0c85ebaf333a6ec3251f577cab910cce072f238d1e50046322b83bbc0dd50100000000000000a15896b8bbf01f757f120813bc2e78b21388eea66db4b0dc2e1afeabd3d46dc00100000000000000e3c9b2ed962a014c757192718003effae55bbb939425f6f155372a5498cf586f01000000000000000139b946b46bee4c61be50c986f2a9ef2e76917644e2ecd842c59d61a94ee612010000000000000019a9d56ea35496122fc44fcb5c29d27fbb43520556d6f8d97753767aaa0f228e0100000000000000f1578b8007e34ba6b1c4c480a8249758eaa356a6e5b1be0efbe5c35e802fe3cf0100000000000000a5b094ae7c156592baa68ce18dab6368d5b665e9a0f07dfc5f54f58309e086c1010000000000000041ef4a31eb7dc1e01f4630604e1908e644d7cdee3f66a60f98d6d59605326f8b010000000000000097743d6364cdb6c4790cd37c4c2ab5fbc6c65e8bb606625e70a6ee04ed1650d9010000000000000008cc1d6c743da905511a39a6f0a68809a6bc32f8ac25e53bb2d6aca4f493fc9b0100000000000000acd71d4269b3ba2a9de822d494c4d841708e1519c08de41d7fc6153eaf48da810100000000000000d04d64a07f144638f20f081de122b88fed0cc8bda57e4810e7afb38036dd8bbf0100000000000000f26945a8a64032a1defa76e720a99649125b55751b6088205e7acab901de670b01000000000000005cba2c6f569da1edc3778308da406f266aa53140381dbb3f14f22909ba6e30040100000000000000c9a741ab82126c4d4eaa6a758cfc1209bbd7b29330e89ccd97fb62ae567c8d4301000000000000009b94bc45bf79bb33f70430c82880456cd7bd5fb3ea131c1b26d493d01c5fe7100100000000000000a1a9debad5e4afb076cf293c2c797f0b5901ffdb8bd01611235e762411a0db3901000000000000006f4855725ebb9eced957bae43ffa7d30657ce7d06b251ce20e2218bcf929e4050100000000000000749556da4a259bc1f0b8ea8e3726c2251656b92205c30b635ec9f42038f8defb01000000000000000ce4d93e25fa5302f4b059456f680047f87be428ae88579e0b862502b5ceed600100000000000000c1758f7cbffeb844419bc494a9dc65fb394259f01e9bf23789a75acc29d7d9620100000000000000c1c1ff5f66fefb5c0849e3b2333411d1f7e9dd4888600e334e7a33623f15fa360100000000000000fe240e80ff8a48a77947b394979cf361017cd906ddaab637d72cf72e729d79bf010000000000000006854c73f5703242d31d2576ac2297c93f0b5dc16ade0097c59d5dc0faa43c550100000000000000c650b1a6b34347bd80ed06b48aa4ae1a33adaa507e8ac23bf6c6b94223b63b9d01000000000000008aabd4f6d7ecec7a749c83fc7be33f3b4818cca6f93a4927b4964900df9454e50100000000000000b9186b95c90d2d00a31e7c68066bd37d73408271762604e3608e2f2c983f830901000000000000003948bfd09bbbc2fe6ac5dfe53146e32df50828eecf7b2b18cdcff8dc385cbd7501000000000000001ba602a293ccdb7a77042fb486c6e010d48b13dff2bef0a26c53637312aac7f70100000000000000ba8180cbc0dceb098ee6b22fe89978bf92ebf196a280470b1501bc2138ec02c70100000000000000070bae15860ce96e4a0cbdcc051c75e37a458c8e6c5ae59681d0ed938e588d4501000000000000003ec37919f9f43a9f85f539edfde3ceebea1b0e8279cb036641d588a9da81a6ad01000000000000005e48598ca89db19a4c279a251216d81e33f6b69e7d2ab4450968a1f9409df4a3010000000000000026ca01e6a92a3c7f4b6defef88985627f0af89310a74f727dd8d33f4f027b8f20100000000000000f510cb6c7032c9134dd3e50014ff6d391cfc91606d003fd4acd37e00f919d8350100000000000000cbd74a646a84b73518eadc73b1983dc9733839739576af9a98c698070a3a4b590100000000000000d2e72b0ab02a001b2e573c0d3b78404a7d3c600c3a9fd8ef38e823cad6ed3d6601000000000000003047f8f7e9c47fda9130ccd57d5dc8d407bd89b8dcf8ecbaccf00da184c73a570100000000000000024743c39cd9e151344dc23c65ee0346132d190a224b687be5c5ae31c5e7bb0a01000000000000004e3fb8c16ad624c1852777456805e5352d0221269de66949c95da4076206b35a01000000000000007ad55381f9de00220678c95a19489640fc61331e2a40d927e3d833555575c6fc0100000000000000af0f03b796253652200c7c67ab89636bff3e9e97d4f51a4a7a577bdb39620443010000000000000069a6c84df1d25f855b91040e113a5557da8a89d80644ae7bf8d0ba416ab89b6d0100000000000000cb92ffeace78dbafe6fbf275741b4b38657fb81590712aa0bca7877931f6ad390100000000000000997b35c2de1a7ee0cd6744eea2c589ff487059544539bb099ceb6fe78150b68f0100000000000000f8eb309ab851e8f98aa4bd68138a67dc4a435331598079969053a5325b874a51010000000000000059bba625d971d505a9c7d7c2f3ad69203e69e3e5e1fc1e4905fae7703fa19e030100000000000000ba95f5d0e987305bb794dfeae69d7dd6a7987aa66cd7c9d42aca15e9160ec6a10100000000000000ffd82ddc49373448bed6feb0032744e20068f4e21adc4cb6d2cbf05ce73f4ce40100000000000000a9f24f0208a21e8cda4e450c72074f20d76a927bb80fa4418e480e0b59575c6b010000000000000016278af083f6d261762f8a97b6a09ff83e2f5927ce26c2e48f3c7e771dc7e6950100000000000000c49e3cd2c701bb845963c2870dcca12ed070c3f67ffc20144327a93aa6e896ec010000000000000081b1fce3ee9e31723f1023eaa9f8793e8663e72c50fbb0fbcea9bc78bacc491b01000000000000002dad5b2212ee688f2eeb9ca1fb6a90574f006dc1c6680ac3a8523363a248940b010000000000000067ccabbf18c035791cee9c748bea2ca03cf72c40f5ae786f297f84fb059732620100000000000000be0a28e5615d9ce3b866b5cf0babf6a7f0e6de06119463382e715b47c89853e40100000000000000b8183b905f28b87c68c2d5b2f39f009f2ee22b47235f6c6d6cf6e63121b490300100000000000000b7c13f1239888cda5c8e6ac9ea10675df17633368906e66a487f91ddd3268ca601000000000000002cd51e09c3197e04155b78f3d97742ceffface390dc46f81f2613a94b2e483fd01000000000000007509d9697cb54f627f47b25e80f46f5d1bf483a9cab5f52df69e1a8f612e486f0100000000000000f3b1c0e43606bd49bc84e403db685b577e898b5f7c5db9052bdc3dacf38dc7ad01000000000000008a2b50acd1a4955fc814bf6720c7427902a6ce709f3a2d7c17c55b67f6f1c06301000000000000003a511828c0cdc0fd257387843fdbf6f19d5ca1ef1c29ec7e971fc9f1195eb60c0100000000000000ee5605c1a9ed9484a70b8a591339830f24530eefc4599a7c6188a78896908e2c0100000000000000ad06042b85ed16ff4e46f5a68eba9ac12395366ab17c2da24b4f6747b2c8934f0100000000000000d1c146d2429a5a827660008721c7a880e71f44feaa3dc75524c1a9281bac48cd0100000000000000e4b2cffd0b9cacfc500050b27ecae3c55b9b51bd9a416d62605118c8ad4fb09f0100000000000000b28ba3f09e3521f7d09f0098c6743bc218ee2970068adfa5d908d9d06e627ae50100000000000000f6d74de7b39455519a5d6480c8f12c93fc7a4cfc9af39154fc60857a39ad888b0100000000000000c8be78d05f652edd0a64a5865455de36d0fadb0d91c470fd344f8de23c8a6b9c01000000000000002bb7b11dfe79a12110b0370510ef20d40ba8a563f517310f8bf37cf7f0403de40100000000000000f86e50733ff2142e88fe5b898087b4b1d6a3250064a439097f8995069624adef0100000000000000bba7a1ccb67a410afedb8e033ad69c39e7c554ce0ce6584b0e6688bae30f7d69010000000000000040533a786cd0be9618126633512666b1b1b9ab3b436fa653c93e2f65da9c196b0100000000000000be95095d93298171c6fb8a1847adfa173d127e13f53482dcb694f891d68f0c58010000000000000085b714accac0654ba57fac59b626dd35802269d2c1d995cea7c335cb05a88f7f01000000000000006a5f902cdeda2c2161d16bd21d586720c08c0bbb7b463d9c59147338d26a8a9601000000000000009c11e35911f023df6e4d218e53412ab4e4a20c17961d63ba381c913b51f394c001000000000000005a16e068132523621b4e714999d3d856f2728d4667ce954a68b1fd6876bd962f0100000000000000ffcca343512faeffe1cb3a8a7ce62fa4ee0c7f6a5f3e5ac883482846e132813d010000000000000037483029302a84623f0a8db165fbed905b0a4fc25e7cfb56e975a0e98336a59b0100000000000000ecc7b49598787520ef6336abaf798adbadd6406bb889d8bcefacbbc1a887a3fa010000000000000053b5918f72e73f92f32b578d1b602f0cc554d98bee8c4e131ef0ac7a63399fb4010000000000000063e935d23d285cec7b014cb7736d65b4acffc45ca589003d3231de8e6db8a8aa01000000000000006180a56305eff3231eebe895b44751f075f826684ef42a862f11e79c3e689cd301000000000000001935d43843c66ecf76a9f4c4229de9ed7c172f52aa53d1a279f2856a736661b801000000000000008438323f6fb0b070baa0bea9469c539224bce1a79b02934a007be26c0ae15ca20100000000000000c7d9cab0fb88dccd0cf4abbf5df9d7f36a3de439c5070c599d397e74133bdfed0100000000000000866fe4ae134938ccf4c5caf01358881c75cfde473b0bb8a2623cc231db2ea3b901000000000000005d202a011f023dfaa6713f16bfd4409dde8bfe594abd59e2be32484c73b979820100000000000000df11dd2be629ba8bf3ef7b4b0478a91bba5c7f928adcf28f3d00ce1f27410ff60100000000000000fc555c014d927fe7838e840609916b9af5d93892ce6f394398858286802b8c6101000000000000006727561447ed474ff4e15645b952a37fa5008d4e694d4853bb55594fa34c4f340100000000000000af9c4c3cf1a3581ee22c9d1a648bfe92fe6d3a7ae39410f213ef25ce6daecffe0100000000000000ec295fb809e22c332aa36a57afe05f2c093b2d13e52b0971d8265c5514e4e9690100000000000000efb5f1e4c4ba37f8c159d452d897c607a58518b8355a8454620b3e3ccc3271230100000000000000099a9eb71f9cb1b7d15eae384790b4ec35045a19acea1730ba62f3e7caf31e8b0100000000000000f71fca8770328d06e9a45e650e5f58c15feb8ec77ca2dce397490bedfa37db4801000000000000008c3dbd5a1b928cb51e918452191e5328b0f6e8de0259517831a90b02dba3e6110100000000000000aa6fd06015b8309ea9103f4b0e29bfa7e21ab5bb1431c3a76433f591c739f8380100000000000000a892342c56149812a43e98c82b6a3dfee7eff384d9b6d832002ea63838f64900010000000000000081bbaa3313b09e3b0ea2817c3e968a33587ec8928539c3f3a6d0e65644612f49010000000000000023f07bcb8dade90cefd08732183d5fe32b89ad8a4f84987b9e4e7e767c2587560100000000000000c13b603b5fe774d98e59c26fac03f8096ccc42c57d0cbc6a443b4f07a3c077920100000000000000be6b59cb464fadec4e0b22a9f12857ba5cf7a14c4f9551439d36305d582dd7fb0100000000000000f916634f9fd7e54374e30ac6b722ad1793c13cb2d5f2ad38769eaca2f79d414b01000000000000007ba967a2dae0d8839cf44710591db994d18e53b25ec6d0f861da0037c4a4366a01000000000000004d4a140145f83598fc5a3839260723176f643ae286ff7b2fc460b897fb050a4501000000000000007e15c89cc954f1ddd6a5f2e9f482c1143f5b7b4ba406ed1264fd25a999f223f201000000000000000aadf1b2009026f8f5dd75d532e91dc756fd47572aa0f3c15d26790e6d6b2f270100000000000000d0a196fdff4cbca9c7d8a893f9ed66d86038378d8faa1fd8543fcce60ff1cd8c0100000000000000d0b4aada93fb3d0b358e8d59f8914f5987acbc6f5b4f3e12a1ed8d962eded8270100000000000000f9f8b2338c9629dff72aab44f4fe38302c692dc608b5dd11eb1405cc39fc69dd01000000000000004f950be5bf61958a0ae6e6a036b85b33ba838de8bd5508b558cbe2602d341168010000000000000082e6b6bf1f275c59fbde0dad91393ae690d5e644d11d23898a9ccfdda025920a010000000000000074b60dfb12745236ba9dc8f925efa21482b50c870c567638ba3240a05fe363d90100000000000000d761043f405069ac01285f1ff258450aac675f08d906b1ae0a1ce54eabcb36d901000000000000000dfbc1b5757e1f0ba348f8af64fb631aaff86cd21fa0529e0bb1fbab250879260100000000000000b770208e14dc236c373cad93e19b092e9c6c7a90604d941c19ca19923d33013f0100000000000000de74612da9080d47be35bf4ded2094e23c1de14477114ddcd7b76b815456ec0c0100000000000000d3b3d9703a265a51a137b9de348587c645a168981ef3e01c9dc482856751b8ef0100000000000000c0444bc7cff2374b76ba49e5ce25b632b0db77f08f6c40799077ce3f5b035f3f0100000000000000cfb9f7f1fcf903a51af729ed1647aee928630e148990309f9dc9f3b14b114b760100000000000000a2ee8d9c22eba97998d63854409d99c87b21d079f5c888d863a81d41d6abf0110100000000000000d14a779884de1b2fbf079b8e47e8c0edb1c29e282996899a4eab5aaf1f4f41130100000000000000c2344c6fb787621295335b6b5acbab9531199901492d41e13a64dfb2927f83be01000000000000002ba5634557f15c4e9198d1ce0cc525e897d3fdecb0c18af8a53fe4e3384f4a1d01000000000000001097fbf26465b66708f3a7472ecf5917ad59c69e3baf5efa1da4a91ce65182f90100000000000000148390a7bd6928eb04aee1e72b9a86e103639b8b23fd2990c090ec1b5dda6e0a0100000000000000155763a153e0c02b2eef1d8a9cd8a50a9eaac9d3af7ad1e559b1e2320b521e1c01000000000000005208fe27477acbc6750d0caa831c0b26801c58eca046a6cf9d4143f85d877e8301000000000000004242378110faf2970e19fa227955307e8fe2d055824a2aa3ca2600b933ceb63a01000000000000005cd3c5512d1bdedb73e633eb63f71e7f0bfadfb6990de4c8d2b2de1d2195df1e010000000000000025ebbb2a00126545bbedf00318a78b6e61a0b52c81e30231ff45bd32e311472f01000000000000003773b05d2e2660498c8d407a1d6223423c26aa08b9b3656af94d78b861fba22f0100000000000000884b214d360373369c39ef0eaf46fa8be7a9242b668bcbf2d40be8d7e4379e4e01000000000000007bbd4f800c34110b6c739ff1e8913a36ab62f25641c4bb7413cd354894b602930100000000000000500a9e1ea37636c24ebf4e32668897dae936eef42b6da49027f606d4f24a7e9601000000000000009819b02ea89d7551b719ac28276b76cdbd23f1ee305a06281eb66a9f3e866feb01000000000000009dfb601fe4349171bf58e15a9f5361d82b9711bbfaf63169ecf878dad6861c9b0100000000000000ddb8ed355e1389d3a12e9e55fb7723e89bc5020144bd832e02c47f7f672c9f14010000000000000039712f967c4e06d284d6da4735cf2823c1f770674b668f7bc896071c3fd41eda01000000000000001e1fe4a3c9f590aff5a70b9cae569605ac78531cc10d310436fe0c306cf2e36101000000000000003137254503f936275feffd1077dcc62e6b54b6b394f437f7d096e49d519dffd001000000000000004df6e4d7da2c11ddb9153c714699f9ab625bbcd5e8e38f1cdeee567dc04abc610100000000000000d9b96ab14d54cf0093b00b5bb592a6ea6036f844bf7eaa3b5181d0764e1724b901000000000000009cfeed14dd2f96550a0e7edebd9c9a8c8b1d8f7efdd1abca01987654239f3c860100000000000000fd2fe2f117d597b29474a740ec767fe51cec93544d00e34269b78ddb31225f3b0100000000000000a9413b5f6af8458b220e467cfa30ec635e0690a843bae76b0c25a387238e45c701000000000000004c3b4b0a3acf902acec7f5d868f77d78b17fa4cfc5f785d393c9f3d15e04880501000000000000008404cabeb0674765bb77af690fa838ba28fa2045d602994a89f07680f4851c83010000000000000006b9e740c0a0e1f8fd31717438d5918ed8680eaccb70fdc9511931ce0d164ae50100000000000000b8cf76a8082d518016ea5588be57b64e156ed23b0f72248975522c23d15ef16101000000000000002565e04c6e0b665fac87f8238bee74837f8f621ed63409f3838d263603400a980100000000000000a4f516aea3a92e379a03a2a9f9fcc757af022ce3572b00ffff21151fda41e79601000000000000002a38a4dcdffc571d547ee3e59121fdd378335df7c65877f983f0957cdc9824130100000000000000620c78305072857b43dadced80ebc057dbfc82b58c14c7b63372ef02140867650100000000000000baf0112f613aa6fff341d67decad56d1c5744a3ebb8e3577e82febbf3535b3fe01000000000000004dc2e72680dbf0156818114fa34d3591f8e6948df25a128e191190c66f6ac35301000000000000001ebe41ca4cd399901ffe5f6f52642630820500e4a96cbef4c80c560cae38d2c601000000000000007af0706d921a331b5c1f957a8d1decf15aa0e3377a80d72107693afd8614ef8f0100000000000000811038f59afeb084566271eb138b0106a8ca013f57e589d6f777bc7bb2219e760100000000000000f5e2c973d4ccbdd36d8ed4e3dae75d3b50002cc1c74eb0a1fe29ef1ef8e3f0cc0100000000000000b1f748c87b12edf7242b4719cfe68e6761acaa4329beee538d6ff740941d3cd301000000000000008b35aa0d212e4032ede352d5426696c260c9ecffa632a2e14e6a6629a6c9f637010000000000000072341ca1eb3a0fd4e790318b51ace114315573d5355c9d5336e39382ba0642560100000000000000a79cd2241bd68004641baac25c1900da3a9e6d83101aea3ef2a58d78c657272f0100000000000000b14911cb101f45b88c437a36bd82a5f8641b1c55052060ea46ea2baea570e8bf0100000000000000b66e24ea84d5e02a7b2b58e20bbf17a0f2a19c4654bf8b07669ba3b9fc4a468101000000000000003c1dcee818434058b7de26ee874ade21bd1149185d6dcba1f67048b931ec3dda01000000000000009d31c78ebe9664e2bd8ba41cddcd9c5b9fb0cc6f8be0a2e5b91f6bcf66a5c7530100000000000000290be52ae5259f3e8bd0cdf454004607867a97c1db86d0c9ff16c8c83625bc830100000000000000c91199db47b7591bf1a928534cdbd3e5979a0d09d6a464f2a9607ec444bd8a9701000000000000000428e3ccdba17d779ffba05c9ec7a6264187d13bf89b6009e97200474ad3439701000000000000004c43a374e6b3e6f7d6c5a6b8518ae0d0d232a1c46d63af8fbc800045a14cbe930100000000000000375ab81b02df9c2fc8fe711b8dd02f9ccf8da23e5b48aa29f00ad4af8088360601000000000000004b3210303cc88f1495bf5a42c50dc7c51c8bc1db98bf3722b894462346e9221d01000000000000004d9b0bbfc6a294ee0492bdc595a5d8f7cf371c729c5c319a3822f0248bb4fef70100000000000000bbff79a9b92ef586f0be053cc01639b9a335ad8e2910146d070997e285007d830100000000000000ccc84b255e5e73b971f2e71d1903b5ef9bd6d0965ff3ce29c517c875bd7ab65701000000000000001babed13d56d28fdb937b07bce846689584099575382c273f7e425f822c8159f0100000000000000530f022bda69f1ea2ee55570057ca38fda313213b9c02a7c6560ee53e40b10850100000000000000a128a73c5eaa1803618a75bc368c38e4c5cd40999cb72d615b8af1d30cb8cf1d01000000000000009bde702d9265dd3f62a8c9bd36d5e2f4e0dfb91ff812885cf2497eee6676609501000000000000001887f7937a8ca4ec67ceaedebfad3d307b10f416219de1ed4f8646409eab730a0100000000000000d64083c00178b8dd224afade9792fed8076031bdfe9efc5b8128e6372a9261e201000000000000001c6842f07fb07b318a8d00ce6258844374f8e894853ae5fd4a85c867d3fc32e30100000000000000417e120dbfd0297d59458b48407b62570987f1e907dd6dfa9a20bfe64eb489d8010000000000000042f20843bf75f4916ade8eb2faad0ada3795b3cacd29b679f18805f2826367550100000000000000be724139e9bdd099b70f7edab7d1acf0d05fa1a4ca212f5e2958d31f4272dcda0100000000000000ee40b85aa515fdbe6e559f815edc7ec1e321e0d152dd54258382ba31b54e447a010000000000000090517dbf339bac4cd01fcad403dd0803cb67a9b15bf024ce038eea2c7f2423040100000000000000c3150e4ca47e7bc6486f198bf0a742a18ab0871bb1efa34e82c4ce81f27926670100000000000000c2eb94269c5e5d2ab9a1a300387358679640763b053aca99ba5c1c9083ee717f0100000000000000316bafdefb60951da2738d6c9c2ef1866d139b34b5eab6944d6bae754dd3fb1101000000000000007a92827270cfa82f16145a44f9bdd9ff5038ef1b665dd520a2e61db9749094960100000000000000ebb1834a568ea7653bc66f394937a0aa4f2f617118d2161e2c11c0d7d2febb9d010000000000000054840bd4fe6fbabe28e2e1e54cebb2002e9523d2e1543b50f22dad31a07bc7000100000000000000b6d7ac98d6667fe8f4a186ef12a66b017df05a54e11b45d3f2967cb3d6b6827f010000000000000042f47dad5949be7b7b8f81faaec17b1b53465b01b9f8f81e6a45f2fc74e12daf01000000000000007ef02c62a02f0c18581cfb8ab7c2dcdff34e36a453a3700c568d61fdf9c8a7b40100000000000000e0df5b2f299314d2d419b46d15c3c8a739182d91c3d4b98cd16c013c3a25c04b01000000000000000150276c1b3d28d42630801c1d4a738ae723887d9286e40ba48d10b0752f7dcc010000000000000098a6defcfeb3dfca36ec46eb373734627a2c395cdd2d886046a11788ed6467af01000000000000007a03c321222b7f7b34946e44850798fee20b9112a64e3950398cce19064b872301000000000000009bbc024bfe4f072b94735afda064dc3c7da2b4bc0c50cfad44722543583a372e01000000000000002b71a8a81bc2be65f3224ba3711d1bb243446d154369e209f97d8375b5fe8deb0100000000000000496826b538d97906e14d417b48598d7d591a483ab5f4c6786cd0b96239c2f4cf0100000000000000ef27d1d5573e6419ffcc7c4372668105118256b810ab2e2dbb5e7d8280ee94250100000000000000c7009be830fe78c42f12f0753923131d16300bac230650001636b6a546cf0aa30100000000000000ed3f97f83ee7799c4aeba9f40bd18134c862c1a30875fc1e038cd27bae3a739a0100000000000000348e8bacc2d40191a6a00e137c745a422ff8fb03148d2ff9cad75efbb7a670140100000000000000efb31c5039e45fda750af5d2ea31b3210a407b168adec8f98db1f3dbc4cd943801000000000000003afc780f5d6cf676fbafe8bc742aa01b64d7d12530ebe1aab2db123a23f439b00100000000000000bff74b6ff5ccdce9a659408871d486511938422a6e550fe0669ccd739f80108101000000000000009ac13f915431b39f99d8c0bed7e9c62d22e1e8b6daaee809920f491154ef6f8b01000000000000002ff9330a8c344ad3adf4d97db014a2d0891d4dd69f5c8369dad3e0b25566173e01000000000000008f44b6746d8d809da87915d6ec208a07ee63481d24b275c6424429e16ff4d25e0100000000000000e01d6eda8094e949bfbb05c819b509a12eb662a414b822f841d9555d58e1ce7601000000000000008fc9be34cc95e087c83cb6f86e2d2b7a22a7015558e8fcb1260740bcbd346d630100000000000000c3576342cbf99792896ee5329b04ff2eee2fc2bb6d53c5c03d52c8957ee793fb01000000000000006ad4bc289673029ab44f3045eb6fdd3589d05e0e5fd76ee017f650a662f898fb010000000000000043a9a2915f377cd4943f602be38c3bd6ef39e91562c09f18fb672884b4bf8eab010000000000000059dadf17dc0f84c1c334e6a815a04bdfcd0988a3f3bcb713c66ae29e17276cc60100000000000000297dc7cf28b3d40a42c5e8faac876bf7227c670e6e031dd0e0537f4fb70e6fbe0100000000000000f442190c846bbf5764bda138c075360be77a8fcb27ad889adbffdc7b881a33f601000000000000000909c1eff97923f6bd47e6ec8b5dc163b32d5b675a3b13138d3599e5cc77ab9f0100000000000000a5f788e86ee2d311357b7aa4a128f063fa4ee36958baf10304c10bde7421aa2c0100000000000000290321d793b7dcb12ad148c2438bb60821bd938b7e9164a0c3d0fc82987f8b630100000000000000f7bdbb5c598784ba157940b08b5c5aa967d0f3faf60da28b915650eb39afe47c0100000000000000e3a73e5e042574299206b6520770553482e099d075bf00cbeb139b5f6737afed01000000000000003bb30832d06cdd3e081afef0cf2b7770bfe81dc58081d1886443e4e4547da8a101000000000000002832b59000d2027d2bf57fdb40da04bd8aac1498923397517181cc487a92815201000000000000006c3829859c7b27da7f0528e6281a406cf713971a03fa4dbb4ea973ee33f7f3170100000000000000677358fc648638cbd854d2a009dd39b8508dd3047d0c5f13bb403a64d053ad03010000000000000073dce1727ec50c50366378cd389246e19543d900d7e9dab8e323d04cf5b202a701000000000000002ada479e1fde7211de15900ed29035f6f07506cdbadc4c232aab96d62006b9de0100000000000000ee1a56541083b083f1a13b5f8aa4042a098de2cec4c43f3250baaba8f03a52ea0100000000000000e2cc4424464983ada824bbef5aaa8995e80ef1017c15ef3b13902599841637ba01000000000000005246164c02e9e6bfb7a2dbf7ba8a5440a189f8048373678f5b1085f217464c050100000000000000dea69c3badff9b8d7571cb6c538cd099544da7460a19e1b8651c5c530a6dd53c01000000000000001889f1b031fa7d64c4b480a17cd2941be2c02681bca397c93607091f37bf5ee1010000000000000005062bede97a45c6e1c6b593675ee07ce969fae45136cc2b2afc6e705a77f4700100000000000000dc6e03f650e4304ca8d1598dde8d4faf45891987bfc49ef785ace47c4c0b557301000000000000002b39ab0d9c371829532be982a2a90e65f98928168e0de53a39889ad7672a462c010000000000000018ede59e820bcdd0ed2faf99a21bdc916d71577dd35117f90efe77b8513e631001000000000000008c258b4ca16dfb8e5afde4cf40fecf115307798117b4860475511b3b5d56158401000000000000000e7bc96895730726225e47e31c742fd44d3936f31ecd32658c694fc11df2522401000000000000006375ae0c1bf2b0388e16971715fd68c31ed179f38947531c165f0da2c3fe76670100000000000000e539a77d19cb2e73f18eb583257d5f55edcf515397e238137398cb644486f9aa0100000000000000447a00c24ddef95382f0fce94aec3aefb0e8f0cb1a635bfb05faa030d63c1130010000000000000047ede3eca5f6c8f0a51f2d36d7d1c236aab07a8b2aaa6ab08c8ccf8d87ce3dd10100000000000000a5d172126aadfe80d2b711776674d61df5a1cd1a0129761fb2d2de58ed9d48a0010000000000000017638d776ab08bfd9eab2ee19973c1cae6b2904830f14c12d675bfe88e0d7e0701000000000000006b5487e03da258c7c92add43a1b5a99a0b40f8316e758585150877bb6fe88b3201000000000000009f677785cfbf44140bdf38770f3d8076f222aa1c9997842d89d580b0f256198f01000000000000009a0ea02dca493accceb975732f31c9d249d4c90ff1ca0bd86cbe00f1728146b401000000000000003adbd2d5abdb70ef56c2d8bd4a7c0d67882a1c2050a856937491e98496a496fe01000000000000004485615186ae8ad33aff337594a7f8325d3a50201ee04320fb1dd2eab9643d1601000000000000002b07c366c1ed899a2ac9722b76e092828714a8177368e51ca05ec05c565866b30100000000000000e81206b483fdcf1fe42145f27d1efb8178a57ee24b196285374037da2a53b323010000000000000094416582fe359e0a310da59bf93df8ff9665b89071d4977a9a9f3390b75c0c450100000000000000ff568b8e0dbe74604c6d04b5de6f2df03b343bea074c4495c6a10e511ba473d90100000000000000ca0b4c8fe6b57503999f538fa17e761394d64a01856d381ad33ba131a4333838010000000000000032bbff551f7ed51452d264d796315e578d982e942eebb60e519ca648935d8b0c01000000000000003a4bfd825ccd308def4a61bac80c579db42b02ea5f1a0768656a326e83a0dd880100000000000000b5e0d0ae74b0ac76c0195fecca9660a241920ba97cdc5a247c7e941ee1f5407c0100000000000000da80cfe4cadfdce419c7c741d81a19a4a7fd31b0ca4176e65fb03666bdeaff6e01000000000000001450fb02aedbbfce8ec62c79767acd6b9e881390ad868d07713bb1d41d9c74b90100000000000000f33b53556f28f27d250585317cd57a18f37c5d5f2b3c1bd00a0c91ea54f1636f0100000000000000920a57fadba81db4615b0b0afb3c95d2e33a44fc44e138a8ad2ba46ee0aa53a10100000000000000e056900cabddb471de9e1846d7efdddd8b5ad400b02fc54b4402ba725c78bf9a010000000000000008ad520b32d8d8401e7b55ed539790054c962fed255b2294547941000b31599a0100000000000000232b04be856e808b2616319b11eec858097a8afee5c18f0af0e1c33f1c6973ad01000000000000001a02012d8a476cc43998b10fd5c8f5174ba2a2eedebf27fab9831c0d812b0528010000000000000080629b67e7b2d6f57e9da3cb29cc8463a65d125039628124784f944b94c29e88010000000000000079f73931b31ce353119fb4063412e844b16cb3eb92e592ebd822a8c21303554801000000000000002929dacc53614cea1848e7ba20fdeed7cb0bd81571aa72dfb63dfc84d3965d2b010000000000000030afa9ef79458f844a27a3881655b6eafb90b3912737f1bcddb95e78eb098c1d010000000000000031a46e639e57d1a11119b17f76617a35b3606d206fb5c3e87710f464f7a57de50100000000000000ed25d7114e2aef2f0e57dc2be1401a4994d8aaafb30223162634a512604a236601000000000000001e070000000000000001f53c2a0100791c00000000000000002904050001000000000000002a0d050002000000000000002f16050003000000000000008e1f05000400000000000000ee28050005000000000000004d32050006000000000000009d3b05000700000000000000fd44050008000000000000005c4e05000900000000000000b75705000a00000000000000176105000b00000000000000766a05000c00000000000000d67305000d00000000000000357d05000e00000000000000958605000f00000000000000f58f0500100000000000000055990500110000000000000095a205001200000000000000d8ab050013000000000000000db50500140000000000000024da05001500000000000000aaec05001600000000000000f4f5050017000000000000003bff050018000000000000008b0806001900000000000000992406001a00000000000000f92d06001b000000000000000d4a06001c00000000000000685306001d00000000000000b65c06001e00000000000000f76506001f00000000000000308b060020000000000000007b940600210000000000000025a70600220000000000000033c3060023000000000000007fcc06002400000000000000c3d50600250000000000000011df060026000000000000005ae806002700000000000000a0f106002800000000000000410407002900000000000000880d07002a000000000000001b3c07002b00000000000000764507002c00000000000000357407002d00000000000000239907002e000000000000006fa207002f00000000000000c3ab070030000000000000006abe07003100000000000000bdc7070032000000000000000fd107003300000000000000b2e3070034000000000000000aed07003500000000000000971b080036000000000000009d24080037000000000000009c4008003800000000000000255308003900000000000000735c08003a000000000000000c6f08003b00000000000000048b08003c00000000000000589408003d00000000000000d3c208003e00000000000000e4de08003f000000000000003fe808004000000000000000f7fa08004100000000000000aa0d09004200000000000000153309004300000000000000fc6a090044000000000000003e74090045000000000000009a7d0900460000000000000000a30900470000000000000014db0900480000000000000020130a004900000000000000791c0a004a00000000000000364b0a004b0000000000000043830a004c00000000000000e5950a004d0000000000000045bb0a004e0000000000000059f30a004f000000000000000e060b005000000000000000812b0b005100000000000000dc340b005200000000000000ef500b005300000000000000a3630b005400000000000000b69b0b005500000000000000c7d30b005600000000000000dd0b0c005700000000000000f3430c005800000000000000087c0c00590000000000000052b30c005a0000000000000060eb0c005b00000000000000baf40c005c0000000000000072230d005d00000000000000805b0d005e000000000000007e930d005f000000000000007ccb0d00600000000000000076030e006100000000000000793b0e00620000000000000088730e00630000000000000092ab0e00640000000000000083e30e006500000000000000731b0f00660000000000000079530f006700000000000000748b0f0068000000000000001fc30f006900000000000000d0fa0f006a00000000000000633210006b00000000000000826a10006c0000000000000028a210006d0000000000000005b310006e0000000000000055d810006f000000000000004810110070000000000000006548110071000000000000008e8011007200000000000000bfb811007300000000000000bbf011007400000000000000e828120075000000000000001561120076000000000000003b991200770000000000000058d112007800000000000000770913007900000000000000944113007a00000000000000c07913007b00000000000000e7b113007c000000000000000cea13007d0000000000000067f313007e00000000000000d31814007f000000000000002e22140080000000000000008c2b14008100000000000000545a14008200000000000000ad63140083000000000000000e89140084000000000000006892140085000000000000008dca14008600000000000000b00215008700000000000000d03a15008800000000000000f3721500890000000000000015ab15008a000000000000003be315008b000000000000005d1b16008c00000000000000855316008d00000000000000b18b16008e00000000000000d3c316008f00000000000000e9fb16009000000000000000073417009100000000000000bf4617009200000000000000286c1700930000000000000029a41700940000000000000041dc17009500000000000000591418009600000000000000bf3918009700000000000000704c18009800000000000000948418009900000000000000f28d18009a00000000000000bcbc18009b00000000000000e4f418009c000000000000000b2d19009d000000000000002c6519009e00000000000000896e19009f00000000000000519d1900a00000000000000075d51900a100000000000000920d1a00a200000000000000ec161a00a300000000000000b6451a00a400000000000000887d1a00a50000000000000077b51a00a600000000000000cdbe1a00a70000000000000070ed1a00a80000000000000083091b00a9000000000000004e251b00aa00000000000000fe371b00ab00000000000000065d1b00ac000000000000005f661b00ad00000000000000bd6f1b00ae00000000000000de941b00af00000000000000fecc1b00b0000000000000001f041c00b1000000000000000c321c00b2000000000000002f3b1c00b3000000000000002e721c00b4000000000000000ca01c00b50000000000000044a91c00b60000000000000022e11c00b70000000000000044191d00b8000000000000000c481d00b9000000000000006b511d00ba000000000000008b891d00bb00000000000000a5c11d00bc0000000000000053f91d00bd00000000000000ff301e00be00000000000000054d1e00bf0000000000000002691e00c000000000000000d1a01e00c100000000000000c5d81e00c200000000000000cf101f00c30000000000000083481f00c400000000000000af801f00c500000000000000d0b81f00c600000000000000f0f01f00c7000000000000001b292000c80000000000000039612000c90000000000000054992000ca000000000000004fd12000cb000000000000004c092100cc00000000000000031c2100cd000000000000006d412100ce00000000000000cc4a2100cf0000000000000098792100d000000000000000c4b12100d100000000000000eee92100d20000000000000011222200d300000000000000325a2200d40000000000000055922200d50000000000000075ca2200d6000000000000008f022300d700000000000000b13a2300d800000000000000cd722300d90000000000000078852300da00000000000000ce8e2300db00000000000000bdaa2300dc00000000000000abe22300dd0000000000000012112400de00000000000000501a2400df0000000000000045512400e000000000000000a1882400e1000000000000005fc02400e20000000000000013f82400e30000000000000007302500e40000000000000013682500e500000000000000c37a2500e600000000000000a8962500e700000000000000fb9f2500e80000000000000000d82500e90000000000000019102600ea000000000000002b482600eb0000000000000028802600ec000000000000002eb82600ed0000000000000044d42600ee0000000000000058f02600ef00000000000000b3f92600f00000000000000065282700f10000000000000057602700f20000000000000064982700f3000000000000008dd02700f400000000000000a7ec2700f500000000000000b9082800f600000000000000e0402800f700000000000000f6782800f80000000000000019b12800f90000000000000040e92800fa000000000000006c212900fb00000000000000a0592900fc00000000000000107f2900fd00000000000000bc912900fe00000000000000eac92900ff00000000000000fd012a000001000000000000ff1d2a0001010000000000000c3a2a0002010000000000002b722a00030100000000000005aa2a000401000000000000fce12a0005010000000000004ceb2a000601000000000000e0fd2a000701000000000000c3192b000801000000000000be512b0009010000000000000a772b000a01000000000000ae892b000b01000000000000b0a52b000c01000000000000abc12b000d010000000000009bf92b000e0100000000000093312c000f0100000000000087692c00100100000000000075a12c00110100000000000074d92c00120100000000000089112d00130100000000000099492d001401000000000000b0812d001501000000000000c3b92d001601000000000000d1f12d001701000000000000d6292e001801000000000000e9612e001901000000000000ea992e001a01000000000000efd12e001b01000000000000f8092f001c01000000000000f0412f001d01000000000000e9792f001e0100000000000036832f001f01000000000000b2b12f002001000000000000a9cd2f00210100000000000094e92f0022010000000000007121300023010000000000003b5930002401000000000000089130002501000000000000599a30002601000000000000f6c830002701000000000000e30031002801000000000000c03831002901000000000000a17031002a01000000000000f27931002b010000000000007fa831002c010000000000005de031002d01000000000000aae931002e01000000000000441832002f01000000000000295032003001000000000000fe8732003101000000000000aa9a3200320100000000000010c0320033010000000000003af8320034010000000000005f303300350100000000000059683300360100000000000078a0330037010000000000009bd833003801000000000000cb1034003901000000000000f44834003a010000000000001c8134003b0100000000000044b934003c0100000000000055f134003d010000000000009dfa34003e01000000000000302935003f01000000000000c6573500400100000000000023613500410100000000000053993500420100000000000080d135004301000000000000560036004401000000000000b10936004501000000000000ce4136004601000000000000037a3600470100000000000031b2360048010000000000005fea360049010000000000007b2237004a01000000000000995a37004b01000000000000f56337004c01000000000000c69237004d01000000000000feca37004e01000000000000340338004f01000000000000683b380050010000000000009e7338005101000000000000c9ab38005201000000000000dcc7380053010000000000003cd138005401000000000000f8e338005501000000000000b0f6380056010000000000001c1c390057010000000000007a2539005801000000000000da2e39005901000000000000525439005a01000000000000878c39005b01000000000000bbc439005c01000000000000f3fc39005d0100000000000028353a005e010000000000005f6d3a005f0100000000000098a53a006001000000000000cedd3a0061010000000000000c163b006201000000000000404e3b00630100000000000019853b006401000000000000608e3b006501000000000000b8973b0066010000000000000fa13b006701000000000000a7b33b006801000000000000fabc3b00690100000000000049c63b006a010000000000009ccf3b006b01000000000000eed83b006c01000000000000c1f43b006d0100000000000014fe3b006e0100000000000066073c006f01000000000000b7103c0070010000000000009e2c3c007101000000000000ee353c00720100000000000094483c007301000000000000e0513c0074010000000000007c643c0075010000000000001d773c0076010000000000004b9c3c00770100000000000010d43c007801000000000000d80b3d0079010000000000001a153d007a0100000000000053433d007b01000000000000ea553d007c01000000000000225f3d007d0100000000000072683d007e01000000000000b4713d007f01000000000000fb7a3d0080010000000000007a8d3d008101000000000000b8963d00820100000000000006a03d00830100000000000088b23d008401000000000000c8bb3d0085010000000000000bc53d0086010000000000001dea3d008701000000000000e9053e008801000000000000b5213e0089010000000000003b343e008a01000000000000843d3e008b010000000000005e593e008c010000000000001f913e008d0100000000000065c83e008e010000000000006bed3e008f01000000000000a9f63e009001000000000000f6ff3e009101000000000000c1373f0092010000000000005c4a3f0093010000000000003b663f009401000000000000856f3f009501000000000000cf783f0096010000000000003ea73f009701000000000000ccde3f0098010000000000008516400099010000000000001e2940009a010000000000006e4e40009b01000000000000c35740009c010000000000009b8640009d01000000000000cebe40009e0100000000000001f740009f01000000000000372f4100a00100000000000097384100a10100000000000070674100a201000000000000a99f4100a30100000000000065b24100a401000000000000ddd74100a50100000000000096ea4100a6010000000000000b104200a70100000000000044484200a8010000000000009c514200a9010000000000003b804200aa0100000000000051b84200ab010000000000006fd44200ac010000000000005ef04200ad01000000000000b9f94200ae010000000000006a284300af0100000000000078604300b00100000000000077984300b101000000000000abd04300b20100000000000064e34300b30100000000000072ff4300b401000000000000d2084400b50100000000000008414400b6010000000000002e794400b7010000000000005eb14400b8010000000000007de94400b9010000000000009e214500ba010000000000005d344500bb01000000000000d0594500bc0100000000000006924500bd010000000000001aca4500be010000000000004a024600bf01000000000000603a4600c00100000000000084724600c101000000000000abaa4600c20100000000000047bd4600c3010000000000009ec64600c401000000000000a0e24600c5010000000000005df54600c601000000000000bf1a4700c701000000000000d1524700c8010000000000007f814700c901000000000000dd8a4700ca0100000000000039944700cb01000000000000f2c24700cc0100000000000010fb4700cd01000000000000d5294800ce010000000000002c334800cf01000000000000f9614800d001000000000000596b4800d10100000000000078874800d2010000000000008da34800d301000000000000aadb4800d401000000000000c6134900d501000000000000eb4b4900d601000000000000e7834900d701000000000000f9bb4900d801000000000000b6ce4900d9010000000000001bf44900da010000000000004a2c4a00db0100000000000066644a00dc010000000000002f7d4a00dd0100000000000019994a00de01000000000000c0ab4a00df01000000000000aec74a00e001000000000000fed04a00e101000000000000bbff4a00e20100000000000019094b00e301000000000000902e4b00e40100000000000041414b00e50100000000000010704b00e6010000000000006e794b00e7010000000000002b8c4b00e80100000000000094b14b00e901000000000000a4e94b00ea01000000000000d4214c00eb01000000000000d7594c00ec01000000000000e8914c00ed0100000000000004ae4c00ee01000000000000ebc94c00ef0100000000000014024d00f001000000000000fe394d00f1010000000000000a724d00f201000000000000667b4d00f30100000000000013aa4d00f40100000000000031c64d00f50100000000000037e24d00f6010000000000004afe4d00f7010000000000002c1a4e00f801000000000000ea2c4e00f90100000000000049364e00fa010000000000004e524e00fb01000000000000628a4e00fc0100000000000079a64e00fd010000000000001ab94e00fe0100000000000079c24e00ff0100000000000094de4e000002000000000000aafa4e00010200000000000059324f00020200000000000004654f000302000000000000ff764f0004020000000000000d804f0005020000000000007e924f000602000000000000c29b4f000702000000000000f4d34f000802000000000000160c50000902000000000000504450000a02000000000000877c50000b02000000000000b6b450000c02000000000000e7ec50000d0200000000000046f650000e02000000000000b61b51000f020000000000001625510010020000000000004f5d510011020000000000000f7051001202000000000000889551001302000000000000b5cd5100140200000000000014d751001502000000000000e605520016020000000000001f3e5200170200000000000053765200180200000000000089ae52001902000000000000e8b752001a02000000000000b7e652001b0200000000000074f952001c02000000000000e81e53001d020000000000001a5753001e02000000000000558f53001f020000000000008ac753002002000000000000b9ff53002102000000000000f13754002202000000000000277054002302000000000000418c54002402000000000000d1a354002502000000000000d9c8540026020000000000007edb54002702000000000000b81355002802000000000000e34b55002902000000000000c58355002a02000000000000d6bb55002b0200000000000007f455002c02000000000000c30656002d020000000000002c2c56002e020000000000005d6456002f020000000000008f9c56003002000000000000c9d456003102000000000000070d570032020000000000004345570033020000000000007a7d570034020000000000007d99570035020000000000009ab557003602000000000000b4ed57003702000000000000f225580038020000000000002f5e580039020000000000006b9658003a02000000000000a6ce58003b02000000000000e30659003c02000000000000183f59003d02000000000000517759003e02000000000000ad8059003f020000000000008baf59004002000000000000e9b859004102000000000000c5e75900420200000000000002205a0043020000000000003f585a0044020000000000007c905a004502000000000000bcc85a004602000000000000f1005b004702000000000000111d5b00480200000000000030395b0049020000000000006f715b004a02000000000000aca95b004b02000000000000e9e15b004c02000000000000251a5c004d0200000000000060525c004e020000000000009f8a5c004f02000000000000dbc25c00500200000000000019fb5c00510200000000000058335d005202000000000000956b5d005302000000000000c7a35d005402000000000000f7db5d00550200000000000031145e0056020000000000006f4c5e005702000000000000a7845e005802000000000000e0bc5e0059020000000000003fc65e005a020000000000001cf55e005b02000000000000582d5f005c0200000000000093655f005d02000000000000cf9d5f005e0200000000000005d65f005f02000000000000440e600060020000000000008346600061020000000000006a7e6000620200000000000056b46000630200000000000000ec60006402000000000000a72361006502000000000000e25b61006602000000000000f293610067020000000000001bcc61006802000000000000dade61006902000000000000590462006a02000000000000963c62006b02000000000000cc7462006c020000000000008c8762006d02000000000000ffac62006e020000000000003ae562006f02000000000000731d63007002000000000000b05563007102000000000000e98d630072020000000000001dc6630073020000000000005dfe63007402000000000000993664007502000000000000d86e6400760200000000000017a76400770200000000000051df640078020000000000008a1765007902000000000000c34f65007a02000000000000018865007b020000000000003ec065007c020000000000007af865007d02000000000000b63066007e02000000000000f06866007f0200000000000004a16600800200000000000041d966008102000000000000711167008202000000000000ac4967008302000000000000de8167008402000000000000f8b967008502000000000000b8cc6700860200000000000035f2670087020000000000006e2a680088020000000000001c3d680089020000000000007f6268008a02000000000000ba9a68008b02000000000000f3d268008c02000000000000310b69008d02000000000000704369008e02000000000000ae7b69008f02000000000000eeb3690090020000000000002bec6900910200000000000065246a009202000000000000a45c6a009302000000000000e0946a0094020000000000001dcd6a009502000000000000dbdf6a00960200000000000059056b00970200000000000018186b009802000000000000923d6b009902000000000000b0756b009a02000000000000e6ad6b009b0200000000000021e66b009c020000000000005e1e6c009d0200000000000096566c009e02000000000000d28e6c009f020000000000000ac76c00a00200000000000047ff6c00a10200000000000077376d00a202000000000000876f6d00a3020000000000000fa76d00a40200000000000059dc6d00a50200000000000022146e00a602000000000000464c6e00a70200000000000071846e00a802000000000000eea96e00a902000000000000aabc6e00aa0200000000000085eb6e00ab02000000000000e4f46e00ac020000000000001c2d6f00ad02000000000000da3f6f00ae0200000000000053656f00af020000000000008c9d6f00b002000000000000c4d56f00b102000000000000d90d7000b202000000000000d7457000b302000000000000f67d7000b402000000000000deb57000b502000000000000b2ed7000b602000000000000a9257100b702000000000000975d7100b802000000000000338c7100b9020000000000007e957100ba0200000000000068b17100bb0200000000000050cd7100bc020000000000001c057200bd02000000000000610e7200be02000000000000c13c7200bf020000000000006b747200c0020000000000005aac7200c10200000000000032e47200c202000000000000dcf67200c302000000000000321c7300c4020000000000002b547300c5020000000000007d8b7300c60200000000000020c37300c702000000000000cefa7300c8020000000000003c327400c9020000000000009b697400ca02000000000000eda07400cb0200000000000056d87400cc0200000000000090107500cd02000000000000ad2c7500ce020000000000000b367500cf02000000000000c7487500d002000000000000fe807500d10200000000000039b97500d20200000000000073f17500d30200000000000030047600d4020000000000004b207600d502000000000000a9297600d60200000000000006337600d702000000000000d3617600d80200000000000090747600d902000000000000089a7600da020000000000002fd27600db020000000000001a0a7700dc0200000000000022427700dd02000000000000007a7700de02000000000000d2b17700df02000000000000f8e97700e0020000000000002b227800e102000000000000635a7800e202000000000000a0927800e302000000000000daca7800e40200000000000011037900e502000000000000483b7900e60200000000000085737900e702000000000000b1ab7900e802000000000000dae37900e902000000000000121c7a00ea0200000000000049547a00eb02000000000000878c7a00ec02000000000000bfc47a00ed02000000000000edfc7a00ee0200000000000026357b00ef02000000000000606d7b00f0020000000000009da57b00f102000000000000cddd7b00f20200000000000006167c00f3020000000000003f4e7c00f402000000000000fb607c00f50200000000000077867c00f602000000000000b4be7c00f70200000000000014c87c00f802000000000000e0f67c00f9020000000000001b2f7d00fa0200000000000058677d00fb02000000000000959f7d00fc02000000000000d2d77d00fd02000000000000ec0f7e00fe0200000000000025487e00ff020000000000005f807e0000030000000000009ab87e000103000000000000d3f07e000203000000000000ee0c7f0003030000000000000a297f000403000000000000c53b7f00050300000000000043617f0006030000000000007b997f000703000000000000b9d17f000803000000000000f20980000903000000000000284280000a030000000000005e7a80000b0300000000000099b280000c03000000000000d2ea80000d03000000000000082381000e030000000000003e5b81000f030000000000007b9381001003000000000000b8cb81001103000000000000f30382001203000000000000313c82001303000000000000697482001403000000000000a6ac82001503000000000000c4c882001603000000000000e0e482001703000000000000ff00830018030000000000001e1d83001903000000000000dd2f83001a030000000000005b5583001b03000000000000988d83001c03000000000000d5c583001d0300000000000010fe83001e030000000000004e3684001f03000000000000826e84002003000000000000bba684002103000000000000f5de840022030000000000006f0485002303000000000000cc0d850024030000000000002c1785002503000000000000ea2985002603000000000000634f850027030000000000007e6b850028030000000000009a878500290300000000000017ad85002a03000000000000d2bf85002b0300000000000031c985002c030000000000000ef885002d030000000000004a3086002e03000000000000866886002f03000000000000bea086003003000000000000f2d8860031030000000000002a1187003203000000000000871a870033030000000000006449870034030000000000001d5c87003503000000000000998187003603000000000000cfb987003703000000000000eed5870038030000000000000cf2870039030000000000004a2a88003a03000000000000a83388003b03000000000000826288003c03000000000000b69a88003d03000000000000efd288003e030000000000002d0b89003f030000000000004d27890040030000000000006c4389004103000000000000ab7b89004203000000000000eab38900430300000000000028ec8900440300000000000068248a004503000000000000a05c8a004603000000000000b4948a004703000000000000f4cc8a00480300000000000030058b0049030000000000006f3d8b004a030000000000008e598b004b03000000000000ae758b004c03000000000000ecad8b004d0300000000000028e68b004e03000000000000331e8c004f030000000000004f568c0050030000000000008e8e8c005103000000000000c7c68c00520300000000000005ff8c00530300000000000041378d005403000000000000746f8d005503000000000000a4a78d00560300000000000064ba8d005703000000000000e4df8d0058030000000000000a188e00590300000000000023508e005a0300000000000027888e005b03000000000000d89a8e005c0300000000000043c08e005d0300000000000082f88e005e03000000000000c0308f005f03000000000000ff688f0060030000000000001ba18f00610300000000000059d98f006203000000000000981190006303000000000000d64990006403000000000000f56590006503000000000000158290006603000000000000758b9000670300000000000053ba9000680300000000000092f290006903000000000000d22a91006a03000000000000106391006b03000000000000489b91006c03000000000000a2a491006d030000000000001bd391006e03000000000000530992006f03000000000000d32e9200700300000000000090419200710300000000000074799200720300000000000094b19200730300000000000072e092007403000000000000d2e992007503000000000000b21893007603000000000000122293007703000000000000445a93007803000000000000739293007903000000000000f3b793007a03000000000000abca93007b030000000000005ddd93007c03000000000000c40294007d03000000000000e13a94007e03000000000000217394007f0300000000000059ab9400800300000000000090e394008103000000000000c31b95008203000000000000ea53950083030000000000009866950084030000000000000b8c9500850300000000000046c49500860300000000000057fc950087030000000000008f3496008803000000000000cf6c960089030000000000000ba596008a0300000000000045dd96008b03000000000000a3e696008c03000000000000801597008d03000000000000bc4d97008e03000000000000f78597008f030000000000002ebe9700900300000000000030f6970091030000000000005a2e98009203000000000000956698009303000000000000d49e9800940300000000000014d7980095030000000000003b0f990096030000000000006c4799009703000000000000ac7f9900980300000000000078b79900990300000000000026ca99009a030000000000007cef99009b0300000000000085279a009c03000000000000be5f9a009d03000000000000fd979a009e03000000000000b9aa9a009f0300000000000022d09a00a0030000000000003dec9a00a10300000000000058089b00a20300000000000074249b00a3030000000000008b409b00a403000000000000e4499b00a50300000000000038789b00a60300000000000076819b00a703000000000000e4af9b00a803000000000000b7e79b00a903000000000000731f9c00aa03000000000000a6289c00ab030000000000002f3b9c00ac0300000000000012579c00ad030000000000005d609c00ae03000000000000cb8e9c00af0300000000000057a19c00b00300000000000086c69c00b1030000000000005afe9c00b20300000000000002369d00b303000000000000bc6d9d00b40300000000000099a59d00b5030000000000004edd9d00b603000000000000db149e00b703000000000000e0399e00b803000000000000724c9e00b9030000000000002a849e00ba03000000000000ee9f9e00bb03000000000000d1bb9e00bc030000000000007df39e00bd03000000000000f02a9f00be030000000000006a629f00bf03000000000000ff999f00c0030000000000002ed19f00c1030000000000004608a000c203000000000000893fa000c303000000000000a476a000c403000000000000dfada000c5030000000000001cb7a000c6030000000000003ce5a000c703000000000000921ca100c8030000000000008c53a100c903000000000000988aa100ca0300000000000010a6a100cb03000000000000a0c1a100cc03000000000000e5d3a100cd0300000000000072f8a100ce030000000000007c2fa200cf030000000000003766a200d003000000000000389da200d10300000000000056a6a200d203000000000000a9b8a200d303000000000000cac1a200d4030000000000001ad4a200d503000000000000200ba300d6030000000000002714a300d703000000000000bc41a300d8030000000000006778a300d9030000000000000aafa300da0300000000000046dca300db0300000000000065e5a300dc03000000000000a81ba400dd03000000000000d72da400de030000000000002352a400df030000000000006288a400e003000000000000c1bea400e103000000000000f8f4a400e203000000000000212ba500e3030000000000003f61a500e403000000000000656aa500e503000000000000e497a500e60300000000000040cea500e703000000000000b204a600e803000000000000fc3aa600e9030000000000009471a600ea0300000000000037a8a600eb030000000000001adfa600ec03000000000000ea0ca700ed030000000000000e16a700ee030000000000005228a700ef030000000000007d31a700f003000000000000034da700f1030000000000002084a700f2030000000000004a8da700f303000000000000a99fa700f403000000000000f6baa700f503000000000000c1f1a700f603000000000000be28a800f703000000000000a65fa800f8030000000000003e7ba800f903000000000000c296a800fa03000000000000c3cda800fb03000000000000d504a900fc03000000000000f83ba900fd030000000000005f73a900fe03000000000000ceaaa900ff030000000000000bb4a900000400000000000005e2a90001040000000000005e19aa000204000000000000c12baa0003040000000000008e50aa000404000000000000fd62aa0005040000000000008175aa000604000000000000fa87aa0007040000000000002f91aa0008040000000000005dbfaa000904000000000000a3c8aa000a04000000000000e5f6aa000b04000000000000e41bab000c040000000000005b2eab000d04000000000000e765ab000e040000000000004c9dab000f0400000000000085a6ab001004000000000000b8d4ab001104000000000000fdddab0012040000000000003b0cac001304000000000000d043ac001404000000000000827bac001504000000000000b8a0ac0016040000000000005bb3ac00170400000000000029ebac0018040000000000006af4ac0019040000000000000e07ad001a04000000000000f422ad001b04000000000000432cad001c040000000000009935ad001d04000000000000ee3ead001e04000000000000d55aad001f04000000000000bd76ad002004000000000000a592ad00210400000000000076caad002204000000000000f6dcad002304000000000000e001ae0024040000000000004f39ae0025040000000000001371ae0026040000000000005f7aae002704000000000000fc8cae002804000000000000cda8ae0029040000000000005ebbae002a0400000000000081e0ae002b040000000000004f18af002c040000000000001e50af002d04000000000000e687af002e04000000000000a0bfaf002f040000000000005ff7af003004000000000000042fb0003104000000000000da66b00032040000000000009a9eb000330400000000000063d6b0003404000000000000300eb1003504000000000000da45b10036040000000000009a7db100370400000000000050b5b100380400000000000029edb1003904000000000000971bb2003a04000000000000e024b2003b04000000000000995cb2003c040000000000006694b2003d0400000000000048b0b2003e040000000000002eccb2003f0400000000000075d5b200400400000000000008e8b2004104000000000000e703b3004204000000000000ce1fb3004304000000000000b63bb30044040000000000000d45b30045040000000000009f57b30046040000000000007573b3004704000000000000c67cb30048040000000000003aabb3004904000000000000e4e2b3004a04000000000000651ab4004b04000000000000f951b4004c040000000000009389b4004d0400000000000025c1b4004e04000000000000f6f8b4004f04000000000000241eb5005004000000000000b130b50051040000000000007068b500520400000000000040a0b5005304000000000000ecd7b50054040000000000000510b60055040000000000003e48b60056040000000000007a80b6005704000000000000b7b8b6005804000000000000f3f0b60059040000000000002f29b7005a04000000000000ae4eb7005b040000000000006861b7005c04000000000000a599b7005d04000000000000ded1b7005e040000000000005cf7b7005f04000000000000160ab80060040000000000005042b8006104000000000000964bb8006204000000000000687ab8006304000000000000a6b2b800640400000000000066c5b8006504000000000000e5eab80066040000000000000423b90067040000000000003f5bb90068040000000000005d77b90069040000000000007b93b9006a04000000000000b7cbb9006b04000000000000ef03ba006c04000000000000133cba006d040000000000003358ba006e040000000000005174ba006f0400000000000042acba0070040000000000006ce4ba007104000000000000a21cbb007204000000000000e054bb007304000000000000405ebb0074040000000000001b8dbb0075040000000000002ec5bb0076040000000000006dfdbb007704000000000000a435bc007804000000000000d06dbc0079040000000000000ca6bc007a040000000000004adebc007b040000000000008716bd007c04000000000000c34ebd007d04000000000000fc86bd007e040000000000003bbfbd007f040000000000007af7bd008004000000000000d500be008104000000000000b32fbe008204000000000000ea67be00830400000000000027a0be00840400000000000065d8be008504000000000000a410bf008604000000000000dd48bf0087040000000000003b52bf0088040000000000001881bf0089040000000000008fb8bf008a04000000000000cbc1bf008b04000000000000f8efbf008c040000000000007602c0008d040000000000008327c0008e04000000000000075fc0008f040000000000005d96c000900400000000000009cec00091040000000000003b06c10092040000000000002d3ec10093040000000000006476c10094040000000000007aaec1009504000000000000b9e6c1009604000000000000ef1ec20097040000000000002c57c2009804000000000000698fc20099040000000000008cc7c2009a040000000000009effc2009b04000000000000da37c3009c04000000000000ee6fc3009d0400000000000029a8c3009e0400000000000067e0c3009f04000000000000240fc400a0040000000000008218c400a104000000000000b150c400a204000000000000c088c400a304000000000000d2c0c400a404000000000000f6f8c400a5040000000000001231c500a604000000000000d143c500a7040000000000004d69c500a80400000000000089a1c500a904000000000000c4d9c500aa040000000000000112c600ab040000000000005c1bc600ac040000000000003a4ac600ad040000000000007482c600ae04000000000000abbac600af04000000000000e4f2c600b0040000000000001d2bc700b1040000000000002e47c700b2040000000000004863c700b304000000000000687fc700b404000000000000829bc700b5040000000000009bd3c700b604000000000000d80bc800b7040000000000001144c800b804000000000000704dc800b904000000000000d056c800ba040000000000004e7cc800bb0400000000000080b4c800bc04000000000000b1ecc800bd040000000000009808c900be040000000000008d24c900bf04000000000000c75cc900c004000000000000df94c900c104000000000000feb0c900c2040000000000001dcdc900c3040000000000004605ca00c4040000000000006e3dca00c5040000000000009e75ca00c604000000000000029bca00c704000000000000aeadca00c8040000000000008adcca00c904000000000000eae5ca00ca04000000000000251ecb00cb04000000000000fa55cb00cc04000000000000778ccb00cd04000000000000eec3cb00ce0400000000000005fccb00cf040000000000004134cc00d004000000000000716ccc00d10400000000000096a4cc00d204000000000000d3dccc00d30400000000000086efcc00d4040000000000000215cd00d504000000000000ac27cd00d604000000000000264dcd00d7040000000000008656cd00d8040000000000006385cd00d9040000000000003bb4cd00da0400000000000099bdcd00db04000000000000d8f5cd00dc04000000000000172ece00dd040000000000005366ce00de04000000000000909ece00df04000000000000b7d6ce00e00400000000000068e9ce00e104000000000000cc0ecf00e2040000000000000547cf00e304000000000000427fcf00e40400000000000079b7cf00e504000000000000b8efcf00e604000000000000f427d000e7040000000000000b60d000e8040000000000004698d000e90400000000000083d0d000ea04000000000000c008d100eb04000000000000fa40d100ec040000000000003679d100ed0400000000000073b1d100ee0400000000000087cdd100ef04000000000000a6e9d100f004000000000000e521d200f1040000000000001e5ad200f2040000000000005692d200f30400000000000092cad200f40400000000000052ddd200f504000000000000ce02d300f604000000000000e13ad300f7040000000000003444d300f804000000000000dc56d300f904000000000000ef72d300fa040000000000004d7cd300fb0400000000000024abd300fc04000000000000a1d0d300fd040000000000005be3d300fe04000000000000901bd400ff04000000000000ce53d40000050000000000000a8cd40001050000000000003ac4d40002050000000000004ae0d400030500000000000069fcd4000405000000000000a134d50005050000000000006047d5000605000000000000de6cd50007050000000000001ba5d500080500000000000058ddd50009050000000000009415d6000a05000000000000d24dd6000b05000000000000f085d6000c050000000000001ebed6000d05000000000000fbecd6000e050000000000005bf6d6000f050000000000008b2ed7001005000000000000c566d7001105000000000000029fd700120500000000000036d7d70013050000000000006f0fd80014050000000000009f47d8001505000000000000c97fd8001605000000000000e4b7d80017050000000000001ff0d80018050000000000005928d90019050000000000009560d9001a050000000000005473d9001b05000000000000718fd9001c05000000000000d198d9001d0500000000000031a2d9001e050000000000000fd1d9001f05000000000000cfe3d90020050000000000004f09da0021050000000000008941da002205000000000000b979da002305000000000000edb1da00240500000000000047bbda00250500000000000054d7da00260500000000000007eada00270500000000000067f3da0028050000000000003a22db0029050000000000005e5adb002a050000000000007892db002b05000000000000b0cadb002c05000000000000e702dc002d05000000000000183bdc002e050000000000007644dc002f050000000000002773dc003005000000000000dd85dc0031050000000000004dabdc00320500000000000086e3dc003305000000000000bb1bdd003405000000000000944add003505000000000000f453dd003605000000000000ad66dd003705000000000000298cdd00380500000000000060c4dd0039050000000000009cfcdd003a05000000000000fa05de003b05000000000000d734de003c05000000000000b56cde003d0500000000000045a4de003e05000000000000a1d2de003f05000000000000e4dbde0040050000000000002fe5de0041050000000000003c05df004205000000000000d81adf004305000000000000d636df0044050000000000002840df004505000000000000d252df004605000000000000cf6edf004705000000000000a9a6df004805000000000000eeafdf00490500000000000047b9df004a05000000000000b1dedf004b050000000000000de8df004c050000000000006e0de0004d05000000000000cb16e0004e05000000000000d84ee0004f050000000000007886e0005005000000000000b3bee0005105000000000000c3f6e0005205000000000000fe2ee10053050000000000002c67e1005405000000000000e679e1005505000000000000a68ce1005605000000000000629fe10057050000000000009bd7e10058050000000000005806e2005905000000000000b10fe2005a05000000000000e647e2005b050000000000001880e2005c050000000000007689e2005d050000000000004cb8e2005e050000000000007ef0e2005f05000000000000b228e3006005000000000000e760e30061050000000000002499e300620500000000000060d1e30063050000000000009c09e4006405000000000000d441e4006505000000000000334be40066050000000000000a7ae4006705000000000000e0a8e400680500000000000040b2e40069050000000000006feae4006a05000000000000a022e5006b05000000000000de5ae5006c050000000000001a93e5006d0500000000000055cbe5006e050000000000000bdee5006f050000000000008203e6007005000000000000db0ce6007105000000000000b53be6007205000000000000f073e60073050000000000004e7de60074050000000000002cace60075050000000000008cb5e60076050000000000006be4e6007705000000000000a51ce7007805000000000000dc54e7007905000000000000168de7007a050000000000004ac5e7007b0500000000000057fde7007c050000000000009335e8007d05000000000000d06de8007e050000000000002e77e8007f0500000000000004a6e80080050000000000003fdee80081050000000000007b16e9008205000000000000b74ee9008305000000000000e886e900840500000000000015bfe900850500000000000046f7e9008605000000000000602fea0087050000000000000442ea0088050000000000005a4bea0089050000000000006a67ea008a05000000000000889fea008b05000000000000daa8ea008c0500000000000079d7ea008d050000000000009f0feb008e050000000000005c22eb008f050000000000001c35eb009005000000000000d847eb0091050000000000000e80eb0092050000000000003eb8eb00930500000000000076f0eb009405000000000000ad28ec009505000000000000e660ec0096050000000000002399ec00970500000000000060d1ec0098050000000000009e09ed0099050000000000005e1ced009a05000000000000da41ed009b050000000000009654ed009c050000000000005567ed009d05000000000000127aed009e050000000000004ab2ed009f0500000000000082eaed00a005000000000000e1f3ed00a105000000000000bd22ee00a205000000000000fa5aee00a3050000000000003493ee00a405000000000000929cee00a50500000000000070cbee00a605000000000000ac03ef00a705000000000000eb3bef00a805000000000000fb73ef00a905000000000000feabef00aa05000000000000bebeef00ab0500000000000038e4ef00ac050000000000004e1cf000ad050000000000008854f000ae05000000000000958cf000af05000000000000c5c4f000b005000000000000fffcf000b1050000000000002e35f100b205000000000000de47f100b305000000000000466df100b4050000000000005da5f100b50500000000000094ddf100b605000000000000c115f200b705000000000000fa4df200b8050000000000002d86f200b90500000000000067bef200ba05000000000000a0f6f200bb05000000000000b52ef300bc050000000000003254f300bd05000000000000ef66f300be05000000000000239ff300bf0500000000000032d7f300c005000000000000dde9f300c1050000000000001e0ff400c2050000000000004f47f400c3050000000000008d7ff400c4050000000000006bb7f400c5050000000000009beff400c605000000000000c927f500c705000000000000ff5ff500c8050000000000003198f500c90500000000000063d0f500ca050000000000008908f600cb05000000000000c240f600cc050000000000001d66f600cd05000000000000ca78f600ce05000000000000fbb0f600cf0500000000000031e9f600d0050000000000006021f700d1050000000000009e59f700d205000000000000d891f700d3050000000000000acaf700d4050000000000004402f800d5050000000000007b3af800d605000000000000fa5ff800d705000000000000b672f800d805000000000000ebaaf800d90500000000000048b4f800da0500000000000024e3f800db05000000000000601bf900dc050000000000009753f900dd05000000000000ac8bf900de05000000000000e3c3f900df050000000000001cfcf900e0050000000000005934fa00e105000000000000936cfa00e205000000000000a7a4fa00e305000000000000dfdcfa00e4050000000000001a15fb00e5050000000000004d4dfb00e605000000000000a656fb00e7050000000000007b85fb00e805000000000000a2bdfb00e905000000000000dff5fb00ea050000000000005f1bfc00eb050000000000001e2efc00ec050000000000005266fc00ed050000000000000c79fc00ee05000000000000cc8bfc00ef050000000000002995fc00f005000000000000899efc00f105000000000000c1d6fc00f2050000000000007ee9fc00f3050000000000003dfcfc00f405000000000000f00efd00f5050000000000004c18fd00f6050000000000001a47fd00f7050000000000004a7ffd00f80500000000000086b7fd00f905000000000000beeffd00fa050000000000001ef9fd00fb05000000000000ee27fe00fc050000000000000944fe00fd050000000000002560fe00fe05000000000000307cfe00ff050000000000002798fe000006000000000000e2aafe00010600000000000042b4fe0002060000000000005dd0fe0003060000000000009a08ff000406000000000000ca40ff000506000000000000244aff000606000000000000f278ff0007060000000000002db1ff00080600000000000063e9ff000906000000000000712100010a06000000000000313400010b060000000000004c5000010c06000000000000ac5900010d06000000000000b49100010e06000000000000e3c900010f06000000000000f60101011006000000000000103a010111060000000000003056010112060000000000004c720101130600000000000084aa01011406000000000000c2e201011506000000000000fe1a02011606000000000000235302011706000000000000618b020118060000000000009dc3020119060000000000005ad602011a06000000000000badf02011b06000000000000d7fb02011c06000000000000370503011d06000000000000f71703011e06000000000000133403011f06000000000000516c03012006000000000000107f030121060000000000008da403012206000000000000cadc03012306000000000000f81404012406000000000000324d0401250600000000000070850401260600000000000080bd040127060000000000008bf504012806000000000000842d05012906000000000000d73605012a060000000000008b6505012b06000000000000c19d05012c06000000000000f9d505012d060000000000002e0e06012e06000000000000664606012f060000000000009d7e06013006000000000000d7b60601310600000000000011ef06013206000000000000442707013306000000000000725f07013406000000000000af9707013506000000000000e7cf070136060000000000001f0808013706000000000000372408013806000000000000544008013906000000000000917808013a06000000000000c8b008013b0600000000000001e908013c060000000000000f2109013d06000000000000085909013e06000000000000a99009013f06000000000000b5c809014006000000000000c5000a014106000000000000d2380a01420600000000000006710a014306000000000000f5a80a0144060000000000002be10a01450600000000000012190b01460600000000000048510b01470600000000000086890b014806000000000000e5920b014906000000000000c4c10b014a0600000000000000fa0b014b060000000000001d320c014c060000000000000b6a0c014d06000000000000c5980c014e060000000000001aa20c014f06000000000000d7d00c0150060000000000002dda0c01510600000000000069120d015206000000000000a44a0d015306000000000000df820d0154060000000000001dbb0d01550600000000000055f30d015606000000000000852b0e01570600000000000083630e015806000000000000c39b0e0159060000000000001ba50e015a060000000000007bae0e015b06000000000000f7d30e015c06000000000000afe60e015d06000000000000290c0f015e0600000000000065440f015f06000000000000db690f016006000000000000977c0f016106000000000000d2b40f016206000000000000ecec0f016306000000000000062510016406000000000000ea5c10016506000000000000f49410016606000000000000ffcc100167060000000000005ed610016806000000000000d6fb10016906000000000000340511016a06000000000000613d11016b060000000000008b7511016c06000000000000919111016d06000000000000abad11016e06000000000000e0e511016f060000000000001d1e120170060000000000005556120171060000000000006c8e120172060000000000008aaa12017306000000000000a3c612017406000000000000bdfe12017506000000000000f83613017606000000000000126f130177060000000000006c9413017806000000000000c99d1301790600000000000029a713017a060000000000005bdf13017b06000000000000b8e813017c0600000000000016f213017d060000000000008d1714017e06000000000000ec2014017f06000000000000a43314018006000000000000bc4f14018106000000000000d58714018206000000000000919a1401830600000000000005c0140184060000000000005fc914018506000000000000f8f714018606000000000000a10a15018706000000000000fa1315018806000000000000561d15018906000000000000fa2f15018a06000000000000513915018b06000000000000aa4215018c06000000000000106815018d060000000000002f8415018e060000000000004ba015018f060000000000002cbc15019006000000000000ccce1501910600000000000019d81501920600000000000076e115019306000000000000331016019406000000000000664816019506000000000000998016019606000000000000d5b81601970600000000000093cb16019806000000000000f3d4160199060000000000000ff116019a06000000000000cd0317019b06000000000000492917019c06000000000000a33217019d06000000000000444517019e060000000000003a6117019f06000000000000117d1701a0060000000000001c991701a10600000000000059d11701a2060000000000008c091801a306000000000000c2411801a4060000000000001e4b1801a50600000000000037671801a606000000000000f2791801a7060000000000001fb21801a806000000000000dec41801a90600000000000056ea1801aa0600000000000005fd1801ab0600000000000079221901ac06000000000000b25a1901ad06000000000000e5921901ae06000000000000f9ca1901af060000000000005df01901b00600000000000017031a01b1060000000000003a3b1a01b206000000000000e64d1a01b30600000000000044731a01b406000000000000a37c1a01b50600000000000078ab1a01b6060000000000006ee31a01b706000000000000921b1b01b806000000000000be531b01b9060000000000001d5d1b01ba06000000000000ec8b1b01bb0600000000000009c41b01bc06000000000000e5fb1b01bd06000000000000f1331c01be06000000000000ef6b1c01bf06000000000000a39a1c01c006000000000000fba31c01c106000000000000f2db1c01c206000000000000f8131d01c306000000000000df4b1d01c40600000000000075831d01c506000000000000aaa81d01c6060000000000003bbb1d01c7060000000000002fd71d01c80600000000000017f31d01c90600000000000067fc1d01ca06000000000000ad211e01cb06000000000000fb2a1e01cc0600000000000052341e01cd06000000000000da621e01ce06000000000000c87e1e01cf06000000000000b09a1e01d00600000000000089d21e01d1060000000000000fe51e01d2060000000000005fee1e01d3060000000000003b0a1f01d406000000000000f8411f01d50600000000000098541f01d606000000000000ac5d1f01d70600000000000094791f01d8060000000000006eb11f01d90600000000000038e91f01da060000000000000b212001db06000000000000e6582001dc06000000000000c8902001dd0600000000000062a32001de060000000000007ac82001df060000000000001cdb2001e0060000000000005d002101e10600000000000021382101e206000000000000f76f2101e3060000000000003d792101e406000000000000cea72101e50600000000000095df2101e6060000000000006e172201e706000000000000334f2201e80600000000000085582201e90600000000000010872201ea06000000000000eea22201eb06000000000000cbbe2201ec06000000000000a9da2201ed060000000000009ef62201ee060000000000003d092301ef06000000000000782e2301f0060000000000000c412301f1060000000000005e4a2301f20600000000000045662301f3060000000000003b822301f406000000000000299e2301f506000000000000fed52301f606000000000000990d2401f7060000000000002c202401f806000000000000173c2401f90600000000000063452401fa06000000000000fd572401fb060000000000002a7d2401fc0600000000000000b52401fd06000000000000b8ec2401fe0600000000000037242501ff06000000000000155c25010007000000000000e69325010107000000000000a6cb25010207000000000000630326010307000000000000b30c260104070000000000000916260105070000000000005b1f26010607000000000000523b260107070000000000004857260108070000000000002d732601090700000000000018ab26010a07000000000000fdc626010b07000000000000ede226010c070000000000008d1127010d07000000000000e31a27010e07000000000000cc5227010f07000000000000ac8a270110070000000000004b9d2701110700000000000090c22701120700000000000087fa27011307000000000000583228011407000000000000fe6928011507000000000000557328011607000000000000f4a128011707000000000000ced9280118070000000000007d1129011907000000000000414929011a070000000000001a8129011b07000000000000deb829011c07000000000000bff029011d07000000000000a8282a01" }, "name": "Polkadot", "properties": { diff --git a/artifacts/polkadot_metadata_full.scale b/artifacts/polkadot_metadata_full.scale index 27dd4fac619979b55468631f95934b23d2288f46..4eebe8da6e7d4b044d31ceb30a0242944f7a6f65 100644 GIT binary patch delta 27693 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 DV-{?B diff --git a/artifacts/polkadot_metadata_tiny.scale b/artifacts/polkadot_metadata_tiny.scale index 8de6b32b05cbb44bcb1f5bc8e6f296ff2e6dc079..bd9195401d5bc52b8de6c69a8c6e513784ab7eb9 100644 GIT binary patch delta 3181 zcmZt|4@}cn`hD-$N?Tf>(n2Y6wpc8cf}nsD0YN~hQvQrThAHt1t+Q$=(Bhx$*p2MG zotK&6zVmKgWXduVm#H_dGtp#bb31c$>Qe4zGB0`?cbaK-<|J_mCYs#$enoNHHSK$^ z-@o_$|K8~n{MZTpzDp&Yf)t!wm5zrJ^K&l%W0IAL&w0=;3J+}Q3k~@V{ytyWYib?t z-5Ka(Ou>GKUX=~b;jdNssc%BDj4m&Kg1?5JCVF(!LR7UZ>Ly^8c5(7MVA(WWw%Sr! z+{4&)zzy2m>=V%F_pK-?DRPyUw+CM6_eO??{EXcuW`*k5Nj3$zO_!@Yrf7$gct}^U z_`8Vv&VBX?_s>533HLmNUBzjgOZos@ z_)=0KdXfs@WBf(ZMz}=qbo?%M|TlP6i_$OSY8#z+ew2f7HnS$dG>ITH7y-9)n}66m-K1;wj?Y5vEI(_N%+>nLW51wF5>(MOkMuIiVm{zdkG5`u1t`KkUq}0WZ$CAR-G9bLCP;`JEK$X%Q z>Zg#il=e{2uV8u#9(|R>QOEBJt4#PoYCZt|E7cA<)EM%}y`_d6$iU5pb<#yiixbr* zJZ~^_mqI3=F%-ZoT8;HaD?nM7cW1!ojf95W{XYL5#xgK}VJ80Gm??EC;+a35rp7Og zwP_B3;#zONPmuc?z2R+)bw5MmNh_7wp8mHjBAu%10^xz-h(FvB2>RQ1h9V47b_Du; zMR+qU7p%A--Lh~DobxL97@Jb!t12s&s*{TUUqsmfktp<|&uyhBgG#WmX*%&5U^kVx zOP$N>0gtM)`E@0Js;=j5K()rhuPG6l4Y*Td?mjY~QQ!imh1|YSFc^pgDQF&m#@eU< zDw>Cbz5byp2C9JX2&mjX2Db2%N^}9tOJeM5{D%7)OU93GP=R4w0(ICOvtAj%llv)s|yQK&xyOqfi`wV zNTgmjiKB&Ca0-tWw!(S5U+BYAMN4pZQ7Lt<(?wo*g!&a0c}>UlD@x%aj;<(B9~6EX z0XBtyT9tuQD|)n7WyyMO4dxZ@=80NUS-A$E6otY8!PQFjf!GBKfVC( zS7+e5;xqyX@?FJG8p`!}*?v-NBaUy2FU!>^ixqd>Dme-F@qFzPJX2Z(4*a&X7Ou-$ z)UE1OUlUeUa(0g(9q_#j&nhdVYHu#v3^Vv%nLY8btf`v<{}BIKX6M)9_bqmHF3JLE zeOklwX&$DgqQf!QQa-*w?h!H9^L!$HtSe8G)Vg>V87{A;oAj&maJqcCe0pA9Gj){0 zN*$>d;7p$=XWQx3o62>G1RCVbNGOFWHcUuCw3joTPGMQwG357qyaOu528b!TfY1sy zB5GR~?^K&Avf%;#a&9#i5^6uiMWM37KF;>Zsm$4^4Dxd73?l+`kh6RR?GBnd6`3ei zPU0I?X8fYk$#ddz4OM|OE0HL)$EjEzuq;9TE~yzupRBTz-@mNdtqd+N9US(7mb2RJX+nLwhGHHk|u&MJ)aXHWfS#p9&h`CGKX*( z*ihr33L30=6ZS?mYnK3IVL`3kZq+?I31)vX2xjFuP$G-?L#<6tnbNt$G1X<*u7E8* zNGik(c8CCIwGOz+S&j(7G-n6nX%Vcm^F#6D={h^rr%2ZS);&`17lUht{5%Iq!K`(8 zkdN+l_973NC&Dns+`>?hSbgFT1NziAN)p3raAMtd5Pd)0#7dqhqmx*XP)0AYO5Oah z+0>9ruZ&+c*r5hbHsnZcbGVkqBz)LVm^?V=ZDCl?Q=HGxE##_V4vBRNsreGS8;{%9 zjoH-WxZAD?$RyfX=Eq{UUGhBTPQq8*pTQtDt$&X~Ji9(yF3L1qv0*?Oe1_`t4P_L3 zsi~gA$35lLM8ERbVdRbG zN@|o<&34$2TbnNq%pobsR@p%F+)Dp?f8ET=3_#Y8v!d5Hr*a2Mj z!U#3d6E95gS!1+mTRrG&@Mz#2a&X=DPXx~nGlwzE4!#Q|(JR51=|=Q~+Tj+y z9U4%KfMOQCJ5$jyP)>E^AJ_qR@NWYna0Ocj|H?ZdY8vu#ek2fWe)*4pmf!4;zO`#B zWDdgSUVk{UWk-K#cmI~&ouR%RTl(c!!y=ASe|oROO%iae9)oLe<_0McSU2jYYGu z8_SV_kLGlnn=G0^)Kk)F?h?I|9c-G@OgCNhGEdpgMa{CE7tMNin(TSM;=k=in(upf z-skzf@AL2Xeuu{RyJP%hsZu=wj49HX_&bhoD^p+?$CMU64w$dk;a`=8ioHFD&k z%gP#qo3?p77&|L`9J0^*pq}UNd9B0O>(R+pmS*pkZg(Kq>tRe{KgZ>o41OvCHls@^ zI0TimU@zER6L?(4yF#L*9J8=XB=BSGf^f}(lek`=&Zi?dd-Qhr4NmLp6qBGtyFL-K zl1%gVKi?S+Gc{y&_`15hfi6#X;62=!WK7==N>?WXi~s2X55sd8#*WNlok%h#zl@~> z-DYpEKX3-`Cgp;7W-8bW;AEl!!*OvqRhbG;a3UrV&8jkuiULto%E3f&+@eZNxCrJ~ zgC$GM#f9yR0axQ_qaKf{=E7wh)+EJf$U#z`zskNOjO?iMQZrn|TQPa5*TIn0W-~Wu zGcfo)9lq|)=NhKxxGttX)+jsQzRI*5Z>h4PZa?$>?0>wUYuF>eLybweJT_hN7bwN^ zvHAE;Y#!Xj-^H%w4T=^hpw_uP=zY`I;SP9x-Q~45bNy1r(m4KDZGk#Gp)P|W zystLLy%eM!H*2!x@X|^jL#@BJps2`RT2}VF=D>7L(Nq%qrjDSX4l3mQcDdp(A+8bL zM|a!?xQQRc8DeiJ7>i~aV0R)m;kbFmZ{CH0geTPtac#Vnt0deNzgROLz|iLDC~u)K zw3v{Xf}h44_RmKeQ69heDBBOLRSGC^t^oS%$QVZAtlnM2|ZW;oX(Cq8-NX$+RO~15=OS0C;qa>VIY`~S;Tu8${trc?d zkT!?%c~P55MfpOz0%p*zHR77NDZDje{MOt&ZUj6%*Qs{^l(f0Gc{|+!U$3jX)6>UT z5k*uC+wojtI(ieUbS{9xDtC9MF!I#8{aYCe(&D$FOEy`eOPN;(P+9Hu_XGnTe~Y)v z)4a_WV36>Jx4W|mdv#ghz@O>NE2qHre6vo*G|`MjaW*NsT`6~aDQP5SJE&O^N!$(0 z9xbV>d^+orQ3m=JHNXMV48T5g z=I7Zb$Xg`K!j21^2f)VFl6iScug6p8?ompspdF+(T9#;5X}2SIIKL52;iLRcngxOU zU3)Q1%F;FaGCm(rUtkum;(|Iji$5sHQyma_+YRgjo?L9is|D@qX?a&I*K;D9jfD$j z>YBmtzhb4)5=K+6m>`U|=>HoSU1;T_bL1ASElehc+gMm=_&;;@Nbb|=LJN7{FZ|eO z1gM>D7n+DFU*~M|U6XhDd(knj1^j1K2A(dqgA4B#SHTr|$+>uw>XOJv1!s3i(}E`! zoA6sD`7{s>B^%%#9xJh`AIWjJL{mJ#PfM)uK;A#Kv=u6_amQra{kMu z>-oWmSY4LHK_f>MD02|1c1aG-lr55__3|@CF!B>|2rp;GNYlN$eW?{p`<=S zQ=|u0D!j%yPE@4e_);q+{L0cDs$8L+;MBlP%RU1w7FSxiJyy=lj>`CChv>g4ieX@u z@Y;wm??i6BQQhjhYvElltbrd6Q}^c(WpcvZu=Ov~@nIN{oo*84tk{;ofrjb`tebt6gxDv-zSz zGn~F{1d(p8w!(xg{kq!9$0OIr-Rj3NN9ao74>%irs!G756*-WJ%U4(nS}9Udnkm*K zVg?1Pi+#D?&vF$-ILsAGS63RISy7wU1hBe!8}Y8UdrQOS&7STK&nhBTO3KqSY7{J6 zoKdSF@*Y`j#Epq6Y^litJNDODsUMHjWa9AZEc~J-UlW`yg^041tgYBq+m_fQu$19! zI+sAoRnSm0Ei>Zv+H|7EuWPNbZrMUjscc7^%L-1}_dBlh#C+8&kJ2umuS^&BO5&;? z5!$yFuPCts~{$`e(q@(5^`f;njQSEMVfv&P&LV zbyh`iR=3w^IGv>(3Ccni_1xt2Ol8hk=HY zUob#7tG{AT=Y#lgmfPY8bwv_zzUgZSMd8 diff --git a/testing/integration-tests/src/full_client/codegen/polkadot.rs b/testing/integration-tests/src/full_client/codegen/polkadot.rs index 03502244c3..1e484889ed 100644 --- a/testing/integration-tests/src/full_client/codegen/polkadot.rs +++ b/testing/integration-tests/src/full_client/codegen/polkadot.rs @@ -16,9 +16,6 @@ pub mod api { "Authorship", "Offences", "Historical", - "Beefy", - "Mmr", - "MmrLeaf", "Session", "Grandpa", "AuthorityDiscovery", @@ -67,6 +64,9 @@ pub mod api { "Crowdloan", "Coretime", "XcmPallet", + "Beefy", + "Mmr", + "MmrLeaf", "IdentityMigrator", "ParasSudoWrapper", "AssignedSlots", @@ -3560,9 +3560,6 @@ pub mod api { pub fn transaction_payment(&self) -> transaction_payment::constants::ConstantsApi { transaction_payment::constants::ConstantsApi } - pub fn beefy(&self) -> beefy::constants::ConstantsApi { - beefy::constants::ConstantsApi - } pub fn grandpa(&self) -> grandpa::constants::ConstantsApi { grandpa::constants::ConstantsApi } @@ -3645,6 +3642,9 @@ pub mod api { pub fn coretime(&self) -> coretime::constants::ConstantsApi { coretime::constants::ConstantsApi } + pub fn beefy(&self) -> beefy::constants::ConstantsApi { + beefy::constants::ConstantsApi + } pub fn assigned_slots(&self) -> assigned_slots::constants::ConstantsApi { assigned_slots::constants::ConstantsApi } @@ -3681,15 +3681,6 @@ pub mod api { pub fn historical(&self) -> historical::storage::StorageApi { historical::storage::StorageApi } - pub fn beefy(&self) -> beefy::storage::StorageApi { - beefy::storage::StorageApi - } - pub fn mmr(&self) -> mmr::storage::StorageApi { - mmr::storage::StorageApi - } - pub fn mmr_leaf(&self) -> mmr_leaf::storage::StorageApi { - mmr_leaf::storage::StorageApi - } pub fn session(&self) -> session::storage::StorageApi { session::storage::StorageApi } @@ -3823,6 +3814,15 @@ pub mod api { pub fn xcm_pallet(&self) -> xcm_pallet::storage::StorageApi { xcm_pallet::storage::StorageApi } + pub fn beefy(&self) -> beefy::storage::StorageApi { + beefy::storage::StorageApi + } + pub fn mmr(&self) -> mmr::storage::StorageApi { + mmr::storage::StorageApi + } + pub fn mmr_leaf(&self) -> mmr_leaf::storage::StorageApi { + mmr_leaf::storage::StorageApi + } pub fn assigned_slots(&self) -> assigned_slots::storage::StorageApi { assigned_slots::storage::StorageApi } @@ -3853,9 +3853,6 @@ pub mod api { pub fn balances(&self) -> balances::calls::TransactionApi { balances::calls::TransactionApi } - pub fn beefy(&self) -> beefy::calls::TransactionApi { - beefy::calls::TransactionApi - } pub fn session(&self) -> session::calls::TransactionApi { session::calls::TransactionApi } @@ -3978,6 +3975,9 @@ pub mod api { pub fn xcm_pallet(&self) -> xcm_pallet::calls::TransactionApi { xcm_pallet::calls::TransactionApi } + pub fn beefy(&self) -> beefy::calls::TransactionApi { + beefy::calls::TransactionApi + } pub fn identity_migrator(&self) -> identity_migrator::calls::TransactionApi { identity_migrator::calls::TransactionApi } @@ -4009,9 +4009,9 @@ pub mod api { .hash(); runtime_metadata_hash == [ - 159u8, 248u8, 20u8, 74u8, 93u8, 145u8, 235u8, 204u8, 107u8, 155u8, 56u8, 127u8, - 31u8, 147u8, 245u8, 22u8, 198u8, 239u8, 90u8, 246u8, 169u8, 84u8, 180u8, 252u8, - 22u8, 163u8, 134u8, 37u8, 147u8, 44u8, 109u8, 13u8, + 95u8, 47u8, 93u8, 137u8, 187u8, 229u8, 88u8, 229u8, 191u8, 198u8, 96u8, 199u8, + 211u8, 80u8, 51u8, 45u8, 229u8, 219u8, 112u8, 171u8, 41u8, 151u8, 124u8, 61u8, + 12u8, 50u8, 57u8, 5u8, 196u8, 180u8, 42u8, 140u8, ] } pub mod system { @@ -5001,10 +5001,10 @@ pub mod api { "Events", vec![], [ - 250u8, 105u8, 172u8, 217u8, 228u8, 110u8, 176u8, 187u8, 176u8, 96u8, - 251u8, 246u8, 10u8, 91u8, 10u8, 130u8, 149u8, 248u8, 60u8, 2u8, 95u8, - 25u8, 249u8, 73u8, 160u8, 204u8, 142u8, 109u8, 77u8, 204u8, 159u8, - 218u8, + 45u8, 244u8, 178u8, 49u8, 95u8, 31u8, 121u8, 90u8, 24u8, 201u8, 101u8, + 147u8, 242u8, 227u8, 121u8, 238u8, 126u8, 20u8, 227u8, 97u8, 123u8, + 195u8, 229u8, 245u8, 27u8, 158u8, 50u8, 231u8, 219u8, 54u8, 168u8, + 30u8, ], ) } @@ -6771,6 +6771,31 @@ pub mod api { const PALLET: &'static str = "Balances"; const CALL: &'static str = "force_set_balance"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::force_adjust_total_issuance`]."] + pub struct ForceAdjustTotalIssuance { + pub direction: force_adjust_total_issuance::Direction, + #[codec(compact)] + pub delta: force_adjust_total_issuance::Delta, + } + pub mod force_adjust_total_issuance { + use super::runtime_types; + pub type Direction = runtime_types::pallet_balances::types::AdjustmentDirection; + pub type Delta = ::core::primitive::u128; + } + impl ::subxt::blocks::StaticExtrinsic for ForceAdjustTotalIssuance { + const PALLET: &'static str = "Balances"; + const CALL: &'static str = "force_adjust_total_issuance"; + } } pub struct TransactionApi; impl TransactionApi { @@ -6899,6 +6924,24 @@ pub mod api { ], ) } + #[doc = "See [`Pallet::force_adjust_total_issuance`]."] + pub fn force_adjust_total_issuance( + &self, + direction: types::force_adjust_total_issuance::Direction, + delta: types::force_adjust_total_issuance::Delta, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Balances", + "force_adjust_total_issuance", + types::ForceAdjustTotalIssuance { direction, delta }, + [ + 208u8, 134u8, 56u8, 133u8, 232u8, 164u8, 10u8, 213u8, 53u8, 193u8, + 190u8, 63u8, 236u8, 186u8, 96u8, 122u8, 104u8, 87u8, 173u8, 38u8, 58u8, + 176u8, 21u8, 78u8, 42u8, 106u8, 46u8, 248u8, 251u8, 190u8, 150u8, + 202u8, + ], + ) + } } } #[doc = "The `Event` enum of this pallet"] @@ -7412,6 +7455,30 @@ pub mod api { const PALLET: &'static str = "Balances"; const EVENT: &'static str = "Thawed"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `TotalIssuance` was forcefully changed."] + pub struct TotalIssuanceForced { + pub old: total_issuance_forced::Old, + pub new: total_issuance_forced::New, + } + pub mod total_issuance_forced { + use super::runtime_types; + pub type Old = ::core::primitive::u128; + pub type New = ::core::primitive::u128; + } + impl ::subxt::events::StaticEvent for TotalIssuanceForced { + const PALLET: &'static str = "Balances"; + const EVENT: &'static str = "TotalIssuanceForced"; + } } pub mod storage { use super::runtime_types; @@ -7846,19 +7913,6 @@ pub mod api { ], ) } - #[doc = " The maximum number of holds that can exist on an account at any time."] - pub fn max_holds(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "Balances", - "MaxHolds", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } #[doc = " The maximum number of individual freeze locks that can exist on an account at any time."] pub fn max_freezes(&self) -> ::subxt::constants::Address<::core::primitive::u32> { ::subxt::constants::Address::new_static( @@ -8320,598 +8374,6 @@ pub mod api { } } } - pub mod beefy { - use super::root_mod; - use super::runtime_types; - #[doc = "The `Error` enum of this pallet."] - pub type Error = runtime_types::pallet_beefy::pallet::Error; - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub type Call = runtime_types::pallet_beefy::pallet::Call; - pub mod calls { - use super::root_mod; - use super::runtime_types; - type DispatchError = runtime_types::sp_runtime::DispatchError; - pub mod types { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::report_equivocation`]."] - pub struct ReportEquivocation { - pub equivocation_proof: - ::std::boxed::Box, - pub key_owner_proof: report_equivocation::KeyOwnerProof, - } - pub mod report_equivocation { - use super::runtime_types; - pub type EquivocationProof = - runtime_types::sp_consensus_beefy::EquivocationProof< - ::core::primitive::u32, - runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, - runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, - >; - pub type KeyOwnerProof = runtime_types::sp_session::MembershipProof; - } - impl ::subxt::blocks::StaticExtrinsic for ReportEquivocation { - const PALLET: &'static str = "Beefy"; - const CALL: &'static str = "report_equivocation"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::report_equivocation_unsigned`]."] - pub struct ReportEquivocationUnsigned { - pub equivocation_proof: - ::std::boxed::Box, - pub key_owner_proof: report_equivocation_unsigned::KeyOwnerProof, - } - pub mod report_equivocation_unsigned { - use super::runtime_types; - pub type EquivocationProof = - runtime_types::sp_consensus_beefy::EquivocationProof< - ::core::primitive::u32, - runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, - runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, - >; - pub type KeyOwnerProof = runtime_types::sp_session::MembershipProof; - } - impl ::subxt::blocks::StaticExtrinsic for ReportEquivocationUnsigned { - const PALLET: &'static str = "Beefy"; - const CALL: &'static str = "report_equivocation_unsigned"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_new_genesis`]."] - pub struct SetNewGenesis { - pub delay_in_blocks: set_new_genesis::DelayInBlocks, - } - pub mod set_new_genesis { - use super::runtime_types; - pub type DelayInBlocks = ::core::primitive::u32; - } - impl ::subxt::blocks::StaticExtrinsic for SetNewGenesis { - const PALLET: &'static str = "Beefy"; - const CALL: &'static str = "set_new_genesis"; - } - } - pub struct TransactionApi; - impl TransactionApi { - #[doc = "See [`Pallet::report_equivocation`]."] - pub fn report_equivocation( - &self, - equivocation_proof: types::report_equivocation::EquivocationProof, - key_owner_proof: types::report_equivocation::KeyOwnerProof, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Beefy", - "report_equivocation", - types::ReportEquivocation { - equivocation_proof: ::std::boxed::Box::new(equivocation_proof), - key_owner_proof, - }, - [ - 156u8, 32u8, 92u8, 179u8, 165u8, 93u8, 216u8, 130u8, 121u8, 225u8, - 33u8, 141u8, 255u8, 12u8, 101u8, 136u8, 177u8, 25u8, 23u8, 239u8, 12u8, - 142u8, 88u8, 228u8, 85u8, 171u8, 218u8, 185u8, 146u8, 245u8, 149u8, - 85u8, - ], - ) - } - #[doc = "See [`Pallet::report_equivocation_unsigned`]."] - pub fn report_equivocation_unsigned( - &self, - equivocation_proof: types::report_equivocation_unsigned::EquivocationProof, - key_owner_proof: types::report_equivocation_unsigned::KeyOwnerProof, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Beefy", - "report_equivocation_unsigned", - types::ReportEquivocationUnsigned { - equivocation_proof: ::std::boxed::Box::new(equivocation_proof), - key_owner_proof, - }, - [ - 126u8, 201u8, 236u8, 234u8, 107u8, 52u8, 37u8, 115u8, 228u8, 232u8, - 103u8, 193u8, 143u8, 224u8, 79u8, 192u8, 207u8, 204u8, 161u8, 103u8, - 210u8, 131u8, 64u8, 251u8, 48u8, 196u8, 249u8, 148u8, 2u8, 179u8, - 135u8, 121u8, - ], - ) - } - #[doc = "See [`Pallet::set_new_genesis`]."] - pub fn set_new_genesis( - &self, - delay_in_blocks: types::set_new_genesis::DelayInBlocks, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Beefy", - "set_new_genesis", - types::SetNewGenesis { delay_in_blocks }, - [ - 147u8, 6u8, 252u8, 43u8, 77u8, 91u8, 170u8, 45u8, 112u8, 155u8, 158u8, - 79u8, 1u8, 116u8, 162u8, 146u8, 181u8, 9u8, 171u8, 48u8, 198u8, 210u8, - 243u8, 64u8, 229u8, 35u8, 28u8, 177u8, 144u8, 22u8, 165u8, 163u8, - ], - ) - } - } - } - pub mod storage { - use super::runtime_types; - pub mod types { - use super::runtime_types; - pub mod authorities { - use super::runtime_types; - pub type Authorities = - runtime_types::bounded_collections::bounded_vec::BoundedVec< - runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, - >; - } - pub mod validator_set_id { - use super::runtime_types; - pub type ValidatorSetId = ::core::primitive::u64; - } - pub mod next_authorities { - use super::runtime_types; - pub type NextAuthorities = - runtime_types::bounded_collections::bounded_vec::BoundedVec< - runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, - >; - } - pub mod set_id_session { - use super::runtime_types; - pub type SetIdSession = ::core::primitive::u32; - pub type Param0 = ::core::primitive::u64; - } - pub mod genesis_block { - use super::runtime_types; - pub type GenesisBlock = ::core::option::Option<::core::primitive::u32>; - } - } - pub struct StorageApi; - impl StorageApi { - #[doc = " The current authorities set"] - pub fn authorities( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - types::authorities::Authorities, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Beefy", - "Authorities", - vec![], - [ - 53u8, 171u8, 94u8, 33u8, 46u8, 83u8, 105u8, 120u8, 123u8, 201u8, 141u8, - 71u8, 131u8, 150u8, 51u8, 121u8, 67u8, 45u8, 249u8, 146u8, 85u8, 113u8, - 23u8, 59u8, 59u8, 41u8, 0u8, 226u8, 98u8, 166u8, 253u8, 59u8, - ], - ) - } - #[doc = " The current validator set id"] - pub fn validator_set_id( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - types::validator_set_id::ValidatorSetId, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Beefy", - "ValidatorSetId", - vec![], - [ - 168u8, 84u8, 23u8, 134u8, 153u8, 30u8, 183u8, 176u8, 206u8, 100u8, - 109u8, 86u8, 109u8, 126u8, 146u8, 175u8, 173u8, 1u8, 253u8, 42u8, - 122u8, 207u8, 71u8, 4u8, 145u8, 83u8, 148u8, 29u8, 243u8, 52u8, 29u8, - 78u8, - ], - ) - } - #[doc = " Authorities set scheduled to be used with the next session"] - pub fn next_authorities( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - types::next_authorities::NextAuthorities, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Beefy", - "NextAuthorities", - vec![], - [ - 87u8, 180u8, 0u8, 85u8, 209u8, 13u8, 131u8, 103u8, 8u8, 226u8, 42u8, - 72u8, 38u8, 47u8, 190u8, 78u8, 62u8, 4u8, 161u8, 130u8, 87u8, 196u8, - 13u8, 209u8, 205u8, 98u8, 104u8, 91u8, 3u8, 47u8, 82u8, 11u8, - ], - ) - } - #[doc = " A mapping from BEEFY set ID to the index of the *most recent* session for which its"] - #[doc = " members were responsible."] - #[doc = ""] - #[doc = " This is only used for validating equivocation proofs. An equivocation proof must"] - #[doc = " contains a key-ownership proof for a given session, therefore we need a way to tie"] - #[doc = " together sessions and BEEFY set ids, i.e. we need to validate that a validator"] - #[doc = " was the owner of a given key on a given session, and what the active set ID was"] - #[doc = " during that session."] - #[doc = ""] - #[doc = " TWOX-NOTE: `ValidatorSetId` is not under user control."] - pub fn set_id_session_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - types::set_id_session::SetIdSession, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Beefy", - "SetIdSession", - vec![], - [ - 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, - 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, - 238u8, 18u8, 209u8, 203u8, 38u8, 148u8, 16u8, 105u8, 72u8, 169u8, - ], - ) - } - #[doc = " A mapping from BEEFY set ID to the index of the *most recent* session for which its"] - #[doc = " members were responsible."] - #[doc = ""] - #[doc = " This is only used for validating equivocation proofs. An equivocation proof must"] - #[doc = " contains a key-ownership proof for a given session, therefore we need a way to tie"] - #[doc = " together sessions and BEEFY set ids, i.e. we need to validate that a validator"] - #[doc = " was the owner of a given key on a given session, and what the active set ID was"] - #[doc = " during that session."] - #[doc = ""] - #[doc = " TWOX-NOTE: `ValidatorSetId` is not under user control."] - pub fn set_id_session( - &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - types::set_id_session::SetIdSession, - ::subxt::storage::address::Yes, - (), - (), - > { - ::subxt::storage::address::Address::new_static( - "Beefy", - "SetIdSession", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], - [ - 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, - 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, - 238u8, 18u8, 209u8, 203u8, 38u8, 148u8, 16u8, 105u8, 72u8, 169u8, - ], - ) - } - #[doc = " Block number where BEEFY consensus is enabled/started."] - #[doc = " By changing this (through privileged `set_new_genesis()`), BEEFY consensus is effectively"] - #[doc = " restarted from the newly set block number."] - pub fn genesis_block( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - types::genesis_block::GenesisBlock, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Beefy", - "GenesisBlock", - vec![], - [ - 198u8, 155u8, 11u8, 240u8, 189u8, 245u8, 159u8, 127u8, 55u8, 33u8, - 48u8, 29u8, 209u8, 119u8, 163u8, 24u8, 28u8, 22u8, 163u8, 163u8, 124u8, - 88u8, 126u8, 4u8, 193u8, 158u8, 29u8, 243u8, 212u8, 4u8, 41u8, 22u8, - ], - ) - } - } - } - pub mod constants { - use super::runtime_types; - pub struct ConstantsApi; - impl ConstantsApi { - #[doc = " The maximum number of authorities that can be added."] - pub fn max_authorities( - &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "Beefy", - "MaxAuthorities", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } - #[doc = " The maximum number of nominators for each validator."] - pub fn max_nominators( - &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "Beefy", - "MaxNominators", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } - #[doc = " The maximum number of entries to keep in the set id to session index mapping."] - #[doc = ""] - #[doc = " Since the `SetIdSession` map is only used for validating equivocations this"] - #[doc = " value should relate to the bonding duration of whatever staking system is"] - #[doc = " being used (if any). If equivocation handling is not enabled then this value"] - #[doc = " can be zero."] - pub fn max_set_id_session_entries( - &self, - ) -> ::subxt::constants::Address<::core::primitive::u64> { - ::subxt::constants::Address::new_static( - "Beefy", - "MaxSetIdSessionEntries", - [ - 128u8, 214u8, 205u8, 242u8, 181u8, 142u8, 124u8, 231u8, 190u8, 146u8, - 59u8, 226u8, 157u8, 101u8, 103u8, 117u8, 249u8, 65u8, 18u8, 191u8, - 103u8, 119u8, 53u8, 85u8, 81u8, 96u8, 220u8, 42u8, 184u8, 239u8, 42u8, - 246u8, - ], - ) - } - } - } - } - pub mod mmr { - use super::root_mod; - use super::runtime_types; - pub mod storage { - use super::runtime_types; - pub mod types { - use super::runtime_types; - pub mod root_hash { - use super::runtime_types; - pub type RootHash = ::subxt::utils::H256; - } - pub mod number_of_leaves { - use super::runtime_types; - pub type NumberOfLeaves = ::core::primitive::u64; - } - pub mod nodes { - use super::runtime_types; - pub type Nodes = ::subxt::utils::H256; - pub type Param0 = ::core::primitive::u64; - } - } - pub struct StorageApi; - impl StorageApi { - #[doc = " Latest MMR Root hash."] - pub fn root_hash( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - types::root_hash::RootHash, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Mmr", - "RootHash", - vec![], - [ - 111u8, 206u8, 173u8, 92u8, 67u8, 49u8, 150u8, 113u8, 90u8, 245u8, 38u8, - 254u8, 76u8, 250u8, 167u8, 66u8, 130u8, 129u8, 251u8, 220u8, 172u8, - 229u8, 162u8, 251u8, 36u8, 227u8, 43u8, 189u8, 7u8, 106u8, 23u8, 13u8, - ], - ) - } - #[doc = " Current size of the MMR (number of leaves)."] - pub fn number_of_leaves( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - types::number_of_leaves::NumberOfLeaves, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Mmr", - "NumberOfLeaves", - vec![], - [ - 123u8, 58u8, 149u8, 174u8, 85u8, 45u8, 20u8, 115u8, 241u8, 0u8, 51u8, - 174u8, 234u8, 60u8, 230u8, 59u8, 237u8, 144u8, 170u8, 32u8, 4u8, 0u8, - 34u8, 163u8, 238u8, 205u8, 93u8, 208u8, 53u8, 38u8, 141u8, 195u8, - ], - ) - } - #[doc = " Hashes of the nodes in the MMR."] - #[doc = ""] - #[doc = " Note this collection only contains MMR peaks, the inner nodes (and leaves)"] - #[doc = " are pruned and only stored in the Offchain DB."] - pub fn nodes_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - types::nodes::Nodes, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Mmr", - "Nodes", - vec![], - [ - 27u8, 84u8, 41u8, 195u8, 146u8, 81u8, 211u8, 189u8, 63u8, 125u8, 173u8, - 206u8, 69u8, 198u8, 202u8, 213u8, 89u8, 31u8, 89u8, 177u8, 76u8, 154u8, - 249u8, 197u8, 133u8, 78u8, 142u8, 71u8, 183u8, 3u8, 132u8, 25u8, - ], - ) - } - #[doc = " Hashes of the nodes in the MMR."] - #[doc = ""] - #[doc = " Note this collection only contains MMR peaks, the inner nodes (and leaves)"] - #[doc = " are pruned and only stored in the Offchain DB."] - pub fn nodes( - &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - types::nodes::Nodes, - ::subxt::storage::address::Yes, - (), - (), - > { - ::subxt::storage::address::Address::new_static( - "Mmr", - "Nodes", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], - [ - 27u8, 84u8, 41u8, 195u8, 146u8, 81u8, 211u8, 189u8, 63u8, 125u8, 173u8, - 206u8, 69u8, 198u8, 202u8, 213u8, 89u8, 31u8, 89u8, 177u8, 76u8, 154u8, - 249u8, 197u8, 133u8, 78u8, 142u8, 71u8, 183u8, 3u8, 132u8, 25u8, - ], - ) - } - } - } - } - pub mod mmr_leaf { - use super::root_mod; - use super::runtime_types; - pub mod storage { - use super::runtime_types; - pub mod types { - use super::runtime_types; - pub mod beefy_authorities { - use super::runtime_types; - pub type BeefyAuthorities = - runtime_types::sp_consensus_beefy::mmr::BeefyAuthoritySet< - ::subxt::utils::H256, - >; - } - pub mod beefy_next_authorities { - use super::runtime_types; - pub type BeefyNextAuthorities = - runtime_types::sp_consensus_beefy::mmr::BeefyAuthoritySet< - ::subxt::utils::H256, - >; - } - } - pub struct StorageApi; - impl StorageApi { - #[doc = " Details of current BEEFY authority set."] - pub fn beefy_authorities( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - types::beefy_authorities::BeefyAuthorities, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "MmrLeaf", - "BeefyAuthorities", - vec![], - [ - 128u8, 35u8, 176u8, 79u8, 224u8, 58u8, 214u8, 234u8, 231u8, 71u8, - 227u8, 153u8, 180u8, 189u8, 66u8, 44u8, 47u8, 174u8, 0u8, 83u8, 121u8, - 182u8, 226u8, 44u8, 224u8, 173u8, 237u8, 102u8, 231u8, 146u8, 110u8, - 7u8, - ], - ) - } - #[doc = " Details of next BEEFY authority set."] - #[doc = ""] - #[doc = " This storage entry is used as cache for calls to `update_beefy_next_authority_set`."] - pub fn beefy_next_authorities( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - types::beefy_next_authorities::BeefyNextAuthorities, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "MmrLeaf", - "BeefyNextAuthorities", - vec![], - [ - 97u8, 71u8, 52u8, 111u8, 120u8, 251u8, 183u8, 155u8, 177u8, 100u8, - 236u8, 142u8, 204u8, 117u8, 95u8, 40u8, 201u8, 36u8, 32u8, 82u8, 38u8, - 234u8, 135u8, 39u8, 224u8, 69u8, 94u8, 85u8, 12u8, 89u8, 97u8, 218u8, - ], - ) - } - } - } - } pub mod session { use super::root_mod; use super::runtime_types; @@ -12811,6 +12273,30 @@ pub mod api { const PALLET: &'static str = "FellowshipCollective"; const CALL: &'static str = "cleanup_poll"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::exchange_member`]."] + pub struct ExchangeMember { + pub who: exchange_member::Who, + pub new_who: exchange_member::NewWho, + } + pub mod exchange_member { + use super::runtime_types; + pub type Who = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type NewWho = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + } + impl ::subxt::blocks::StaticExtrinsic for ExchangeMember { + const PALLET: &'static str = "FellowshipCollective"; + const CALL: &'static str = "exchange_member"; + } } pub struct TransactionApi; impl TransactionApi { @@ -12917,6 +12403,24 @@ pub mod api { ], ) } + #[doc = "See [`Pallet::exchange_member`]."] + pub fn exchange_member( + &self, + who: types::exchange_member::Who, + new_who: types::exchange_member::NewWho, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "FellowshipCollective", + "exchange_member", + types::ExchangeMember { who, new_who }, + [ + 240u8, 208u8, 76u8, 147u8, 117u8, 23u8, 91u8, 37u8, 22u8, 101u8, 53u8, + 247u8, 161u8, 94u8, 109u8, 233u8, 104u8, 129u8, 67u8, 31u8, 223u8, + 182u8, 50u8, 233u8, 120u8, 129u8, 224u8, 135u8, 52u8, 162u8, 26u8, + 189u8, + ], + ) + } } } #[doc = "The `Event` enum of this pallet"] @@ -13022,6 +12526,30 @@ pub mod api { const PALLET: &'static str = "FellowshipCollective"; const EVENT: &'static str = "Voted"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The member `who` had their `AccountId` changed to `new_who`."] + pub struct MemberExchanged { + pub who: member_exchanged::Who, + pub new_who: member_exchanged::NewWho, + } + pub mod member_exchanged { + use super::runtime_types; + pub type Who = ::subxt::utils::AccountId32; + pub type NewWho = ::subxt::utils::AccountId32; + } + impl ::subxt::events::StaticEvent for MemberExchanged { + const PALLET: &'static str = "FellowshipCollective"; + const EVENT: &'static str = "MemberExchanged"; + } } pub mod storage { use super::runtime_types; @@ -14756,10 +14284,10 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 210u8, 240u8, 64u8, 4u8, 78u8, 73u8, 77u8, 229u8, 128u8, 118u8, 167u8, - 126u8, 152u8, 130u8, 213u8, 196u8, 80u8, 141u8, 244u8, 241u8, 10u8, - 82u8, 152u8, 243u8, 94u8, 47u8, 137u8, 209u8, 151u8, 31u8, 103u8, - 230u8, + 22u8, 6u8, 147u8, 82u8, 187u8, 143u8, 69u8, 45u8, 97u8, 1u8, 106u8, + 162u8, 200u8, 33u8, 243u8, 148u8, 5u8, 143u8, 227u8, 242u8, 167u8, + 120u8, 17u8, 241u8, 102u8, 162u8, 217u8, 14u8, 178u8, 75u8, 143u8, + 104u8, ], ) } @@ -15628,10 +15156,9 @@ pub mod api { "batch", types::Batch { calls }, [ - 235u8, 69u8, 83u8, 214u8, 119u8, 108u8, 60u8, 227u8, 129u8, 43u8, - 230u8, 70u8, 242u8, 146u8, 178u8, 239u8, 75u8, 107u8, 16u8, 124u8, - 95u8, 189u8, 144u8, 191u8, 135u8, 243u8, 61u8, 102u8, 155u8, 3u8, - 230u8, 52u8, + 190u8, 76u8, 194u8, 104u8, 12u8, 228u8, 170u8, 51u8, 80u8, 255u8, + 245u8, 201u8, 1u8, 6u8, 37u8, 123u8, 161u8, 141u8, 178u8, 35u8, 195u8, + 118u8, 25u8, 175u8, 79u8, 55u8, 53u8, 247u8, 11u8, 160u8, 207u8, 242u8, ], ) } @@ -15649,9 +15176,10 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 89u8, 19u8, 38u8, 160u8, 61u8, 225u8, 248u8, 36u8, 213u8, 109u8, 186u8, - 91u8, 66u8, 62u8, 55u8, 186u8, 159u8, 246u8, 125u8, 201u8, 101u8, - 209u8, 40u8, 35u8, 15u8, 186u8, 43u8, 216u8, 141u8, 244u8, 36u8, 178u8, + 150u8, 183u8, 64u8, 247u8, 10u8, 72u8, 40u8, 3u8, 104u8, 248u8, 146u8, + 47u8, 247u8, 114u8, 16u8, 108u8, 254u8, 162u8, 127u8, 91u8, 31u8, + 138u8, 203u8, 235u8, 247u8, 84u8, 30u8, 34u8, 228u8, 181u8, 103u8, + 246u8, ], ) } @@ -15665,9 +15193,9 @@ pub mod api { "batch_all", types::BatchAll { calls }, [ - 203u8, 246u8, 164u8, 119u8, 42u8, 254u8, 130u8, 113u8, 187u8, 95u8, - 175u8, 121u8, 73u8, 183u8, 95u8, 32u8, 103u8, 93u8, 214u8, 66u8, 148u8, - 143u8, 212u8, 50u8, 204u8, 219u8, 51u8, 37u8, 204u8, 6u8, 231u8, 133u8, + 93u8, 139u8, 245u8, 180u8, 137u8, 205u8, 82u8, 6u8, 172u8, 46u8, 253u8, + 155u8, 99u8, 197u8, 38u8, 242u8, 60u8, 160u8, 77u8, 73u8, 198u8, 233u8, + 204u8, 194u8, 156u8, 17u8, 64u8, 40u8, 156u8, 147u8, 212u8, 125u8, ], ) } @@ -15685,9 +15213,10 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 209u8, 149u8, 31u8, 38u8, 134u8, 220u8, 22u8, 25u8, 8u8, 192u8, 23u8, - 136u8, 36u8, 95u8, 238u8, 118u8, 167u8, 158u8, 202u8, 37u8, 52u8, 69u8, - 46u8, 220u8, 60u8, 21u8, 120u8, 231u8, 193u8, 100u8, 103u8, 94u8, + 46u8, 149u8, 47u8, 127u8, 211u8, 128u8, 96u8, 199u8, 179u8, 166u8, + 217u8, 15u8, 47u8, 137u8, 115u8, 124u8, 111u8, 203u8, 27u8, 54u8, 85u8, + 196u8, 162u8, 158u8, 216u8, 158u8, 184u8, 166u8, 14u8, 14u8, 104u8, + 57u8, ], ) } @@ -15701,9 +15230,10 @@ pub mod api { "force_batch", types::ForceBatch { calls }, [ - 79u8, 8u8, 104u8, 150u8, 79u8, 246u8, 104u8, 229u8, 224u8, 250u8, 43u8, - 122u8, 82u8, 183u8, 51u8, 198u8, 89u8, 164u8, 231u8, 218u8, 164u8, - 77u8, 190u8, 17u8, 80u8, 109u8, 36u8, 149u8, 138u8, 64u8, 63u8, 153u8, + 155u8, 161u8, 89u8, 164u8, 29u8, 151u8, 219u8, 213u8, 69u8, 167u8, + 226u8, 136u8, 117u8, 118u8, 112u8, 215u8, 137u8, 57u8, 237u8, 128u8, + 185u8, 217u8, 26u8, 24u8, 202u8, 14u8, 149u8, 113u8, 201u8, 155u8, + 203u8, 186u8, ], ) } @@ -15721,10 +15251,9 @@ pub mod api { weight, }, [ - 162u8, 205u8, 237u8, 176u8, 167u8, 52u8, 45u8, 114u8, 66u8, 50u8, - 129u8, 249u8, 116u8, 253u8, 185u8, 76u8, 100u8, 236u8, 163u8, 104u8, - 64u8, 234u8, 102u8, 152u8, 93u8, 64u8, 37u8, 125u8, 82u8, 53u8, 145u8, - 220u8, + 47u8, 254u8, 18u8, 140u8, 124u8, 167u8, 16u8, 52u8, 50u8, 166u8, 123u8, + 107u8, 174u8, 238u8, 43u8, 129u8, 237u8, 255u8, 181u8, 210u8, 20u8, + 154u8, 96u8, 238u8, 219u8, 28u8, 74u8, 198u8, 122u8, 47u8, 13u8, 199u8, ], ) } @@ -20122,9 +19651,9 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 85u8, 206u8, 232u8, 41u8, 57u8, 159u8, 145u8, 157u8, 94u8, 238u8, 80u8, - 26u8, 113u8, 194u8, 123u8, 196u8, 83u8, 235u8, 134u8, 102u8, 9u8, - 219u8, 64u8, 7u8, 251u8, 92u8, 23u8, 59u8, 188u8, 11u8, 24u8, 15u8, + 37u8, 58u8, 252u8, 116u8, 228u8, 248u8, 131u8, 216u8, 1u8, 33u8, 213u8, + 41u8, 203u8, 3u8, 225u8, 255u8, 195u8, 8u8, 172u8, 38u8, 249u8, 105u8, + 83u8, 16u8, 13u8, 213u8, 0u8, 91u8, 198u8, 141u8, 6u8, 16u8, ], ) } @@ -21337,6 +20866,102 @@ pub mod api { const PALLET: &'static str = "Scheduler"; const CALL: &'static str = "schedule_named_after"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::set_retry`]."] + pub struct SetRetry { + pub task: set_retry::Task, + pub retries: set_retry::Retries, + pub period: set_retry::Period, + } + pub mod set_retry { + use super::runtime_types; + pub type Task = (::core::primitive::u32, ::core::primitive::u32); + pub type Retries = ::core::primitive::u8; + pub type Period = ::core::primitive::u32; + } + impl ::subxt::blocks::StaticExtrinsic for SetRetry { + const PALLET: &'static str = "Scheduler"; + const CALL: &'static str = "set_retry"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::set_retry_named`]."] + pub struct SetRetryNamed { + pub id: set_retry_named::Id, + pub retries: set_retry_named::Retries, + pub period: set_retry_named::Period, + } + pub mod set_retry_named { + use super::runtime_types; + pub type Id = [::core::primitive::u8; 32usize]; + pub type Retries = ::core::primitive::u8; + pub type Period = ::core::primitive::u32; + } + impl ::subxt::blocks::StaticExtrinsic for SetRetryNamed { + const PALLET: &'static str = "Scheduler"; + const CALL: &'static str = "set_retry_named"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::cancel_retry`]."] + pub struct CancelRetry { + pub task: cancel_retry::Task, + } + pub mod cancel_retry { + use super::runtime_types; + pub type Task = (::core::primitive::u32, ::core::primitive::u32); + } + impl ::subxt::blocks::StaticExtrinsic for CancelRetry { + const PALLET: &'static str = "Scheduler"; + const CALL: &'static str = "cancel_retry"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::cancel_retry_named`]."] + pub struct CancelRetryNamed { + pub id: cancel_retry_named::Id, + } + pub mod cancel_retry_named { + use super::runtime_types; + pub type Id = [::core::primitive::u8; 32usize]; + } + impl ::subxt::blocks::StaticExtrinsic for CancelRetryNamed { + const PALLET: &'static str = "Scheduler"; + const CALL: &'static str = "cancel_retry_named"; + } } pub struct TransactionApi; impl TransactionApi { @@ -21358,9 +20983,9 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 158u8, 215u8, 150u8, 176u8, 69u8, 99u8, 193u8, 8u8, 225u8, 121u8, 86u8, - 178u8, 93u8, 227u8, 146u8, 186u8, 199u8, 7u8, 249u8, 188u8, 55u8, 74u8, - 122u8, 251u8, 65u8, 50u8, 183u8, 238u8, 96u8, 252u8, 122u8, 186u8, + 138u8, 196u8, 26u8, 129u8, 131u8, 51u8, 78u8, 112u8, 92u8, 174u8, 12u8, + 239u8, 185u8, 165u8, 26u8, 20u8, 222u8, 255u8, 172u8, 151u8, 217u8, + 62u8, 14u8, 102u8, 128u8, 147u8, 143u8, 226u8, 72u8, 62u8, 155u8, 68u8, ], ) } @@ -21402,9 +21027,10 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 40u8, 8u8, 195u8, 141u8, 167u8, 129u8, 96u8, 125u8, 51u8, 135u8, 252u8, - 10u8, 87u8, 220u8, 13u8, 137u8, 56u8, 188u8, 27u8, 59u8, 73u8, 47u8, - 136u8, 194u8, 218u8, 23u8, 33u8, 138u8, 91u8, 18u8, 80u8, 62u8, + 208u8, 81u8, 95u8, 195u8, 171u8, 238u8, 152u8, 17u8, 86u8, 72u8, 242u8, + 225u8, 129u8, 96u8, 255u8, 181u8, 233u8, 51u8, 174u8, 78u8, 111u8, + 251u8, 244u8, 84u8, 217u8, 223u8, 155u8, 119u8, 167u8, 221u8, 65u8, + 5u8, ], ) } @@ -21442,9 +21068,10 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 66u8, 127u8, 226u8, 141u8, 231u8, 85u8, 141u8, 76u8, 145u8, 28u8, - 168u8, 30u8, 3u8, 53u8, 44u8, 126u8, 192u8, 214u8, 66u8, 113u8, 200u8, - 164u8, 109u8, 31u8, 31u8, 150u8, 91u8, 194u8, 172u8, 123u8, 8u8, 92u8, + 217u8, 111u8, 46u8, 195u8, 219u8, 234u8, 12u8, 95u8, 253u8, 237u8, + 76u8, 172u8, 88u8, 168u8, 167u8, 165u8, 199u8, 170u8, 207u8, 233u8, + 239u8, 33u8, 251u8, 30u8, 242u8, 210u8, 130u8, 254u8, 129u8, 30u8, + 186u8, 40u8, ], ) } @@ -21468,10 +21095,87 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 26u8, 226u8, 147u8, 92u8, 228u8, 230u8, 99u8, 118u8, 206u8, 152u8, - 34u8, 209u8, 180u8, 135u8, 19u8, 43u8, 134u8, 19u8, 20u8, 106u8, 236u8, - 224u8, 120u8, 255u8, 113u8, 185u8, 193u8, 31u8, 58u8, 58u8, 136u8, - 239u8, + 79u8, 253u8, 17u8, 220u8, 97u8, 235u8, 221u8, 156u8, 35u8, 51u8, 19u8, + 230u8, 126u8, 42u8, 51u8, 92u8, 171u8, 168u8, 67u8, 13u8, 63u8, 185u8, + 58u8, 30u8, 7u8, 171u8, 53u8, 144u8, 156u8, 255u8, 237u8, 19u8, + ], + ) + } + #[doc = "See [`Pallet::set_retry`]."] + pub fn set_retry( + &self, + task: types::set_retry::Task, + retries: types::set_retry::Retries, + period: types::set_retry::Period, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Scheduler", + "set_retry", + types::SetRetry { + task, + retries, + period, + }, + [ + 2u8, 242u8, 180u8, 69u8, 237u8, 168u8, 243u8, 93u8, 47u8, 222u8, 189u8, + 74u8, 233u8, 106u8, 54u8, 40u8, 160u8, 61u8, 78u8, 138u8, 232u8, 20u8, + 243u8, 17u8, 151u8, 194u8, 67u8, 200u8, 186u8, 192u8, 210u8, 214u8, + ], + ) + } + #[doc = "See [`Pallet::set_retry_named`]."] + pub fn set_retry_named( + &self, + id: types::set_retry_named::Id, + retries: types::set_retry_named::Retries, + period: types::set_retry_named::Period, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Scheduler", + "set_retry_named", + types::SetRetryNamed { + id, + retries, + period, + }, + [ + 240u8, 102u8, 255u8, 253u8, 52u8, 81u8, 164u8, 170u8, 184u8, 178u8, + 254u8, 126u8, 41u8, 247u8, 121u8, 22u8, 254u8, 136u8, 237u8, 37u8, + 11u8, 42u8, 227u8, 234u8, 132u8, 83u8, 109u8, 168u8, 31u8, 44u8, 231u8, + 70u8, + ], + ) + } + #[doc = "See [`Pallet::cancel_retry`]."] + pub fn cancel_retry( + &self, + task: types::cancel_retry::Task, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Scheduler", + "cancel_retry", + types::CancelRetry { task }, + [ + 142u8, 126u8, 127u8, 216u8, 64u8, 189u8, 42u8, 126u8, 63u8, 249u8, + 211u8, 202u8, 224u8, 197u8, 199u8, 240u8, 58u8, 94u8, 219u8, 177u8, + 20u8, 210u8, 153u8, 0u8, 127u8, 255u8, 235u8, 238u8, 170u8, 240u8, + 44u8, 49u8, + ], + ) + } + #[doc = "See [`Pallet::cancel_retry_named`]."] + pub fn cancel_retry_named( + &self, + id: types::cancel_retry_named::Id, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Scheduler", + "cancel_retry_named", + types::CancelRetryNamed { id }, + [ + 76u8, 157u8, 253u8, 113u8, 162u8, 54u8, 98u8, 21u8, 62u8, 44u8, 155u8, + 202u8, 2u8, 28u8, 153u8, 219u8, 67u8, 166u8, 206u8, 79u8, 139u8, 3u8, + 119u8, 182u8, 254u8, 134u8, 143u8, 121u8, 155u8, 220u8, 192u8, 209u8, ], ) } @@ -21566,6 +21270,58 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Set a retry configuration for some task."] + pub struct RetrySet { + pub task: retry_set::Task, + pub id: retry_set::Id, + pub period: retry_set::Period, + pub retries: retry_set::Retries, + } + pub mod retry_set { + use super::runtime_types; + pub type Task = (::core::primitive::u32, ::core::primitive::u32); + pub type Id = ::core::option::Option<[::core::primitive::u8; 32usize]>; + pub type Period = ::core::primitive::u32; + pub type Retries = ::core::primitive::u8; + } + impl ::subxt::events::StaticEvent for RetrySet { + const PALLET: &'static str = "Scheduler"; + const EVENT: &'static str = "RetrySet"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Cancel a retry configuration for some task."] + pub struct RetryCancelled { + pub task: retry_cancelled::Task, + pub id: retry_cancelled::Id, + } + pub mod retry_cancelled { + use super::runtime_types; + pub type Task = (::core::primitive::u32, ::core::primitive::u32); + pub type Id = ::core::option::Option<[::core::primitive::u8; 32usize]>; + } + impl ::subxt::events::StaticEvent for RetryCancelled { + const PALLET: &'static str = "Scheduler"; + const EVENT: &'static str = "RetryCancelled"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "The call for the provided hash was not found so the task has been aborted."] pub struct CallUnavailable { pub task: call_unavailable::Task, @@ -21614,6 +21370,31 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The given task was unable to be retried since the agenda is full at that block or there"] + #[doc = "was not enough weight to reschedule it."] + pub struct RetryFailed { + pub task: retry_failed::Task, + pub id: retry_failed::Id, + } + pub mod retry_failed { + use super::runtime_types; + pub type Task = (::core::primitive::u32, ::core::primitive::u32); + pub type Id = ::core::option::Option<[::core::primitive::u8; 32usize]>; + } + impl ::subxt::events::StaticEvent for RetryFailed { + const PALLET: &'static str = "Scheduler"; + const EVENT: &'static str = "RetryFailed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "The given task can never be executed since it is overweight."] pub struct PermanentlyOverweight { pub task: permanently_overweight::Task, @@ -21655,6 +21436,13 @@ pub mod api { >; pub type Param0 = ::core::primitive::u32; } + pub mod retries { + use super::runtime_types; + pub type Retries = + runtime_types::pallet_scheduler::RetryConfig<::core::primitive::u32>; + pub type Param0 = ::core::primitive::u32; + pub type Param1 = ::core::primitive::u32; + } pub mod lookup { use super::runtime_types; pub type Lookup = (::core::primitive::u32, ::core::primitive::u32); @@ -21728,6 +21516,80 @@ pub mod api { ], ) } + #[doc = " Retry configurations for items to be executed, indexed by task address."] + pub fn retries_iter( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::retries::Retries, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Scheduler", + "Retries", + vec![], + [ + 164u8, 27u8, 208u8, 185u8, 19u8, 232u8, 190u8, 97u8, 137u8, 73u8, + 146u8, 10u8, 241u8, 176u8, 251u8, 140u8, 133u8, 65u8, 190u8, 162u8, + 59u8, 32u8, 77u8, 201u8, 27u8, 78u8, 183u8, 164u8, 74u8, 46u8, 139u8, + 145u8, + ], + ) + } + #[doc = " Retry configurations for items to be executed, indexed by task address."] + pub fn retries_iter1( + &self, + _0: impl ::std::borrow::Borrow, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::retries::Retries, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Scheduler", + "Retries", + vec![::subxt::storage::address::make_static_storage_map_key( + _0.borrow(), + )], + [ + 164u8, 27u8, 208u8, 185u8, 19u8, 232u8, 190u8, 97u8, 137u8, 73u8, + 146u8, 10u8, 241u8, 176u8, 251u8, 140u8, 133u8, 65u8, 190u8, 162u8, + 59u8, 32u8, 77u8, 201u8, 27u8, 78u8, 183u8, 164u8, 74u8, 46u8, 139u8, + 145u8, + ], + ) + } + #[doc = " Retry configurations for items to be executed, indexed by task address."] + pub fn retries( + &self, + _0: impl ::std::borrow::Borrow, + _1: impl ::std::borrow::Borrow, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::retries::Retries, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Scheduler", + "Retries", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 164u8, 27u8, 208u8, 185u8, 19u8, 232u8, 190u8, 97u8, 137u8, 73u8, + 146u8, 10u8, 241u8, 176u8, 251u8, 140u8, 133u8, 65u8, 190u8, 162u8, + 59u8, 32u8, 77u8, 201u8, 27u8, 78u8, 183u8, 164u8, 74u8, 46u8, 139u8, + 145u8, + ], + ) + } #[doc = " Lookup from a name to the block number and index of the task."] #[doc = ""] #[doc = " For v3 -> v4 the previously unbounded identities are Blake2-256 hashed to form the v4"] @@ -22114,9 +21976,10 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 122u8, 7u8, 247u8, 164u8, 62u8, 254u8, 12u8, 208u8, 188u8, 49u8, 244u8, - 153u8, 59u8, 65u8, 73u8, 58u8, 88u8, 134u8, 255u8, 150u8, 157u8, 8u8, - 153u8, 41u8, 21u8, 186u8, 114u8, 71u8, 128u8, 108u8, 203u8, 20u8, + 27u8, 41u8, 64u8, 205u8, 145u8, 228u8, 163u8, 100u8, 114u8, 12u8, + 176u8, 150u8, 113u8, 197u8, 148u8, 23u8, 28u8, 27u8, 246u8, 111u8, + 117u8, 252u8, 190u8, 69u8, 164u8, 213u8, 185u8, 65u8, 213u8, 172u8, + 183u8, 205u8, ], ) } @@ -22300,9 +22163,9 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 109u8, 140u8, 6u8, 12u8, 91u8, 4u8, 254u8, 2u8, 91u8, 243u8, 154u8, - 79u8, 83u8, 153u8, 67u8, 160u8, 206u8, 37u8, 85u8, 25u8, 10u8, 224u8, - 146u8, 227u8, 134u8, 129u8, 191u8, 47u8, 243u8, 93u8, 215u8, 222u8, + 81u8, 161u8, 1u8, 212u8, 29u8, 249u8, 101u8, 27u8, 174u8, 148u8, 164u8, + 13u8, 37u8, 206u8, 239u8, 219u8, 107u8, 255u8, 101u8, 108u8, 122u8, + 46u8, 19u8, 233u8, 82u8, 130u8, 11u8, 148u8, 40u8, 212u8, 214u8, 39u8, ], ) } @@ -22827,9 +22690,10 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 174u8, 71u8, 76u8, 85u8, 10u8, 92u8, 166u8, 33u8, 124u8, 212u8, 89u8, - 40u8, 24u8, 94u8, 252u8, 139u8, 68u8, 122u8, 191u8, 247u8, 212u8, 48u8, - 173u8, 252u8, 86u8, 57u8, 178u8, 208u8, 56u8, 49u8, 64u8, 182u8, + 160u8, 32u8, 154u8, 37u8, 200u8, 55u8, 129u8, 224u8, 146u8, 248u8, + 74u8, 123u8, 141u8, 242u8, 178u8, 218u8, 203u8, 229u8, 3u8, 189u8, + 150u8, 28u8, 101u8, 126u8, 182u8, 233u8, 181u8, 254u8, 146u8, 180u8, + 124u8, 102u8, ], ) } @@ -22853,9 +22717,10 @@ pub mod api { max_weight, }, [ - 122u8, 132u8, 216u8, 231u8, 74u8, 72u8, 208u8, 47u8, 203u8, 32u8, 71u8, - 2u8, 240u8, 74u8, 236u8, 139u8, 226u8, 162u8, 182u8, 152u8, 69u8, 62u8, - 172u8, 188u8, 119u8, 227u8, 134u8, 59u8, 255u8, 164u8, 74u8, 179u8, + 253u8, 142u8, 244u8, 88u8, 243u8, 78u8, 231u8, 191u8, 169u8, 215u8, + 44u8, 15u8, 85u8, 234u8, 100u8, 22u8, 80u8, 150u8, 80u8, 119u8, 5u8, + 183u8, 239u8, 148u8, 100u8, 219u8, 211u8, 155u8, 23u8, 228u8, 34u8, + 231u8, ], ) } @@ -26733,6 +26598,31 @@ pub mod api { const PALLET: &'static str = "NisCounterpartBalances"; const CALL: &'static str = "force_set_balance"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::force_adjust_total_issuance`]."] + pub struct ForceAdjustTotalIssuance { + pub direction: force_adjust_total_issuance::Direction, + #[codec(compact)] + pub delta: force_adjust_total_issuance::Delta, + } + pub mod force_adjust_total_issuance { + use super::runtime_types; + pub type Direction = runtime_types::pallet_balances::types::AdjustmentDirection; + pub type Delta = ::core::primitive::u128; + } + impl ::subxt::blocks::StaticExtrinsic for ForceAdjustTotalIssuance { + const PALLET: &'static str = "NisCounterpartBalances"; + const CALL: &'static str = "force_adjust_total_issuance"; + } } pub struct TransactionApi; impl TransactionApi { @@ -26861,6 +26751,24 @@ pub mod api { ], ) } + #[doc = "See [`Pallet::force_adjust_total_issuance`]."] + pub fn force_adjust_total_issuance( + &self, + direction: types::force_adjust_total_issuance::Direction, + delta: types::force_adjust_total_issuance::Delta, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "NisCounterpartBalances", + "force_adjust_total_issuance", + types::ForceAdjustTotalIssuance { direction, delta }, + [ + 208u8, 134u8, 56u8, 133u8, 232u8, 164u8, 10u8, 213u8, 53u8, 193u8, + 190u8, 63u8, 236u8, 186u8, 96u8, 122u8, 104u8, 87u8, 173u8, 38u8, 58u8, + 176u8, 21u8, 78u8, 42u8, 106u8, 46u8, 248u8, 251u8, 190u8, 150u8, + 202u8, + ], + ) + } } } #[doc = "The `Event` enum of this pallet"] @@ -27374,6 +27282,30 @@ pub mod api { const PALLET: &'static str = "NisCounterpartBalances"; const EVENT: &'static str = "Thawed"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `TotalIssuance` was forcefully changed."] + pub struct TotalIssuanceForced { + pub old: total_issuance_forced::Old, + pub new: total_issuance_forced::New, + } + pub mod total_issuance_forced { + use super::runtime_types; + pub type Old = ::core::primitive::u128; + pub type New = ::core::primitive::u128; + } + impl ::subxt::events::StaticEvent for TotalIssuanceForced { + const PALLET: &'static str = "NisCounterpartBalances"; + const EVENT: &'static str = "TotalIssuanceForced"; + } } pub mod storage { use super::runtime_types; @@ -27808,19 +27740,6 @@ pub mod api { ], ) } - #[doc = " The maximum number of holds that can exist on an account at any time."] - pub fn max_holds(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "NisCounterpartBalances", - "MaxHolds", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } #[doc = " The maximum number of individual freeze locks that can exist on an account at any time."] pub fn max_freezes(&self) -> ::subxt::constants::Address<::core::primitive::u32> { ::subxt::constants::Address::new_static( @@ -29716,9 +29635,9 @@ pub mod api { "ActiveConfig", vec![], [ - 241u8, 129u8, 175u8, 69u8, 121u8, 171u8, 135u8, 98u8, 205u8, 87u8, - 244u8, 201u8, 27u8, 143u8, 112u8, 77u8, 83u8, 107u8, 22u8, 120u8, 58u8, - 74u8, 48u8, 72u8, 236u8, 132u8, 248u8, 60u8, 131u8, 107u8, 7u8, 98u8, + 121u8, 69u8, 70u8, 58u8, 91u8, 124u8, 53u8, 11u8, 49u8, 82u8, 119u8, + 36u8, 116u8, 193u8, 238u8, 208u8, 187u8, 148u8, 200u8, 30u8, 174u8, + 195u8, 201u8, 181u8, 40u8, 93u8, 153u8, 220u8, 158u8, 24u8, 153u8, 5u8, ], ) } @@ -30449,9 +30368,7 @@ pub mod api { ) } #[doc = " One entry for each availability core. The `VecDeque` represents the assignments to be"] - #[doc = " scheduled on that core. `None` is used to signal to not schedule the next para of the core"] - #[doc = " as there is one currently being scheduled. Not using `None` here would overwrite the"] - #[doc = " `CoreState` in the runtime API. The value contained here will not be valid after the end of"] + #[doc = " scheduled on that core. The value contained here will not be valid after the end of"] #[doc = " a block. Runtime APIs should be used to determine scheduled cores/ for the upcoming block."] pub fn claim_queue( &self, @@ -39441,6 +39358,28 @@ pub mod api { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "AssetsClaimed"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A XCM version migration finished."] + pub struct VersionMigrationFinished { + pub version: version_migration_finished::Version, + } + pub mod version_migration_finished { + use super::runtime_types; + pub type Version = ::core::primitive::u32; + } + impl ::subxt::events::StaticEvent for VersionMigrationFinished { + const PALLET: &'static str = "XcmPallet"; + const EVENT: &'static str = "VersionMigrationFinished"; + } } pub mod storage { use super::runtime_types; @@ -40106,6 +40045,598 @@ pub mod api { } } } + pub mod beefy { + use super::root_mod; + use super::runtime_types; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_beefy::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_beefy::pallet::Call; + pub mod calls { + use super::root_mod; + use super::runtime_types; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::report_equivocation`]."] + pub struct ReportEquivocation { + pub equivocation_proof: + ::std::boxed::Box, + pub key_owner_proof: report_equivocation::KeyOwnerProof, + } + pub mod report_equivocation { + use super::runtime_types; + pub type EquivocationProof = + runtime_types::sp_consensus_beefy::EquivocationProof< + ::core::primitive::u32, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, + >; + pub type KeyOwnerProof = runtime_types::sp_session::MembershipProof; + } + impl ::subxt::blocks::StaticExtrinsic for ReportEquivocation { + const PALLET: &'static str = "Beefy"; + const CALL: &'static str = "report_equivocation"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + pub struct ReportEquivocationUnsigned { + pub equivocation_proof: + ::std::boxed::Box, + pub key_owner_proof: report_equivocation_unsigned::KeyOwnerProof, + } + pub mod report_equivocation_unsigned { + use super::runtime_types; + pub type EquivocationProof = + runtime_types::sp_consensus_beefy::EquivocationProof< + ::core::primitive::u32, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, + >; + pub type KeyOwnerProof = runtime_types::sp_session::MembershipProof; + } + impl ::subxt::blocks::StaticExtrinsic for ReportEquivocationUnsigned { + const PALLET: &'static str = "Beefy"; + const CALL: &'static str = "report_equivocation_unsigned"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "See [`Pallet::set_new_genesis`]."] + pub struct SetNewGenesis { + pub delay_in_blocks: set_new_genesis::DelayInBlocks, + } + pub mod set_new_genesis { + use super::runtime_types; + pub type DelayInBlocks = ::core::primitive::u32; + } + impl ::subxt::blocks::StaticExtrinsic for SetNewGenesis { + const PALLET: &'static str = "Beefy"; + const CALL: &'static str = "set_new_genesis"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::report_equivocation`]."] + pub fn report_equivocation( + &self, + equivocation_proof: types::report_equivocation::EquivocationProof, + key_owner_proof: types::report_equivocation::KeyOwnerProof, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Beefy", + "report_equivocation", + types::ReportEquivocation { + equivocation_proof: ::std::boxed::Box::new(equivocation_proof), + key_owner_proof, + }, + [ + 156u8, 32u8, 92u8, 179u8, 165u8, 93u8, 216u8, 130u8, 121u8, 225u8, + 33u8, 141u8, 255u8, 12u8, 101u8, 136u8, 177u8, 25u8, 23u8, 239u8, 12u8, + 142u8, 88u8, 228u8, 85u8, 171u8, 218u8, 185u8, 146u8, 245u8, 149u8, + 85u8, + ], + ) + } + #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + pub fn report_equivocation_unsigned( + &self, + equivocation_proof: types::report_equivocation_unsigned::EquivocationProof, + key_owner_proof: types::report_equivocation_unsigned::KeyOwnerProof, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Beefy", + "report_equivocation_unsigned", + types::ReportEquivocationUnsigned { + equivocation_proof: ::std::boxed::Box::new(equivocation_proof), + key_owner_proof, + }, + [ + 126u8, 201u8, 236u8, 234u8, 107u8, 52u8, 37u8, 115u8, 228u8, 232u8, + 103u8, 193u8, 143u8, 224u8, 79u8, 192u8, 207u8, 204u8, 161u8, 103u8, + 210u8, 131u8, 64u8, 251u8, 48u8, 196u8, 249u8, 148u8, 2u8, 179u8, + 135u8, 121u8, + ], + ) + } + #[doc = "See [`Pallet::set_new_genesis`]."] + pub fn set_new_genesis( + &self, + delay_in_blocks: types::set_new_genesis::DelayInBlocks, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Beefy", + "set_new_genesis", + types::SetNewGenesis { delay_in_blocks }, + [ + 147u8, 6u8, 252u8, 43u8, 77u8, 91u8, 170u8, 45u8, 112u8, 155u8, 158u8, + 79u8, 1u8, 116u8, 162u8, 146u8, 181u8, 9u8, 171u8, 48u8, 198u8, 210u8, + 243u8, 64u8, 229u8, 35u8, 28u8, 177u8, 144u8, 22u8, 165u8, 163u8, + ], + ) + } + } + } + pub mod storage { + use super::runtime_types; + pub mod types { + use super::runtime_types; + pub mod authorities { + use super::runtime_types; + pub type Authorities = + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + >; + } + pub mod validator_set_id { + use super::runtime_types; + pub type ValidatorSetId = ::core::primitive::u64; + } + pub mod next_authorities { + use super::runtime_types; + pub type NextAuthorities = + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + >; + } + pub mod set_id_session { + use super::runtime_types; + pub type SetIdSession = ::core::primitive::u32; + pub type Param0 = ::core::primitive::u64; + } + pub mod genesis_block { + use super::runtime_types; + pub type GenesisBlock = ::core::option::Option<::core::primitive::u32>; + } + } + pub struct StorageApi; + impl StorageApi { + #[doc = " The current authorities set"] + pub fn authorities( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::authorities::Authorities, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Beefy", + "Authorities", + vec![], + [ + 53u8, 171u8, 94u8, 33u8, 46u8, 83u8, 105u8, 120u8, 123u8, 201u8, 141u8, + 71u8, 131u8, 150u8, 51u8, 121u8, 67u8, 45u8, 249u8, 146u8, 85u8, 113u8, + 23u8, 59u8, 59u8, 41u8, 0u8, 226u8, 98u8, 166u8, 253u8, 59u8, + ], + ) + } + #[doc = " The current validator set id"] + pub fn validator_set_id( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::validator_set_id::ValidatorSetId, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Beefy", + "ValidatorSetId", + vec![], + [ + 168u8, 84u8, 23u8, 134u8, 153u8, 30u8, 183u8, 176u8, 206u8, 100u8, + 109u8, 86u8, 109u8, 126u8, 146u8, 175u8, 173u8, 1u8, 253u8, 42u8, + 122u8, 207u8, 71u8, 4u8, 145u8, 83u8, 148u8, 29u8, 243u8, 52u8, 29u8, + 78u8, + ], + ) + } + #[doc = " Authorities set scheduled to be used with the next session"] + pub fn next_authorities( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::next_authorities::NextAuthorities, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Beefy", + "NextAuthorities", + vec![], + [ + 87u8, 180u8, 0u8, 85u8, 209u8, 13u8, 131u8, 103u8, 8u8, 226u8, 42u8, + 72u8, 38u8, 47u8, 190u8, 78u8, 62u8, 4u8, 161u8, 130u8, 87u8, 196u8, + 13u8, 209u8, 205u8, 98u8, 104u8, 91u8, 3u8, 47u8, 82u8, 11u8, + ], + ) + } + #[doc = " A mapping from BEEFY set ID to the index of the *most recent* session for which its"] + #[doc = " members were responsible."] + #[doc = ""] + #[doc = " This is only used for validating equivocation proofs. An equivocation proof must"] + #[doc = " contains a key-ownership proof for a given session, therefore we need a way to tie"] + #[doc = " together sessions and BEEFY set ids, i.e. we need to validate that a validator"] + #[doc = " was the owner of a given key on a given session, and what the active set ID was"] + #[doc = " during that session."] + #[doc = ""] + #[doc = " TWOX-NOTE: `ValidatorSetId` is not under user control."] + pub fn set_id_session_iter( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::set_id_session::SetIdSession, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Beefy", + "SetIdSession", + vec![], + [ + 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, + 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, + 238u8, 18u8, 209u8, 203u8, 38u8, 148u8, 16u8, 105u8, 72u8, 169u8, + ], + ) + } + #[doc = " A mapping from BEEFY set ID to the index of the *most recent* session for which its"] + #[doc = " members were responsible."] + #[doc = ""] + #[doc = " This is only used for validating equivocation proofs. An equivocation proof must"] + #[doc = " contains a key-ownership proof for a given session, therefore we need a way to tie"] + #[doc = " together sessions and BEEFY set ids, i.e. we need to validate that a validator"] + #[doc = " was the owner of a given key on a given session, and what the active set ID was"] + #[doc = " during that session."] + #[doc = ""] + #[doc = " TWOX-NOTE: `ValidatorSetId` is not under user control."] + pub fn set_id_session( + &self, + _0: impl ::std::borrow::Borrow, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::set_id_session::SetIdSession, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Beefy", + "SetIdSession", + vec![::subxt::storage::address::make_static_storage_map_key( + _0.borrow(), + )], + [ + 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, + 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, + 238u8, 18u8, 209u8, 203u8, 38u8, 148u8, 16u8, 105u8, 72u8, 169u8, + ], + ) + } + #[doc = " Block number where BEEFY consensus is enabled/started."] + #[doc = " By changing this (through privileged `set_new_genesis()`), BEEFY consensus is effectively"] + #[doc = " restarted from the newly set block number."] + pub fn genesis_block( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::genesis_block::GenesisBlock, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Beefy", + "GenesisBlock", + vec![], + [ + 198u8, 155u8, 11u8, 240u8, 189u8, 245u8, 159u8, 127u8, 55u8, 33u8, + 48u8, 29u8, 209u8, 119u8, 163u8, 24u8, 28u8, 22u8, 163u8, 163u8, 124u8, + 88u8, 126u8, 4u8, 193u8, 158u8, 29u8, 243u8, 212u8, 4u8, 41u8, 22u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The maximum number of authorities that can be added."] + pub fn max_authorities( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Beefy", + "MaxAuthorities", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum number of nominators for each validator."] + pub fn max_nominators( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Beefy", + "MaxNominators", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum number of entries to keep in the set id to session index mapping."] + #[doc = ""] + #[doc = " Since the `SetIdSession` map is only used for validating equivocations this"] + #[doc = " value should relate to the bonding duration of whatever staking system is"] + #[doc = " being used (if any). If equivocation handling is not enabled then this value"] + #[doc = " can be zero."] + pub fn max_set_id_session_entries( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u64> { + ::subxt::constants::Address::new_static( + "Beefy", + "MaxSetIdSessionEntries", + [ + 128u8, 214u8, 205u8, 242u8, 181u8, 142u8, 124u8, 231u8, 190u8, 146u8, + 59u8, 226u8, 157u8, 101u8, 103u8, 117u8, 249u8, 65u8, 18u8, 191u8, + 103u8, 119u8, 53u8, 85u8, 81u8, 96u8, 220u8, 42u8, 184u8, 239u8, 42u8, + 246u8, + ], + ) + } + } + } + } + pub mod mmr { + use super::root_mod; + use super::runtime_types; + pub mod storage { + use super::runtime_types; + pub mod types { + use super::runtime_types; + pub mod root_hash { + use super::runtime_types; + pub type RootHash = ::subxt::utils::H256; + } + pub mod number_of_leaves { + use super::runtime_types; + pub type NumberOfLeaves = ::core::primitive::u64; + } + pub mod nodes { + use super::runtime_types; + pub type Nodes = ::subxt::utils::H256; + pub type Param0 = ::core::primitive::u64; + } + } + pub struct StorageApi; + impl StorageApi { + #[doc = " Latest MMR Root hash."] + pub fn root_hash( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::root_hash::RootHash, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Mmr", + "RootHash", + vec![], + [ + 111u8, 206u8, 173u8, 92u8, 67u8, 49u8, 150u8, 113u8, 90u8, 245u8, 38u8, + 254u8, 76u8, 250u8, 167u8, 66u8, 130u8, 129u8, 251u8, 220u8, 172u8, + 229u8, 162u8, 251u8, 36u8, 227u8, 43u8, 189u8, 7u8, 106u8, 23u8, 13u8, + ], + ) + } + #[doc = " Current size of the MMR (number of leaves)."] + pub fn number_of_leaves( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::number_of_leaves::NumberOfLeaves, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Mmr", + "NumberOfLeaves", + vec![], + [ + 123u8, 58u8, 149u8, 174u8, 85u8, 45u8, 20u8, 115u8, 241u8, 0u8, 51u8, + 174u8, 234u8, 60u8, 230u8, 59u8, 237u8, 144u8, 170u8, 32u8, 4u8, 0u8, + 34u8, 163u8, 238u8, 205u8, 93u8, 208u8, 53u8, 38u8, 141u8, 195u8, + ], + ) + } + #[doc = " Hashes of the nodes in the MMR."] + #[doc = ""] + #[doc = " Note this collection only contains MMR peaks, the inner nodes (and leaves)"] + #[doc = " are pruned and only stored in the Offchain DB."] + pub fn nodes_iter( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::nodes::Nodes, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Mmr", + "Nodes", + vec![], + [ + 27u8, 84u8, 41u8, 195u8, 146u8, 81u8, 211u8, 189u8, 63u8, 125u8, 173u8, + 206u8, 69u8, 198u8, 202u8, 213u8, 89u8, 31u8, 89u8, 177u8, 76u8, 154u8, + 249u8, 197u8, 133u8, 78u8, 142u8, 71u8, 183u8, 3u8, 132u8, 25u8, + ], + ) + } + #[doc = " Hashes of the nodes in the MMR."] + #[doc = ""] + #[doc = " Note this collection only contains MMR peaks, the inner nodes (and leaves)"] + #[doc = " are pruned and only stored in the Offchain DB."] + pub fn nodes( + &self, + _0: impl ::std::borrow::Borrow, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::nodes::Nodes, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Mmr", + "Nodes", + vec![::subxt::storage::address::make_static_storage_map_key( + _0.borrow(), + )], + [ + 27u8, 84u8, 41u8, 195u8, 146u8, 81u8, 211u8, 189u8, 63u8, 125u8, 173u8, + 206u8, 69u8, 198u8, 202u8, 213u8, 89u8, 31u8, 89u8, 177u8, 76u8, 154u8, + 249u8, 197u8, 133u8, 78u8, 142u8, 71u8, 183u8, 3u8, 132u8, 25u8, + ], + ) + } + } + } + } + pub mod mmr_leaf { + use super::root_mod; + use super::runtime_types; + pub mod storage { + use super::runtime_types; + pub mod types { + use super::runtime_types; + pub mod beefy_authorities { + use super::runtime_types; + pub type BeefyAuthorities = + runtime_types::sp_consensus_beefy::mmr::BeefyAuthoritySet< + ::subxt::utils::H256, + >; + } + pub mod beefy_next_authorities { + use super::runtime_types; + pub type BeefyNextAuthorities = + runtime_types::sp_consensus_beefy::mmr::BeefyAuthoritySet< + ::subxt::utils::H256, + >; + } + } + pub struct StorageApi; + impl StorageApi { + #[doc = " Details of current BEEFY authority set."] + pub fn beefy_authorities( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::beefy_authorities::BeefyAuthorities, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "MmrLeaf", + "BeefyAuthorities", + vec![], + [ + 128u8, 35u8, 176u8, 79u8, 224u8, 58u8, 214u8, 234u8, 231u8, 71u8, + 227u8, 153u8, 180u8, 189u8, 66u8, 44u8, 47u8, 174u8, 0u8, 83u8, 121u8, + 182u8, 226u8, 44u8, 224u8, 173u8, 237u8, 102u8, 231u8, 146u8, 110u8, + 7u8, + ], + ) + } + #[doc = " Details of next BEEFY authority set."] + #[doc = ""] + #[doc = " This storage entry is used as cache for calls to `update_beefy_next_authority_set`."] + pub fn beefy_next_authorities( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::beefy_next_authorities::BeefyNextAuthorities, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "MmrLeaf", + "BeefyNextAuthorities", + vec![], + [ + 97u8, 71u8, 52u8, 111u8, 120u8, 251u8, 183u8, 155u8, 177u8, 100u8, + 236u8, 142u8, 204u8, 117u8, 95u8, 40u8, 201u8, 36u8, 32u8, 82u8, 38u8, + 234u8, 135u8, 39u8, 224u8, 69u8, 94u8, 85u8, 12u8, 89u8, 97u8, 218u8, + ], + ) + } + } + } + } pub mod identity_migrator { use super::root_mod; use super::runtime_types; @@ -42082,10 +42613,10 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 126u8, 191u8, 96u8, 252u8, 103u8, 117u8, 232u8, 59u8, 13u8, 216u8, - 200u8, 186u8, 103u8, 56u8, 211u8, 188u8, 66u8, 63u8, 12u8, 200u8, - 114u8, 107u8, 46u8, 113u8, 249u8, 239u8, 130u8, 235u8, 107u8, 167u8, - 28u8, 234u8, + 129u8, 167u8, 214u8, 9u8, 176u8, 203u8, 82u8, 70u8, 118u8, 155u8, + 220u8, 184u8, 74u8, 62u8, 231u8, 49u8, 151u8, 73u8, 97u8, 9u8, 254u8, + 88u8, 44u8, 197u8, 205u8, 60u8, 182u8, 226u8, 195u8, 245u8, 253u8, + 241u8, ], ) } @@ -42103,9 +42634,9 @@ pub mod api { weight, }, [ - 115u8, 252u8, 134u8, 42u8, 167u8, 146u8, 239u8, 12u8, 141u8, 126u8, - 53u8, 7u8, 6u8, 51u8, 253u8, 87u8, 111u8, 24u8, 23u8, 167u8, 28u8, - 210u8, 65u8, 219u8, 65u8, 167u8, 41u8, 51u8, 139u8, 44u8, 132u8, 82u8, + 29u8, 141u8, 94u8, 132u8, 67u8, 244u8, 164u8, 193u8, 22u8, 27u8, 211u8, + 2u8, 138u8, 11u8, 60u8, 46u8, 32u8, 62u8, 190u8, 74u8, 153u8, 171u8, + 78u8, 200u8, 16u8, 60u8, 158u8, 114u8, 139u8, 232u8, 52u8, 40u8, ], ) } @@ -42139,9 +42670,9 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 51u8, 226u8, 36u8, 234u8, 26u8, 132u8, 248u8, 140u8, 45u8, 72u8, 176u8, - 70u8, 127u8, 173u8, 147u8, 25u8, 21u8, 188u8, 41u8, 93u8, 2u8, 214u8, - 39u8, 150u8, 155u8, 68u8, 91u8, 193u8, 73u8, 101u8, 118u8, 119u8, + 173u8, 60u8, 217u8, 75u8, 249u8, 36u8, 21u8, 151u8, 225u8, 59u8, 148u8, + 137u8, 185u8, 252u8, 116u8, 231u8, 19u8, 27u8, 240u8, 9u8, 177u8, 20u8, + 216u8, 90u8, 87u8, 7u8, 78u8, 173u8, 57u8, 221u8, 223u8, 42u8, ], ) } @@ -43221,6 +43752,13 @@ pub mod api { #[codec(compact)] new_free: ::core::primitive::u128, }, + #[codec(index = 9)] + #[doc = "See [`Pallet::force_adjust_total_issuance`]."] + force_adjust_total_issuance { + direction: runtime_types::pallet_balances::types::AdjustmentDirection, + #[codec(compact)] + delta: ::core::primitive::u128, + }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -43280,6 +43818,13 @@ pub mod api { #[codec(compact)] new_free: ::core::primitive::u128, }, + #[codec(index = 9)] + #[doc = "See [`Pallet::force_adjust_total_issuance`]."] + force_adjust_total_issuance { + direction: runtime_types::pallet_balances::types::AdjustmentDirection, + #[codec(compact)] + delta: ::core::primitive::u128, + }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -43318,11 +43863,17 @@ pub mod api { #[doc = "Number of named reserves exceed `MaxReserves`."] TooManyReserves, #[codec(index = 8)] - #[doc = "Number of holds exceed `MaxHolds`."] + #[doc = "Number of holds exceed `VariantCountOf`."] TooManyHolds, #[codec(index = 9)] #[doc = "Number of freezes exceed `MaxFreezes`."] TooManyFreezes, + #[codec(index = 10)] + #[doc = "The issuance cannot be modified since it is already deactivated."] + IssuanceDeactivated, + #[codec(index = 11)] + #[doc = "The delta cannot be zero."] + DeltaZero, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -43361,11 +43912,17 @@ pub mod api { #[doc = "Number of named reserves exceed `MaxReserves`."] TooManyReserves, #[codec(index = 8)] - #[doc = "Number of holds exceed `MaxHolds`."] + #[doc = "Number of holds exceed `VariantCountOf`."] TooManyHolds, #[codec(index = 9)] #[doc = "Number of freezes exceed `MaxFreezes`."] TooManyFreezes, + #[codec(index = 10)] + #[doc = "The issuance cannot be modified since it is already deactivated."] + IssuanceDeactivated, + #[codec(index = 11)] + #[doc = "The delta cannot be zero."] + DeltaZero, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -43502,6 +44059,12 @@ pub mod api { who: ::subxt::utils::AccountId32, amount: ::core::primitive::u128, }, + #[codec(index = 21)] + #[doc = "The `TotalIssuance` was forcefully changed."] + TotalIssuanceForced { + old: ::core::primitive::u128, + new: ::core::primitive::u128, + }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -43638,6 +44201,12 @@ pub mod api { who: ::subxt::utils::AccountId32, amount: ::core::primitive::u128, }, + #[codec(index = 21)] + #[doc = "The `TotalIssuance` was forcefully changed."] + TotalIssuanceForced { + old: ::core::primitive::u128, + new: ::core::primitive::u128, + }, } } pub mod types { @@ -43668,6 +44237,22 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum AdjustmentDirection { + #[codec(index = 0)] + Increase, + #[codec(index = 1)] + Decrease, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct BalanceLock<_0> { pub id: [::core::primitive::u8; 8usize], pub amount: _0, @@ -44361,7 +44946,7 @@ pub mod api { AlreadyDelegating, #[codec(index = 5)] #[doc = "The account currently has votes attached to it and the operation cannot succeed until"] - #[doc = "these are removed, either through `unvote` or `reap_vote`."] + #[doc = "these are removed through `remove_vote`."] AlreadyVoting, #[codec(index = 6)] #[doc = "Too high a balance was provided that the account cannot afford."] @@ -46352,6 +46937,12 @@ pub mod api { poll_index: ::core::primitive::u32, max: ::core::primitive::u32, }, + #[codec(index = 6)] + #[doc = "See [`Pallet::exchange_member`]."] + exchange_member { + who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + new_who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -46392,6 +46983,9 @@ pub mod api { #[codec(index = 8)] #[doc = "The origin is not sufficiently privileged to do the operation."] NoPermission, + #[codec(index = 9)] + #[doc = "The new member to exchange is the same as the old member"] + SameMember, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -46429,6 +47023,12 @@ pub mod api { vote: runtime_types::pallet_ranked_collective::VoteRecord, tally: runtime_types::pallet_ranked_collective::Tally, }, + #[codec(index = 4)] + #[doc = "The member `who` had their `AccountId` changed to `new_who`."] + MemberExchanged { + who: ::subxt::utils::AccountId32, + new_who: ::subxt::utils::AccountId32, + }, } } #[derive( @@ -47427,6 +48027,30 @@ pub mod api { priority: ::core::primitive::u8, call: ::std::boxed::Box, }, + #[codec(index = 6)] + #[doc = "See [`Pallet::set_retry`]."] + set_retry { + task: (::core::primitive::u32, ::core::primitive::u32), + retries: ::core::primitive::u8, + period: ::core::primitive::u32, + }, + #[codec(index = 7)] + #[doc = "See [`Pallet::set_retry_named`]."] + set_retry_named { + id: [::core::primitive::u8; 32usize], + retries: ::core::primitive::u8, + period: ::core::primitive::u32, + }, + #[codec(index = 8)] + #[doc = "See [`Pallet::cancel_retry`]."] + cancel_retry { + task: (::core::primitive::u32, ::core::primitive::u32), + }, + #[codec(index = 9)] + #[doc = "See [`Pallet::cancel_retry_named`]."] + cancel_retry_named { + id: [::core::primitive::u8; 32usize], + }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -47489,18 +48113,39 @@ pub mod api { ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, }, #[codec(index = 3)] + #[doc = "Set a retry configuration for some task."] + RetrySet { + task: (::core::primitive::u32, ::core::primitive::u32), + id: ::core::option::Option<[::core::primitive::u8; 32usize]>, + period: ::core::primitive::u32, + retries: ::core::primitive::u8, + }, + #[codec(index = 4)] + #[doc = "Cancel a retry configuration for some task."] + RetryCancelled { + task: (::core::primitive::u32, ::core::primitive::u32), + id: ::core::option::Option<[::core::primitive::u8; 32usize]>, + }, + #[codec(index = 5)] #[doc = "The call for the provided hash was not found so the task has been aborted."] CallUnavailable { task: (::core::primitive::u32, ::core::primitive::u32), id: ::core::option::Option<[::core::primitive::u8; 32usize]>, }, - #[codec(index = 4)] + #[codec(index = 6)] #[doc = "The given task was unable to be renewed since the agenda is full at that block."] PeriodicFailed { task: (::core::primitive::u32, ::core::primitive::u32), id: ::core::option::Option<[::core::primitive::u8; 32usize]>, }, - #[codec(index = 5)] + #[codec(index = 7)] + #[doc = "The given task was unable to be retried since the agenda is full at that block or there"] + #[doc = "was not enough weight to reschedule it."] + RetryFailed { + task: (::core::primitive::u32, ::core::primitive::u32), + id: ::core::option::Option<[::core::primitive::u8; 32usize]>, + }, + #[codec(index = 8)] #[doc = "The given task can never be executed since it is overweight."] PermanentlyOverweight { task: (::core::primitive::u32, ::core::primitive::u32), @@ -47518,6 +48163,21 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RetryConfig<_0> { + pub total_retries: ::core::primitive::u8, + pub remaining: ::core::primitive::u8, + pub period: _0, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct Scheduled<_0, _1, _2, _3, _4> { pub maybe_id: ::core::option::Option<_0>, pub priority: ::core::primitive::u8, @@ -49520,6 +50180,9 @@ pub mod api { origin: runtime_types::staging_xcm::v4::location::Location, assets: runtime_types::xcm::VersionedAssets, }, + #[codec(index = 23)] + #[doc = "A XCM version migration finished."] + VersionMigrationFinished { version: ::core::primitive::u32 }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -51482,8 +52145,8 @@ pub mod api { #[doc = "The ID given for registration has not been reserved."] NotReserved, #[codec(index = 12)] - #[doc = "Registering parachain with empty code is not allowed."] - EmptyCode, + #[doc = "The validation code is invalid."] + InvalidCode, #[codec(index = 13)] #[doc = "Cannot perform a parachain slot / lifecycle swap. Check that the state of both paras"] #[doc = "are correct for the swap to work."] @@ -52798,6 +53461,9 @@ pub mod api { #[codec(index = 11)] #[doc = "Parachain cannot currently schedule a code upgrade."] CannotUpgradeCode, + #[codec(index = 12)] + #[doc = "Invalid validation code size."] + InvalidCode, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -53292,8 +53958,6 @@ pub mod api { Indices(runtime_types::pallet_indices::pallet::Call), #[codec(index = 4)] Balances(runtime_types::pallet_balances::pallet::Call), - #[codec(index = 240)] - Beefy(runtime_types::pallet_beefy::pallet::Call), #[codec(index = 8)] Session(runtime_types::pallet_session::pallet::Call), #[codec(index = 10)] @@ -53382,6 +54046,8 @@ pub mod api { Coretime(runtime_types::polkadot_runtime_parachains::coretime::pallet::Call), #[codec(index = 99)] XcmPallet(runtime_types::pallet_xcm::pallet::Call), + #[codec(index = 240)] + Beefy(runtime_types::pallet_beefy::pallet::Call), #[codec(index = 248)] IdentityMigrator( runtime_types::polkadot_runtime_common::identity_migrator::pallet::Call, @@ -53420,8 +54086,6 @@ pub mod api { Indices(runtime_types::pallet_indices::pallet::Error), #[codec(index = 4)] Balances(runtime_types::pallet_balances::pallet::Error), - #[codec(index = 240)] - Beefy(runtime_types::pallet_beefy::pallet::Error), #[codec(index = 8)] Session(runtime_types::pallet_session::pallet::Error), #[codec(index = 10)] @@ -53510,6 +54174,8 @@ pub mod api { Coretime(runtime_types::polkadot_runtime_parachains::coretime::pallet::Error), #[codec(index = 99)] XcmPallet(runtime_types::pallet_xcm::pallet::Error), + #[codec(index = 240)] + Beefy(runtime_types::pallet_beefy::pallet::Error), #[codec(index = 250)] ParasSudoWrapper( runtime_types::polkadot_runtime_common::paras_sudo_wrapper::pallet::Error, From 4614ff7bbb176768f3dacb6c7983c49411c12a46 Mon Sep 17 00:00:00 2001 From: James Wilson Date: Fri, 23 Feb 2024 13:27:57 +0000 Subject: [PATCH 23/66] Swap type aliases around to be semantically correct (#1441) --- subxt/src/backend/legacy/rpc_methods.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/subxt/src/backend/legacy/rpc_methods.rs b/subxt/src/backend/legacy/rpc_methods.rs index 4dde85ee98..b227694b55 100644 --- a/subxt/src/backend/legacy/rpc_methods.rs +++ b/subxt/src/backend/legacy/rpc_methods.rs @@ -36,7 +36,7 @@ impl LegacyRpcMethods { &self, key: &[u8], hash: Option, - ) -> Result, Error> { + ) -> Result, Error> { let params = rpc_params![to_hex(key), hash]; let data: Option = self.client.request("state_getStorage", params).await?; Ok(data.map(|b| b.0)) @@ -51,7 +51,7 @@ impl LegacyRpcMethods { count: u32, start_key: Option<&[u8]>, at: Option, - ) -> Result, Error> { + ) -> Result, Error> { let start_key = start_key.map(to_hex); let params = rpc_params![to_hex(key), count, start_key, at]; let data: Vec = self.client.request("state_getKeysPaged", params).await?; From 6f63ded5c107f4400ea0e537a9cfd3e60275ef52 Mon Sep 17 00:00:00 2001 From: James Wilson Date: Fri, 23 Feb 2024 13:28:08 +0000 Subject: [PATCH 24/66] [audit] Handle errors when fetching storage keys from Unstablebackend (#1440) * Handle errors when fetching storage keys from Unstablebackend * cargo fmt --- subxt/src/backend/unstable/storage_items.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/subxt/src/backend/unstable/storage_items.rs b/subxt/src/backend/unstable/storage_items.rs index 73790765ea..20464236cd 100644 --- a/subxt/src/backend/unstable/storage_items.rs +++ b/subxt/src/backend/unstable/storage_items.rs @@ -150,6 +150,11 @@ impl Stream for StorageItems { self.buffered_responses = items.items; continue; } + FollowEvent::OperationError(err) if err.operation_id == *self.operation_id => { + // Something went wrong obtaining storage items; mark as done and return the error. + self.done = true; + return Poll::Ready(Some(Err(Error::Other(err.error)))); + } _ => { // We don't care about this event; wait for the next. continue; From 0d1cc92f27c0c6d43de16fe7276484a141149096 Mon Sep 17 00:00:00 2001 From: James Wilson Date: Fri, 23 Feb 2024 15:16:52 +0000 Subject: [PATCH 25/66] Update DispatchError to match latest in polkadot-sdk (#1442) --- subxt/src/error/dispatch_error.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/subxt/src/error/dispatch_error.rs b/subxt/src/error/dispatch_error.rs index 817a441dd6..3f0c54db56 100644 --- a/subxt/src/error/dispatch_error.rs +++ b/subxt/src/error/dispatch_error.rs @@ -59,6 +59,9 @@ pub enum DispatchError { "Some resource (e.g. a preimage) is unavailable right now. This might fix itself later." )] Unavailable, + /// Root origin is not allowed. + #[error("Root origin is not allowed.")] + RootNotAllowed, } /// An error relating to tokens when dispatching a transaction. @@ -92,6 +95,9 @@ pub enum TokenError { /// Withdrawal would cause unwanted loss of account. #[error("Withdrawal would cause unwanted loss of account.")] NotExpendable, + /// Account cannot receive the assets. + #[error("Account cannot receive the assets.")] + Blocked, } /// An error relating to arithmetic when dispatching a transaction. @@ -249,6 +255,7 @@ impl DispatchError { Exhausted, Corruption, Unavailable, + RootNotAllowed, } // ModuleError is a bit special; we want to support being decoded from either @@ -298,6 +305,7 @@ impl DispatchError { DecodedDispatchError::Exhausted => DispatchError::Exhausted, DecodedDispatchError::Corruption => DispatchError::Corruption, DecodedDispatchError::Unavailable => DispatchError::Unavailable, + DecodedDispatchError::RootNotAllowed => DispatchError::RootNotAllowed, // But we apply custom logic to transform the module error into the outward facing version: DecodedDispatchError::Module(module_bytes) => { let module_bytes = module_bytes.0; From 19be36cd2b193e091f2227b930f2ddd0e5034af6 Mon Sep 17 00:00:00 2001 From: James Wilson Date: Fri, 23 Feb 2024 17:24:04 +0000 Subject: [PATCH 26/66] Fix error mapping to wrong transaction status (#1445) --- subxt/src/backend/unstable/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subxt/src/backend/unstable/mod.rs b/subxt/src/backend/unstable/mod.rs index 82a2d50d48..21a9cca504 100644 --- a/subxt/src/backend/unstable/mod.rs +++ b/subxt/src/backend/unstable/mod.rs @@ -610,7 +610,7 @@ impl Backend for UnstableBackend { TransactionStatus::Dropped { message: error } } rpc_methods::TransactionStatus::Error { error } => { - TransactionStatus::Dropped { message: error } + TransactionStatus::Error { message: error } } rpc_methods::TransactionStatus::Invalid { error } => { TransactionStatus::Invalid { message: error } From 70d56dc62f29db51501f78ca1b89ec1cb9843f61 Mon Sep 17 00:00:00 2001 From: James Wilson Date: Sat, 24 Feb 2024 10:48:39 +0000 Subject: [PATCH 27/66] avoid a panic in case we try decoding naff bytes (#1444) --- subxt/src/backend/legacy/rpc_methods.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/subxt/src/backend/legacy/rpc_methods.rs b/subxt/src/backend/legacy/rpc_methods.rs index b227694b55..982faf9a7e 100644 --- a/subxt/src/backend/legacy/rpc_methods.rs +++ b/subxt/src/backend/legacy/rpc_methods.rs @@ -535,6 +535,13 @@ impl DryRunResultBytes { // dryRun returns an ApplyExtrinsicResult, which is basically a // `Result, TransactionValidityError>`. let bytes = self.0; + + // We expect at least 2 bytes. In case we got a naff response back (or + // manually constructed this struct), just error to avoid a panic: + if bytes.len() < 2 { + return Err(crate::Error::Unknown(bytes)); + } + if bytes[0] == 0 && bytes[1] == 0 { // Ok(Ok(())); transaction is valid and executed ok Ok(DryRunResult::Success) From a499cb611b99f89f815b50201ad485ba48990092 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Feb 2024 10:05:58 +0100 Subject: [PATCH 28/66] build(deps): bump serde from 1.0.196 to 1.0.197 (#1449) Bumps [serde](https://github.com/serde-rs/serde) from 1.0.196 to 1.0.197. - [Release notes](https://github.com/serde-rs/serde/releases) - [Commits](https://github.com/serde-rs/serde/compare/v1.0.196...v1.0.197) --- updated-dependencies: - dependency-name: serde dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 44752f835d..f0d96480aa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3754,9 +3754,9 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.196" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] @@ -3772,9 +3772,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.196" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 31e3db26af..134dc90ff0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -85,7 +85,7 @@ scale-value = "0.13.0" scale-bits = "0.4.0" scale-decode = "0.10.0" scale-encode = "0.5.0" -serde = { version = "1.0.196" } +serde = { version = "1.0.197" } serde_json = { version = "1.0.113" } syn = { version = "2.0.15", features = ["full", "extra-traits"] } thiserror = "1.0.57" From 09d7bfeedb266ab4266d0c0e1a474d90ae961874 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Feb 2024 10:06:06 +0100 Subject: [PATCH 29/66] build(deps): bump futures-timer from 3.0.2 to 3.0.3 (#1450) Bumps [futures-timer](https://github.com/async-rs/futures-timer) from 3.0.2 to 3.0.3. - [Commits](https://github.com/async-rs/futures-timer/commits/v3.0.3) --- updated-dependencies: - dependency-name: futures-timer dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f0d96480aa..c69765f8bd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1739,9 +1739,9 @@ checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-timer" -version = "3.0.2" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" dependencies = [ "gloo-timers", "send_wrapper 0.4.0", From c7ac5922a913c9a1f8fe2869253717823a1865d9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Feb 2024 10:06:28 +0100 Subject: [PATCH 30/66] build(deps): bump darling from 0.20.6 to 0.20.8 (#1447) Bumps [darling](https://github.com/TedDriggs/darling) from 0.20.6 to 0.20.8. - [Release notes](https://github.com/TedDriggs/darling/releases) - [Changelog](https://github.com/TedDriggs/darling/blob/master/CHANGELOG.md) - [Commits](https://github.com/TedDriggs/darling/compare/v0.20.6...v0.20.8) --- updated-dependencies: - dependency-name: darling dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 20 ++++++++++---------- Cargo.toml | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c69765f8bd..a040af2e53 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1213,12 +1213,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.6" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c376d08ea6aa96aafe61237c7200d1241cb177b7d3a542d791f2d118e9cbb955" +checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" dependencies = [ - "darling_core 0.20.6", - "darling_macro 0.20.6", + "darling_core 0.20.8", + "darling_macro 0.20.8", ] [[package]] @@ -1237,9 +1237,9 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.6" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33043dcd19068b8192064c704b3f83eb464f91f1ff527b44a4e2b08d9cdb8855" +checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" dependencies = [ "fnv", "ident_case", @@ -1262,11 +1262,11 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.6" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5a91391accf613803c2a9bf9abccdbaa07c54b4244a5b64883f9c3c137c86be" +checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" dependencies = [ - "darling_core 0.20.6", + "darling_core 0.20.8", "quote", "syn 2.0.48", ] @@ -4620,7 +4620,7 @@ dependencies = [ name = "subxt-macro" version = "0.34.0" dependencies = [ - "darling 0.20.6", + "darling 0.20.8", "parity-scale-codec", "proc-macro-error", "quote", diff --git a/Cargo.toml b/Cargo.toml index 134dc90ff0..491faa35c1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -61,7 +61,7 @@ criterion = "0.4" codec = { package = "parity-scale-codec", version = "3.6.9", default-features = false } color-eyre = "0.6.1" console_error_panic_hook = "0.1.7" -darling = "0.20.5" +darling = "0.20.8" derivative = "2.2.0" derive_more = "0.99.17" either = "1.10.0" From 1aa528b9281149047e8b52a260d7931f4810ac66 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Feb 2024 10:15:54 +0100 Subject: [PATCH 31/66] build(deps): bump jsonrpsee from 0.22.0 to 0.22.1 (#1451) * build(deps): bump jsonrpsee from 0.22.0 to 0.22.1 Bumps [jsonrpsee](https://github.com/paritytech/jsonrpsee) from 0.22.0 to 0.22.1. - [Release notes](https://github.com/paritytech/jsonrpsee/releases) - [Changelog](https://github.com/paritytech/jsonrpsee/blob/master/CHANGELOG.md) - [Commits](https://github.com/paritytech/jsonrpsee/compare/v0.22.0...v0.22.1) --- updated-dependencies: - dependency-name: jsonrpsee dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Update Cargo.lock --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Niklas Adolfsson --- Cargo.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a040af2e53..403182a814 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2323,9 +2323,9 @@ dependencies = [ [[package]] name = "jsonrpsee" -version = "0.22.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a95f7cc23d5fab0cdeeaf6bad8c8f5e7a3aa7f0d211957ea78232b327ab27b0" +checksum = "16fcc9dd231e72d22993f1643d5f7f0db785737dbe3c3d7ca222916ab4280795" dependencies = [ "jsonrpsee-client-transport", "jsonrpsee-core", @@ -2336,9 +2336,9 @@ dependencies = [ [[package]] name = "jsonrpsee-client-transport" -version = "0.22.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b1736cfa3845fd9f8f43751f2b8e0e83f7b6081e754502f7d63b6587692cc83" +checksum = "0476c96eb741b40d39dcb39d0124e3b9be9840ec77653c42a0996563ae2a53f7" dependencies = [ "futures-channel", "futures-util", @@ -2359,9 +2359,9 @@ dependencies = [ [[package]] name = "jsonrpsee-core" -version = "0.22.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82030d038658974732103e623ba2e0abec03bbbe175b39c0a2fafbada60c5868" +checksum = "b974d8f6139efbe8425f32cb33302aba6d5e049556b5bfc067874e7a0da54a2e" dependencies = [ "anyhow", "async-lock 3.3.0", @@ -2384,9 +2384,9 @@ dependencies = [ [[package]] name = "jsonrpsee-http-client" -version = "0.22.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36a06ef0de060005fddf772d54597bb6a8b0413da47dcffd304b0306147b9678" +checksum = "19dc795a277cff37f27173b3ca790d042afcc0372c34a7ca068d2e76de2cb6d1" dependencies = [ "async-trait", "hyper", @@ -2404,9 +2404,9 @@ dependencies = [ [[package]] name = "jsonrpsee-types" -version = "0.22.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a48fdc1202eafc51c63e00406575e59493284ace8b8b61aa16f3a6db5d64f1a" +checksum = "b13dac43c1a9fc2648b37f306b0a5b0e29b2a6e1c36a33b95c1948da2494e9c5" dependencies = [ "anyhow", "beef", @@ -2417,9 +2417,9 @@ dependencies = [ [[package]] name = "jsonrpsee-ws-client" -version = "0.22.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5ce25d70a8e4d3cc574bbc3cad0137c326ad64b194793d5e7bbdd3fa4504181" +checksum = "b1bbaaf4ce912654081d997ade417c3155727db106c617c0612e85f504c2f744" dependencies = [ "http", "jsonrpsee-client-transport", From 60c03acfc02a01bea3034713c4dd1343a1ed01f3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Feb 2024 10:35:30 +0100 Subject: [PATCH 32/66] build(deps): bump serde_json from 1.0.113 to 1.0.114 (#1448) Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.113 to 1.0.114. - [Release notes](https://github.com/serde-rs/json/releases) - [Commits](https://github.com/serde-rs/json/compare/v1.0.113...v1.0.114) --- updated-dependencies: - dependency-name: serde_json dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 403182a814..502183c315 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3783,9 +3783,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.113" +version = "1.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79" +checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" dependencies = [ "itoa", "ryu", diff --git a/Cargo.toml b/Cargo.toml index 491faa35c1..d7165f0dfc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -86,7 +86,7 @@ scale-bits = "0.4.0" scale-decode = "0.10.0" scale-encode = "0.5.0" serde = { version = "1.0.197" } -serde_json = { version = "1.0.113" } +serde_json = { version = "1.0.114" } syn = { version = "2.0.15", features = ["full", "extra-traits"] } thiserror = "1.0.57" tokio = { version = "1.36", default-features = false } From 08ae4059d8697492bd5ace8e26dee516d57161c2 Mon Sep 17 00:00:00 2001 From: "paritytech-subxt-pr-maker[bot]" <159533160+paritytech-subxt-pr-maker[bot]@users.noreply.github.com> Date: Mon, 26 Feb 2024 11:28:46 +0000 Subject: [PATCH 33/66] Update Artifacts (auto-generated) (#1446) Co-authored-by: tadeohepperle <62739623+tadeohepperle@users.noreply.github.com> --- artifacts/demo_chain_specs/polkadot.json | 8 ++++---- artifacts/polkadot_metadata_full.scale | Bin 307427 -> 307633 bytes artifacts/polkadot_metadata_small.scale | Bin 60878 -> 61025 bytes .../src/full_client/codegen/polkadot.rs | 15 ++++++++++++--- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/artifacts/demo_chain_specs/polkadot.json b/artifacts/demo_chain_specs/polkadot.json index dc940872f8..a24aa92599 100644 --- a/artifacts/demo_chain_specs/polkadot.json +++ b/artifacts/demo_chain_specs/polkadot.json @@ -43,10 +43,10 @@ }, "id": "polkadot", "lightSyncState": { - "babeEpochChanges": "0x04995381799ad725dd04df5a54aee81b43626c9b4cc71e43ac66440a3144b19484a8282a0101b364f81000000000136ef8100000000004af3a2ca5fca5faa3e24ad90dc0e72f18b31d593041ba8725d7944f9b97a2d9e6fa312a0101136ef810000000007377f8100000000004ceef46c2f6f08d7febe450462a46089eccf95877e1ed9578287f37d1765e4c064c3b2a01017377f81000000000d380f8100000000000000c995381799ad725dd04df5a54aee81b43626c9b4cc71e43ac66440a3144b19484a8282a0101f31f000000000000b364f810000000006009000000000000a50474a0fc84f72a4a9b8493379b7dfc59ca58a261a2e94997600d14b6b444c1475901000000000000009c40155989f6072e82caba245d7db7e40a60f866b403257976b89aba6be2b55b01000000000000007067d4c5b492b11e2052a2bb0b4f729a52b3667afbca7dfefa863011254b5272010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec214541750100000000000000e440d6dc33f6c397d85ba83f2af092ade566bf4e8ade407f7591f5743269496801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000e84529a1a5d90df032f8a38981b1e973b2551ffd11eba49d54e27849970847320100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000000c78c9dfc0033ff87657c56b7ab8cec4d1249be2de18729f743f385343af0f16010000000000000098a8b739daa9d10a8bcdc0ff71f1635d4aa68fbb50a33ee02af8f25620480672010000000000000056c549bf4c37317d15a9bb5414226e0bf44a396787a28289b84ac80e6ae42b070100000000000000002e496e564f088a075525d2f9155aadd1a7eb017fa36f9e16096e9db7e169330100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a9350100000000000000864e446469db39b6322afe9d248d17936b811eeca193b73391e50afd3874f53d0100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b010000000000000024d917b35ee19a72512caea1dbf92fa75f5ac2c247c4a0184d330f477c750543010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000d8f30bc2ee88e69f60d0278998414c80f4a130b8e1738e873bcd14ef31e58d36010000000000000042e377034ce6b2a582bfd66c465252ab10ce790e4f0d3bbe99a42ff86b29965c01000000000000007e91ca522b14cbb71b45348c699b7d65c3198516ee771079b672ee3d7cfc577501000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b74010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc19010000000000000012a64d79e44f1adb33c85c4f2bdfcd8d8b38a34d984604f39289c9a7624a442d0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a670100000000000000e297620b731b4958e3c6aa06611c6aa5a45f7e116362d64954a0a330d2a98f330100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000000e5e5f8e89cd8d58ef83abddd3d1c2079691dec4f6965af70436e84411c31f3901000000000000007c21799f6143fa837a8c18bebe3368d60f4e009b114f61490b54e6344034040d01000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000003886794c2e8881e111832b7d8922d03878611212e2a030d8efd97f68debe0b3c01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf71010000000000000056a86c7c8b52fbb0c57ba6822a26663d81447dc850ebdea70aa7e6f2ea18191501000000000000005a63824687de4f60534ee18a430396b95263f75a077655c751bc2045ca2ec84d010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000c665d82a27136f294df943ffa86053c5aefeca16630abc81c12943e1aebcec3401000000000000007c3526dc5579f1ef841101b573c655c20f4346fa4a6b0b6ed773d147c3ad6d7f0100000000000000ee579514d7f544fc9fb8d6383ed7d109ee98a411bb4b0b45b9354b0f73fed9720100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf080100000000000000be03fe6bc03a7884524047567a8ccf43b3c988bf3b447ca9e1520d1c1f83c539010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b0100000000000000c0e36251f9ce24d6fe429ecf14bc9599285e3e27c0a541d5ac0ad1902d7ad6140100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a01000000000000005620922a6765fd47abc96615ef5b8b8575f18aaf8507f6afb86129bc1080994f0100000000000000b4b145ce385b4a3d83f2daac46a61874f80e58c468dd624acc09a558be02c27d0100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b0100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d8708132010000000000000080413d2894759b53a03874bf96ffcb66117e4a08ad7f159c008f2b3b6cfcbb470100000000000000ea885fca10a9473631bcca2549cb8183beef534a7ee2bd59a0a6f74d97bcfc4401000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000902741c83009936926e687f91a203fc2bb0dea691895ef4dfd1d85d86f408c7c010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a796260100000000000000344589372873125fd660e2ff3ad9bf67230f9306acccaea070aed322a8ede264010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d030100000000000000584bf60b8b17ddaf70f87f371bd2b425a3637e05c1b75469f45ea85717063b6901000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d01000000000000006290bc648574567004b9f3f38ffc603afc0a21cc06269973d83680fe7901cb46010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e01000000000000000ea183680db6337b592f7eb5e9112295d101bbd140b6064d6a662a93d13202000100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b35150100000000000000800dd25a7aea3fd7359065185cb35b4a2fad0b81b3d58de638e6764dc8a8211d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000402a67126cd160c84edcb39374164f3a39aec59ae72cb66dd9fbd1e9891aa27c010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb1901000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd555801000000000000001682c3264fc0b2a36eff3a5864cdacfe726bf5972ca8f4c5cad6f18bd450d23e0100000000000000d412fb5e47b946e69918a6391ac30283949ba6d99c491d78fc5014aaa2144b590100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f610010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f010000000000000002c497e44d340eb4c25e391c73ebca3f2d1db9cdb49d4d3931982c92f272f81e0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f845010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000de5f9f5ad3209502cf429630c2038b8818b6f8ce5685c2730077349802c5792501000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f49533301000000000000006a1df1975c898abb890c01d2ccadc385686763dfd0579ca4e1f9414dff2ff34a0100000000000000720f2d15df84bce88952ed5ef420026c3051564205d28656bfefaf409d6f2143010000000000000026f2af62a2f0d847e3d2cccc93ec7f98c80a7b6d1bcca4cf1c4a6fc7f81775010100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d7101000000000000009c576fccaf2ffb4885a0ac8ed7ba0b80ee5fd060856fb9f80bdd3219e5d7800d01000000000000000c73fd83ff0d798ecd6be0518e340dd60c45bdd386c95236ad1db6b1572f1c7d010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000000481a58bfdafecabbc96bd170a0ec04cc35100f1f928cca3ecc63b3639e4767901000000000000002ad2d3d36a65c94716ef3476cc46e1b7122c57099316666bf37cc43dbbede0130100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000f47eaf66306fc6abafa76545f64ea76f8d81cc73176fdc45f5cc53ba0fe3fb5a0100000000000000beaefc5aaea6af4e03d3720194f65f93f34a6a26d32fd92e82cfc2acc435742a0100000000000000dac9ac99a034e57ae0f558ad981c1b12243c08cb140c483ba5dce6878ddab74d0100000000000000e4be18b8f5905bc41fe3cba2e5350d405e76036328042ae7edfbb6b6a9b43d5a01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d410100000000000000ea42174ceb9d19ac5193b4bb3a782c30a58c8fbad637a2e4a4c56882bc9d197301000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b14020100000000000000507e2aa1a2409b289b89c80f7ccb129e91a32e8d44c98723f8a97307f54a2d0601000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000078d986932e680d7bebce126a5aedae3e11ba0f4e28c03d63a491e8bcbd05ad220100000000000000502c19c77976b8cb0c47b08cd465a75bd7d25734fac0048342c697501533ee210100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca220100000000000000e6e897a3011883adfe5d7c58e45c769c806277a5d8bb7aa36e232297b747b04f0100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d465010000000000000044c47763e8f2f1675b480c01304c4da58c8d276b5ecee722e45d17afdc3d391d01000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d0100000000000000fc53d15453457faadc5540c5853f54324eec395d3647fbf99d5e6e97ef38767601000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e2529010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c0100000000000000b0ea32e1e54060b19356417c368904beb28332bd3180f76a009a7a6edc8a0d4a010000000000000096a550a5b080ba4f333c58a9f4113a664c6e335dfdbfa227bb6f4808351c045b0100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da720100000000000000005330f74dbf024dccb42c34e008d84a5d5d8ee33603029b4176ad6579bc504f0100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa529010000000000000060868aebd495f442d029a4a0eeab5285bf7ccc82988417429030dfeb4080fe34010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f010000000000000050f5f5863f99e896975813fda8768c72ff25fb54e25385a4263d1ff9a191525001000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f5259050100000000000000540926fefa2d0424fd451bfca39a01c0e1a3fc811406e127d1dbfdc6cf9e9770010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e85290100000000000000727c079c499f0ce88218e4cbaf1c4013bb81d6edf19e1cc9b540465e486ea13a01000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c321010000000000000064615e1323ea003b7c5a63ba2c8bed2023103458eeee7cf45244580d3ca59b6a01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000048afb25f7981cc67a66853ec05675d83a2d99e6318a6a7a135ed2916cb70a26e010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac56101000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000f6f94569aba4acba85b7745a91caaac8a89c95469cf2b9813891eeb94327937b010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a01000000000000000e99696f88e19e20d306ad6f8afb760f16c34a1e7bfe6cd70848e2d55cd2463401000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000645077cf303943059891df150649d1d828052ea4249bf50ca3b6d29c6ef1984c010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000f2060145fed18a41469c808b9c9f489ab28bdd327529621512b7077add309d1e010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e7993300100000000000000ea03f9dc29ae9b7a053c12b6079664592d2cf46a30b43edbb2d2d980223deb11010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe83233001000000000000003c8330f5d7f34fbec333663bab066cbac4403f892df7659b1c118c185c4f16220100000000000000b20050395fc81aa60508e362f02c75faebe3e4909c7a23721182ce791bb701130100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d69010000000000000068147c36d367eb1a203b303c65ab3d32fe777cabbca8d39e08ffcfd624b3614d0100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f0100000000000000d80eba00fd45442e9305434d637564baed7a12136c89734e4ca850db419f0c3a0100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa350201000000000000004c0a2fe2297b3beb4e005b9f3d2dfb6cda9bf21a1157b6c6aacc3eddf2d16d0801000000000000006638aad1c437c5f2f2ab4c46b786db51bb8c7e6af2ee745934811712f8d83e0601000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f0768520100000000000000ca7ce51fff68e7aac4514e9ddc6541c029960c4c1a042b2e8d8c613d3ec8f6410100000000000000c88d83d7927e1c1dff61de6b8321ee64746d983173bfb3a03c3d4789ae3f20270100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc240100000000000000102ed4107066f497e13d3c484a9fa60e506587e19541069dd4555a91d63f27040100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000003afb6b0dac3a05453f125943b8a26269202d297b991e054ca851fa68bb4c085301000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e460100000000000000c42b0534d5a51a37eb02dcbbc4bb6a1f37d340d96f035c3d630cbd207c4be20001000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c286746010000000000000046b14e55053a02087c957664d32fdcae6ba1c96051239191c63df564d784e1720100000000000000648254fe31a89615b5ae4e90ad8370236f366ef2288b262ffac131b0c78e936501000000000000005cf9e506e47672dd81188ac6eb1f4663ef21002e3b99689c772a21d52cdae553010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f01000000000000000a5b9f5821eb0a1fc7cde6134a5fc5c76c99837cdd87293066cf23a080e456490100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000da3c1c97320819739a3f7175d4ecdf33be2dd8935f49efb716ad6c0722b0441a0100000000000000b85b1b7b8ed510a5bc1d0979fdc04ec7b73d84c7d1d767dafb6faccc8dfd402c010000000000000038ab6c4b18e1c86176cf53301ea990f1cdddcdc3f2c3e0f8dde126fa59f60b2f01000000000000009c4d874baeccbb19733cf93f6ffb2f44d9b9f5191ead84f3550c7b767a75061f0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a1843220100000000000000c76e13dcd9021c51debc60215d54d7a1ed1066b27967974d3f2b987155081d080100000000000000040000000000000002af3a2ca5fca5faa3e24ad90dc0e72f18b31d593041ba8725d7944f9b97a2d9e6fa312a0101f41f000000000000136ef810000000006009000000000000a50474a0fc84f72a4a9b8493379b7dfc59ca58a261a2e94997600d14b6b444c1475901000000000000009c40155989f6072e82caba245d7db7e40a60f866b403257976b89aba6be2b55b01000000000000007067d4c5b492b11e2052a2bb0b4f729a52b3667afbca7dfefa863011254b5272010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec214541750100000000000000e440d6dc33f6c397d85ba83f2af092ade566bf4e8ade407f7591f5743269496801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000e84529a1a5d90df032f8a38981b1e973b2551ffd11eba49d54e27849970847320100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000000c78c9dfc0033ff87657c56b7ab8cec4d1249be2de18729f743f385343af0f16010000000000000098a8b739daa9d10a8bcdc0ff71f1635d4aa68fbb50a33ee02af8f25620480672010000000000000056c549bf4c37317d15a9bb5414226e0bf44a396787a28289b84ac80e6ae42b070100000000000000002e496e564f088a075525d2f9155aadd1a7eb017fa36f9e16096e9db7e169330100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a9350100000000000000864e446469db39b6322afe9d248d17936b811eeca193b73391e50afd3874f53d0100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b010000000000000024d917b35ee19a72512caea1dbf92fa75f5ac2c247c4a0184d330f477c750543010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000d8f30bc2ee88e69f60d0278998414c80f4a130b8e1738e873bcd14ef31e58d36010000000000000042e377034ce6b2a582bfd66c465252ab10ce790e4f0d3bbe99a42ff86b29965c01000000000000007e91ca522b14cbb71b45348c699b7d65c3198516ee771079b672ee3d7cfc577501000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b74010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc19010000000000000012a64d79e44f1adb33c85c4f2bdfcd8d8b38a34d984604f39289c9a7624a442d0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a670100000000000000e297620b731b4958e3c6aa06611c6aa5a45f7e116362d64954a0a330d2a98f330100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000000e5e5f8e89cd8d58ef83abddd3d1c2079691dec4f6965af70436e84411c31f3901000000000000007c21799f6143fa837a8c18bebe3368d60f4e009b114f61490b54e6344034040d01000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000003886794c2e8881e111832b7d8922d03878611212e2a030d8efd97f68debe0b3c01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf71010000000000000056a86c7c8b52fbb0c57ba6822a26663d81447dc850ebdea70aa7e6f2ea18191501000000000000005a63824687de4f60534ee18a430396b95263f75a077655c751bc2045ca2ec84d010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000c665d82a27136f294df943ffa86053c5aefeca16630abc81c12943e1aebcec3401000000000000007c3526dc5579f1ef841101b573c655c20f4346fa4a6b0b6ed773d147c3ad6d7f0100000000000000ee579514d7f544fc9fb8d6383ed7d109ee98a411bb4b0b45b9354b0f73fed9720100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf080100000000000000be03fe6bc03a7884524047567a8ccf43b3c988bf3b447ca9e1520d1c1f83c539010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b0100000000000000c0e36251f9ce24d6fe429ecf14bc9599285e3e27c0a541d5ac0ad1902d7ad6140100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a01000000000000005620922a6765fd47abc96615ef5b8b8575f18aaf8507f6afb86129bc1080994f0100000000000000b4b145ce385b4a3d83f2daac46a61874f80e58c468dd624acc09a558be02c27d0100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b0100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d8708132010000000000000080413d2894759b53a03874bf96ffcb66117e4a08ad7f159c008f2b3b6cfcbb470100000000000000ea885fca10a9473631bcca2549cb8183beef534a7ee2bd59a0a6f74d97bcfc4401000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000902741c83009936926e687f91a203fc2bb0dea691895ef4dfd1d85d86f408c7c010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a796260100000000000000344589372873125fd660e2ff3ad9bf67230f9306acccaea070aed322a8ede264010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d030100000000000000584bf60b8b17ddaf70f87f371bd2b425a3637e05c1b75469f45ea85717063b6901000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d01000000000000006290bc648574567004b9f3f38ffc603afc0a21cc06269973d83680fe7901cb46010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e01000000000000000ea183680db6337b592f7eb5e9112295d101bbd140b6064d6a662a93d13202000100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b35150100000000000000800dd25a7aea3fd7359065185cb35b4a2fad0b81b3d58de638e6764dc8a8211d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000402a67126cd160c84edcb39374164f3a39aec59ae72cb66dd9fbd1e9891aa27c010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb1901000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd555801000000000000001682c3264fc0b2a36eff3a5864cdacfe726bf5972ca8f4c5cad6f18bd450d23e0100000000000000d412fb5e47b946e69918a6391ac30283949ba6d99c491d78fc5014aaa2144b590100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f610010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f010000000000000002c497e44d340eb4c25e391c73ebca3f2d1db9cdb49d4d3931982c92f272f81e0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f845010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000de5f9f5ad3209502cf429630c2038b8818b6f8ce5685c2730077349802c5792501000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f49533301000000000000006a1df1975c898abb890c01d2ccadc385686763dfd0579ca4e1f9414dff2ff34a0100000000000000720f2d15df84bce88952ed5ef420026c3051564205d28656bfefaf409d6f2143010000000000000026f2af62a2f0d847e3d2cccc93ec7f98c80a7b6d1bcca4cf1c4a6fc7f81775010100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d7101000000000000009c576fccaf2ffb4885a0ac8ed7ba0b80ee5fd060856fb9f80bdd3219e5d7800d01000000000000000c73fd83ff0d798ecd6be0518e340dd60c45bdd386c95236ad1db6b1572f1c7d010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000000481a58bfdafecabbc96bd170a0ec04cc35100f1f928cca3ecc63b3639e4767901000000000000002ad2d3d36a65c94716ef3476cc46e1b7122c57099316666bf37cc43dbbede0130100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000f47eaf66306fc6abafa76545f64ea76f8d81cc73176fdc45f5cc53ba0fe3fb5a0100000000000000beaefc5aaea6af4e03d3720194f65f93f34a6a26d32fd92e82cfc2acc435742a0100000000000000dac9ac99a034e57ae0f558ad981c1b12243c08cb140c483ba5dce6878ddab74d0100000000000000e4be18b8f5905bc41fe3cba2e5350d405e76036328042ae7edfbb6b6a9b43d5a01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d410100000000000000ea42174ceb9d19ac5193b4bb3a782c30a58c8fbad637a2e4a4c56882bc9d197301000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b14020100000000000000507e2aa1a2409b289b89c80f7ccb129e91a32e8d44c98723f8a97307f54a2d0601000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000078d986932e680d7bebce126a5aedae3e11ba0f4e28c03d63a491e8bcbd05ad220100000000000000502c19c77976b8cb0c47b08cd465a75bd7d25734fac0048342c697501533ee210100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca220100000000000000e6e897a3011883adfe5d7c58e45c769c806277a5d8bb7aa36e232297b747b04f0100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d465010000000000000044c47763e8f2f1675b480c01304c4da58c8d276b5ecee722e45d17afdc3d391d01000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d0100000000000000fc53d15453457faadc5540c5853f54324eec395d3647fbf99d5e6e97ef38767601000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e2529010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c0100000000000000b0ea32e1e54060b19356417c368904beb28332bd3180f76a009a7a6edc8a0d4a010000000000000096a550a5b080ba4f333c58a9f4113a664c6e335dfdbfa227bb6f4808351c045b0100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da720100000000000000005330f74dbf024dccb42c34e008d84a5d5d8ee33603029b4176ad6579bc504f0100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa529010000000000000060868aebd495f442d029a4a0eeab5285bf7ccc82988417429030dfeb4080fe34010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f010000000000000050f5f5863f99e896975813fda8768c72ff25fb54e25385a4263d1ff9a191525001000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f5259050100000000000000540926fefa2d0424fd451bfca39a01c0e1a3fc811406e127d1dbfdc6cf9e9770010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e85290100000000000000727c079c499f0ce88218e4cbaf1c4013bb81d6edf19e1cc9b540465e486ea13a01000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c321010000000000000064615e1323ea003b7c5a63ba2c8bed2023103458eeee7cf45244580d3ca59b6a01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000048afb25f7981cc67a66853ec05675d83a2d99e6318a6a7a135ed2916cb70a26e010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac56101000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000f6f94569aba4acba85b7745a91caaac8a89c95469cf2b9813891eeb94327937b010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a01000000000000000e99696f88e19e20d306ad6f8afb760f16c34a1e7bfe6cd70848e2d55cd2463401000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000645077cf303943059891df150649d1d828052ea4249bf50ca3b6d29c6ef1984c010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000f2060145fed18a41469c808b9c9f489ab28bdd327529621512b7077add309d1e010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e7993300100000000000000ea03f9dc29ae9b7a053c12b6079664592d2cf46a30b43edbb2d2d980223deb11010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe83233001000000000000003c8330f5d7f34fbec333663bab066cbac4403f892df7659b1c118c185c4f16220100000000000000b20050395fc81aa60508e362f02c75faebe3e4909c7a23721182ce791bb701130100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d69010000000000000068147c36d367eb1a203b303c65ab3d32fe777cabbca8d39e08ffcfd624b3614d0100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f0100000000000000d80eba00fd45442e9305434d637564baed7a12136c89734e4ca850db419f0c3a0100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa350201000000000000004c0a2fe2297b3beb4e005b9f3d2dfb6cda9bf21a1157b6c6aacc3eddf2d16d0801000000000000006638aad1c437c5f2f2ab4c46b786db51bb8c7e6af2ee745934811712f8d83e0601000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f0768520100000000000000ca7ce51fff68e7aac4514e9ddc6541c029960c4c1a042b2e8d8c613d3ec8f6410100000000000000c88d83d7927e1c1dff61de6b8321ee64746d983173bfb3a03c3d4789ae3f20270100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc240100000000000000102ed4107066f497e13d3c484a9fa60e506587e19541069dd4555a91d63f27040100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000003afb6b0dac3a05453f125943b8a26269202d297b991e054ca851fa68bb4c085301000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e460100000000000000c42b0534d5a51a37eb02dcbbc4bb6a1f37d340d96f035c3d630cbd207c4be20001000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c286746010000000000000046b14e55053a02087c957664d32fdcae6ba1c96051239191c63df564d784e1720100000000000000648254fe31a89615b5ae4e90ad8370236f366ef2288b262ffac131b0c78e936501000000000000005cf9e506e47672dd81188ac6eb1f4663ef21002e3b99689c772a21d52cdae553010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f01000000000000000a5b9f5821eb0a1fc7cde6134a5fc5c76c99837cdd87293066cf23a080e456490100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000da3c1c97320819739a3f7175d4ecdf33be2dd8935f49efb716ad6c0722b0441a0100000000000000b85b1b7b8ed510a5bc1d0979fdc04ec7b73d84c7d1d767dafb6faccc8dfd402c010000000000000038ab6c4b18e1c86176cf53301ea990f1cdddcdc3f2c3e0f8dde126fa59f60b2f01000000000000009c4d874baeccbb19733cf93f6ffb2f44d9b9f5191ead84f3550c7b767a75061f0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a184322010000000000000064b1fdc1d65cf0b9514694eafb3f98dcf663039834880d80cd20f1fa5d9df0a10100000000000000040000000000000002ceef46c2f6f08d7febe450462a46089eccf95877e1ed9578287f37d1765e4c064c3b2a0101f51f0000000000007377f810000000006009000000000000a50474a0fc84f72a4a9b8493379b7dfc59ca58a261a2e94997600d14b6b444c1475901000000000000009c40155989f6072e82caba245d7db7e40a60f866b403257976b89aba6be2b55b01000000000000007067d4c5b492b11e2052a2bb0b4f729a52b3667afbca7dfefa863011254b5272010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec214541750100000000000000e440d6dc33f6c397d85ba83f2af092ade566bf4e8ade407f7591f5743269496801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000e84529a1a5d90df032f8a38981b1e973b2551ffd11eba49d54e27849970847320100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000000c78c9dfc0033ff87657c56b7ab8cec4d1249be2de18729f743f385343af0f16010000000000000098a8b739daa9d10a8bcdc0ff71f1635d4aa68fbb50a33ee02af8f25620480672010000000000000056c549bf4c37317d15a9bb5414226e0bf44a396787a28289b84ac80e6ae42b070100000000000000002e496e564f088a075525d2f9155aadd1a7eb017fa36f9e16096e9db7e169330100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a9350100000000000000864e446469db39b6322afe9d248d17936b811eeca193b73391e50afd3874f53d0100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b010000000000000024d917b35ee19a72512caea1dbf92fa75f5ac2c247c4a0184d330f477c750543010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000d8f30bc2ee88e69f60d0278998414c80f4a130b8e1738e873bcd14ef31e58d36010000000000000042e377034ce6b2a582bfd66c465252ab10ce790e4f0d3bbe99a42ff86b29965c01000000000000007e91ca522b14cbb71b45348c699b7d65c3198516ee771079b672ee3d7cfc577501000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b74010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc19010000000000000012a64d79e44f1adb33c85c4f2bdfcd8d8b38a34d984604f39289c9a7624a442d0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a670100000000000000e297620b731b4958e3c6aa06611c6aa5a45f7e116362d64954a0a330d2a98f330100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000000e5e5f8e89cd8d58ef83abddd3d1c2079691dec4f6965af70436e84411c31f3901000000000000007c21799f6143fa837a8c18bebe3368d60f4e009b114f61490b54e6344034040d01000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000003886794c2e8881e111832b7d8922d03878611212e2a030d8efd97f68debe0b3c01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf71010000000000000056a86c7c8b52fbb0c57ba6822a26663d81447dc850ebdea70aa7e6f2ea18191501000000000000005a63824687de4f60534ee18a430396b95263f75a077655c751bc2045ca2ec84d010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000c665d82a27136f294df943ffa86053c5aefeca16630abc81c12943e1aebcec3401000000000000007c3526dc5579f1ef841101b573c655c20f4346fa4a6b0b6ed773d147c3ad6d7f0100000000000000ee579514d7f544fc9fb8d6383ed7d109ee98a411bb4b0b45b9354b0f73fed9720100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf080100000000000000be03fe6bc03a7884524047567a8ccf43b3c988bf3b447ca9e1520d1c1f83c539010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b0100000000000000c0e36251f9ce24d6fe429ecf14bc9599285e3e27c0a541d5ac0ad1902d7ad6140100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a01000000000000005620922a6765fd47abc96615ef5b8b8575f18aaf8507f6afb86129bc1080994f0100000000000000b4b145ce385b4a3d83f2daac46a61874f80e58c468dd624acc09a558be02c27d0100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b0100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d8708132010000000000000080413d2894759b53a03874bf96ffcb66117e4a08ad7f159c008f2b3b6cfcbb470100000000000000ea885fca10a9473631bcca2549cb8183beef534a7ee2bd59a0a6f74d97bcfc4401000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000902741c83009936926e687f91a203fc2bb0dea691895ef4dfd1d85d86f408c7c010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a796260100000000000000344589372873125fd660e2ff3ad9bf67230f9306acccaea070aed322a8ede264010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d030100000000000000584bf60b8b17ddaf70f87f371bd2b425a3637e05c1b75469f45ea85717063b6901000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d01000000000000006290bc648574567004b9f3f38ffc603afc0a21cc06269973d83680fe7901cb46010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e01000000000000000ea183680db6337b592f7eb5e9112295d101bbd140b6064d6a662a93d13202000100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b35150100000000000000800dd25a7aea3fd7359065185cb35b4a2fad0b81b3d58de638e6764dc8a8211d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000402a67126cd160c84edcb39374164f3a39aec59ae72cb66dd9fbd1e9891aa27c010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb1901000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd555801000000000000001682c3264fc0b2a36eff3a5864cdacfe726bf5972ca8f4c5cad6f18bd450d23e0100000000000000d412fb5e47b946e69918a6391ac30283949ba6d99c491d78fc5014aaa2144b590100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f610010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f010000000000000002c497e44d340eb4c25e391c73ebca3f2d1db9cdb49d4d3931982c92f272f81e0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f845010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000de5f9f5ad3209502cf429630c2038b8818b6f8ce5685c2730077349802c5792501000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f49533301000000000000006a1df1975c898abb890c01d2ccadc385686763dfd0579ca4e1f9414dff2ff34a0100000000000000720f2d15df84bce88952ed5ef420026c3051564205d28656bfefaf409d6f2143010000000000000026f2af62a2f0d847e3d2cccc93ec7f98c80a7b6d1bcca4cf1c4a6fc7f81775010100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d7101000000000000009c576fccaf2ffb4885a0ac8ed7ba0b80ee5fd060856fb9f80bdd3219e5d7800d01000000000000000c73fd83ff0d798ecd6be0518e340dd60c45bdd386c95236ad1db6b1572f1c7d010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000000481a58bfdafecabbc96bd170a0ec04cc35100f1f928cca3ecc63b3639e4767901000000000000002ad2d3d36a65c94716ef3476cc46e1b7122c57099316666bf37cc43dbbede0130100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000f47eaf66306fc6abafa76545f64ea76f8d81cc73176fdc45f5cc53ba0fe3fb5a0100000000000000beaefc5aaea6af4e03d3720194f65f93f34a6a26d32fd92e82cfc2acc435742a0100000000000000dac9ac99a034e57ae0f558ad981c1b12243c08cb140c483ba5dce6878ddab74d0100000000000000e4be18b8f5905bc41fe3cba2e5350d405e76036328042ae7edfbb6b6a9b43d5a01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d410100000000000000ea42174ceb9d19ac5193b4bb3a782c30a58c8fbad637a2e4a4c56882bc9d197301000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b14020100000000000000507e2aa1a2409b289b89c80f7ccb129e91a32e8d44c98723f8a97307f54a2d0601000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000078d986932e680d7bebce126a5aedae3e11ba0f4e28c03d63a491e8bcbd05ad220100000000000000502c19c77976b8cb0c47b08cd465a75bd7d25734fac0048342c697501533ee210100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca220100000000000000e6e897a3011883adfe5d7c58e45c769c806277a5d8bb7aa36e232297b747b04f0100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d465010000000000000044c47763e8f2f1675b480c01304c4da58c8d276b5ecee722e45d17afdc3d391d01000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d0100000000000000fc53d15453457faadc5540c5853f54324eec395d3647fbf99d5e6e97ef38767601000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e2529010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c0100000000000000b0ea32e1e54060b19356417c368904beb28332bd3180f76a009a7a6edc8a0d4a010000000000000096a550a5b080ba4f333c58a9f4113a664c6e335dfdbfa227bb6f4808351c045b0100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da720100000000000000005330f74dbf024dccb42c34e008d84a5d5d8ee33603029b4176ad6579bc504f0100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa529010000000000000060868aebd495f442d029a4a0eeab5285bf7ccc82988417429030dfeb4080fe34010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f010000000000000050f5f5863f99e896975813fda8768c72ff25fb54e25385a4263d1ff9a191525001000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f5259050100000000000000540926fefa2d0424fd451bfca39a01c0e1a3fc811406e127d1dbfdc6cf9e9770010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e85290100000000000000727c079c499f0ce88218e4cbaf1c4013bb81d6edf19e1cc9b540465e486ea13a01000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c321010000000000000064615e1323ea003b7c5a63ba2c8bed2023103458eeee7cf45244580d3ca59b6a01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000048afb25f7981cc67a66853ec05675d83a2d99e6318a6a7a135ed2916cb70a26e010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac56101000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000f6f94569aba4acba85b7745a91caaac8a89c95469cf2b9813891eeb94327937b010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a01000000000000000e99696f88e19e20d306ad6f8afb760f16c34a1e7bfe6cd70848e2d55cd2463401000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000645077cf303943059891df150649d1d828052ea4249bf50ca3b6d29c6ef1984c010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000f2060145fed18a41469c808b9c9f489ab28bdd327529621512b7077add309d1e010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e7993300100000000000000ea03f9dc29ae9b7a053c12b6079664592d2cf46a30b43edbb2d2d980223deb11010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe83233001000000000000003c8330f5d7f34fbec333663bab066cbac4403f892df7659b1c118c185c4f16220100000000000000b20050395fc81aa60508e362f02c75faebe3e4909c7a23721182ce791bb701130100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d69010000000000000068147c36d367eb1a203b303c65ab3d32fe777cabbca8d39e08ffcfd624b3614d0100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f0100000000000000d80eba00fd45442e9305434d637564baed7a12136c89734e4ca850db419f0c3a0100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa350201000000000000004c0a2fe2297b3beb4e005b9f3d2dfb6cda9bf21a1157b6c6aacc3eddf2d16d0801000000000000006638aad1c437c5f2f2ab4c46b786db51bb8c7e6af2ee745934811712f8d83e0601000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f0768520100000000000000ca7ce51fff68e7aac4514e9ddc6541c029960c4c1a042b2e8d8c613d3ec8f6410100000000000000c88d83d7927e1c1dff61de6b8321ee64746d983173bfb3a03c3d4789ae3f20270100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc240100000000000000102ed4107066f497e13d3c484a9fa60e506587e19541069dd4555a91d63f27040100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000003afb6b0dac3a05453f125943b8a26269202d297b991e054ca851fa68bb4c085301000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e460100000000000000c42b0534d5a51a37eb02dcbbc4bb6a1f37d340d96f035c3d630cbd207c4be20001000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c286746010000000000000046b14e55053a02087c957664d32fdcae6ba1c96051239191c63df564d784e1720100000000000000648254fe31a89615b5ae4e90ad8370236f366ef2288b262ffac131b0c78e936501000000000000005cf9e506e47672dd81188ac6eb1f4663ef21002e3b99689c772a21d52cdae553010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f01000000000000000a5b9f5821eb0a1fc7cde6134a5fc5c76c99837cdd87293066cf23a080e456490100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000da3c1c97320819739a3f7175d4ecdf33be2dd8935f49efb716ad6c0722b0441a0100000000000000b85b1b7b8ed510a5bc1d0979fdc04ec7b73d84c7d1d767dafb6faccc8dfd402c010000000000000038ab6c4b18e1c86176cf53301ea990f1cdddcdc3f2c3e0f8dde126fa59f60b2f01000000000000009c4d874baeccbb19733cf93f6ffb2f44d9b9f5191ead84f3550c7b767a75061f0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a1843220100000000000000c95e605f993b9210a1df1a40e7c1d4844bd4a3759f243562890a353a262331410100000000000000040000000000000002", - "babeFinalizedBlockWeight": 4880043, - "finalizedBlockHeader": "0x0544895548b38749865f30625e7c37281e01e9a7b13727f4e54f0366513c29bcd6f3a80416eea677fa69ef70cf38ff3c48c1af664c89240812d09bd979177446789e47828a28c2c95a631223170a599b8e3946cc58892c16b9cbefb7382af00e76ae93ed080642414245b5010361000000bf6ff81000000000daf4b0485493c9937ed05086d2847897f05c266345e303b0a04bfcbbd70ffc09fd4c9ffee291f9652581abc726d32d508e942c8e2ad51df4027f94b709848c02f839e1612159fdd5319d9f1aa1d3865f5730f910fe442da053be3c6450f411010542414245010190ff9c581287e8e0787634ec852897806d5ed7363b2e808a5f8c3a072d61013de727fa35bb62535314e1997d35a46a6ad9d7a0611fec1caa8e2b3913226ad581", - "grandpaAuthoritySet": "0xa5042f8da08bb2421ef844015c3b2ea23464fc66a9dcb4a2215fe0241f892d19afc50100000000000000fff437ff18629bf1490e5c9b3ec6f1515d46bb9b2aeaa6e39e36611f2479b50d0100000000000000d95f04dc8ea4ac05deea7077457f0406fdd152bd03a7480e7d0de0983b959d3c010000000000000047f940bc985355be7187c709ded2b689b66d69e61e293a507f1d4f90bdbeceee010000000000000049f257921be6219e9ce64866925f721044fe934eb55994ae520748ddb14aa10501000000000000004a3fc0fe1020c7f460c7bd23d0b657c03368552b2f0a12d80a1c406fd066e0db01000000000000009b992b5e9b99eb2cd3b2b648d6db81ed722a2feb4938d998b58dcb5d159fadfa0100000000000000aee9de3938173700b3e3f4fbf2b200ae296173a0854157f40de2598dd4cad8f10100000000000000b9c2b393e56508c462faf593421cf77f52da8f2148365b8b7275e27833a7ec8d0100000000000000243f110deac5efe8e963d794eb8706a1895ae1942523ab0fe9e1623515b7dea80100000000000000b61e9b13e849779be8f5378a670d61991875d8e091f359384d7be73d02d506930100000000000000426b2be4596a759a15028d84e08c5c56440e6cede68d088f47c671cc3387c3e6010000000000000070ba6e5985990ba1b1392713236f1b50df750f10f744cc6eb95fa7c5cfbc687601000000000000005b27660cd4c375f2654c6d923b29fd8abbab7e96ee040c79598be14f832f56ca01000000000000009be9fb82257a7fd8f6d5134a38c41fd02e8cda80e2c7ad25d8e9516a08f6adad0100000000000000164c6f7863d8add0bb1f165b561f99770730d687d7c40110e11bbb5d376b2b52010000000000000057ae0c85ebaf333a6ec3251f577cab910cce072f238d1e50046322b83bbc0dd50100000000000000a15896b8bbf01f757f120813bc2e78b21388eea66db4b0dc2e1afeabd3d46dc00100000000000000e3c9b2ed962a014c757192718003effae55bbb939425f6f155372a5498cf586f01000000000000000139b946b46bee4c61be50c986f2a9ef2e76917644e2ecd842c59d61a94ee612010000000000000019a9d56ea35496122fc44fcb5c29d27fbb43520556d6f8d97753767aaa0f228e0100000000000000f1578b8007e34ba6b1c4c480a8249758eaa356a6e5b1be0efbe5c35e802fe3cf0100000000000000a5b094ae7c156592baa68ce18dab6368d5b665e9a0f07dfc5f54f58309e086c1010000000000000041ef4a31eb7dc1e01f4630604e1908e644d7cdee3f66a60f98d6d59605326f8b010000000000000097743d6364cdb6c4790cd37c4c2ab5fbc6c65e8bb606625e70a6ee04ed1650d9010000000000000008cc1d6c743da905511a39a6f0a68809a6bc32f8ac25e53bb2d6aca4f493fc9b0100000000000000acd71d4269b3ba2a9de822d494c4d841708e1519c08de41d7fc6153eaf48da810100000000000000d04d64a07f144638f20f081de122b88fed0cc8bda57e4810e7afb38036dd8bbf0100000000000000f26945a8a64032a1defa76e720a99649125b55751b6088205e7acab901de670b01000000000000005cba2c6f569da1edc3778308da406f266aa53140381dbb3f14f22909ba6e30040100000000000000c9a741ab82126c4d4eaa6a758cfc1209bbd7b29330e89ccd97fb62ae567c8d4301000000000000009b94bc45bf79bb33f70430c82880456cd7bd5fb3ea131c1b26d493d01c5fe7100100000000000000a1a9debad5e4afb076cf293c2c797f0b5901ffdb8bd01611235e762411a0db3901000000000000006f4855725ebb9eced957bae43ffa7d30657ce7d06b251ce20e2218bcf929e4050100000000000000749556da4a259bc1f0b8ea8e3726c2251656b92205c30b635ec9f42038f8defb01000000000000000ce4d93e25fa5302f4b059456f680047f87be428ae88579e0b862502b5ceed600100000000000000c1758f7cbffeb844419bc494a9dc65fb394259f01e9bf23789a75acc29d7d9620100000000000000c1c1ff5f66fefb5c0849e3b2333411d1f7e9dd4888600e334e7a33623f15fa360100000000000000fe240e80ff8a48a77947b394979cf361017cd906ddaab637d72cf72e729d79bf010000000000000006854c73f5703242d31d2576ac2297c93f0b5dc16ade0097c59d5dc0faa43c550100000000000000c650b1a6b34347bd80ed06b48aa4ae1a33adaa507e8ac23bf6c6b94223b63b9d01000000000000008aabd4f6d7ecec7a749c83fc7be33f3b4818cca6f93a4927b4964900df9454e50100000000000000b9186b95c90d2d00a31e7c68066bd37d73408271762604e3608e2f2c983f830901000000000000003948bfd09bbbc2fe6ac5dfe53146e32df50828eecf7b2b18cdcff8dc385cbd7501000000000000001ba602a293ccdb7a77042fb486c6e010d48b13dff2bef0a26c53637312aac7f70100000000000000ba8180cbc0dceb098ee6b22fe89978bf92ebf196a280470b1501bc2138ec02c70100000000000000070bae15860ce96e4a0cbdcc051c75e37a458c8e6c5ae59681d0ed938e588d4501000000000000003ec37919f9f43a9f85f539edfde3ceebea1b0e8279cb036641d588a9da81a6ad01000000000000005e48598ca89db19a4c279a251216d81e33f6b69e7d2ab4450968a1f9409df4a3010000000000000026ca01e6a92a3c7f4b6defef88985627f0af89310a74f727dd8d33f4f027b8f20100000000000000f510cb6c7032c9134dd3e50014ff6d391cfc91606d003fd4acd37e00f919d8350100000000000000cbd74a646a84b73518eadc73b1983dc9733839739576af9a98c698070a3a4b590100000000000000d2e72b0ab02a001b2e573c0d3b78404a7d3c600c3a9fd8ef38e823cad6ed3d6601000000000000003047f8f7e9c47fda9130ccd57d5dc8d407bd89b8dcf8ecbaccf00da184c73a570100000000000000024743c39cd9e151344dc23c65ee0346132d190a224b687be5c5ae31c5e7bb0a01000000000000004e3fb8c16ad624c1852777456805e5352d0221269de66949c95da4076206b35a01000000000000007ad55381f9de00220678c95a19489640fc61331e2a40d927e3d833555575c6fc0100000000000000af0f03b796253652200c7c67ab89636bff3e9e97d4f51a4a7a577bdb39620443010000000000000069a6c84df1d25f855b91040e113a5557da8a89d80644ae7bf8d0ba416ab89b6d0100000000000000cb92ffeace78dbafe6fbf275741b4b38657fb81590712aa0bca7877931f6ad390100000000000000997b35c2de1a7ee0cd6744eea2c589ff487059544539bb099ceb6fe78150b68f0100000000000000f8eb309ab851e8f98aa4bd68138a67dc4a435331598079969053a5325b874a51010000000000000059bba625d971d505a9c7d7c2f3ad69203e69e3e5e1fc1e4905fae7703fa19e030100000000000000ba95f5d0e987305bb794dfeae69d7dd6a7987aa66cd7c9d42aca15e9160ec6a10100000000000000ffd82ddc49373448bed6feb0032744e20068f4e21adc4cb6d2cbf05ce73f4ce40100000000000000a9f24f0208a21e8cda4e450c72074f20d76a927bb80fa4418e480e0b59575c6b010000000000000016278af083f6d261762f8a97b6a09ff83e2f5927ce26c2e48f3c7e771dc7e6950100000000000000c49e3cd2c701bb845963c2870dcca12ed070c3f67ffc20144327a93aa6e896ec010000000000000081b1fce3ee9e31723f1023eaa9f8793e8663e72c50fbb0fbcea9bc78bacc491b01000000000000002dad5b2212ee688f2eeb9ca1fb6a90574f006dc1c6680ac3a8523363a248940b010000000000000067ccabbf18c035791cee9c748bea2ca03cf72c40f5ae786f297f84fb059732620100000000000000be0a28e5615d9ce3b866b5cf0babf6a7f0e6de06119463382e715b47c89853e40100000000000000b8183b905f28b87c68c2d5b2f39f009f2ee22b47235f6c6d6cf6e63121b490300100000000000000b7c13f1239888cda5c8e6ac9ea10675df17633368906e66a487f91ddd3268ca601000000000000002cd51e09c3197e04155b78f3d97742ceffface390dc46f81f2613a94b2e483fd01000000000000007509d9697cb54f627f47b25e80f46f5d1bf483a9cab5f52df69e1a8f612e486f0100000000000000f3b1c0e43606bd49bc84e403db685b577e898b5f7c5db9052bdc3dacf38dc7ad01000000000000008a2b50acd1a4955fc814bf6720c7427902a6ce709f3a2d7c17c55b67f6f1c06301000000000000003a511828c0cdc0fd257387843fdbf6f19d5ca1ef1c29ec7e971fc9f1195eb60c0100000000000000ee5605c1a9ed9484a70b8a591339830f24530eefc4599a7c6188a78896908e2c0100000000000000ad06042b85ed16ff4e46f5a68eba9ac12395366ab17c2da24b4f6747b2c8934f0100000000000000d1c146d2429a5a827660008721c7a880e71f44feaa3dc75524c1a9281bac48cd0100000000000000e4b2cffd0b9cacfc500050b27ecae3c55b9b51bd9a416d62605118c8ad4fb09f0100000000000000b28ba3f09e3521f7d09f0098c6743bc218ee2970068adfa5d908d9d06e627ae50100000000000000f6d74de7b39455519a5d6480c8f12c93fc7a4cfc9af39154fc60857a39ad888b0100000000000000c8be78d05f652edd0a64a5865455de36d0fadb0d91c470fd344f8de23c8a6b9c01000000000000002bb7b11dfe79a12110b0370510ef20d40ba8a563f517310f8bf37cf7f0403de40100000000000000f86e50733ff2142e88fe5b898087b4b1d6a3250064a439097f8995069624adef0100000000000000bba7a1ccb67a410afedb8e033ad69c39e7c554ce0ce6584b0e6688bae30f7d69010000000000000040533a786cd0be9618126633512666b1b1b9ab3b436fa653c93e2f65da9c196b0100000000000000be95095d93298171c6fb8a1847adfa173d127e13f53482dcb694f891d68f0c58010000000000000085b714accac0654ba57fac59b626dd35802269d2c1d995cea7c335cb05a88f7f01000000000000006a5f902cdeda2c2161d16bd21d586720c08c0bbb7b463d9c59147338d26a8a9601000000000000009c11e35911f023df6e4d218e53412ab4e4a20c17961d63ba381c913b51f394c001000000000000005a16e068132523621b4e714999d3d856f2728d4667ce954a68b1fd6876bd962f0100000000000000ffcca343512faeffe1cb3a8a7ce62fa4ee0c7f6a5f3e5ac883482846e132813d010000000000000037483029302a84623f0a8db165fbed905b0a4fc25e7cfb56e975a0e98336a59b0100000000000000ecc7b49598787520ef6336abaf798adbadd6406bb889d8bcefacbbc1a887a3fa010000000000000053b5918f72e73f92f32b578d1b602f0cc554d98bee8c4e131ef0ac7a63399fb4010000000000000063e935d23d285cec7b014cb7736d65b4acffc45ca589003d3231de8e6db8a8aa01000000000000006180a56305eff3231eebe895b44751f075f826684ef42a862f11e79c3e689cd301000000000000001935d43843c66ecf76a9f4c4229de9ed7c172f52aa53d1a279f2856a736661b801000000000000008438323f6fb0b070baa0bea9469c539224bce1a79b02934a007be26c0ae15ca20100000000000000c7d9cab0fb88dccd0cf4abbf5df9d7f36a3de439c5070c599d397e74133bdfed0100000000000000866fe4ae134938ccf4c5caf01358881c75cfde473b0bb8a2623cc231db2ea3b901000000000000005d202a011f023dfaa6713f16bfd4409dde8bfe594abd59e2be32484c73b979820100000000000000df11dd2be629ba8bf3ef7b4b0478a91bba5c7f928adcf28f3d00ce1f27410ff60100000000000000fc555c014d927fe7838e840609916b9af5d93892ce6f394398858286802b8c6101000000000000006727561447ed474ff4e15645b952a37fa5008d4e694d4853bb55594fa34c4f340100000000000000af9c4c3cf1a3581ee22c9d1a648bfe92fe6d3a7ae39410f213ef25ce6daecffe0100000000000000ec295fb809e22c332aa36a57afe05f2c093b2d13e52b0971d8265c5514e4e9690100000000000000efb5f1e4c4ba37f8c159d452d897c607a58518b8355a8454620b3e3ccc3271230100000000000000099a9eb71f9cb1b7d15eae384790b4ec35045a19acea1730ba62f3e7caf31e8b0100000000000000f71fca8770328d06e9a45e650e5f58c15feb8ec77ca2dce397490bedfa37db4801000000000000008c3dbd5a1b928cb51e918452191e5328b0f6e8de0259517831a90b02dba3e6110100000000000000aa6fd06015b8309ea9103f4b0e29bfa7e21ab5bb1431c3a76433f591c739f8380100000000000000a892342c56149812a43e98c82b6a3dfee7eff384d9b6d832002ea63838f64900010000000000000081bbaa3313b09e3b0ea2817c3e968a33587ec8928539c3f3a6d0e65644612f49010000000000000023f07bcb8dade90cefd08732183d5fe32b89ad8a4f84987b9e4e7e767c2587560100000000000000c13b603b5fe774d98e59c26fac03f8096ccc42c57d0cbc6a443b4f07a3c077920100000000000000be6b59cb464fadec4e0b22a9f12857ba5cf7a14c4f9551439d36305d582dd7fb0100000000000000f916634f9fd7e54374e30ac6b722ad1793c13cb2d5f2ad38769eaca2f79d414b01000000000000007ba967a2dae0d8839cf44710591db994d18e53b25ec6d0f861da0037c4a4366a01000000000000004d4a140145f83598fc5a3839260723176f643ae286ff7b2fc460b897fb050a4501000000000000007e15c89cc954f1ddd6a5f2e9f482c1143f5b7b4ba406ed1264fd25a999f223f201000000000000000aadf1b2009026f8f5dd75d532e91dc756fd47572aa0f3c15d26790e6d6b2f270100000000000000d0a196fdff4cbca9c7d8a893f9ed66d86038378d8faa1fd8543fcce60ff1cd8c0100000000000000d0b4aada93fb3d0b358e8d59f8914f5987acbc6f5b4f3e12a1ed8d962eded8270100000000000000f9f8b2338c9629dff72aab44f4fe38302c692dc608b5dd11eb1405cc39fc69dd01000000000000004f950be5bf61958a0ae6e6a036b85b33ba838de8bd5508b558cbe2602d341168010000000000000082e6b6bf1f275c59fbde0dad91393ae690d5e644d11d23898a9ccfdda025920a010000000000000074b60dfb12745236ba9dc8f925efa21482b50c870c567638ba3240a05fe363d90100000000000000d761043f405069ac01285f1ff258450aac675f08d906b1ae0a1ce54eabcb36d901000000000000000dfbc1b5757e1f0ba348f8af64fb631aaff86cd21fa0529e0bb1fbab250879260100000000000000b770208e14dc236c373cad93e19b092e9c6c7a90604d941c19ca19923d33013f0100000000000000de74612da9080d47be35bf4ded2094e23c1de14477114ddcd7b76b815456ec0c0100000000000000d3b3d9703a265a51a137b9de348587c645a168981ef3e01c9dc482856751b8ef0100000000000000c0444bc7cff2374b76ba49e5ce25b632b0db77f08f6c40799077ce3f5b035f3f0100000000000000cfb9f7f1fcf903a51af729ed1647aee928630e148990309f9dc9f3b14b114b760100000000000000a2ee8d9c22eba97998d63854409d99c87b21d079f5c888d863a81d41d6abf0110100000000000000d14a779884de1b2fbf079b8e47e8c0edb1c29e282996899a4eab5aaf1f4f41130100000000000000c2344c6fb787621295335b6b5acbab9531199901492d41e13a64dfb2927f83be01000000000000002ba5634557f15c4e9198d1ce0cc525e897d3fdecb0c18af8a53fe4e3384f4a1d01000000000000001097fbf26465b66708f3a7472ecf5917ad59c69e3baf5efa1da4a91ce65182f90100000000000000148390a7bd6928eb04aee1e72b9a86e103639b8b23fd2990c090ec1b5dda6e0a0100000000000000155763a153e0c02b2eef1d8a9cd8a50a9eaac9d3af7ad1e559b1e2320b521e1c01000000000000005208fe27477acbc6750d0caa831c0b26801c58eca046a6cf9d4143f85d877e8301000000000000004242378110faf2970e19fa227955307e8fe2d055824a2aa3ca2600b933ceb63a01000000000000005cd3c5512d1bdedb73e633eb63f71e7f0bfadfb6990de4c8d2b2de1d2195df1e010000000000000025ebbb2a00126545bbedf00318a78b6e61a0b52c81e30231ff45bd32e311472f01000000000000003773b05d2e2660498c8d407a1d6223423c26aa08b9b3656af94d78b861fba22f0100000000000000884b214d360373369c39ef0eaf46fa8be7a9242b668bcbf2d40be8d7e4379e4e01000000000000007bbd4f800c34110b6c739ff1e8913a36ab62f25641c4bb7413cd354894b602930100000000000000500a9e1ea37636c24ebf4e32668897dae936eef42b6da49027f606d4f24a7e9601000000000000009819b02ea89d7551b719ac28276b76cdbd23f1ee305a06281eb66a9f3e866feb01000000000000009dfb601fe4349171bf58e15a9f5361d82b9711bbfaf63169ecf878dad6861c9b0100000000000000ddb8ed355e1389d3a12e9e55fb7723e89bc5020144bd832e02c47f7f672c9f14010000000000000039712f967c4e06d284d6da4735cf2823c1f770674b668f7bc896071c3fd41eda01000000000000001e1fe4a3c9f590aff5a70b9cae569605ac78531cc10d310436fe0c306cf2e36101000000000000003137254503f936275feffd1077dcc62e6b54b6b394f437f7d096e49d519dffd001000000000000004df6e4d7da2c11ddb9153c714699f9ab625bbcd5e8e38f1cdeee567dc04abc610100000000000000d9b96ab14d54cf0093b00b5bb592a6ea6036f844bf7eaa3b5181d0764e1724b901000000000000009cfeed14dd2f96550a0e7edebd9c9a8c8b1d8f7efdd1abca01987654239f3c860100000000000000fd2fe2f117d597b29474a740ec767fe51cec93544d00e34269b78ddb31225f3b0100000000000000a9413b5f6af8458b220e467cfa30ec635e0690a843bae76b0c25a387238e45c701000000000000004c3b4b0a3acf902acec7f5d868f77d78b17fa4cfc5f785d393c9f3d15e04880501000000000000008404cabeb0674765bb77af690fa838ba28fa2045d602994a89f07680f4851c83010000000000000006b9e740c0a0e1f8fd31717438d5918ed8680eaccb70fdc9511931ce0d164ae50100000000000000b8cf76a8082d518016ea5588be57b64e156ed23b0f72248975522c23d15ef16101000000000000002565e04c6e0b665fac87f8238bee74837f8f621ed63409f3838d263603400a980100000000000000a4f516aea3a92e379a03a2a9f9fcc757af022ce3572b00ffff21151fda41e79601000000000000002a38a4dcdffc571d547ee3e59121fdd378335df7c65877f983f0957cdc9824130100000000000000620c78305072857b43dadced80ebc057dbfc82b58c14c7b63372ef02140867650100000000000000baf0112f613aa6fff341d67decad56d1c5744a3ebb8e3577e82febbf3535b3fe01000000000000004dc2e72680dbf0156818114fa34d3591f8e6948df25a128e191190c66f6ac35301000000000000001ebe41ca4cd399901ffe5f6f52642630820500e4a96cbef4c80c560cae38d2c601000000000000007af0706d921a331b5c1f957a8d1decf15aa0e3377a80d72107693afd8614ef8f0100000000000000811038f59afeb084566271eb138b0106a8ca013f57e589d6f777bc7bb2219e760100000000000000f5e2c973d4ccbdd36d8ed4e3dae75d3b50002cc1c74eb0a1fe29ef1ef8e3f0cc0100000000000000b1f748c87b12edf7242b4719cfe68e6761acaa4329beee538d6ff740941d3cd301000000000000008b35aa0d212e4032ede352d5426696c260c9ecffa632a2e14e6a6629a6c9f637010000000000000072341ca1eb3a0fd4e790318b51ace114315573d5355c9d5336e39382ba0642560100000000000000a79cd2241bd68004641baac25c1900da3a9e6d83101aea3ef2a58d78c657272f0100000000000000b14911cb101f45b88c437a36bd82a5f8641b1c55052060ea46ea2baea570e8bf0100000000000000b66e24ea84d5e02a7b2b58e20bbf17a0f2a19c4654bf8b07669ba3b9fc4a468101000000000000003c1dcee818434058b7de26ee874ade21bd1149185d6dcba1f67048b931ec3dda01000000000000009d31c78ebe9664e2bd8ba41cddcd9c5b9fb0cc6f8be0a2e5b91f6bcf66a5c7530100000000000000290be52ae5259f3e8bd0cdf454004607867a97c1db86d0c9ff16c8c83625bc830100000000000000c91199db47b7591bf1a928534cdbd3e5979a0d09d6a464f2a9607ec444bd8a9701000000000000000428e3ccdba17d779ffba05c9ec7a6264187d13bf89b6009e97200474ad3439701000000000000004c43a374e6b3e6f7d6c5a6b8518ae0d0d232a1c46d63af8fbc800045a14cbe930100000000000000375ab81b02df9c2fc8fe711b8dd02f9ccf8da23e5b48aa29f00ad4af8088360601000000000000004b3210303cc88f1495bf5a42c50dc7c51c8bc1db98bf3722b894462346e9221d01000000000000004d9b0bbfc6a294ee0492bdc595a5d8f7cf371c729c5c319a3822f0248bb4fef70100000000000000bbff79a9b92ef586f0be053cc01639b9a335ad8e2910146d070997e285007d830100000000000000ccc84b255e5e73b971f2e71d1903b5ef9bd6d0965ff3ce29c517c875bd7ab65701000000000000001babed13d56d28fdb937b07bce846689584099575382c273f7e425f822c8159f0100000000000000530f022bda69f1ea2ee55570057ca38fda313213b9c02a7c6560ee53e40b10850100000000000000a128a73c5eaa1803618a75bc368c38e4c5cd40999cb72d615b8af1d30cb8cf1d01000000000000009bde702d9265dd3f62a8c9bd36d5e2f4e0dfb91ff812885cf2497eee6676609501000000000000001887f7937a8ca4ec67ceaedebfad3d307b10f416219de1ed4f8646409eab730a0100000000000000d64083c00178b8dd224afade9792fed8076031bdfe9efc5b8128e6372a9261e201000000000000001c6842f07fb07b318a8d00ce6258844374f8e894853ae5fd4a85c867d3fc32e30100000000000000417e120dbfd0297d59458b48407b62570987f1e907dd6dfa9a20bfe64eb489d8010000000000000042f20843bf75f4916ade8eb2faad0ada3795b3cacd29b679f18805f2826367550100000000000000be724139e9bdd099b70f7edab7d1acf0d05fa1a4ca212f5e2958d31f4272dcda0100000000000000ee40b85aa515fdbe6e559f815edc7ec1e321e0d152dd54258382ba31b54e447a010000000000000090517dbf339bac4cd01fcad403dd0803cb67a9b15bf024ce038eea2c7f2423040100000000000000c3150e4ca47e7bc6486f198bf0a742a18ab0871bb1efa34e82c4ce81f27926670100000000000000c2eb94269c5e5d2ab9a1a300387358679640763b053aca99ba5c1c9083ee717f0100000000000000316bafdefb60951da2738d6c9c2ef1866d139b34b5eab6944d6bae754dd3fb1101000000000000007a92827270cfa82f16145a44f9bdd9ff5038ef1b665dd520a2e61db9749094960100000000000000ebb1834a568ea7653bc66f394937a0aa4f2f617118d2161e2c11c0d7d2febb9d010000000000000054840bd4fe6fbabe28e2e1e54cebb2002e9523d2e1543b50f22dad31a07bc7000100000000000000b6d7ac98d6667fe8f4a186ef12a66b017df05a54e11b45d3f2967cb3d6b6827f010000000000000042f47dad5949be7b7b8f81faaec17b1b53465b01b9f8f81e6a45f2fc74e12daf01000000000000007ef02c62a02f0c18581cfb8ab7c2dcdff34e36a453a3700c568d61fdf9c8a7b40100000000000000e0df5b2f299314d2d419b46d15c3c8a739182d91c3d4b98cd16c013c3a25c04b01000000000000000150276c1b3d28d42630801c1d4a738ae723887d9286e40ba48d10b0752f7dcc010000000000000098a6defcfeb3dfca36ec46eb373734627a2c395cdd2d886046a11788ed6467af01000000000000007a03c321222b7f7b34946e44850798fee20b9112a64e3950398cce19064b872301000000000000009bbc024bfe4f072b94735afda064dc3c7da2b4bc0c50cfad44722543583a372e01000000000000002b71a8a81bc2be65f3224ba3711d1bb243446d154369e209f97d8375b5fe8deb0100000000000000496826b538d97906e14d417b48598d7d591a483ab5f4c6786cd0b96239c2f4cf0100000000000000ef27d1d5573e6419ffcc7c4372668105118256b810ab2e2dbb5e7d8280ee94250100000000000000c7009be830fe78c42f12f0753923131d16300bac230650001636b6a546cf0aa30100000000000000ed3f97f83ee7799c4aeba9f40bd18134c862c1a30875fc1e038cd27bae3a739a0100000000000000348e8bacc2d40191a6a00e137c745a422ff8fb03148d2ff9cad75efbb7a670140100000000000000efb31c5039e45fda750af5d2ea31b3210a407b168adec8f98db1f3dbc4cd943801000000000000003afc780f5d6cf676fbafe8bc742aa01b64d7d12530ebe1aab2db123a23f439b00100000000000000bff74b6ff5ccdce9a659408871d486511938422a6e550fe0669ccd739f80108101000000000000009ac13f915431b39f99d8c0bed7e9c62d22e1e8b6daaee809920f491154ef6f8b01000000000000002ff9330a8c344ad3adf4d97db014a2d0891d4dd69f5c8369dad3e0b25566173e01000000000000008f44b6746d8d809da87915d6ec208a07ee63481d24b275c6424429e16ff4d25e0100000000000000e01d6eda8094e949bfbb05c819b509a12eb662a414b822f841d9555d58e1ce7601000000000000008fc9be34cc95e087c83cb6f86e2d2b7a22a7015558e8fcb1260740bcbd346d630100000000000000c3576342cbf99792896ee5329b04ff2eee2fc2bb6d53c5c03d52c8957ee793fb01000000000000006ad4bc289673029ab44f3045eb6fdd3589d05e0e5fd76ee017f650a662f898fb010000000000000043a9a2915f377cd4943f602be38c3bd6ef39e91562c09f18fb672884b4bf8eab010000000000000059dadf17dc0f84c1c334e6a815a04bdfcd0988a3f3bcb713c66ae29e17276cc60100000000000000297dc7cf28b3d40a42c5e8faac876bf7227c670e6e031dd0e0537f4fb70e6fbe0100000000000000f442190c846bbf5764bda138c075360be77a8fcb27ad889adbffdc7b881a33f601000000000000000909c1eff97923f6bd47e6ec8b5dc163b32d5b675a3b13138d3599e5cc77ab9f0100000000000000a5f788e86ee2d311357b7aa4a128f063fa4ee36958baf10304c10bde7421aa2c0100000000000000290321d793b7dcb12ad148c2438bb60821bd938b7e9164a0c3d0fc82987f8b630100000000000000f7bdbb5c598784ba157940b08b5c5aa967d0f3faf60da28b915650eb39afe47c0100000000000000e3a73e5e042574299206b6520770553482e099d075bf00cbeb139b5f6737afed01000000000000003bb30832d06cdd3e081afef0cf2b7770bfe81dc58081d1886443e4e4547da8a101000000000000002832b59000d2027d2bf57fdb40da04bd8aac1498923397517181cc487a92815201000000000000006c3829859c7b27da7f0528e6281a406cf713971a03fa4dbb4ea973ee33f7f3170100000000000000677358fc648638cbd854d2a009dd39b8508dd3047d0c5f13bb403a64d053ad03010000000000000073dce1727ec50c50366378cd389246e19543d900d7e9dab8e323d04cf5b202a701000000000000002ada479e1fde7211de15900ed29035f6f07506cdbadc4c232aab96d62006b9de0100000000000000ee1a56541083b083f1a13b5f8aa4042a098de2cec4c43f3250baaba8f03a52ea0100000000000000e2cc4424464983ada824bbef5aaa8995e80ef1017c15ef3b13902599841637ba01000000000000005246164c02e9e6bfb7a2dbf7ba8a5440a189f8048373678f5b1085f217464c050100000000000000dea69c3badff9b8d7571cb6c538cd099544da7460a19e1b8651c5c530a6dd53c01000000000000001889f1b031fa7d64c4b480a17cd2941be2c02681bca397c93607091f37bf5ee1010000000000000005062bede97a45c6e1c6b593675ee07ce969fae45136cc2b2afc6e705a77f4700100000000000000dc6e03f650e4304ca8d1598dde8d4faf45891987bfc49ef785ace47c4c0b557301000000000000002b39ab0d9c371829532be982a2a90e65f98928168e0de53a39889ad7672a462c010000000000000018ede59e820bcdd0ed2faf99a21bdc916d71577dd35117f90efe77b8513e631001000000000000008c258b4ca16dfb8e5afde4cf40fecf115307798117b4860475511b3b5d56158401000000000000000e7bc96895730726225e47e31c742fd44d3936f31ecd32658c694fc11df2522401000000000000006375ae0c1bf2b0388e16971715fd68c31ed179f38947531c165f0da2c3fe76670100000000000000e539a77d19cb2e73f18eb583257d5f55edcf515397e238137398cb644486f9aa0100000000000000447a00c24ddef95382f0fce94aec3aefb0e8f0cb1a635bfb05faa030d63c1130010000000000000047ede3eca5f6c8f0a51f2d36d7d1c236aab07a8b2aaa6ab08c8ccf8d87ce3dd10100000000000000a5d172126aadfe80d2b711776674d61df5a1cd1a0129761fb2d2de58ed9d48a0010000000000000017638d776ab08bfd9eab2ee19973c1cae6b2904830f14c12d675bfe88e0d7e0701000000000000006b5487e03da258c7c92add43a1b5a99a0b40f8316e758585150877bb6fe88b3201000000000000009f677785cfbf44140bdf38770f3d8076f222aa1c9997842d89d580b0f256198f01000000000000009a0ea02dca493accceb975732f31c9d249d4c90ff1ca0bd86cbe00f1728146b401000000000000003adbd2d5abdb70ef56c2d8bd4a7c0d67882a1c2050a856937491e98496a496fe01000000000000004485615186ae8ad33aff337594a7f8325d3a50201ee04320fb1dd2eab9643d1601000000000000002b07c366c1ed899a2ac9722b76e092828714a8177368e51ca05ec05c565866b30100000000000000e81206b483fdcf1fe42145f27d1efb8178a57ee24b196285374037da2a53b323010000000000000094416582fe359e0a310da59bf93df8ff9665b89071d4977a9a9f3390b75c0c450100000000000000ff568b8e0dbe74604c6d04b5de6f2df03b343bea074c4495c6a10e511ba473d90100000000000000ca0b4c8fe6b57503999f538fa17e761394d64a01856d381ad33ba131a4333838010000000000000032bbff551f7ed51452d264d796315e578d982e942eebb60e519ca648935d8b0c01000000000000003a4bfd825ccd308def4a61bac80c579db42b02ea5f1a0768656a326e83a0dd880100000000000000b5e0d0ae74b0ac76c0195fecca9660a241920ba97cdc5a247c7e941ee1f5407c0100000000000000da80cfe4cadfdce419c7c741d81a19a4a7fd31b0ca4176e65fb03666bdeaff6e01000000000000001450fb02aedbbfce8ec62c79767acd6b9e881390ad868d07713bb1d41d9c74b90100000000000000f33b53556f28f27d250585317cd57a18f37c5d5f2b3c1bd00a0c91ea54f1636f0100000000000000920a57fadba81db4615b0b0afb3c95d2e33a44fc44e138a8ad2ba46ee0aa53a10100000000000000e056900cabddb471de9e1846d7efdddd8b5ad400b02fc54b4402ba725c78bf9a010000000000000008ad520b32d8d8401e7b55ed539790054c962fed255b2294547941000b31599a0100000000000000232b04be856e808b2616319b11eec858097a8afee5c18f0af0e1c33f1c6973ad01000000000000001a02012d8a476cc43998b10fd5c8f5174ba2a2eedebf27fab9831c0d812b0528010000000000000080629b67e7b2d6f57e9da3cb29cc8463a65d125039628124784f944b94c29e88010000000000000079f73931b31ce353119fb4063412e844b16cb3eb92e592ebd822a8c21303554801000000000000002929dacc53614cea1848e7ba20fdeed7cb0bd81571aa72dfb63dfc84d3965d2b010000000000000030afa9ef79458f844a27a3881655b6eafb90b3912737f1bcddb95e78eb098c1d010000000000000031a46e639e57d1a11119b17f76617a35b3606d206fb5c3e87710f464f7a57de50100000000000000ed25d7114e2aef2f0e57dc2be1401a4994d8aaafb30223162634a512604a236601000000000000001e070000000000000001f53c2a0100791c00000000000000002904050001000000000000002a0d050002000000000000002f16050003000000000000008e1f05000400000000000000ee28050005000000000000004d32050006000000000000009d3b05000700000000000000fd44050008000000000000005c4e05000900000000000000b75705000a00000000000000176105000b00000000000000766a05000c00000000000000d67305000d00000000000000357d05000e00000000000000958605000f00000000000000f58f0500100000000000000055990500110000000000000095a205001200000000000000d8ab050013000000000000000db50500140000000000000024da05001500000000000000aaec05001600000000000000f4f5050017000000000000003bff050018000000000000008b0806001900000000000000992406001a00000000000000f92d06001b000000000000000d4a06001c00000000000000685306001d00000000000000b65c06001e00000000000000f76506001f00000000000000308b060020000000000000007b940600210000000000000025a70600220000000000000033c3060023000000000000007fcc06002400000000000000c3d50600250000000000000011df060026000000000000005ae806002700000000000000a0f106002800000000000000410407002900000000000000880d07002a000000000000001b3c07002b00000000000000764507002c00000000000000357407002d00000000000000239907002e000000000000006fa207002f00000000000000c3ab070030000000000000006abe07003100000000000000bdc7070032000000000000000fd107003300000000000000b2e3070034000000000000000aed07003500000000000000971b080036000000000000009d24080037000000000000009c4008003800000000000000255308003900000000000000735c08003a000000000000000c6f08003b00000000000000048b08003c00000000000000589408003d00000000000000d3c208003e00000000000000e4de08003f000000000000003fe808004000000000000000f7fa08004100000000000000aa0d09004200000000000000153309004300000000000000fc6a090044000000000000003e74090045000000000000009a7d0900460000000000000000a30900470000000000000014db0900480000000000000020130a004900000000000000791c0a004a00000000000000364b0a004b0000000000000043830a004c00000000000000e5950a004d0000000000000045bb0a004e0000000000000059f30a004f000000000000000e060b005000000000000000812b0b005100000000000000dc340b005200000000000000ef500b005300000000000000a3630b005400000000000000b69b0b005500000000000000c7d30b005600000000000000dd0b0c005700000000000000f3430c005800000000000000087c0c00590000000000000052b30c005a0000000000000060eb0c005b00000000000000baf40c005c0000000000000072230d005d00000000000000805b0d005e000000000000007e930d005f000000000000007ccb0d00600000000000000076030e006100000000000000793b0e00620000000000000088730e00630000000000000092ab0e00640000000000000083e30e006500000000000000731b0f00660000000000000079530f006700000000000000748b0f0068000000000000001fc30f006900000000000000d0fa0f006a00000000000000633210006b00000000000000826a10006c0000000000000028a210006d0000000000000005b310006e0000000000000055d810006f000000000000004810110070000000000000006548110071000000000000008e8011007200000000000000bfb811007300000000000000bbf011007400000000000000e828120075000000000000001561120076000000000000003b991200770000000000000058d112007800000000000000770913007900000000000000944113007a00000000000000c07913007b00000000000000e7b113007c000000000000000cea13007d0000000000000067f313007e00000000000000d31814007f000000000000002e22140080000000000000008c2b14008100000000000000545a14008200000000000000ad63140083000000000000000e89140084000000000000006892140085000000000000008dca14008600000000000000b00215008700000000000000d03a15008800000000000000f3721500890000000000000015ab15008a000000000000003be315008b000000000000005d1b16008c00000000000000855316008d00000000000000b18b16008e00000000000000d3c316008f00000000000000e9fb16009000000000000000073417009100000000000000bf4617009200000000000000286c1700930000000000000029a41700940000000000000041dc17009500000000000000591418009600000000000000bf3918009700000000000000704c18009800000000000000948418009900000000000000f28d18009a00000000000000bcbc18009b00000000000000e4f418009c000000000000000b2d19009d000000000000002c6519009e00000000000000896e19009f00000000000000519d1900a00000000000000075d51900a100000000000000920d1a00a200000000000000ec161a00a300000000000000b6451a00a400000000000000887d1a00a50000000000000077b51a00a600000000000000cdbe1a00a70000000000000070ed1a00a80000000000000083091b00a9000000000000004e251b00aa00000000000000fe371b00ab00000000000000065d1b00ac000000000000005f661b00ad00000000000000bd6f1b00ae00000000000000de941b00af00000000000000fecc1b00b0000000000000001f041c00b1000000000000000c321c00b2000000000000002f3b1c00b3000000000000002e721c00b4000000000000000ca01c00b50000000000000044a91c00b60000000000000022e11c00b70000000000000044191d00b8000000000000000c481d00b9000000000000006b511d00ba000000000000008b891d00bb00000000000000a5c11d00bc0000000000000053f91d00bd00000000000000ff301e00be00000000000000054d1e00bf0000000000000002691e00c000000000000000d1a01e00c100000000000000c5d81e00c200000000000000cf101f00c30000000000000083481f00c400000000000000af801f00c500000000000000d0b81f00c600000000000000f0f01f00c7000000000000001b292000c80000000000000039612000c90000000000000054992000ca000000000000004fd12000cb000000000000004c092100cc00000000000000031c2100cd000000000000006d412100ce00000000000000cc4a2100cf0000000000000098792100d000000000000000c4b12100d100000000000000eee92100d20000000000000011222200d300000000000000325a2200d40000000000000055922200d50000000000000075ca2200d6000000000000008f022300d700000000000000b13a2300d800000000000000cd722300d90000000000000078852300da00000000000000ce8e2300db00000000000000bdaa2300dc00000000000000abe22300dd0000000000000012112400de00000000000000501a2400df0000000000000045512400e000000000000000a1882400e1000000000000005fc02400e20000000000000013f82400e30000000000000007302500e40000000000000013682500e500000000000000c37a2500e600000000000000a8962500e700000000000000fb9f2500e80000000000000000d82500e90000000000000019102600ea000000000000002b482600eb0000000000000028802600ec000000000000002eb82600ed0000000000000044d42600ee0000000000000058f02600ef00000000000000b3f92600f00000000000000065282700f10000000000000057602700f20000000000000064982700f3000000000000008dd02700f400000000000000a7ec2700f500000000000000b9082800f600000000000000e0402800f700000000000000f6782800f80000000000000019b12800f90000000000000040e92800fa000000000000006c212900fb00000000000000a0592900fc00000000000000107f2900fd00000000000000bc912900fe00000000000000eac92900ff00000000000000fd012a000001000000000000ff1d2a0001010000000000000c3a2a0002010000000000002b722a00030100000000000005aa2a000401000000000000fce12a0005010000000000004ceb2a000601000000000000e0fd2a000701000000000000c3192b000801000000000000be512b0009010000000000000a772b000a01000000000000ae892b000b01000000000000b0a52b000c01000000000000abc12b000d010000000000009bf92b000e0100000000000093312c000f0100000000000087692c00100100000000000075a12c00110100000000000074d92c00120100000000000089112d00130100000000000099492d001401000000000000b0812d001501000000000000c3b92d001601000000000000d1f12d001701000000000000d6292e001801000000000000e9612e001901000000000000ea992e001a01000000000000efd12e001b01000000000000f8092f001c01000000000000f0412f001d01000000000000e9792f001e0100000000000036832f001f01000000000000b2b12f002001000000000000a9cd2f00210100000000000094e92f0022010000000000007121300023010000000000003b5930002401000000000000089130002501000000000000599a30002601000000000000f6c830002701000000000000e30031002801000000000000c03831002901000000000000a17031002a01000000000000f27931002b010000000000007fa831002c010000000000005de031002d01000000000000aae931002e01000000000000441832002f01000000000000295032003001000000000000fe8732003101000000000000aa9a3200320100000000000010c0320033010000000000003af8320034010000000000005f303300350100000000000059683300360100000000000078a0330037010000000000009bd833003801000000000000cb1034003901000000000000f44834003a010000000000001c8134003b0100000000000044b934003c0100000000000055f134003d010000000000009dfa34003e01000000000000302935003f01000000000000c6573500400100000000000023613500410100000000000053993500420100000000000080d135004301000000000000560036004401000000000000b10936004501000000000000ce4136004601000000000000037a3600470100000000000031b2360048010000000000005fea360049010000000000007b2237004a01000000000000995a37004b01000000000000f56337004c01000000000000c69237004d01000000000000feca37004e01000000000000340338004f01000000000000683b380050010000000000009e7338005101000000000000c9ab38005201000000000000dcc7380053010000000000003cd138005401000000000000f8e338005501000000000000b0f6380056010000000000001c1c390057010000000000007a2539005801000000000000da2e39005901000000000000525439005a01000000000000878c39005b01000000000000bbc439005c01000000000000f3fc39005d0100000000000028353a005e010000000000005f6d3a005f0100000000000098a53a006001000000000000cedd3a0061010000000000000c163b006201000000000000404e3b00630100000000000019853b006401000000000000608e3b006501000000000000b8973b0066010000000000000fa13b006701000000000000a7b33b006801000000000000fabc3b00690100000000000049c63b006a010000000000009ccf3b006b01000000000000eed83b006c01000000000000c1f43b006d0100000000000014fe3b006e0100000000000066073c006f01000000000000b7103c0070010000000000009e2c3c007101000000000000ee353c00720100000000000094483c007301000000000000e0513c0074010000000000007c643c0075010000000000001d773c0076010000000000004b9c3c00770100000000000010d43c007801000000000000d80b3d0079010000000000001a153d007a0100000000000053433d007b01000000000000ea553d007c01000000000000225f3d007d0100000000000072683d007e01000000000000b4713d007f01000000000000fb7a3d0080010000000000007a8d3d008101000000000000b8963d00820100000000000006a03d00830100000000000088b23d008401000000000000c8bb3d0085010000000000000bc53d0086010000000000001dea3d008701000000000000e9053e008801000000000000b5213e0089010000000000003b343e008a01000000000000843d3e008b010000000000005e593e008c010000000000001f913e008d0100000000000065c83e008e010000000000006bed3e008f01000000000000a9f63e009001000000000000f6ff3e009101000000000000c1373f0092010000000000005c4a3f0093010000000000003b663f009401000000000000856f3f009501000000000000cf783f0096010000000000003ea73f009701000000000000ccde3f0098010000000000008516400099010000000000001e2940009a010000000000006e4e40009b01000000000000c35740009c010000000000009b8640009d01000000000000cebe40009e0100000000000001f740009f01000000000000372f4100a00100000000000097384100a10100000000000070674100a201000000000000a99f4100a30100000000000065b24100a401000000000000ddd74100a50100000000000096ea4100a6010000000000000b104200a70100000000000044484200a8010000000000009c514200a9010000000000003b804200aa0100000000000051b84200ab010000000000006fd44200ac010000000000005ef04200ad01000000000000b9f94200ae010000000000006a284300af0100000000000078604300b00100000000000077984300b101000000000000abd04300b20100000000000064e34300b30100000000000072ff4300b401000000000000d2084400b50100000000000008414400b6010000000000002e794400b7010000000000005eb14400b8010000000000007de94400b9010000000000009e214500ba010000000000005d344500bb01000000000000d0594500bc0100000000000006924500bd010000000000001aca4500be010000000000004a024600bf01000000000000603a4600c00100000000000084724600c101000000000000abaa4600c20100000000000047bd4600c3010000000000009ec64600c401000000000000a0e24600c5010000000000005df54600c601000000000000bf1a4700c701000000000000d1524700c8010000000000007f814700c901000000000000dd8a4700ca0100000000000039944700cb01000000000000f2c24700cc0100000000000010fb4700cd01000000000000d5294800ce010000000000002c334800cf01000000000000f9614800d001000000000000596b4800d10100000000000078874800d2010000000000008da34800d301000000000000aadb4800d401000000000000c6134900d501000000000000eb4b4900d601000000000000e7834900d701000000000000f9bb4900d801000000000000b6ce4900d9010000000000001bf44900da010000000000004a2c4a00db0100000000000066644a00dc010000000000002f7d4a00dd0100000000000019994a00de01000000000000c0ab4a00df01000000000000aec74a00e001000000000000fed04a00e101000000000000bbff4a00e20100000000000019094b00e301000000000000902e4b00e40100000000000041414b00e50100000000000010704b00e6010000000000006e794b00e7010000000000002b8c4b00e80100000000000094b14b00e901000000000000a4e94b00ea01000000000000d4214c00eb01000000000000d7594c00ec01000000000000e8914c00ed0100000000000004ae4c00ee01000000000000ebc94c00ef0100000000000014024d00f001000000000000fe394d00f1010000000000000a724d00f201000000000000667b4d00f30100000000000013aa4d00f40100000000000031c64d00f50100000000000037e24d00f6010000000000004afe4d00f7010000000000002c1a4e00f801000000000000ea2c4e00f90100000000000049364e00fa010000000000004e524e00fb01000000000000628a4e00fc0100000000000079a64e00fd010000000000001ab94e00fe0100000000000079c24e00ff0100000000000094de4e000002000000000000aafa4e00010200000000000059324f00020200000000000004654f000302000000000000ff764f0004020000000000000d804f0005020000000000007e924f000602000000000000c29b4f000702000000000000f4d34f000802000000000000160c50000902000000000000504450000a02000000000000877c50000b02000000000000b6b450000c02000000000000e7ec50000d0200000000000046f650000e02000000000000b61b51000f020000000000001625510010020000000000004f5d510011020000000000000f7051001202000000000000889551001302000000000000b5cd5100140200000000000014d751001502000000000000e605520016020000000000001f3e5200170200000000000053765200180200000000000089ae52001902000000000000e8b752001a02000000000000b7e652001b0200000000000074f952001c02000000000000e81e53001d020000000000001a5753001e02000000000000558f53001f020000000000008ac753002002000000000000b9ff53002102000000000000f13754002202000000000000277054002302000000000000418c54002402000000000000d1a354002502000000000000d9c8540026020000000000007edb54002702000000000000b81355002802000000000000e34b55002902000000000000c58355002a02000000000000d6bb55002b0200000000000007f455002c02000000000000c30656002d020000000000002c2c56002e020000000000005d6456002f020000000000008f9c56003002000000000000c9d456003102000000000000070d570032020000000000004345570033020000000000007a7d570034020000000000007d99570035020000000000009ab557003602000000000000b4ed57003702000000000000f225580038020000000000002f5e580039020000000000006b9658003a02000000000000a6ce58003b02000000000000e30659003c02000000000000183f59003d02000000000000517759003e02000000000000ad8059003f020000000000008baf59004002000000000000e9b859004102000000000000c5e75900420200000000000002205a0043020000000000003f585a0044020000000000007c905a004502000000000000bcc85a004602000000000000f1005b004702000000000000111d5b00480200000000000030395b0049020000000000006f715b004a02000000000000aca95b004b02000000000000e9e15b004c02000000000000251a5c004d0200000000000060525c004e020000000000009f8a5c004f02000000000000dbc25c00500200000000000019fb5c00510200000000000058335d005202000000000000956b5d005302000000000000c7a35d005402000000000000f7db5d00550200000000000031145e0056020000000000006f4c5e005702000000000000a7845e005802000000000000e0bc5e0059020000000000003fc65e005a020000000000001cf55e005b02000000000000582d5f005c0200000000000093655f005d02000000000000cf9d5f005e0200000000000005d65f005f02000000000000440e600060020000000000008346600061020000000000006a7e6000620200000000000056b46000630200000000000000ec60006402000000000000a72361006502000000000000e25b61006602000000000000f293610067020000000000001bcc61006802000000000000dade61006902000000000000590462006a02000000000000963c62006b02000000000000cc7462006c020000000000008c8762006d02000000000000ffac62006e020000000000003ae562006f02000000000000731d63007002000000000000b05563007102000000000000e98d630072020000000000001dc6630073020000000000005dfe63007402000000000000993664007502000000000000d86e6400760200000000000017a76400770200000000000051df640078020000000000008a1765007902000000000000c34f65007a02000000000000018865007b020000000000003ec065007c020000000000007af865007d02000000000000b63066007e02000000000000f06866007f0200000000000004a16600800200000000000041d966008102000000000000711167008202000000000000ac4967008302000000000000de8167008402000000000000f8b967008502000000000000b8cc6700860200000000000035f2670087020000000000006e2a680088020000000000001c3d680089020000000000007f6268008a02000000000000ba9a68008b02000000000000f3d268008c02000000000000310b69008d02000000000000704369008e02000000000000ae7b69008f02000000000000eeb3690090020000000000002bec6900910200000000000065246a009202000000000000a45c6a009302000000000000e0946a0094020000000000001dcd6a009502000000000000dbdf6a00960200000000000059056b00970200000000000018186b009802000000000000923d6b009902000000000000b0756b009a02000000000000e6ad6b009b0200000000000021e66b009c020000000000005e1e6c009d0200000000000096566c009e02000000000000d28e6c009f020000000000000ac76c00a00200000000000047ff6c00a10200000000000077376d00a202000000000000876f6d00a3020000000000000fa76d00a40200000000000059dc6d00a50200000000000022146e00a602000000000000464c6e00a70200000000000071846e00a802000000000000eea96e00a902000000000000aabc6e00aa0200000000000085eb6e00ab02000000000000e4f46e00ac020000000000001c2d6f00ad02000000000000da3f6f00ae0200000000000053656f00af020000000000008c9d6f00b002000000000000c4d56f00b102000000000000d90d7000b202000000000000d7457000b302000000000000f67d7000b402000000000000deb57000b502000000000000b2ed7000b602000000000000a9257100b702000000000000975d7100b802000000000000338c7100b9020000000000007e957100ba0200000000000068b17100bb0200000000000050cd7100bc020000000000001c057200bd02000000000000610e7200be02000000000000c13c7200bf020000000000006b747200c0020000000000005aac7200c10200000000000032e47200c202000000000000dcf67200c302000000000000321c7300c4020000000000002b547300c5020000000000007d8b7300c60200000000000020c37300c702000000000000cefa7300c8020000000000003c327400c9020000000000009b697400ca02000000000000eda07400cb0200000000000056d87400cc0200000000000090107500cd02000000000000ad2c7500ce020000000000000b367500cf02000000000000c7487500d002000000000000fe807500d10200000000000039b97500d20200000000000073f17500d30200000000000030047600d4020000000000004b207600d502000000000000a9297600d60200000000000006337600d702000000000000d3617600d80200000000000090747600d902000000000000089a7600da020000000000002fd27600db020000000000001a0a7700dc0200000000000022427700dd02000000000000007a7700de02000000000000d2b17700df02000000000000f8e97700e0020000000000002b227800e102000000000000635a7800e202000000000000a0927800e302000000000000daca7800e40200000000000011037900e502000000000000483b7900e60200000000000085737900e702000000000000b1ab7900e802000000000000dae37900e902000000000000121c7a00ea0200000000000049547a00eb02000000000000878c7a00ec02000000000000bfc47a00ed02000000000000edfc7a00ee0200000000000026357b00ef02000000000000606d7b00f0020000000000009da57b00f102000000000000cddd7b00f20200000000000006167c00f3020000000000003f4e7c00f402000000000000fb607c00f50200000000000077867c00f602000000000000b4be7c00f70200000000000014c87c00f802000000000000e0f67c00f9020000000000001b2f7d00fa0200000000000058677d00fb02000000000000959f7d00fc02000000000000d2d77d00fd02000000000000ec0f7e00fe0200000000000025487e00ff020000000000005f807e0000030000000000009ab87e000103000000000000d3f07e000203000000000000ee0c7f0003030000000000000a297f000403000000000000c53b7f00050300000000000043617f0006030000000000007b997f000703000000000000b9d17f000803000000000000f20980000903000000000000284280000a030000000000005e7a80000b0300000000000099b280000c03000000000000d2ea80000d03000000000000082381000e030000000000003e5b81000f030000000000007b9381001003000000000000b8cb81001103000000000000f30382001203000000000000313c82001303000000000000697482001403000000000000a6ac82001503000000000000c4c882001603000000000000e0e482001703000000000000ff00830018030000000000001e1d83001903000000000000dd2f83001a030000000000005b5583001b03000000000000988d83001c03000000000000d5c583001d0300000000000010fe83001e030000000000004e3684001f03000000000000826e84002003000000000000bba684002103000000000000f5de840022030000000000006f0485002303000000000000cc0d850024030000000000002c1785002503000000000000ea2985002603000000000000634f850027030000000000007e6b850028030000000000009a878500290300000000000017ad85002a03000000000000d2bf85002b0300000000000031c985002c030000000000000ef885002d030000000000004a3086002e03000000000000866886002f03000000000000bea086003003000000000000f2d8860031030000000000002a1187003203000000000000871a870033030000000000006449870034030000000000001d5c87003503000000000000998187003603000000000000cfb987003703000000000000eed5870038030000000000000cf2870039030000000000004a2a88003a03000000000000a83388003b03000000000000826288003c03000000000000b69a88003d03000000000000efd288003e030000000000002d0b89003f030000000000004d27890040030000000000006c4389004103000000000000ab7b89004203000000000000eab38900430300000000000028ec8900440300000000000068248a004503000000000000a05c8a004603000000000000b4948a004703000000000000f4cc8a00480300000000000030058b0049030000000000006f3d8b004a030000000000008e598b004b03000000000000ae758b004c03000000000000ecad8b004d0300000000000028e68b004e03000000000000331e8c004f030000000000004f568c0050030000000000008e8e8c005103000000000000c7c68c00520300000000000005ff8c00530300000000000041378d005403000000000000746f8d005503000000000000a4a78d00560300000000000064ba8d005703000000000000e4df8d0058030000000000000a188e00590300000000000023508e005a0300000000000027888e005b03000000000000d89a8e005c0300000000000043c08e005d0300000000000082f88e005e03000000000000c0308f005f03000000000000ff688f0060030000000000001ba18f00610300000000000059d98f006203000000000000981190006303000000000000d64990006403000000000000f56590006503000000000000158290006603000000000000758b9000670300000000000053ba9000680300000000000092f290006903000000000000d22a91006a03000000000000106391006b03000000000000489b91006c03000000000000a2a491006d030000000000001bd391006e03000000000000530992006f03000000000000d32e9200700300000000000090419200710300000000000074799200720300000000000094b19200730300000000000072e092007403000000000000d2e992007503000000000000b21893007603000000000000122293007703000000000000445a93007803000000000000739293007903000000000000f3b793007a03000000000000abca93007b030000000000005ddd93007c03000000000000c40294007d03000000000000e13a94007e03000000000000217394007f0300000000000059ab9400800300000000000090e394008103000000000000c31b95008203000000000000ea53950083030000000000009866950084030000000000000b8c9500850300000000000046c49500860300000000000057fc950087030000000000008f3496008803000000000000cf6c960089030000000000000ba596008a0300000000000045dd96008b03000000000000a3e696008c03000000000000801597008d03000000000000bc4d97008e03000000000000f78597008f030000000000002ebe9700900300000000000030f6970091030000000000005a2e98009203000000000000956698009303000000000000d49e9800940300000000000014d7980095030000000000003b0f990096030000000000006c4799009703000000000000ac7f9900980300000000000078b79900990300000000000026ca99009a030000000000007cef99009b0300000000000085279a009c03000000000000be5f9a009d03000000000000fd979a009e03000000000000b9aa9a009f0300000000000022d09a00a0030000000000003dec9a00a10300000000000058089b00a20300000000000074249b00a3030000000000008b409b00a403000000000000e4499b00a50300000000000038789b00a60300000000000076819b00a703000000000000e4af9b00a803000000000000b7e79b00a903000000000000731f9c00aa03000000000000a6289c00ab030000000000002f3b9c00ac0300000000000012579c00ad030000000000005d609c00ae03000000000000cb8e9c00af0300000000000057a19c00b00300000000000086c69c00b1030000000000005afe9c00b20300000000000002369d00b303000000000000bc6d9d00b40300000000000099a59d00b5030000000000004edd9d00b603000000000000db149e00b703000000000000e0399e00b803000000000000724c9e00b9030000000000002a849e00ba03000000000000ee9f9e00bb03000000000000d1bb9e00bc030000000000007df39e00bd03000000000000f02a9f00be030000000000006a629f00bf03000000000000ff999f00c0030000000000002ed19f00c1030000000000004608a000c203000000000000893fa000c303000000000000a476a000c403000000000000dfada000c5030000000000001cb7a000c6030000000000003ce5a000c703000000000000921ca100c8030000000000008c53a100c903000000000000988aa100ca0300000000000010a6a100cb03000000000000a0c1a100cc03000000000000e5d3a100cd0300000000000072f8a100ce030000000000007c2fa200cf030000000000003766a200d003000000000000389da200d10300000000000056a6a200d203000000000000a9b8a200d303000000000000cac1a200d4030000000000001ad4a200d503000000000000200ba300d6030000000000002714a300d703000000000000bc41a300d8030000000000006778a300d9030000000000000aafa300da0300000000000046dca300db0300000000000065e5a300dc03000000000000a81ba400dd03000000000000d72da400de030000000000002352a400df030000000000006288a400e003000000000000c1bea400e103000000000000f8f4a400e203000000000000212ba500e3030000000000003f61a500e403000000000000656aa500e503000000000000e497a500e60300000000000040cea500e703000000000000b204a600e803000000000000fc3aa600e9030000000000009471a600ea0300000000000037a8a600eb030000000000001adfa600ec03000000000000ea0ca700ed030000000000000e16a700ee030000000000005228a700ef030000000000007d31a700f003000000000000034da700f1030000000000002084a700f2030000000000004a8da700f303000000000000a99fa700f403000000000000f6baa700f503000000000000c1f1a700f603000000000000be28a800f703000000000000a65fa800f8030000000000003e7ba800f903000000000000c296a800fa03000000000000c3cda800fb03000000000000d504a900fc03000000000000f83ba900fd030000000000005f73a900fe03000000000000ceaaa900ff030000000000000bb4a900000400000000000005e2a90001040000000000005e19aa000204000000000000c12baa0003040000000000008e50aa000404000000000000fd62aa0005040000000000008175aa000604000000000000fa87aa0007040000000000002f91aa0008040000000000005dbfaa000904000000000000a3c8aa000a04000000000000e5f6aa000b04000000000000e41bab000c040000000000005b2eab000d04000000000000e765ab000e040000000000004c9dab000f0400000000000085a6ab001004000000000000b8d4ab001104000000000000fdddab0012040000000000003b0cac001304000000000000d043ac001404000000000000827bac001504000000000000b8a0ac0016040000000000005bb3ac00170400000000000029ebac0018040000000000006af4ac0019040000000000000e07ad001a04000000000000f422ad001b04000000000000432cad001c040000000000009935ad001d04000000000000ee3ead001e04000000000000d55aad001f04000000000000bd76ad002004000000000000a592ad00210400000000000076caad002204000000000000f6dcad002304000000000000e001ae0024040000000000004f39ae0025040000000000001371ae0026040000000000005f7aae002704000000000000fc8cae002804000000000000cda8ae0029040000000000005ebbae002a0400000000000081e0ae002b040000000000004f18af002c040000000000001e50af002d04000000000000e687af002e04000000000000a0bfaf002f040000000000005ff7af003004000000000000042fb0003104000000000000da66b00032040000000000009a9eb000330400000000000063d6b0003404000000000000300eb1003504000000000000da45b10036040000000000009a7db100370400000000000050b5b100380400000000000029edb1003904000000000000971bb2003a04000000000000e024b2003b04000000000000995cb2003c040000000000006694b2003d0400000000000048b0b2003e040000000000002eccb2003f0400000000000075d5b200400400000000000008e8b2004104000000000000e703b3004204000000000000ce1fb3004304000000000000b63bb30044040000000000000d45b30045040000000000009f57b30046040000000000007573b3004704000000000000c67cb30048040000000000003aabb3004904000000000000e4e2b3004a04000000000000651ab4004b04000000000000f951b4004c040000000000009389b4004d0400000000000025c1b4004e04000000000000f6f8b4004f04000000000000241eb5005004000000000000b130b50051040000000000007068b500520400000000000040a0b5005304000000000000ecd7b50054040000000000000510b60055040000000000003e48b60056040000000000007a80b6005704000000000000b7b8b6005804000000000000f3f0b60059040000000000002f29b7005a04000000000000ae4eb7005b040000000000006861b7005c04000000000000a599b7005d04000000000000ded1b7005e040000000000005cf7b7005f04000000000000160ab80060040000000000005042b8006104000000000000964bb8006204000000000000687ab8006304000000000000a6b2b800640400000000000066c5b8006504000000000000e5eab80066040000000000000423b90067040000000000003f5bb90068040000000000005d77b90069040000000000007b93b9006a04000000000000b7cbb9006b04000000000000ef03ba006c04000000000000133cba006d040000000000003358ba006e040000000000005174ba006f0400000000000042acba0070040000000000006ce4ba007104000000000000a21cbb007204000000000000e054bb007304000000000000405ebb0074040000000000001b8dbb0075040000000000002ec5bb0076040000000000006dfdbb007704000000000000a435bc007804000000000000d06dbc0079040000000000000ca6bc007a040000000000004adebc007b040000000000008716bd007c04000000000000c34ebd007d04000000000000fc86bd007e040000000000003bbfbd007f040000000000007af7bd008004000000000000d500be008104000000000000b32fbe008204000000000000ea67be00830400000000000027a0be00840400000000000065d8be008504000000000000a410bf008604000000000000dd48bf0087040000000000003b52bf0088040000000000001881bf0089040000000000008fb8bf008a04000000000000cbc1bf008b04000000000000f8efbf008c040000000000007602c0008d040000000000008327c0008e04000000000000075fc0008f040000000000005d96c000900400000000000009cec00091040000000000003b06c10092040000000000002d3ec10093040000000000006476c10094040000000000007aaec1009504000000000000b9e6c1009604000000000000ef1ec20097040000000000002c57c2009804000000000000698fc20099040000000000008cc7c2009a040000000000009effc2009b04000000000000da37c3009c04000000000000ee6fc3009d0400000000000029a8c3009e0400000000000067e0c3009f04000000000000240fc400a0040000000000008218c400a104000000000000b150c400a204000000000000c088c400a304000000000000d2c0c400a404000000000000f6f8c400a5040000000000001231c500a604000000000000d143c500a7040000000000004d69c500a80400000000000089a1c500a904000000000000c4d9c500aa040000000000000112c600ab040000000000005c1bc600ac040000000000003a4ac600ad040000000000007482c600ae04000000000000abbac600af04000000000000e4f2c600b0040000000000001d2bc700b1040000000000002e47c700b2040000000000004863c700b304000000000000687fc700b404000000000000829bc700b5040000000000009bd3c700b604000000000000d80bc800b7040000000000001144c800b804000000000000704dc800b904000000000000d056c800ba040000000000004e7cc800bb0400000000000080b4c800bc04000000000000b1ecc800bd040000000000009808c900be040000000000008d24c900bf04000000000000c75cc900c004000000000000df94c900c104000000000000feb0c900c2040000000000001dcdc900c3040000000000004605ca00c4040000000000006e3dca00c5040000000000009e75ca00c604000000000000029bca00c704000000000000aeadca00c8040000000000008adcca00c904000000000000eae5ca00ca04000000000000251ecb00cb04000000000000fa55cb00cc04000000000000778ccb00cd04000000000000eec3cb00ce0400000000000005fccb00cf040000000000004134cc00d004000000000000716ccc00d10400000000000096a4cc00d204000000000000d3dccc00d30400000000000086efcc00d4040000000000000215cd00d504000000000000ac27cd00d604000000000000264dcd00d7040000000000008656cd00d8040000000000006385cd00d9040000000000003bb4cd00da0400000000000099bdcd00db04000000000000d8f5cd00dc04000000000000172ece00dd040000000000005366ce00de04000000000000909ece00df04000000000000b7d6ce00e00400000000000068e9ce00e104000000000000cc0ecf00e2040000000000000547cf00e304000000000000427fcf00e40400000000000079b7cf00e504000000000000b8efcf00e604000000000000f427d000e7040000000000000b60d000e8040000000000004698d000e90400000000000083d0d000ea04000000000000c008d100eb04000000000000fa40d100ec040000000000003679d100ed0400000000000073b1d100ee0400000000000087cdd100ef04000000000000a6e9d100f004000000000000e521d200f1040000000000001e5ad200f2040000000000005692d200f30400000000000092cad200f40400000000000052ddd200f504000000000000ce02d300f604000000000000e13ad300f7040000000000003444d300f804000000000000dc56d300f904000000000000ef72d300fa040000000000004d7cd300fb0400000000000024abd300fc04000000000000a1d0d300fd040000000000005be3d300fe04000000000000901bd400ff04000000000000ce53d40000050000000000000a8cd40001050000000000003ac4d40002050000000000004ae0d400030500000000000069fcd4000405000000000000a134d50005050000000000006047d5000605000000000000de6cd50007050000000000001ba5d500080500000000000058ddd50009050000000000009415d6000a05000000000000d24dd6000b05000000000000f085d6000c050000000000001ebed6000d05000000000000fbecd6000e050000000000005bf6d6000f050000000000008b2ed7001005000000000000c566d7001105000000000000029fd700120500000000000036d7d70013050000000000006f0fd80014050000000000009f47d8001505000000000000c97fd8001605000000000000e4b7d80017050000000000001ff0d80018050000000000005928d90019050000000000009560d9001a050000000000005473d9001b05000000000000718fd9001c05000000000000d198d9001d0500000000000031a2d9001e050000000000000fd1d9001f05000000000000cfe3d90020050000000000004f09da0021050000000000008941da002205000000000000b979da002305000000000000edb1da00240500000000000047bbda00250500000000000054d7da00260500000000000007eada00270500000000000067f3da0028050000000000003a22db0029050000000000005e5adb002a050000000000007892db002b05000000000000b0cadb002c05000000000000e702dc002d05000000000000183bdc002e050000000000007644dc002f050000000000002773dc003005000000000000dd85dc0031050000000000004dabdc00320500000000000086e3dc003305000000000000bb1bdd003405000000000000944add003505000000000000f453dd003605000000000000ad66dd003705000000000000298cdd00380500000000000060c4dd0039050000000000009cfcdd003a05000000000000fa05de003b05000000000000d734de003c05000000000000b56cde003d0500000000000045a4de003e05000000000000a1d2de003f05000000000000e4dbde0040050000000000002fe5de0041050000000000003c05df004205000000000000d81adf004305000000000000d636df0044050000000000002840df004505000000000000d252df004605000000000000cf6edf004705000000000000a9a6df004805000000000000eeafdf00490500000000000047b9df004a05000000000000b1dedf004b050000000000000de8df004c050000000000006e0de0004d05000000000000cb16e0004e05000000000000d84ee0004f050000000000007886e0005005000000000000b3bee0005105000000000000c3f6e0005205000000000000fe2ee10053050000000000002c67e1005405000000000000e679e1005505000000000000a68ce1005605000000000000629fe10057050000000000009bd7e10058050000000000005806e2005905000000000000b10fe2005a05000000000000e647e2005b050000000000001880e2005c050000000000007689e2005d050000000000004cb8e2005e050000000000007ef0e2005f05000000000000b228e3006005000000000000e760e30061050000000000002499e300620500000000000060d1e30063050000000000009c09e4006405000000000000d441e4006505000000000000334be40066050000000000000a7ae4006705000000000000e0a8e400680500000000000040b2e40069050000000000006feae4006a05000000000000a022e5006b05000000000000de5ae5006c050000000000001a93e5006d0500000000000055cbe5006e050000000000000bdee5006f050000000000008203e6007005000000000000db0ce6007105000000000000b53be6007205000000000000f073e60073050000000000004e7de60074050000000000002cace60075050000000000008cb5e60076050000000000006be4e6007705000000000000a51ce7007805000000000000dc54e7007905000000000000168de7007a050000000000004ac5e7007b0500000000000057fde7007c050000000000009335e8007d05000000000000d06de8007e050000000000002e77e8007f0500000000000004a6e80080050000000000003fdee80081050000000000007b16e9008205000000000000b74ee9008305000000000000e886e900840500000000000015bfe900850500000000000046f7e9008605000000000000602fea0087050000000000000442ea0088050000000000005a4bea0089050000000000006a67ea008a05000000000000889fea008b05000000000000daa8ea008c0500000000000079d7ea008d050000000000009f0feb008e050000000000005c22eb008f050000000000001c35eb009005000000000000d847eb0091050000000000000e80eb0092050000000000003eb8eb00930500000000000076f0eb009405000000000000ad28ec009505000000000000e660ec0096050000000000002399ec00970500000000000060d1ec0098050000000000009e09ed0099050000000000005e1ced009a05000000000000da41ed009b050000000000009654ed009c050000000000005567ed009d05000000000000127aed009e050000000000004ab2ed009f0500000000000082eaed00a005000000000000e1f3ed00a105000000000000bd22ee00a205000000000000fa5aee00a3050000000000003493ee00a405000000000000929cee00a50500000000000070cbee00a605000000000000ac03ef00a705000000000000eb3bef00a805000000000000fb73ef00a905000000000000feabef00aa05000000000000bebeef00ab0500000000000038e4ef00ac050000000000004e1cf000ad050000000000008854f000ae05000000000000958cf000af05000000000000c5c4f000b005000000000000fffcf000b1050000000000002e35f100b205000000000000de47f100b305000000000000466df100b4050000000000005da5f100b50500000000000094ddf100b605000000000000c115f200b705000000000000fa4df200b8050000000000002d86f200b90500000000000067bef200ba05000000000000a0f6f200bb05000000000000b52ef300bc050000000000003254f300bd05000000000000ef66f300be05000000000000239ff300bf0500000000000032d7f300c005000000000000dde9f300c1050000000000001e0ff400c2050000000000004f47f400c3050000000000008d7ff400c4050000000000006bb7f400c5050000000000009beff400c605000000000000c927f500c705000000000000ff5ff500c8050000000000003198f500c90500000000000063d0f500ca050000000000008908f600cb05000000000000c240f600cc050000000000001d66f600cd05000000000000ca78f600ce05000000000000fbb0f600cf0500000000000031e9f600d0050000000000006021f700d1050000000000009e59f700d205000000000000d891f700d3050000000000000acaf700d4050000000000004402f800d5050000000000007b3af800d605000000000000fa5ff800d705000000000000b672f800d805000000000000ebaaf800d90500000000000048b4f800da0500000000000024e3f800db05000000000000601bf900dc050000000000009753f900dd05000000000000ac8bf900de05000000000000e3c3f900df050000000000001cfcf900e0050000000000005934fa00e105000000000000936cfa00e205000000000000a7a4fa00e305000000000000dfdcfa00e4050000000000001a15fb00e5050000000000004d4dfb00e605000000000000a656fb00e7050000000000007b85fb00e805000000000000a2bdfb00e905000000000000dff5fb00ea050000000000005f1bfc00eb050000000000001e2efc00ec050000000000005266fc00ed050000000000000c79fc00ee05000000000000cc8bfc00ef050000000000002995fc00f005000000000000899efc00f105000000000000c1d6fc00f2050000000000007ee9fc00f3050000000000003dfcfc00f405000000000000f00efd00f5050000000000004c18fd00f6050000000000001a47fd00f7050000000000004a7ffd00f80500000000000086b7fd00f905000000000000beeffd00fa050000000000001ef9fd00fb05000000000000ee27fe00fc050000000000000944fe00fd050000000000002560fe00fe05000000000000307cfe00ff050000000000002798fe000006000000000000e2aafe00010600000000000042b4fe0002060000000000005dd0fe0003060000000000009a08ff000406000000000000ca40ff000506000000000000244aff000606000000000000f278ff0007060000000000002db1ff00080600000000000063e9ff000906000000000000712100010a06000000000000313400010b060000000000004c5000010c06000000000000ac5900010d06000000000000b49100010e06000000000000e3c900010f06000000000000f60101011006000000000000103a010111060000000000003056010112060000000000004c720101130600000000000084aa01011406000000000000c2e201011506000000000000fe1a02011606000000000000235302011706000000000000618b020118060000000000009dc3020119060000000000005ad602011a06000000000000badf02011b06000000000000d7fb02011c06000000000000370503011d06000000000000f71703011e06000000000000133403011f06000000000000516c03012006000000000000107f030121060000000000008da403012206000000000000cadc03012306000000000000f81404012406000000000000324d0401250600000000000070850401260600000000000080bd040127060000000000008bf504012806000000000000842d05012906000000000000d73605012a060000000000008b6505012b06000000000000c19d05012c06000000000000f9d505012d060000000000002e0e06012e06000000000000664606012f060000000000009d7e06013006000000000000d7b60601310600000000000011ef06013206000000000000442707013306000000000000725f07013406000000000000af9707013506000000000000e7cf070136060000000000001f0808013706000000000000372408013806000000000000544008013906000000000000917808013a06000000000000c8b008013b0600000000000001e908013c060000000000000f2109013d06000000000000085909013e06000000000000a99009013f06000000000000b5c809014006000000000000c5000a014106000000000000d2380a01420600000000000006710a014306000000000000f5a80a0144060000000000002be10a01450600000000000012190b01460600000000000048510b01470600000000000086890b014806000000000000e5920b014906000000000000c4c10b014a0600000000000000fa0b014b060000000000001d320c014c060000000000000b6a0c014d06000000000000c5980c014e060000000000001aa20c014f06000000000000d7d00c0150060000000000002dda0c01510600000000000069120d015206000000000000a44a0d015306000000000000df820d0154060000000000001dbb0d01550600000000000055f30d015606000000000000852b0e01570600000000000083630e015806000000000000c39b0e0159060000000000001ba50e015a060000000000007bae0e015b06000000000000f7d30e015c06000000000000afe60e015d06000000000000290c0f015e0600000000000065440f015f06000000000000db690f016006000000000000977c0f016106000000000000d2b40f016206000000000000ecec0f016306000000000000062510016406000000000000ea5c10016506000000000000f49410016606000000000000ffcc100167060000000000005ed610016806000000000000d6fb10016906000000000000340511016a06000000000000613d11016b060000000000008b7511016c06000000000000919111016d06000000000000abad11016e06000000000000e0e511016f060000000000001d1e120170060000000000005556120171060000000000006c8e120172060000000000008aaa12017306000000000000a3c612017406000000000000bdfe12017506000000000000f83613017606000000000000126f130177060000000000006c9413017806000000000000c99d1301790600000000000029a713017a060000000000005bdf13017b06000000000000b8e813017c0600000000000016f213017d060000000000008d1714017e06000000000000ec2014017f06000000000000a43314018006000000000000bc4f14018106000000000000d58714018206000000000000919a1401830600000000000005c0140184060000000000005fc914018506000000000000f8f714018606000000000000a10a15018706000000000000fa1315018806000000000000561d15018906000000000000fa2f15018a06000000000000513915018b06000000000000aa4215018c06000000000000106815018d060000000000002f8415018e060000000000004ba015018f060000000000002cbc15019006000000000000ccce1501910600000000000019d81501920600000000000076e115019306000000000000331016019406000000000000664816019506000000000000998016019606000000000000d5b81601970600000000000093cb16019806000000000000f3d4160199060000000000000ff116019a06000000000000cd0317019b06000000000000492917019c06000000000000a33217019d06000000000000444517019e060000000000003a6117019f06000000000000117d1701a0060000000000001c991701a10600000000000059d11701a2060000000000008c091801a306000000000000c2411801a4060000000000001e4b1801a50600000000000037671801a606000000000000f2791801a7060000000000001fb21801a806000000000000dec41801a90600000000000056ea1801aa0600000000000005fd1801ab0600000000000079221901ac06000000000000b25a1901ad06000000000000e5921901ae06000000000000f9ca1901af060000000000005df01901b00600000000000017031a01b1060000000000003a3b1a01b206000000000000e64d1a01b30600000000000044731a01b406000000000000a37c1a01b50600000000000078ab1a01b6060000000000006ee31a01b706000000000000921b1b01b806000000000000be531b01b9060000000000001d5d1b01ba06000000000000ec8b1b01bb0600000000000009c41b01bc06000000000000e5fb1b01bd06000000000000f1331c01be06000000000000ef6b1c01bf06000000000000a39a1c01c006000000000000fba31c01c106000000000000f2db1c01c206000000000000f8131d01c306000000000000df4b1d01c40600000000000075831d01c506000000000000aaa81d01c6060000000000003bbb1d01c7060000000000002fd71d01c80600000000000017f31d01c90600000000000067fc1d01ca06000000000000ad211e01cb06000000000000fb2a1e01cc0600000000000052341e01cd06000000000000da621e01ce06000000000000c87e1e01cf06000000000000b09a1e01d00600000000000089d21e01d1060000000000000fe51e01d2060000000000005fee1e01d3060000000000003b0a1f01d406000000000000f8411f01d50600000000000098541f01d606000000000000ac5d1f01d70600000000000094791f01d8060000000000006eb11f01d90600000000000038e91f01da060000000000000b212001db06000000000000e6582001dc06000000000000c8902001dd0600000000000062a32001de060000000000007ac82001df060000000000001cdb2001e0060000000000005d002101e10600000000000021382101e206000000000000f76f2101e3060000000000003d792101e406000000000000cea72101e50600000000000095df2101e6060000000000006e172201e706000000000000334f2201e80600000000000085582201e90600000000000010872201ea06000000000000eea22201eb06000000000000cbbe2201ec06000000000000a9da2201ed060000000000009ef62201ee060000000000003d092301ef06000000000000782e2301f0060000000000000c412301f1060000000000005e4a2301f20600000000000045662301f3060000000000003b822301f406000000000000299e2301f506000000000000fed52301f606000000000000990d2401f7060000000000002c202401f806000000000000173c2401f90600000000000063452401fa06000000000000fd572401fb060000000000002a7d2401fc0600000000000000b52401fd06000000000000b8ec2401fe0600000000000037242501ff06000000000000155c25010007000000000000e69325010107000000000000a6cb25010207000000000000630326010307000000000000b30c260104070000000000000916260105070000000000005b1f26010607000000000000523b260107070000000000004857260108070000000000002d732601090700000000000018ab26010a07000000000000fdc626010b07000000000000ede226010c070000000000008d1127010d07000000000000e31a27010e07000000000000cc5227010f07000000000000ac8a270110070000000000004b9d2701110700000000000090c22701120700000000000087fa27011307000000000000583228011407000000000000fe6928011507000000000000557328011607000000000000f4a128011707000000000000ced9280118070000000000007d1129011907000000000000414929011a070000000000001a8129011b07000000000000deb829011c07000000000000bff029011d07000000000000a8282a01" + "babeEpochChanges": "0x0499ed11844881f9a3e6791b1032a0e229db03a40fd8c5634cbacc85757c3c1b92abaf2b010173eef91000000000d3f7f9100000000004651bd04476837746eaf45e4269c11d1ae31c02468cf50d968b347db96ec3b198f8b82b0101d3f7f910000000003301fa100000000004440a975e0d61ca352b2acd649ebaa94d6c42695ce0ee438c627abe2c518171a352c22b01013301fa1000000000930afa100000000000000c440a975e0d61ca352b2acd649ebaa94d6c42695ce0ee438c627abe2c518171a352c22b01011f200000000000003301fa10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a54010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec214541750100000000000000643fa48931f2331b61ce9664acef49522251d1e671490d50d48aebdab81c2b3101000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000503cafb91c14eaa2931c4507090b27170b90a2a76d3cd4669f922202c781fc350100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e010000000000000028cbfe245b9eec3bf55d8d249ab3680490644aa23a7b688e00478e7fcb0fe02901000000000000003ed19f8df1a2d2c1176df07baff4206c94f4d752de6a46c5f3f34264a88b0a0701000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b0100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a935010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f01000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b74010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc190100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f067877170100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf710100000000000000b6397b9e34e46715868bbaa83cb67dec4d78ce992f4a9c973e6fc1e2dde3d76b010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e70210100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf080100000000000000be03fe6bc03a7884524047567a8ccf43b3c988bf3b447ca9e1520d1c1f83c53901000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b01000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb5501000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b0100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d8708132010000000000000080413d2894759b53a03874bf96ffcb66117e4a08ad7f159c008f2b3b6cfcbb470100000000000000ea885fca10a9473631bcca2549cb8183beef534a7ee2bd59a0a6f74d97bcfc4401000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a796260100000000000000344589372873125fd660e2ff3ad9bf67230f9306acccaea070aed322a8ede264010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d030100000000000000584bf60b8b17ddaf70f87f371bd2b425a3637e05c1b75469f45ea85717063b6901000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000f85f12f4fb92075bc59a1711f35e8f3c8313ff08028d2af80a79b3682a3785590100000000000000f8db92b1e5f6e9a7f23435a2aadab56d5ab7746c978965d924de2f89ef063c21010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a0100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b35150100000000000000800dd25a7aea3fd7359065185cb35b4a2fad0b81b3d58de638e6764dc8a8211d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e638010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb1901000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f610010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000ba12ca0e39666950f91cccac64a409fc9216e0e6e7466d26cbcf7925c3d0fe120100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f845010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f49533301000000000000009ad5ff7033b5708f5de5496a94c16fefa6de45ad641910b81d6699c37888435801000000000000003ed1ddb7a3c787fb4b4ec4b71c6d8b8227ec5b2b74206be0df38c9e85af482040100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea8400100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d7101000000000000001cdcbae0de1e2be6288b7bdb0837bdba849f0c93e86b21d8f8f7d425d933193001000000000000000c73fd83ff0d798ecd6be0518e340dd60c45bdd386c95236ad1db6b1572f1c7d01000000000000004678cfe8b5ab7811861b19336b572f9c7175ad92efbd8a031e5fcdda58173f51010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d010000000000000092d42adbe88eb57759aac9f72ef4a88c3459635bf9886f4613371efd4e7fd14a0100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000b2967e3480b89af39e38367f948fb287568f27bfdac4b65fbc9d97536c79c7000100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d410100000000000000d0389974c754c672124ce98f5d49f4582fc60aae5fec560b5c332a07d835412d01000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000026fa6b3ccef89437308d6c893173c45de62e3c2cca8b6a67ad951ef8127792240100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d80666401000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e01000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e2529010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da7201000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c49142010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f0100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac56101000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000f6f94569aba4acba85b7745a91caaac8a89c95469cf2b9813891eeb94327937b010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de32010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d0100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d6901000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f0100000000000000e0f7debc0989ef62dee42d2cfc81a07625f89e511c3baeed9e6952e66d9b6a460100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a010000000000000066f55d4bd0b47f3cdad20c74b98e204e51bd12799df198045a1d670e3661732b01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa3502010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e01000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f07685201000000000000008ac742d2a3a14cefdfc819c03f5d439eb8325b7f0eeec0a9d4025784ba7e057b010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc240100000000000000ca526faf8ee5263d4006452735885dce304cf724040fce84399254d9160d6f350100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c2801000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e4601000000000000009afa4df63a9a72e8dd0710638b6b6a10e37fbe2ca640f828c0f943e5ea38395501000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb5568770100000000000000683ce8ca29f09be942c929571aaa188b89625f28569721b41eb48329dc1b4b0a01000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000b842693f8e988a596491b840510f98489ae286129b41fa51b8331ca3b82da7590100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e2101000000000000003289fb8751519a2f8d56df55e5491439852a63aa916d9d779cbf574df9a5d86e0100000000000000b85b1b7b8ed510a5bc1d0979fdc04ec7b73d84c7d1d767dafb6faccc8dfd402c010000000000000038ab6c4b18e1c86176cf53301ea990f1cdddcdc3f2c3e0f8dde126fa59f60b2f0100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a1843220100000000000000840c71fc86d7df66080508495f2c2ef97ae503dbd75362c96a6dcfd2cb30b4450100000000000000040000000000000002651bd04476837746eaf45e4269c11d1ae31c02468cf50d968b347db96ec3b198f8b82b01011e20000000000000d3f7f910000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a54010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec214541750100000000000000643fa48931f2331b61ce9664acef49522251d1e671490d50d48aebdab81c2b3101000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000503cafb91c14eaa2931c4507090b27170b90a2a76d3cd4669f922202c781fc350100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e010000000000000028cbfe245b9eec3bf55d8d249ab3680490644aa23a7b688e00478e7fcb0fe02901000000000000003ed19f8df1a2d2c1176df07baff4206c94f4d752de6a46c5f3f34264a88b0a0701000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b0100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a935010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f01000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b74010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc190100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f067877170100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf710100000000000000b6397b9e34e46715868bbaa83cb67dec4d78ce992f4a9c973e6fc1e2dde3d76b010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e70210100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf080100000000000000be03fe6bc03a7884524047567a8ccf43b3c988bf3b447ca9e1520d1c1f83c53901000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b01000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb5501000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b0100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d8708132010000000000000080413d2894759b53a03874bf96ffcb66117e4a08ad7f159c008f2b3b6cfcbb470100000000000000ea885fca10a9473631bcca2549cb8183beef534a7ee2bd59a0a6f74d97bcfc4401000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a796260100000000000000344589372873125fd660e2ff3ad9bf67230f9306acccaea070aed322a8ede264010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d030100000000000000584bf60b8b17ddaf70f87f371bd2b425a3637e05c1b75469f45ea85717063b6901000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000f85f12f4fb92075bc59a1711f35e8f3c8313ff08028d2af80a79b3682a3785590100000000000000f8db92b1e5f6e9a7f23435a2aadab56d5ab7746c978965d924de2f89ef063c21010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a0100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b35150100000000000000800dd25a7aea3fd7359065185cb35b4a2fad0b81b3d58de638e6764dc8a8211d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e638010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb1901000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f610010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000ba12ca0e39666950f91cccac64a409fc9216e0e6e7466d26cbcf7925c3d0fe120100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f845010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f49533301000000000000009ad5ff7033b5708f5de5496a94c16fefa6de45ad641910b81d6699c37888435801000000000000003ed1ddb7a3c787fb4b4ec4b71c6d8b8227ec5b2b74206be0df38c9e85af482040100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea8400100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d7101000000000000001cdcbae0de1e2be6288b7bdb0837bdba849f0c93e86b21d8f8f7d425d933193001000000000000000c73fd83ff0d798ecd6be0518e340dd60c45bdd386c95236ad1db6b1572f1c7d01000000000000004678cfe8b5ab7811861b19336b572f9c7175ad92efbd8a031e5fcdda58173f51010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d010000000000000092d42adbe88eb57759aac9f72ef4a88c3459635bf9886f4613371efd4e7fd14a0100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000b2967e3480b89af39e38367f948fb287568f27bfdac4b65fbc9d97536c79c7000100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d410100000000000000d0389974c754c672124ce98f5d49f4582fc60aae5fec560b5c332a07d835412d01000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000026fa6b3ccef89437308d6c893173c45de62e3c2cca8b6a67ad951ef8127792240100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d80666401000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e01000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e2529010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da7201000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c49142010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f0100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac56101000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000f6f94569aba4acba85b7745a91caaac8a89c95469cf2b9813891eeb94327937b010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de32010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d0100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d6901000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f0100000000000000e0f7debc0989ef62dee42d2cfc81a07625f89e511c3baeed9e6952e66d9b6a460100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a010000000000000066f55d4bd0b47f3cdad20c74b98e204e51bd12799df198045a1d670e3661732b01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa3502010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e01000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f07685201000000000000008ac742d2a3a14cefdfc819c03f5d439eb8325b7f0eeec0a9d4025784ba7e057b010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc240100000000000000ca526faf8ee5263d4006452735885dce304cf724040fce84399254d9160d6f350100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c2801000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e4601000000000000009afa4df63a9a72e8dd0710638b6b6a10e37fbe2ca640f828c0f943e5ea38395501000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb5568770100000000000000683ce8ca29f09be942c929571aaa188b89625f28569721b41eb48329dc1b4b0a01000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000b842693f8e988a596491b840510f98489ae286129b41fa51b8331ca3b82da7590100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e2101000000000000003289fb8751519a2f8d56df55e5491439852a63aa916d9d779cbf574df9a5d86e0100000000000000b85b1b7b8ed510a5bc1d0979fdc04ec7b73d84c7d1d767dafb6faccc8dfd402c010000000000000038ab6c4b18e1c86176cf53301ea990f1cdddcdc3f2c3e0f8dde126fa59f60b2f0100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a184322010000000000000069e31581291fb1d743f0e22442d12c828c5b1e0d6976003991273662361969e0010000000000000004000000000000000299ed11844881f9a3e6791b1032a0e229db03a40fd8c5634cbacc85757c3c1b92abaf2b01011d2000000000000073eef910000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a54010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec214541750100000000000000643fa48931f2331b61ce9664acef49522251d1e671490d50d48aebdab81c2b3101000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000503cafb91c14eaa2931c4507090b27170b90a2a76d3cd4669f922202c781fc350100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e010000000000000028cbfe245b9eec3bf55d8d249ab3680490644aa23a7b688e00478e7fcb0fe02901000000000000003ed19f8df1a2d2c1176df07baff4206c94f4d752de6a46c5f3f34264a88b0a0701000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b0100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a935010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f01000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b74010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc190100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f067877170100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf710100000000000000b6397b9e34e46715868bbaa83cb67dec4d78ce992f4a9c973e6fc1e2dde3d76b010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e70210100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf080100000000000000be03fe6bc03a7884524047567a8ccf43b3c988bf3b447ca9e1520d1c1f83c53901000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b01000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb5501000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b0100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d8708132010000000000000080413d2894759b53a03874bf96ffcb66117e4a08ad7f159c008f2b3b6cfcbb470100000000000000ea885fca10a9473631bcca2549cb8183beef534a7ee2bd59a0a6f74d97bcfc4401000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a796260100000000000000344589372873125fd660e2ff3ad9bf67230f9306acccaea070aed322a8ede264010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d030100000000000000584bf60b8b17ddaf70f87f371bd2b425a3637e05c1b75469f45ea85717063b6901000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000f85f12f4fb92075bc59a1711f35e8f3c8313ff08028d2af80a79b3682a3785590100000000000000f8db92b1e5f6e9a7f23435a2aadab56d5ab7746c978965d924de2f89ef063c21010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a0100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b35150100000000000000800dd25a7aea3fd7359065185cb35b4a2fad0b81b3d58de638e6764dc8a8211d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e638010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb1901000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f610010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000ba12ca0e39666950f91cccac64a409fc9216e0e6e7466d26cbcf7925c3d0fe120100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f845010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f49533301000000000000009ad5ff7033b5708f5de5496a94c16fefa6de45ad641910b81d6699c37888435801000000000000003ed1ddb7a3c787fb4b4ec4b71c6d8b8227ec5b2b74206be0df38c9e85af482040100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea8400100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d7101000000000000009c576fccaf2ffb4885a0ac8ed7ba0b80ee5fd060856fb9f80bdd3219e5d7800d01000000000000000c73fd83ff0d798ecd6be0518e340dd60c45bdd386c95236ad1db6b1572f1c7d01000000000000004678cfe8b5ab7811861b19336b572f9c7175ad92efbd8a031e5fcdda58173f51010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d010000000000000092d42adbe88eb57759aac9f72ef4a88c3459635bf9886f4613371efd4e7fd14a0100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000b2967e3480b89af39e38367f948fb287568f27bfdac4b65fbc9d97536c79c7000100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d410100000000000000d0389974c754c672124ce98f5d49f4582fc60aae5fec560b5c332a07d835412d01000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000026fa6b3ccef89437308d6c893173c45de62e3c2cca8b6a67ad951ef8127792240100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d80666401000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e01000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e2529010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da7201000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c49142010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f0100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac56101000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000f6f94569aba4acba85b7745a91caaac8a89c95469cf2b9813891eeb94327937b010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de32010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d0100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d6901000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f0100000000000000e0f7debc0989ef62dee42d2cfc81a07625f89e511c3baeed9e6952e66d9b6a460100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a010000000000000066f55d4bd0b47f3cdad20c74b98e204e51bd12799df198045a1d670e3661732b01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa3502010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e01000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f07685201000000000000008ac742d2a3a14cefdfc819c03f5d439eb8325b7f0eeec0a9d4025784ba7e057b010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc240100000000000000ca526faf8ee5263d4006452735885dce304cf724040fce84399254d9160d6f350100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c2801000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e4601000000000000009afa4df63a9a72e8dd0710638b6b6a10e37fbe2ca640f828c0f943e5ea38395501000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb5568770100000000000000683ce8ca29f09be942c929571aaa188b89625f28569721b41eb48329dc1b4b0a01000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000b842693f8e988a596491b840510f98489ae286129b41fa51b8331ca3b82da7590100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e2101000000000000003289fb8751519a2f8d56df55e5491439852a63aa916d9d779cbf574df9a5d86e0100000000000000b85b1b7b8ed510a5bc1d0979fdc04ec7b73d84c7d1d767dafb6faccc8dfd402c010000000000000038ab6c4b18e1c86176cf53301ea990f1cdddcdc3f2c3e0f8dde126fa59f60b2f0100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a184322010000000000000035df8c67b3e36862a6d20e58b429c739fe60cdcb14a977335c692cf84061672f0100000000000000040000000000000002", + "babeFinalizedBlockWeight": 4905142, + "finalizedBlockHeader": "0xbaf2c66b730543579b98aac3c82340520834bd8edb0825504768951a28f039c29e0faf0438c607f9e2b5704ee47af74adc75b555a5d9bbdfaf00caaed4642fc05318e8de41565cf4a345b56c5a24d8c446567c16929f2279c904371363048fef12c7013e0c0642414245b501033f0000006df9f910000000009c40b3360d552bc490667bd8a20a3ce5e6322f3bf196d98e65e4c6f720e5b84a18c53a29473c2731e3a029bf4170042482be4b4a539a83a247db59c5879f440ebee6eabb0526d1f8927754cda5fe9d46094d313edc5f6a1be6c3bf69641a190c04424545468403b2c2b8932a78da0ef27b6e51f96b877954d11041311ac99533f2903bf3c71cf7054241424501015a8edff0a718f96d27d5a4f975882a1ed4dddc3d137717f535600ca66f13710f68686b9dfa9c9365cc9883aaf2608cd39351a4cbcfc9b55d28fd72cb7ca8f08d", + "grandpaAuthoritySet": "0xa5046f706506065685b322054d22e8a1f23ca9df75c32a88dda5214ad58b553b4cca01000000000000008a239af78d4659897af698b5670533fa6d215864be8c41e3a2fc4309f9f83dcb0100000000000000e2b9e72d9202e99526fa626d9a6651dfd7c1daec8fc6ba1130af96f7d21a42da010000000000000047f940bc985355be7187c709ded2b689b66d69e61e293a507f1d4f90bdbeceee01000000000000001bae9b223279cf7f43805d7158bc4a31a981be184f969784091af289f854a0a801000000000000004a3fc0fe1020c7f460c7bd23d0b657c03368552b2f0a12d80a1c406fd066e0db01000000000000009b992b5e9b99eb2cd3b2b648d6db81ed722a2feb4938d998b58dcb5d159fadfa0100000000000000aee9de3938173700b3e3f4fbf2b200ae296173a0854157f40de2598dd4cad8f10100000000000000ed70004b41d483626fb8080957192ded96e08afe38fd0d185ea02bbf3b2f6a760100000000000000243f110deac5efe8e963d794eb8706a1895ae1942523ab0fe9e1623515b7dea80100000000000000b61e9b13e849779be8f5378a670d61991875d8e091f359384d7be73d02d506930100000000000000426b2be4596a759a15028d84e08c5c56440e6cede68d088f47c671cc3387c3e6010000000000000070ba6e5985990ba1b1392713236f1b50df750f10f744cc6eb95fa7c5cfbc68760100000000000000d343862beda4cf485b4a3b7e9b62d3b7e6263b47f65a7c88c88f6e0f1350c7a501000000000000009fc0dde9a352d1ee6ec34287a06a99e80bcbe708469d795a8c29448bed6a6c45010000000000000054e3d0d93579bedb7759b60e4b5a009f93fc86ff8da59c00b06b318a4c8d95ea0100000000000000e511d441d6d3c822cb276bb2a14b1c8071d9fe1995802383fb5dcf8a92edcfc20100000000000000a15896b8bbf01f757f120813bc2e78b21388eea66db4b0dc2e1afeabd3d46dc00100000000000000be2235b9d9c9164f494dd688000fb569a37d5c47912ef99b9ebda9318d13345e01000000000000000139b946b46bee4c61be50c986f2a9ef2e76917644e2ecd842c59d61a94ee612010000000000000019a9d56ea35496122fc44fcb5c29d27fbb43520556d6f8d97753767aaa0f228e0100000000000000a8dbfc6cb88ac105e25b9dc7f11e883631824647cd4d0c18014bb6239627b2900100000000000000a5b094ae7c156592baa68ce18dab6368d5b665e9a0f07dfc5f54f58309e086c1010000000000000041ef4a31eb7dc1e01f4630604e1908e644d7cdee3f66a60f98d6d59605326f8b010000000000000097743d6364cdb6c4790cd37c4c2ab5fbc6c65e8bb606625e70a6ee04ed1650d9010000000000000008cc1d6c743da905511a39a6f0a68809a6bc32f8ac25e53bb2d6aca4f493fc9b0100000000000000acd71d4269b3ba2a9de822d494c4d841708e1519c08de41d7fc6153eaf48da810100000000000000d04d64a07f144638f20f081de122b88fed0cc8bda57e4810e7afb38036dd8bbf0100000000000000f26945a8a64032a1defa76e720a99649125b55751b6088205e7acab901de670b01000000000000005cba2c6f569da1edc3778308da406f266aa53140381dbb3f14f22909ba6e30040100000000000000dac2e90de824b109043f70818d53eabe05e79d518bda504e951d7f4056b0b2720100000000000000652f455eb3d30486151c716a4031bc02bd00254ef3e8290fd29f946d958a46b60100000000000000589fc35b132ef9d7ed9a6787a203e5a3a37f8cd6c775f47ac5e589d55d381a6401000000000000006f4855725ebb9eced957bae43ffa7d30657ce7d06b251ce20e2218bcf929e4050100000000000000749556da4a259bc1f0b8ea8e3726c2251656b92205c30b635ec9f42038f8defb01000000000000000ce4d93e25fa5302f4b059456f680047f87be428ae88579e0b862502b5ceed600100000000000000c1758f7cbffeb844419bc494a9dc65fb394259f01e9bf23789a75acc29d7d9620100000000000000c1c1ff5f66fefb5c0849e3b2333411d1f7e9dd4888600e334e7a33623f15fa360100000000000000fe240e80ff8a48a77947b394979cf361017cd906ddaab637d72cf72e729d79bf010000000000000006854c73f5703242d31d2576ac2297c93f0b5dc16ade0097c59d5dc0faa43c550100000000000000fa2c21f1a03638d4cb35202102240c2b85f5667924d5838cc503721117049da601000000000000008aabd4f6d7ecec7a749c83fc7be33f3b4818cca6f93a4927b4964900df9454e50100000000000000fcc0d954c7d519851e0094cd9a015b4789022a37091e3a04791d0731bd85f0d301000000000000003948bfd09bbbc2fe6ac5dfe53146e32df50828eecf7b2b18cdcff8dc385cbd750100000000000000a2a4af2a11ae7ba812fcc32845583d0354a0f2ffb1271a53c9a976a0f47fff44010000000000000058e304af91397247f704ce95d60845629aa59a50fba1c13896bb2300708db4720100000000000000070bae15860ce96e4a0cbdcc051c75e37a458c8e6c5ae59681d0ed938e588d4501000000000000003ec37919f9f43a9f85f539edfde3ceebea1b0e8279cb036641d588a9da81a6ad01000000000000005e48598ca89db19a4c279a251216d81e33f6b69e7d2ab4450968a1f9409df4a30100000000000000f510cb6c7032c9134dd3e50014ff6d391cfc91606d003fd4acd37e00f919d8350100000000000000cbd74a646a84b73518eadc73b1983dc9733839739576af9a98c698070a3a4b590100000000000000d2e72b0ab02a001b2e573c0d3b78404a7d3c600c3a9fd8ef38e823cad6ed3d6601000000000000003047f8f7e9c47fda9130ccd57d5dc8d407bd89b8dcf8ecbaccf00da184c73a570100000000000000024743c39cd9e151344dc23c65ee0346132d190a224b687be5c5ae31c5e7bb0a01000000000000004e3fb8c16ad624c1852777456805e5352d0221269de66949c95da4076206b35a01000000000000007ad55381f9de00220678c95a19489640fc61331e2a40d927e3d833555575c6fc0100000000000000485d1c94299c3b74c4a87aab7b7d8e2ec3256fce3bcdc0f33a4d2a196e4ee2b60100000000000000b98c920666586f392d129d480e78a965764ac82de45e691589b3aab7831a7f020100000000000000cb92ffeace78dbafe6fbf275741b4b38657fb81590712aa0bca7877931f6ad39010000000000000034a18d21097f479eecbe51b91c522a798582caafc787134bab6888854742406e010000000000000027791275ae7d4735aa45e70210663067f7d268aa57126a26044c8f6d8572a7d80100000000000000f7c9f4bc8669969246cfb748ac6996db6cd4c1fc634d981a1093b2c3d7a2eadf0100000000000000ba95f5d0e987305bb794dfeae69d7dd6a7987aa66cd7c9d42aca15e9160ec6a10100000000000000ffd82ddc49373448bed6feb0032744e20068f4e21adc4cb6d2cbf05ce73f4ce40100000000000000a9f24f0208a21e8cda4e450c72074f20d76a927bb80fa4418e480e0b59575c6b0100000000000000507b0289bfb2f55c7a62ec3c3298690909013c916dd5885b05b330fdc0caf127010000000000000016278af083f6d261762f8a97b6a09ff83e2f5927ce26c2e48f3c7e771dc7e6950100000000000000c49e3cd2c701bb845963c2870dcca12ed070c3f67ffc20144327a93aa6e896ec010000000000000081b1fce3ee9e31723f1023eaa9f8793e8663e72c50fbb0fbcea9bc78bacc491b01000000000000002dad5b2212ee688f2eeb9ca1fb6a90574f006dc1c6680ac3a8523363a248940b010000000000000067ccabbf18c035791cee9c748bea2ca03cf72c40f5ae786f297f84fb05973262010000000000000050f9fd6c0623020debb7843bcb832ee1d80db9b156d8e6083ccebd434fe979470100000000000000b8183b905f28b87c68c2d5b2f39f009f2ee22b47235f6c6d6cf6e63121b490300100000000000000b7c13f1239888cda5c8e6ac9ea10675df17633368906e66a487f91ddd3268ca601000000000000002cd51e09c3197e04155b78f3d97742ceffface390dc46f81f2613a94b2e483fd0100000000000000affb713ecdae328aa4436756f6a3e8add6b274d5ef1cc19d7aa69ab82c80e472010000000000000052912b3dfd0ccacd00586b97f1abe32431a2f6fa9c2b3bb17837a1ecde61728001000000000000008a2b50acd1a4955fc814bf6720c7427902a6ce709f3a2d7c17c55b67f6f1c06301000000000000003a511828c0cdc0fd257387843fdbf6f19d5ca1ef1c29ec7e971fc9f1195eb60c0100000000000000ee5605c1a9ed9484a70b8a591339830f24530eefc4599a7c6188a78896908e2c0100000000000000ad06042b85ed16ff4e46f5a68eba9ac12395366ab17c2da24b4f6747b2c8934f0100000000000000d1c146d2429a5a827660008721c7a880e71f44feaa3dc75524c1a9281bac48cd0100000000000000e4b2cffd0b9cacfc500050b27ecae3c55b9b51bd9a416d62605118c8ad4fb09f0100000000000000b28ba3f09e3521f7d09f0098c6743bc218ee2970068adfa5d908d9d06e627ae50100000000000000f6d74de7b39455519a5d6480c8f12c93fc7a4cfc9af39154fc60857a39ad888b0100000000000000c8be78d05f652edd0a64a5865455de36d0fadb0d91c470fd344f8de23c8a6b9c01000000000000002bb7b11dfe79a12110b0370510ef20d40ba8a563f517310f8bf37cf7f0403de40100000000000000f86e50733ff2142e88fe5b898087b4b1d6a3250064a439097f8995069624adef0100000000000000bba7a1ccb67a410afedb8e033ad69c39e7c554ce0ce6584b0e6688bae30f7d69010000000000000040533a786cd0be9618126633512666b1b1b9ab3b436fa653c93e2f65da9c196b0100000000000000be95095d93298171c6fb8a1847adfa173d127e13f53482dcb694f891d68f0c58010000000000000085b714accac0654ba57fac59b626dd35802269d2c1d995cea7c335cb05a88f7f01000000000000006a5f902cdeda2c2161d16bd21d586720c08c0bbb7b463d9c59147338d26a8a9601000000000000009c11e35911f023df6e4d218e53412ab4e4a20c17961d63ba381c913b51f394c001000000000000007448b6f6db7cfffd8650a1f3f08ddad1e114321ea770c9cfe6154882f586edb50100000000000000ffcca343512faeffe1cb3a8a7ce62fa4ee0c7f6a5f3e5ac883482846e132813d010000000000000037483029302a84623f0a8db165fbed905b0a4fc25e7cfb56e975a0e98336a59b0100000000000000ecc7b49598787520ef6336abaf798adbadd6406bb889d8bcefacbbc1a887a3fa010000000000000053b5918f72e73f92f32b578d1b602f0cc554d98bee8c4e131ef0ac7a63399fb4010000000000000063e935d23d285cec7b014cb7736d65b4acffc45ca589003d3231de8e6db8a8aa01000000000000006180a56305eff3231eebe895b44751f075f826684ef42a862f11e79c3e689cd301000000000000001935d43843c66ecf76a9f4c4229de9ed7c172f52aa53d1a279f2856a736661b80100000000000000068f2c90b93ba6130eb3a03f568411a471d0710086a468f8cba32b34e37411dd01000000000000001b08e8788191e92c357ebc21cac8b35558598fbf2f15a5f9a6bc6d980c2857670100000000000000c7d9cab0fb88dccd0cf4abbf5df9d7f36a3de439c5070c599d397e74133bdfed0100000000000000866fe4ae134938ccf4c5caf01358881c75cfde473b0bb8a2623cc231db2ea3b901000000000000005d202a011f023dfaa6713f16bfd4409dde8bfe594abd59e2be32484c73b97982010000000000000008cb5d0ff7f138698c9fb80a1383155cff65ec7e127c5b3614e2e17963969f100100000000000000fc555c014d927fe7838e840609916b9af5d93892ce6f394398858286802b8c6101000000000000006727561447ed474ff4e15645b952a37fa5008d4e694d4853bb55594fa34c4f340100000000000000af9c4c3cf1a3581ee22c9d1a648bfe92fe6d3a7ae39410f213ef25ce6daecffe0100000000000000ec295fb809e22c332aa36a57afe05f2c093b2d13e52b0971d8265c5514e4e9690100000000000000efb5f1e4c4ba37f8c159d452d897c607a58518b8355a8454620b3e3ccc3271230100000000000000099a9eb71f9cb1b7d15eae384790b4ec35045a19acea1730ba62f3e7caf31e8b0100000000000000d34560b879f8f4dd8d2fbd4f6d51b9b6f41b76656860646fcef4e1498859a19001000000000000008c3dbd5a1b928cb51e918452191e5328b0f6e8de0259517831a90b02dba3e6110100000000000000aa6fd06015b8309ea9103f4b0e29bfa7e21ab5bb1431c3a76433f591c739f8380100000000000000a892342c56149812a43e98c82b6a3dfee7eff384d9b6d832002ea63838f64900010000000000000081bbaa3313b09e3b0ea2817c3e968a33587ec8928539c3f3a6d0e65644612f49010000000000000023f07bcb8dade90cefd08732183d5fe32b89ad8a4f84987b9e4e7e767c2587560100000000000000c13b603b5fe774d98e59c26fac03f8096ccc42c57d0cbc6a443b4f07a3c077920100000000000000be6b59cb464fadec4e0b22a9f12857ba5cf7a14c4f9551439d36305d582dd7fb0100000000000000f916634f9fd7e54374e30ac6b722ad1793c13cb2d5f2ad38769eaca2f79d414b01000000000000007ba967a2dae0d8839cf44710591db994d18e53b25ec6d0f861da0037c4a4366a0100000000000000222ee6c6a6c62d56cadb4eaad5104d595fe962fbbdd551c81562d3b509212907010000000000000055ca63358082034ddaf76b75f41a396081dd4f39a61eff13f7575e506e10335601000000000000000aadf1b2009026f8f5dd75d532e91dc756fd47572aa0f3c15d26790e6d6b2f270100000000000000d0a196fdff4cbca9c7d8a893f9ed66d86038378d8faa1fd8543fcce60ff1cd8c0100000000000000d0b4aada93fb3d0b358e8d59f8914f5987acbc6f5b4f3e12a1ed8d962eded8270100000000000000941547f54cc3f578cd00bb09f03cc5a6d3684fc1e5279f8148b625d993dbf06f01000000000000004f950be5bf61958a0ae6e6a036b85b33ba838de8bd5508b558cbe2602d341168010000000000000082e6b6bf1f275c59fbde0dad91393ae690d5e644d11d23898a9ccfdda025920a010000000000000074b60dfb12745236ba9dc8f925efa21482b50c870c567638ba3240a05fe363d90100000000000000d761043f405069ac01285f1ff258450aac675f08d906b1ae0a1ce54eabcb36d901000000000000000dfbc1b5757e1f0ba348f8af64fb631aaff86cd21fa0529e0bb1fbab250879260100000000000000b770208e14dc236c373cad93e19b092e9c6c7a90604d941c19ca19923d33013f0100000000000000de74612da9080d47be35bf4ded2094e23c1de14477114ddcd7b76b815456ec0c0100000000000000d3b3d9703a265a51a137b9de348587c645a168981ef3e01c9dc482856751b8ef010000000000000003dd543dddd6ad00137ddf94a218bfa19d2f08b4365d696765dc25deef76598b0100000000000000cfb9f7f1fcf903a51af729ed1647aee928630e148990309f9dc9f3b14b114b760100000000000000a2ee8d9c22eba97998d63854409d99c87b21d079f5c888d863a81d41d6abf0110100000000000000d14a779884de1b2fbf079b8e47e8c0edb1c29e282996899a4eab5aaf1f4f41130100000000000000c2344c6fb787621295335b6b5acbab9531199901492d41e13a64dfb2927f83be01000000000000002ba5634557f15c4e9198d1ce0cc525e897d3fdecb0c18af8a53fe4e3384f4a1d0100000000000000fd9edd1de37e1788a07c1563d30ce7929cadd7684c279764e2126cc1477d4bb30100000000000000a70aece9abab1251e65fda7a67d7709c2c5ddb7a253c8a83f146c03732469bd101000000000000001ec0811cbe4f2ea1e5a714d3ba08c6d7fdec138bcc6406da3c6cd32f1686616d01000000000000005208fe27477acbc6750d0caa831c0b26801c58eca046a6cf9d4143f85d877e8301000000000000005667d5ab2b7b56ad406d51dc657f573e65bc1fa542fc3ff43793a487af92aab601000000000000005cd3c5512d1bdedb73e633eb63f71e7f0bfadfb6990de4c8d2b2de1d2195df1e010000000000000021a0865e3e99965f51edf95012ffd7d6ea460956c5ba029cdf1c8820376e51c8010000000000000025ebbb2a00126545bbedf00318a78b6e61a0b52c81e30231ff45bd32e311472f0100000000000000726e7a352b2e7451af1998888180bdf7954e7849230d99bc86b4df51bef4399501000000000000007bbd4f800c34110b6c739ff1e8913a36ab62f25641c4bb7413cd354894b602930100000000000000500a9e1ea37636c24ebf4e32668897dae936eef42b6da49027f606d4f24a7e96010000000000000055d7ad9e836af36e9553c49dbd25d703db296fe5f60099918a12bd1abaa2f7830100000000000000ddac76c2a61c9aef4a9b3247aa0953187533f346466f02840235662440d2945c0100000000000000055c25dcc9cf8a08ad007ed9c8afb0ba53cebd129a20f194d272535ca9fa064901000000000000001e1fe4a3c9f590aff5a70b9cae569605ac78531cc10d310436fe0c306cf2e36101000000000000008ad2a4c25ba87cadf77dccde3a56ac8387fb01a6e84d2dac43927f163e7ca0bf01000000000000004df6e4d7da2c11ddb9153c714699f9ab625bbcd5e8e38f1cdeee567dc04abc610100000000000000982d9e3cc8ef3f8d99638b6f9df32c82356e1cd88f123d1e586a604d1d4b0cb401000000000000009cfeed14dd2f96550a0e7edebd9c9a8c8b1d8f7efdd1abca01987654239f3c860100000000000000736925c31654df870fbc29437c9b2a488ac3262e5d80798534ad00c43a61e5470100000000000000572538d1aaea11c9979bf074e0723ba0228690aa9ee8aa0b81db32aabfd822de01000000000000004c3b4b0a3acf902acec7f5d868f77d78b17fa4cfc5f785d393c9f3d15e04880501000000000000008404cabeb0674765bb77af690fa838ba28fa2045d602994a89f07680f4851c83010000000000000006b9e740c0a0e1f8fd31717438d5918ed8680eaccb70fdc9511931ce0d164ae50100000000000000b8cf76a8082d518016ea5588be57b64e156ed23b0f72248975522c23d15ef16101000000000000002565e04c6e0b665fac87f8238bee74837f8f621ed63409f3838d263603400a980100000000000000373b26b330a41547971874dd81c2cbbf8b7e3eda05b861c57205ad7e8c15bbcf01000000000000002a38a4dcdffc571d547ee3e59121fdd378335df7c65877f983f0957cdc9824130100000000000000620c78305072857b43dadced80ebc057dbfc82b58c14c7b63372ef02140867650100000000000000546ce2099b3863d2d75324d5866bfd5324d8ee4701a99dd53528f8a8c898ca4801000000000000004dc2e72680dbf0156818114fa34d3591f8e6948df25a128e191190c66f6ac35301000000000000005d50d6099c7c88f367568fa473b44785acccd030251627cb371de16e5fa704260100000000000000811038f59afeb084566271eb138b0106a8ca013f57e589d6f777bc7bb2219e760100000000000000f5e2c973d4ccbdd36d8ed4e3dae75d3b50002cc1c74eb0a1fe29ef1ef8e3f0cc0100000000000000258f23d60623fcb1d699a35f79776a9e81e979150ba5098dcc8e3a69a407ff9a0100000000000000b1f748c87b12edf7242b4719cfe68e6761acaa4329beee538d6ff740941d3cd301000000000000008b35aa0d212e4032ede352d5426696c260c9ecffa632a2e14e6a6629a6c9f637010000000000000072341ca1eb3a0fd4e790318b51ace114315573d5355c9d5336e39382ba0642560100000000000000a79cd2241bd68004641baac25c1900da3a9e6d83101aea3ef2a58d78c657272f0100000000000000b14911cb101f45b88c437a36bd82a5f8641b1c55052060ea46ea2baea570e8bf0100000000000000b66e24ea84d5e02a7b2b58e20bbf17a0f2a19c4654bf8b07669ba3b9fc4a468101000000000000003c1dcee818434058b7de26ee874ade21bd1149185d6dcba1f67048b931ec3dda01000000000000009d31c78ebe9664e2bd8ba41cddcd9c5b9fb0cc6f8be0a2e5b91f6bcf66a5c7530100000000000000290be52ae5259f3e8bd0cdf454004607867a97c1db86d0c9ff16c8c83625bc830100000000000000c91199db47b7591bf1a928534cdbd3e5979a0d09d6a464f2a9607ec444bd8a9701000000000000000428e3ccdba17d779ffba05c9ec7a6264187d13bf89b6009e97200474ad3439701000000000000004c43a374e6b3e6f7d6c5a6b8518ae0d0d232a1c46d63af8fbc800045a14cbe930100000000000000c34f62968a87b2e4a9340a75004029dff5777a020f60fb287f08038491881f220100000000000000f54bb82d58c665ce3289b8765c40e60d84f74da663c164c38e16784d5c142b2c01000000000000004d9b0bbfc6a294ee0492bdc595a5d8f7cf371c729c5c319a3822f0248bb4fef70100000000000000bbff79a9b92ef586f0be053cc01639b9a335ad8e2910146d070997e285007d830100000000000000ccc84b255e5e73b971f2e71d1903b5ef9bd6d0965ff3ce29c517c875bd7ab65701000000000000001babed13d56d28fdb937b07bce846689584099575382c273f7e425f822c8159f0100000000000000bdee8597e248688fddc627ad9c95cbebf7d3b5f248b9a742aa2d8e761fa365050100000000000000a128a73c5eaa1803618a75bc368c38e4c5cd40999cb72d615b8af1d30cb8cf1d010000000000000020270811c3dc453f37b27d958ef7ad7dd4c7f217c83f94bd0ecd84c60018a86601000000000000001887f7937a8ca4ec67ceaedebfad3d307b10f416219de1ed4f8646409eab730a0100000000000000d64083c00178b8dd224afade9792fed8076031bdfe9efc5b8128e6372a9261e201000000000000001c6842f07fb07b318a8d00ce6258844374f8e894853ae5fd4a85c867d3fc32e30100000000000000417e120dbfd0297d59458b48407b62570987f1e907dd6dfa9a20bfe64eb489d8010000000000000042f20843bf75f4916ade8eb2faad0ada3795b3cacd29b679f18805f2826367550100000000000000be724139e9bdd099b70f7edab7d1acf0d05fa1a4ca212f5e2958d31f4272dcda0100000000000000ee40b85aa515fdbe6e559f815edc7ec1e321e0d152dd54258382ba31b54e447a0100000000000000134cf4720486824c6a27fa7892c8d82e805653ba1d98480267ec284a76b792c20100000000000000c3150e4ca47e7bc6486f198bf0a742a18ab0871bb1efa34e82c4ce81f27926670100000000000000c2eb94269c5e5d2ab9a1a300387358679640763b053aca99ba5c1c9083ee717f0100000000000000316bafdefb60951da2738d6c9c2ef1866d139b34b5eab6944d6bae754dd3fb110100000000000000b65475766e6229c87ff34263f5ca58525ab133962bc599ca0eab096ff296f4e60100000000000000ebb1834a568ea7653bc66f394937a0aa4f2f617118d2161e2c11c0d7d2febb9d0100000000000000b6d7ac98d6667fe8f4a186ef12a66b017df05a54e11b45d3f2967cb3d6b6827f010000000000000042f47dad5949be7b7b8f81faaec17b1b53465b01b9f8f81e6a45f2fc74e12daf01000000000000007a1291795805dbe300425311ae50ed698450b1912b62e5b5a3264c68bfa970760100000000000000e0df5b2f299314d2d419b46d15c3c8a739182d91c3d4b98cd16c013c3a25c04b01000000000000000150276c1b3d28d42630801c1d4a738ae723887d9286e40ba48d10b0752f7dcc010000000000000098a6defcfeb3dfca36ec46eb373734627a2c395cdd2d886046a11788ed6467af0100000000000000853ba986f8785e8fc1a2ae2fb86f17cc91886d931182ccb8d148379a35cbf02701000000000000009bbc024bfe4f072b94735afda064dc3c7da2b4bc0c50cfad44722543583a372e01000000000000002b71a8a81bc2be65f3224ba3711d1bb243446d154369e209f97d8375b5fe8deb0100000000000000496826b538d97906e14d417b48598d7d591a483ab5f4c6786cd0b96239c2f4cf0100000000000000ef27d1d5573e6419ffcc7c4372668105118256b810ab2e2dbb5e7d8280ee94250100000000000000c7009be830fe78c42f12f0753923131d16300bac230650001636b6a546cf0aa30100000000000000ed3f97f83ee7799c4aeba9f40bd18134c862c1a30875fc1e038cd27bae3a739a0100000000000000348e8bacc2d40191a6a00e137c745a422ff8fb03148d2ff9cad75efbb7a670140100000000000000efb31c5039e45fda750af5d2ea31b3210a407b168adec8f98db1f3dbc4cd943801000000000000003afc780f5d6cf676fbafe8bc742aa01b64d7d12530ebe1aab2db123a23f439b00100000000000000bff74b6ff5ccdce9a659408871d486511938422a6e550fe0669ccd739f80108101000000000000009ac13f915431b39f99d8c0bed7e9c62d22e1e8b6daaee809920f491154ef6f8b01000000000000002ff9330a8c344ad3adf4d97db014a2d0891d4dd69f5c8369dad3e0b25566173e01000000000000008f44b6746d8d809da87915d6ec208a07ee63481d24b275c6424429e16ff4d25e0100000000000000e01d6eda8094e949bfbb05c819b509a12eb662a414b822f841d9555d58e1ce7601000000000000001262625cc59c0e4b7548904c31a02231a601305881a231d4dea45eec6cbbbdcc0100000000000000c3576342cbf99792896ee5329b04ff2eee2fc2bb6d53c5c03d52c8957ee793fb01000000000000006ad4bc289673029ab44f3045eb6fdd3589d05e0e5fd76ee017f650a662f898fb0100000000000000a82f563264d1892dd46873205d03c098d8b03f53e21c797839737e4e5f66a87e010000000000000059dadf17dc0f84c1c334e6a815a04bdfcd0988a3f3bcb713c66ae29e17276cc60100000000000000297dc7cf28b3d40a42c5e8faac876bf7227c670e6e031dd0e0537f4fb70e6fbe010000000000000043601ae31cf5b03cb49395dda13809f7398d8670ee4d2172b14a1ab05986ac3b01000000000000000909c1eff97923f6bd47e6ec8b5dc163b32d5b675a3b13138d3599e5cc77ab9f0100000000000000a5f788e86ee2d311357b7aa4a128f063fa4ee36958baf10304c10bde7421aa2c0100000000000000290321d793b7dcb12ad148c2438bb60821bd938b7e9164a0c3d0fc82987f8b6301000000000000002ef11bc5ce1e7b53f788ba01ba581b9171ef36449719ff3eb20973342a4a82850100000000000000e3a73e5e042574299206b6520770553482e099d075bf00cbeb139b5f6737afed01000000000000003bb30832d06cdd3e081afef0cf2b7770bfe81dc58081d1886443e4e4547da8a101000000000000002832b59000d2027d2bf57fdb40da04bd8aac1498923397517181cc487a92815201000000000000000cd7067f96a2d63fa72065302432f48690485fa5f47c9afab17123e0482785230100000000000000f6f23ae9bb4c269a5959d51f9173270ddefcc354b63de77b672bce58cabe60c8010000000000000073dce1727ec50c50366378cd389246e19543d900d7e9dab8e323d04cf5b202a701000000000000002ada479e1fde7211de15900ed29035f6f07506cdbadc4c232aab96d62006b9de0100000000000000ee1a56541083b083f1a13b5f8aa4042a098de2cec4c43f3250baaba8f03a52ea010000000000000062a91ffda8611ffce3edeb628ea6d3b8b12e5b2448beda6da8334e77a9ecbdd701000000000000005246164c02e9e6bfb7a2dbf7ba8a5440a189f8048373678f5b1085f217464c050100000000000000dea69c3badff9b8d7571cb6c538cd099544da7460a19e1b8651c5c530a6dd53c01000000000000001889f1b031fa7d64c4b480a17cd2941be2c02681bca397c93607091f37bf5ee1010000000000000005062bede97a45c6e1c6b593675ee07ce969fae45136cc2b2afc6e705a77f4700100000000000000dc6e03f650e4304ca8d1598dde8d4faf45891987bfc49ef785ace47c4c0b557301000000000000002d12330b8029ef13e02675c6df0e10c6fdbc10e974803730866e603305ff4471010000000000000018ede59e820bcdd0ed2faf99a21bdc916d71577dd35117f90efe77b8513e631001000000000000008c258b4ca16dfb8e5afde4cf40fecf115307798117b4860475511b3b5d5615840100000000000000309bf143989c9effebb5cf0ad8b5cd8ea1c8db104500606280ae90a93d6abc2e01000000000000000e7bc96895730726225e47e31c742fd44d3936f31ecd32658c694fc11df2522401000000000000006375ae0c1bf2b0388e16971715fd68c31ed179f38947531c165f0da2c3fe76670100000000000000e7931a825260ba7d4fdb5f4990d39a71e2a8b215a776ebf770102ca772f103a3010000000000000095fde7b91441fae9d2a6360d30228392519293be5e78cf3305667595cb15e566010000000000000047ede3eca5f6c8f0a51f2d36d7d1c236aab07a8b2aaa6ab08c8ccf8d87ce3dd10100000000000000a5d172126aadfe80d2b711776674d61df5a1cd1a0129761fb2d2de58ed9d48a001000000000000001bbc459bd14434c8b961d3c4108986f28e50a33c825b0cbee11b22a60b90a6d30100000000000000e7eb7de26e0e24fd528fbbcecf837f26579784dfd4db512c9237e2811139738701000000000000009f677785cfbf44140bdf38770f3d8076f222aa1c9997842d89d580b0f256198f01000000000000009a0ea02dca493accceb975732f31c9d249d4c90ff1ca0bd86cbe00f1728146b401000000000000003adbd2d5abdb70ef56c2d8bd4a7c0d67882a1c2050a856937491e98496a496fe0100000000000000f7b6a82ff22dd13d5665015a8abec429d244f857d3d6dc78e3f3c65496e4a99f01000000000000002b07c366c1ed899a2ac9722b76e092828714a8177368e51ca05ec05c565866b301000000000000008e3d1c8c0261e193e87403c8959919ef035ba39175d3ba22f31190303601412e010000000000000094416582fe359e0a310da59bf93df8ff9665b89071d4977a9a9f3390b75c0c450100000000000000ff568b8e0dbe74604c6d04b5de6f2df03b343bea074c4495c6a10e511ba473d90100000000000000a7254986c00f94b1ced526583ce2ffc0e853afd27a8e90cd57178a328e633866010000000000000032bbff551f7ed51452d264d796315e578d982e942eebb60e519ca648935d8b0c01000000000000003a4bfd825ccd308def4a61bac80c579db42b02ea5f1a0768656a326e83a0dd880100000000000000d2f1b3b5f7eb1b0d8328911d9ec920327d7a30729e80c1238f86dfe27c4fa3470100000000000000068f911f5ffd2e94be67762e2eb02e792b79ac8983720f40615e27ad203e03c50100000000000000841584e602ab975c936fe7c2025fcea2b5a0061e839b1ad96528942b33d0974b0100000000000000f33b53556f28f27d250585317cd57a18f37c5d5f2b3c1bd00a0c91ea54f1636f0100000000000000bcc6391e5ad7e8e51ab7cf27eb77d7a631428fd973ca532bd6756dc67acdc49e0100000000000000e056900cabddb471de9e1846d7efdddd8b5ad400b02fc54b4402ba725c78bf9a010000000000000006e45b1345e00445a4ed84345b8bb15ad011fe5b23fd8f074d8d3e332bd505950100000000000000232b04be856e808b2616319b11eec858097a8afee5c18f0af0e1c33f1c6973ad01000000000000001a02012d8a476cc43998b10fd5c8f5174ba2a2eedebf27fab9831c0d812b0528010000000000000098763eb72b3f7dbb7a793bd1d4367af5f072ff45a1a6eae0e002e1eaa24c5d55010000000000000079f73931b31ce353119fb4063412e844b16cb3eb92e592ebd822a8c21303554801000000000000002929dacc53614cea1848e7ba20fdeed7cb0bd81571aa72dfb63dfc84d3965d2b010000000000000030afa9ef79458f844a27a3881655b6eafb90b3912737f1bcddb95e78eb098c1d010000000000000031a46e639e57d1a11119b17f76617a35b3606d206fb5c3e87710f464f7a57de50100000000000000ed25d7114e2aef2f0e57dc2be1401a4994d8aaafb30223162634a512604a2366010000000000000038070000000000000001e7c32b0100e11c00000000000000002904050001000000000000002a0d050002000000000000002f16050003000000000000008e1f05000400000000000000ee28050005000000000000004d32050006000000000000009d3b05000700000000000000fd44050008000000000000005c4e05000900000000000000b75705000a00000000000000176105000b00000000000000766a05000c00000000000000d67305000d00000000000000357d05000e00000000000000958605000f00000000000000f58f0500100000000000000055990500110000000000000095a205001200000000000000d8ab050013000000000000000db50500140000000000000024da05001500000000000000aaec05001600000000000000f4f5050017000000000000003bff050018000000000000008b0806001900000000000000992406001a00000000000000f92d06001b000000000000000d4a06001c00000000000000685306001d00000000000000b65c06001e00000000000000f76506001f00000000000000308b060020000000000000007b940600210000000000000025a70600220000000000000033c3060023000000000000007fcc06002400000000000000c3d50600250000000000000011df060026000000000000005ae806002700000000000000a0f106002800000000000000410407002900000000000000880d07002a000000000000001b3c07002b00000000000000764507002c00000000000000357407002d00000000000000239907002e000000000000006fa207002f00000000000000c3ab070030000000000000006abe07003100000000000000bdc7070032000000000000000fd107003300000000000000b2e3070034000000000000000aed07003500000000000000971b080036000000000000009d24080037000000000000009c4008003800000000000000255308003900000000000000735c08003a000000000000000c6f08003b00000000000000048b08003c00000000000000589408003d00000000000000d3c208003e00000000000000e4de08003f000000000000003fe808004000000000000000f7fa08004100000000000000aa0d09004200000000000000153309004300000000000000fc6a090044000000000000003e74090045000000000000009a7d0900460000000000000000a30900470000000000000014db0900480000000000000020130a004900000000000000791c0a004a00000000000000364b0a004b0000000000000043830a004c00000000000000e5950a004d0000000000000045bb0a004e0000000000000059f30a004f000000000000000e060b005000000000000000812b0b005100000000000000dc340b005200000000000000ef500b005300000000000000a3630b005400000000000000b69b0b005500000000000000c7d30b005600000000000000dd0b0c005700000000000000f3430c005800000000000000087c0c00590000000000000052b30c005a0000000000000060eb0c005b00000000000000baf40c005c0000000000000072230d005d00000000000000805b0d005e000000000000007e930d005f000000000000007ccb0d00600000000000000076030e006100000000000000793b0e00620000000000000088730e00630000000000000092ab0e00640000000000000083e30e006500000000000000731b0f00660000000000000079530f006700000000000000748b0f0068000000000000001fc30f006900000000000000d0fa0f006a00000000000000633210006b00000000000000826a10006c0000000000000028a210006d0000000000000005b310006e0000000000000055d810006f000000000000004810110070000000000000006548110071000000000000008e8011007200000000000000bfb811007300000000000000bbf011007400000000000000e828120075000000000000001561120076000000000000003b991200770000000000000058d112007800000000000000770913007900000000000000944113007a00000000000000c07913007b00000000000000e7b113007c000000000000000cea13007d0000000000000067f313007e00000000000000d31814007f000000000000002e22140080000000000000008c2b14008100000000000000545a14008200000000000000ad63140083000000000000000e89140084000000000000006892140085000000000000008dca14008600000000000000b00215008700000000000000d03a15008800000000000000f3721500890000000000000015ab15008a000000000000003be315008b000000000000005d1b16008c00000000000000855316008d00000000000000b18b16008e00000000000000d3c316008f00000000000000e9fb16009000000000000000073417009100000000000000bf4617009200000000000000286c1700930000000000000029a41700940000000000000041dc17009500000000000000591418009600000000000000bf3918009700000000000000704c18009800000000000000948418009900000000000000f28d18009a00000000000000bcbc18009b00000000000000e4f418009c000000000000000b2d19009d000000000000002c6519009e00000000000000896e19009f00000000000000519d1900a00000000000000075d51900a100000000000000920d1a00a200000000000000ec161a00a300000000000000b6451a00a400000000000000887d1a00a50000000000000077b51a00a600000000000000cdbe1a00a70000000000000070ed1a00a80000000000000083091b00a9000000000000004e251b00aa00000000000000fe371b00ab00000000000000065d1b00ac000000000000005f661b00ad00000000000000bd6f1b00ae00000000000000de941b00af00000000000000fecc1b00b0000000000000001f041c00b1000000000000000c321c00b2000000000000002f3b1c00b3000000000000002e721c00b4000000000000000ca01c00b50000000000000044a91c00b60000000000000022e11c00b70000000000000044191d00b8000000000000000c481d00b9000000000000006b511d00ba000000000000008b891d00bb00000000000000a5c11d00bc0000000000000053f91d00bd00000000000000ff301e00be00000000000000054d1e00bf0000000000000002691e00c000000000000000d1a01e00c100000000000000c5d81e00c200000000000000cf101f00c30000000000000083481f00c400000000000000af801f00c500000000000000d0b81f00c600000000000000f0f01f00c7000000000000001b292000c80000000000000039612000c90000000000000054992000ca000000000000004fd12000cb000000000000004c092100cc00000000000000031c2100cd000000000000006d412100ce00000000000000cc4a2100cf0000000000000098792100d000000000000000c4b12100d100000000000000eee92100d20000000000000011222200d300000000000000325a2200d40000000000000055922200d50000000000000075ca2200d6000000000000008f022300d700000000000000b13a2300d800000000000000cd722300d90000000000000078852300da00000000000000ce8e2300db00000000000000bdaa2300dc00000000000000abe22300dd0000000000000012112400de00000000000000501a2400df0000000000000045512400e000000000000000a1882400e1000000000000005fc02400e20000000000000013f82400e30000000000000007302500e40000000000000013682500e500000000000000c37a2500e600000000000000a8962500e700000000000000fb9f2500e80000000000000000d82500e90000000000000019102600ea000000000000002b482600eb0000000000000028802600ec000000000000002eb82600ed0000000000000044d42600ee0000000000000058f02600ef00000000000000b3f92600f00000000000000065282700f10000000000000057602700f20000000000000064982700f3000000000000008dd02700f400000000000000a7ec2700f500000000000000b9082800f600000000000000e0402800f700000000000000f6782800f80000000000000019b12800f90000000000000040e92800fa000000000000006c212900fb00000000000000a0592900fc00000000000000107f2900fd00000000000000bc912900fe00000000000000eac92900ff00000000000000fd012a000001000000000000ff1d2a0001010000000000000c3a2a0002010000000000002b722a00030100000000000005aa2a000401000000000000fce12a0005010000000000004ceb2a000601000000000000e0fd2a000701000000000000c3192b000801000000000000be512b0009010000000000000a772b000a01000000000000ae892b000b01000000000000b0a52b000c01000000000000abc12b000d010000000000009bf92b000e0100000000000093312c000f0100000000000087692c00100100000000000075a12c00110100000000000074d92c00120100000000000089112d00130100000000000099492d001401000000000000b0812d001501000000000000c3b92d001601000000000000d1f12d001701000000000000d6292e001801000000000000e9612e001901000000000000ea992e001a01000000000000efd12e001b01000000000000f8092f001c01000000000000f0412f001d01000000000000e9792f001e0100000000000036832f001f01000000000000b2b12f002001000000000000a9cd2f00210100000000000094e92f0022010000000000007121300023010000000000003b5930002401000000000000089130002501000000000000599a30002601000000000000f6c830002701000000000000e30031002801000000000000c03831002901000000000000a17031002a01000000000000f27931002b010000000000007fa831002c010000000000005de031002d01000000000000aae931002e01000000000000441832002f01000000000000295032003001000000000000fe8732003101000000000000aa9a3200320100000000000010c0320033010000000000003af8320034010000000000005f303300350100000000000059683300360100000000000078a0330037010000000000009bd833003801000000000000cb1034003901000000000000f44834003a010000000000001c8134003b0100000000000044b934003c0100000000000055f134003d010000000000009dfa34003e01000000000000302935003f01000000000000c6573500400100000000000023613500410100000000000053993500420100000000000080d135004301000000000000560036004401000000000000b10936004501000000000000ce4136004601000000000000037a3600470100000000000031b2360048010000000000005fea360049010000000000007b2237004a01000000000000995a37004b01000000000000f56337004c01000000000000c69237004d01000000000000feca37004e01000000000000340338004f01000000000000683b380050010000000000009e7338005101000000000000c9ab38005201000000000000dcc7380053010000000000003cd138005401000000000000f8e338005501000000000000b0f6380056010000000000001c1c390057010000000000007a2539005801000000000000da2e39005901000000000000525439005a01000000000000878c39005b01000000000000bbc439005c01000000000000f3fc39005d0100000000000028353a005e010000000000005f6d3a005f0100000000000098a53a006001000000000000cedd3a0061010000000000000c163b006201000000000000404e3b00630100000000000019853b006401000000000000608e3b006501000000000000b8973b0066010000000000000fa13b006701000000000000a7b33b006801000000000000fabc3b00690100000000000049c63b006a010000000000009ccf3b006b01000000000000eed83b006c01000000000000c1f43b006d0100000000000014fe3b006e0100000000000066073c006f01000000000000b7103c0070010000000000009e2c3c007101000000000000ee353c00720100000000000094483c007301000000000000e0513c0074010000000000007c643c0075010000000000001d773c0076010000000000004b9c3c00770100000000000010d43c007801000000000000d80b3d0079010000000000001a153d007a0100000000000053433d007b01000000000000ea553d007c01000000000000225f3d007d0100000000000072683d007e01000000000000b4713d007f01000000000000fb7a3d0080010000000000007a8d3d008101000000000000b8963d00820100000000000006a03d00830100000000000088b23d008401000000000000c8bb3d0085010000000000000bc53d0086010000000000001dea3d008701000000000000e9053e008801000000000000b5213e0089010000000000003b343e008a01000000000000843d3e008b010000000000005e593e008c010000000000001f913e008d0100000000000065c83e008e010000000000006bed3e008f01000000000000a9f63e009001000000000000f6ff3e009101000000000000c1373f0092010000000000005c4a3f0093010000000000003b663f009401000000000000856f3f009501000000000000cf783f0096010000000000003ea73f009701000000000000ccde3f0098010000000000008516400099010000000000001e2940009a010000000000006e4e40009b01000000000000c35740009c010000000000009b8640009d01000000000000cebe40009e0100000000000001f740009f01000000000000372f4100a00100000000000097384100a10100000000000070674100a201000000000000a99f4100a30100000000000065b24100a401000000000000ddd74100a50100000000000096ea4100a6010000000000000b104200a70100000000000044484200a8010000000000009c514200a9010000000000003b804200aa0100000000000051b84200ab010000000000006fd44200ac010000000000005ef04200ad01000000000000b9f94200ae010000000000006a284300af0100000000000078604300b00100000000000077984300b101000000000000abd04300b20100000000000064e34300b30100000000000072ff4300b401000000000000d2084400b50100000000000008414400b6010000000000002e794400b7010000000000005eb14400b8010000000000007de94400b9010000000000009e214500ba010000000000005d344500bb01000000000000d0594500bc0100000000000006924500bd010000000000001aca4500be010000000000004a024600bf01000000000000603a4600c00100000000000084724600c101000000000000abaa4600c20100000000000047bd4600c3010000000000009ec64600c401000000000000a0e24600c5010000000000005df54600c601000000000000bf1a4700c701000000000000d1524700c8010000000000007f814700c901000000000000dd8a4700ca0100000000000039944700cb01000000000000f2c24700cc0100000000000010fb4700cd01000000000000d5294800ce010000000000002c334800cf01000000000000f9614800d001000000000000596b4800d10100000000000078874800d2010000000000008da34800d301000000000000aadb4800d401000000000000c6134900d501000000000000eb4b4900d601000000000000e7834900d701000000000000f9bb4900d801000000000000b6ce4900d9010000000000001bf44900da010000000000004a2c4a00db0100000000000066644a00dc010000000000002f7d4a00dd0100000000000019994a00de01000000000000c0ab4a00df01000000000000aec74a00e001000000000000fed04a00e101000000000000bbff4a00e20100000000000019094b00e301000000000000902e4b00e40100000000000041414b00e50100000000000010704b00e6010000000000006e794b00e7010000000000002b8c4b00e80100000000000094b14b00e901000000000000a4e94b00ea01000000000000d4214c00eb01000000000000d7594c00ec01000000000000e8914c00ed0100000000000004ae4c00ee01000000000000ebc94c00ef0100000000000014024d00f001000000000000fe394d00f1010000000000000a724d00f201000000000000667b4d00f30100000000000013aa4d00f40100000000000031c64d00f50100000000000037e24d00f6010000000000004afe4d00f7010000000000002c1a4e00f801000000000000ea2c4e00f90100000000000049364e00fa010000000000004e524e00fb01000000000000628a4e00fc0100000000000079a64e00fd010000000000001ab94e00fe0100000000000079c24e00ff0100000000000094de4e000002000000000000aafa4e00010200000000000059324f00020200000000000004654f000302000000000000ff764f0004020000000000000d804f0005020000000000007e924f000602000000000000c29b4f000702000000000000f4d34f000802000000000000160c50000902000000000000504450000a02000000000000877c50000b02000000000000b6b450000c02000000000000e7ec50000d0200000000000046f650000e02000000000000b61b51000f020000000000001625510010020000000000004f5d510011020000000000000f7051001202000000000000889551001302000000000000b5cd5100140200000000000014d751001502000000000000e605520016020000000000001f3e5200170200000000000053765200180200000000000089ae52001902000000000000e8b752001a02000000000000b7e652001b0200000000000074f952001c02000000000000e81e53001d020000000000001a5753001e02000000000000558f53001f020000000000008ac753002002000000000000b9ff53002102000000000000f13754002202000000000000277054002302000000000000418c54002402000000000000d1a354002502000000000000d9c8540026020000000000007edb54002702000000000000b81355002802000000000000e34b55002902000000000000c58355002a02000000000000d6bb55002b0200000000000007f455002c02000000000000c30656002d020000000000002c2c56002e020000000000005d6456002f020000000000008f9c56003002000000000000c9d456003102000000000000070d570032020000000000004345570033020000000000007a7d570034020000000000007d99570035020000000000009ab557003602000000000000b4ed57003702000000000000f225580038020000000000002f5e580039020000000000006b9658003a02000000000000a6ce58003b02000000000000e30659003c02000000000000183f59003d02000000000000517759003e02000000000000ad8059003f020000000000008baf59004002000000000000e9b859004102000000000000c5e75900420200000000000002205a0043020000000000003f585a0044020000000000007c905a004502000000000000bcc85a004602000000000000f1005b004702000000000000111d5b00480200000000000030395b0049020000000000006f715b004a02000000000000aca95b004b02000000000000e9e15b004c02000000000000251a5c004d0200000000000060525c004e020000000000009f8a5c004f02000000000000dbc25c00500200000000000019fb5c00510200000000000058335d005202000000000000956b5d005302000000000000c7a35d005402000000000000f7db5d00550200000000000031145e0056020000000000006f4c5e005702000000000000a7845e005802000000000000e0bc5e0059020000000000003fc65e005a020000000000001cf55e005b02000000000000582d5f005c0200000000000093655f005d02000000000000cf9d5f005e0200000000000005d65f005f02000000000000440e600060020000000000008346600061020000000000006a7e6000620200000000000056b46000630200000000000000ec60006402000000000000a72361006502000000000000e25b61006602000000000000f293610067020000000000001bcc61006802000000000000dade61006902000000000000590462006a02000000000000963c62006b02000000000000cc7462006c020000000000008c8762006d02000000000000ffac62006e020000000000003ae562006f02000000000000731d63007002000000000000b05563007102000000000000e98d630072020000000000001dc6630073020000000000005dfe63007402000000000000993664007502000000000000d86e6400760200000000000017a76400770200000000000051df640078020000000000008a1765007902000000000000c34f65007a02000000000000018865007b020000000000003ec065007c020000000000007af865007d02000000000000b63066007e02000000000000f06866007f0200000000000004a16600800200000000000041d966008102000000000000711167008202000000000000ac4967008302000000000000de8167008402000000000000f8b967008502000000000000b8cc6700860200000000000035f2670087020000000000006e2a680088020000000000001c3d680089020000000000007f6268008a02000000000000ba9a68008b02000000000000f3d268008c02000000000000310b69008d02000000000000704369008e02000000000000ae7b69008f02000000000000eeb3690090020000000000002bec6900910200000000000065246a009202000000000000a45c6a009302000000000000e0946a0094020000000000001dcd6a009502000000000000dbdf6a00960200000000000059056b00970200000000000018186b009802000000000000923d6b009902000000000000b0756b009a02000000000000e6ad6b009b0200000000000021e66b009c020000000000005e1e6c009d0200000000000096566c009e02000000000000d28e6c009f020000000000000ac76c00a00200000000000047ff6c00a10200000000000077376d00a202000000000000876f6d00a3020000000000000fa76d00a40200000000000059dc6d00a50200000000000022146e00a602000000000000464c6e00a70200000000000071846e00a802000000000000eea96e00a902000000000000aabc6e00aa0200000000000085eb6e00ab02000000000000e4f46e00ac020000000000001c2d6f00ad02000000000000da3f6f00ae0200000000000053656f00af020000000000008c9d6f00b002000000000000c4d56f00b102000000000000d90d7000b202000000000000d7457000b302000000000000f67d7000b402000000000000deb57000b502000000000000b2ed7000b602000000000000a9257100b702000000000000975d7100b802000000000000338c7100b9020000000000007e957100ba0200000000000068b17100bb0200000000000050cd7100bc020000000000001c057200bd02000000000000610e7200be02000000000000c13c7200bf020000000000006b747200c0020000000000005aac7200c10200000000000032e47200c202000000000000dcf67200c302000000000000321c7300c4020000000000002b547300c5020000000000007d8b7300c60200000000000020c37300c702000000000000cefa7300c8020000000000003c327400c9020000000000009b697400ca02000000000000eda07400cb0200000000000056d87400cc0200000000000090107500cd02000000000000ad2c7500ce020000000000000b367500cf02000000000000c7487500d002000000000000fe807500d10200000000000039b97500d20200000000000073f17500d30200000000000030047600d4020000000000004b207600d502000000000000a9297600d60200000000000006337600d702000000000000d3617600d80200000000000090747600d902000000000000089a7600da020000000000002fd27600db020000000000001a0a7700dc0200000000000022427700dd02000000000000007a7700de02000000000000d2b17700df02000000000000f8e97700e0020000000000002b227800e102000000000000635a7800e202000000000000a0927800e302000000000000daca7800e40200000000000011037900e502000000000000483b7900e60200000000000085737900e702000000000000b1ab7900e802000000000000dae37900e902000000000000121c7a00ea0200000000000049547a00eb02000000000000878c7a00ec02000000000000bfc47a00ed02000000000000edfc7a00ee0200000000000026357b00ef02000000000000606d7b00f0020000000000009da57b00f102000000000000cddd7b00f20200000000000006167c00f3020000000000003f4e7c00f402000000000000fb607c00f50200000000000077867c00f602000000000000b4be7c00f70200000000000014c87c00f802000000000000e0f67c00f9020000000000001b2f7d00fa0200000000000058677d00fb02000000000000959f7d00fc02000000000000d2d77d00fd02000000000000ec0f7e00fe0200000000000025487e00ff020000000000005f807e0000030000000000009ab87e000103000000000000d3f07e000203000000000000ee0c7f0003030000000000000a297f000403000000000000c53b7f00050300000000000043617f0006030000000000007b997f000703000000000000b9d17f000803000000000000f20980000903000000000000284280000a030000000000005e7a80000b0300000000000099b280000c03000000000000d2ea80000d03000000000000082381000e030000000000003e5b81000f030000000000007b9381001003000000000000b8cb81001103000000000000f30382001203000000000000313c82001303000000000000697482001403000000000000a6ac82001503000000000000c4c882001603000000000000e0e482001703000000000000ff00830018030000000000001e1d83001903000000000000dd2f83001a030000000000005b5583001b03000000000000988d83001c03000000000000d5c583001d0300000000000010fe83001e030000000000004e3684001f03000000000000826e84002003000000000000bba684002103000000000000f5de840022030000000000006f0485002303000000000000cc0d850024030000000000002c1785002503000000000000ea2985002603000000000000634f850027030000000000007e6b850028030000000000009a878500290300000000000017ad85002a03000000000000d2bf85002b0300000000000031c985002c030000000000000ef885002d030000000000004a3086002e03000000000000866886002f03000000000000bea086003003000000000000f2d8860031030000000000002a1187003203000000000000871a870033030000000000006449870034030000000000001d5c87003503000000000000998187003603000000000000cfb987003703000000000000eed5870038030000000000000cf2870039030000000000004a2a88003a03000000000000a83388003b03000000000000826288003c03000000000000b69a88003d03000000000000efd288003e030000000000002d0b89003f030000000000004d27890040030000000000006c4389004103000000000000ab7b89004203000000000000eab38900430300000000000028ec8900440300000000000068248a004503000000000000a05c8a004603000000000000b4948a004703000000000000f4cc8a00480300000000000030058b0049030000000000006f3d8b004a030000000000008e598b004b03000000000000ae758b004c03000000000000ecad8b004d0300000000000028e68b004e03000000000000331e8c004f030000000000004f568c0050030000000000008e8e8c005103000000000000c7c68c00520300000000000005ff8c00530300000000000041378d005403000000000000746f8d005503000000000000a4a78d00560300000000000064ba8d005703000000000000e4df8d0058030000000000000a188e00590300000000000023508e005a0300000000000027888e005b03000000000000d89a8e005c0300000000000043c08e005d0300000000000082f88e005e03000000000000c0308f005f03000000000000ff688f0060030000000000001ba18f00610300000000000059d98f006203000000000000981190006303000000000000d64990006403000000000000f56590006503000000000000158290006603000000000000758b9000670300000000000053ba9000680300000000000092f290006903000000000000d22a91006a03000000000000106391006b03000000000000489b91006c03000000000000a2a491006d030000000000001bd391006e03000000000000530992006f03000000000000d32e9200700300000000000090419200710300000000000074799200720300000000000094b19200730300000000000072e092007403000000000000d2e992007503000000000000b21893007603000000000000122293007703000000000000445a93007803000000000000739293007903000000000000f3b793007a03000000000000abca93007b030000000000005ddd93007c03000000000000c40294007d03000000000000e13a94007e03000000000000217394007f0300000000000059ab9400800300000000000090e394008103000000000000c31b95008203000000000000ea53950083030000000000009866950084030000000000000b8c9500850300000000000046c49500860300000000000057fc950087030000000000008f3496008803000000000000cf6c960089030000000000000ba596008a0300000000000045dd96008b03000000000000a3e696008c03000000000000801597008d03000000000000bc4d97008e03000000000000f78597008f030000000000002ebe9700900300000000000030f6970091030000000000005a2e98009203000000000000956698009303000000000000d49e9800940300000000000014d7980095030000000000003b0f990096030000000000006c4799009703000000000000ac7f9900980300000000000078b79900990300000000000026ca99009a030000000000007cef99009b0300000000000085279a009c03000000000000be5f9a009d03000000000000fd979a009e03000000000000b9aa9a009f0300000000000022d09a00a0030000000000003dec9a00a10300000000000058089b00a20300000000000074249b00a3030000000000008b409b00a403000000000000e4499b00a50300000000000038789b00a60300000000000076819b00a703000000000000e4af9b00a803000000000000b7e79b00a903000000000000731f9c00aa03000000000000a6289c00ab030000000000002f3b9c00ac0300000000000012579c00ad030000000000005d609c00ae03000000000000cb8e9c00af0300000000000057a19c00b00300000000000086c69c00b1030000000000005afe9c00b20300000000000002369d00b303000000000000bc6d9d00b40300000000000099a59d00b5030000000000004edd9d00b603000000000000db149e00b703000000000000e0399e00b803000000000000724c9e00b9030000000000002a849e00ba03000000000000ee9f9e00bb03000000000000d1bb9e00bc030000000000007df39e00bd03000000000000f02a9f00be030000000000006a629f00bf03000000000000ff999f00c0030000000000002ed19f00c1030000000000004608a000c203000000000000893fa000c303000000000000a476a000c403000000000000dfada000c5030000000000001cb7a000c6030000000000003ce5a000c703000000000000921ca100c8030000000000008c53a100c903000000000000988aa100ca0300000000000010a6a100cb03000000000000a0c1a100cc03000000000000e5d3a100cd0300000000000072f8a100ce030000000000007c2fa200cf030000000000003766a200d003000000000000389da200d10300000000000056a6a200d203000000000000a9b8a200d303000000000000cac1a200d4030000000000001ad4a200d503000000000000200ba300d6030000000000002714a300d703000000000000bc41a300d8030000000000006778a300d9030000000000000aafa300da0300000000000046dca300db0300000000000065e5a300dc03000000000000a81ba400dd03000000000000d72da400de030000000000002352a400df030000000000006288a400e003000000000000c1bea400e103000000000000f8f4a400e203000000000000212ba500e3030000000000003f61a500e403000000000000656aa500e503000000000000e497a500e60300000000000040cea500e703000000000000b204a600e803000000000000fc3aa600e9030000000000009471a600ea0300000000000037a8a600eb030000000000001adfa600ec03000000000000ea0ca700ed030000000000000e16a700ee030000000000005228a700ef030000000000007d31a700f003000000000000034da700f1030000000000002084a700f2030000000000004a8da700f303000000000000a99fa700f403000000000000f6baa700f503000000000000c1f1a700f603000000000000be28a800f703000000000000a65fa800f8030000000000003e7ba800f903000000000000c296a800fa03000000000000c3cda800fb03000000000000d504a900fc03000000000000f83ba900fd030000000000005f73a900fe03000000000000ceaaa900ff030000000000000bb4a900000400000000000005e2a90001040000000000005e19aa000204000000000000c12baa0003040000000000008e50aa000404000000000000fd62aa0005040000000000008175aa000604000000000000fa87aa0007040000000000002f91aa0008040000000000005dbfaa000904000000000000a3c8aa000a04000000000000e5f6aa000b04000000000000e41bab000c040000000000005b2eab000d04000000000000e765ab000e040000000000004c9dab000f0400000000000085a6ab001004000000000000b8d4ab001104000000000000fdddab0012040000000000003b0cac001304000000000000d043ac001404000000000000827bac001504000000000000b8a0ac0016040000000000005bb3ac00170400000000000029ebac0018040000000000006af4ac0019040000000000000e07ad001a04000000000000f422ad001b04000000000000432cad001c040000000000009935ad001d04000000000000ee3ead001e04000000000000d55aad001f04000000000000bd76ad002004000000000000a592ad00210400000000000076caad002204000000000000f6dcad002304000000000000e001ae0024040000000000004f39ae0025040000000000001371ae0026040000000000005f7aae002704000000000000fc8cae002804000000000000cda8ae0029040000000000005ebbae002a0400000000000081e0ae002b040000000000004f18af002c040000000000001e50af002d04000000000000e687af002e04000000000000a0bfaf002f040000000000005ff7af003004000000000000042fb0003104000000000000da66b00032040000000000009a9eb000330400000000000063d6b0003404000000000000300eb1003504000000000000da45b10036040000000000009a7db100370400000000000050b5b100380400000000000029edb1003904000000000000971bb2003a04000000000000e024b2003b04000000000000995cb2003c040000000000006694b2003d0400000000000048b0b2003e040000000000002eccb2003f0400000000000075d5b200400400000000000008e8b2004104000000000000e703b3004204000000000000ce1fb3004304000000000000b63bb30044040000000000000d45b30045040000000000009f57b30046040000000000007573b3004704000000000000c67cb30048040000000000003aabb3004904000000000000e4e2b3004a04000000000000651ab4004b04000000000000f951b4004c040000000000009389b4004d0400000000000025c1b4004e04000000000000f6f8b4004f04000000000000241eb5005004000000000000b130b50051040000000000007068b500520400000000000040a0b5005304000000000000ecd7b50054040000000000000510b60055040000000000003e48b60056040000000000007a80b6005704000000000000b7b8b6005804000000000000f3f0b60059040000000000002f29b7005a04000000000000ae4eb7005b040000000000006861b7005c04000000000000a599b7005d04000000000000ded1b7005e040000000000005cf7b7005f04000000000000160ab80060040000000000005042b8006104000000000000964bb8006204000000000000687ab8006304000000000000a6b2b800640400000000000066c5b8006504000000000000e5eab80066040000000000000423b90067040000000000003f5bb90068040000000000005d77b90069040000000000007b93b9006a04000000000000b7cbb9006b04000000000000ef03ba006c04000000000000133cba006d040000000000003358ba006e040000000000005174ba006f0400000000000042acba0070040000000000006ce4ba007104000000000000a21cbb007204000000000000e054bb007304000000000000405ebb0074040000000000001b8dbb0075040000000000002ec5bb0076040000000000006dfdbb007704000000000000a435bc007804000000000000d06dbc0079040000000000000ca6bc007a040000000000004adebc007b040000000000008716bd007c04000000000000c34ebd007d04000000000000fc86bd007e040000000000003bbfbd007f040000000000007af7bd008004000000000000d500be008104000000000000b32fbe008204000000000000ea67be00830400000000000027a0be00840400000000000065d8be008504000000000000a410bf008604000000000000dd48bf0087040000000000003b52bf0088040000000000001881bf0089040000000000008fb8bf008a04000000000000cbc1bf008b04000000000000f8efbf008c040000000000007602c0008d040000000000008327c0008e04000000000000075fc0008f040000000000005d96c000900400000000000009cec00091040000000000003b06c10092040000000000002d3ec10093040000000000006476c10094040000000000007aaec1009504000000000000b9e6c1009604000000000000ef1ec20097040000000000002c57c2009804000000000000698fc20099040000000000008cc7c2009a040000000000009effc2009b04000000000000da37c3009c04000000000000ee6fc3009d0400000000000029a8c3009e0400000000000067e0c3009f04000000000000240fc400a0040000000000008218c400a104000000000000b150c400a204000000000000c088c400a304000000000000d2c0c400a404000000000000f6f8c400a5040000000000001231c500a604000000000000d143c500a7040000000000004d69c500a80400000000000089a1c500a904000000000000c4d9c500aa040000000000000112c600ab040000000000005c1bc600ac040000000000003a4ac600ad040000000000007482c600ae04000000000000abbac600af04000000000000e4f2c600b0040000000000001d2bc700b1040000000000002e47c700b2040000000000004863c700b304000000000000687fc700b404000000000000829bc700b5040000000000009bd3c700b604000000000000d80bc800b7040000000000001144c800b804000000000000704dc800b904000000000000d056c800ba040000000000004e7cc800bb0400000000000080b4c800bc04000000000000b1ecc800bd040000000000009808c900be040000000000008d24c900bf04000000000000c75cc900c004000000000000df94c900c104000000000000feb0c900c2040000000000001dcdc900c3040000000000004605ca00c4040000000000006e3dca00c5040000000000009e75ca00c604000000000000029bca00c704000000000000aeadca00c8040000000000008adcca00c904000000000000eae5ca00ca04000000000000251ecb00cb04000000000000fa55cb00cc04000000000000778ccb00cd04000000000000eec3cb00ce0400000000000005fccb00cf040000000000004134cc00d004000000000000716ccc00d10400000000000096a4cc00d204000000000000d3dccc00d30400000000000086efcc00d4040000000000000215cd00d504000000000000ac27cd00d604000000000000264dcd00d7040000000000008656cd00d8040000000000006385cd00d9040000000000003bb4cd00da0400000000000099bdcd00db04000000000000d8f5cd00dc04000000000000172ece00dd040000000000005366ce00de04000000000000909ece00df04000000000000b7d6ce00e00400000000000068e9ce00e104000000000000cc0ecf00e2040000000000000547cf00e304000000000000427fcf00e40400000000000079b7cf00e504000000000000b8efcf00e604000000000000f427d000e7040000000000000b60d000e8040000000000004698d000e90400000000000083d0d000ea04000000000000c008d100eb04000000000000fa40d100ec040000000000003679d100ed0400000000000073b1d100ee0400000000000087cdd100ef04000000000000a6e9d100f004000000000000e521d200f1040000000000001e5ad200f2040000000000005692d200f30400000000000092cad200f40400000000000052ddd200f504000000000000ce02d300f604000000000000e13ad300f7040000000000003444d300f804000000000000dc56d300f904000000000000ef72d300fa040000000000004d7cd300fb0400000000000024abd300fc04000000000000a1d0d300fd040000000000005be3d300fe04000000000000901bd400ff04000000000000ce53d40000050000000000000a8cd40001050000000000003ac4d40002050000000000004ae0d400030500000000000069fcd4000405000000000000a134d50005050000000000006047d5000605000000000000de6cd50007050000000000001ba5d500080500000000000058ddd50009050000000000009415d6000a05000000000000d24dd6000b05000000000000f085d6000c050000000000001ebed6000d05000000000000fbecd6000e050000000000005bf6d6000f050000000000008b2ed7001005000000000000c566d7001105000000000000029fd700120500000000000036d7d70013050000000000006f0fd80014050000000000009f47d8001505000000000000c97fd8001605000000000000e4b7d80017050000000000001ff0d80018050000000000005928d90019050000000000009560d9001a050000000000005473d9001b05000000000000718fd9001c05000000000000d198d9001d0500000000000031a2d9001e050000000000000fd1d9001f05000000000000cfe3d90020050000000000004f09da0021050000000000008941da002205000000000000b979da002305000000000000edb1da00240500000000000047bbda00250500000000000054d7da00260500000000000007eada00270500000000000067f3da0028050000000000003a22db0029050000000000005e5adb002a050000000000007892db002b05000000000000b0cadb002c05000000000000e702dc002d05000000000000183bdc002e050000000000007644dc002f050000000000002773dc003005000000000000dd85dc0031050000000000004dabdc00320500000000000086e3dc003305000000000000bb1bdd003405000000000000944add003505000000000000f453dd003605000000000000ad66dd003705000000000000298cdd00380500000000000060c4dd0039050000000000009cfcdd003a05000000000000fa05de003b05000000000000d734de003c05000000000000b56cde003d0500000000000045a4de003e05000000000000a1d2de003f05000000000000e4dbde0040050000000000002fe5de0041050000000000003c05df004205000000000000d81adf004305000000000000d636df0044050000000000002840df004505000000000000d252df004605000000000000cf6edf004705000000000000a9a6df004805000000000000eeafdf00490500000000000047b9df004a05000000000000b1dedf004b050000000000000de8df004c050000000000006e0de0004d05000000000000cb16e0004e05000000000000d84ee0004f050000000000007886e0005005000000000000b3bee0005105000000000000c3f6e0005205000000000000fe2ee10053050000000000002c67e1005405000000000000e679e1005505000000000000a68ce1005605000000000000629fe10057050000000000009bd7e10058050000000000005806e2005905000000000000b10fe2005a05000000000000e647e2005b050000000000001880e2005c050000000000007689e2005d050000000000004cb8e2005e050000000000007ef0e2005f05000000000000b228e3006005000000000000e760e30061050000000000002499e300620500000000000060d1e30063050000000000009c09e4006405000000000000d441e4006505000000000000334be40066050000000000000a7ae4006705000000000000e0a8e400680500000000000040b2e40069050000000000006feae4006a05000000000000a022e5006b05000000000000de5ae5006c050000000000001a93e5006d0500000000000055cbe5006e050000000000000bdee5006f050000000000008203e6007005000000000000db0ce6007105000000000000b53be6007205000000000000f073e60073050000000000004e7de60074050000000000002cace60075050000000000008cb5e60076050000000000006be4e6007705000000000000a51ce7007805000000000000dc54e7007905000000000000168de7007a050000000000004ac5e7007b0500000000000057fde7007c050000000000009335e8007d05000000000000d06de8007e050000000000002e77e8007f0500000000000004a6e80080050000000000003fdee80081050000000000007b16e9008205000000000000b74ee9008305000000000000e886e900840500000000000015bfe900850500000000000046f7e9008605000000000000602fea0087050000000000000442ea0088050000000000005a4bea0089050000000000006a67ea008a05000000000000889fea008b05000000000000daa8ea008c0500000000000079d7ea008d050000000000009f0feb008e050000000000005c22eb008f050000000000001c35eb009005000000000000d847eb0091050000000000000e80eb0092050000000000003eb8eb00930500000000000076f0eb009405000000000000ad28ec009505000000000000e660ec0096050000000000002399ec00970500000000000060d1ec0098050000000000009e09ed0099050000000000005e1ced009a05000000000000da41ed009b050000000000009654ed009c050000000000005567ed009d05000000000000127aed009e050000000000004ab2ed009f0500000000000082eaed00a005000000000000e1f3ed00a105000000000000bd22ee00a205000000000000fa5aee00a3050000000000003493ee00a405000000000000929cee00a50500000000000070cbee00a605000000000000ac03ef00a705000000000000eb3bef00a805000000000000fb73ef00a905000000000000feabef00aa05000000000000bebeef00ab0500000000000038e4ef00ac050000000000004e1cf000ad050000000000008854f000ae05000000000000958cf000af05000000000000c5c4f000b005000000000000fffcf000b1050000000000002e35f100b205000000000000de47f100b305000000000000466df100b4050000000000005da5f100b50500000000000094ddf100b605000000000000c115f200b705000000000000fa4df200b8050000000000002d86f200b90500000000000067bef200ba05000000000000a0f6f200bb05000000000000b52ef300bc050000000000003254f300bd05000000000000ef66f300be05000000000000239ff300bf0500000000000032d7f300c005000000000000dde9f300c1050000000000001e0ff400c2050000000000004f47f400c3050000000000008d7ff400c4050000000000006bb7f400c5050000000000009beff400c605000000000000c927f500c705000000000000ff5ff500c8050000000000003198f500c90500000000000063d0f500ca050000000000008908f600cb05000000000000c240f600cc050000000000001d66f600cd05000000000000ca78f600ce05000000000000fbb0f600cf0500000000000031e9f600d0050000000000006021f700d1050000000000009e59f700d205000000000000d891f700d3050000000000000acaf700d4050000000000004402f800d5050000000000007b3af800d605000000000000fa5ff800d705000000000000b672f800d805000000000000ebaaf800d90500000000000048b4f800da0500000000000024e3f800db05000000000000601bf900dc050000000000009753f900dd05000000000000ac8bf900de05000000000000e3c3f900df050000000000001cfcf900e0050000000000005934fa00e105000000000000936cfa00e205000000000000a7a4fa00e305000000000000dfdcfa00e4050000000000001a15fb00e5050000000000004d4dfb00e605000000000000a656fb00e7050000000000007b85fb00e805000000000000a2bdfb00e905000000000000dff5fb00ea050000000000005f1bfc00eb050000000000001e2efc00ec050000000000005266fc00ed050000000000000c79fc00ee05000000000000cc8bfc00ef050000000000002995fc00f005000000000000899efc00f105000000000000c1d6fc00f2050000000000007ee9fc00f3050000000000003dfcfc00f405000000000000f00efd00f5050000000000004c18fd00f6050000000000001a47fd00f7050000000000004a7ffd00f80500000000000086b7fd00f905000000000000beeffd00fa050000000000001ef9fd00fb05000000000000ee27fe00fc050000000000000944fe00fd050000000000002560fe00fe05000000000000307cfe00ff050000000000002798fe000006000000000000e2aafe00010600000000000042b4fe0002060000000000005dd0fe0003060000000000009a08ff000406000000000000ca40ff000506000000000000244aff000606000000000000f278ff0007060000000000002db1ff00080600000000000063e9ff000906000000000000712100010a06000000000000313400010b060000000000004c5000010c06000000000000ac5900010d06000000000000b49100010e06000000000000e3c900010f06000000000000f60101011006000000000000103a010111060000000000003056010112060000000000004c720101130600000000000084aa01011406000000000000c2e201011506000000000000fe1a02011606000000000000235302011706000000000000618b020118060000000000009dc3020119060000000000005ad602011a06000000000000badf02011b06000000000000d7fb02011c06000000000000370503011d06000000000000f71703011e06000000000000133403011f06000000000000516c03012006000000000000107f030121060000000000008da403012206000000000000cadc03012306000000000000f81404012406000000000000324d0401250600000000000070850401260600000000000080bd040127060000000000008bf504012806000000000000842d05012906000000000000d73605012a060000000000008b6505012b06000000000000c19d05012c06000000000000f9d505012d060000000000002e0e06012e06000000000000664606012f060000000000009d7e06013006000000000000d7b60601310600000000000011ef06013206000000000000442707013306000000000000725f07013406000000000000af9707013506000000000000e7cf070136060000000000001f0808013706000000000000372408013806000000000000544008013906000000000000917808013a06000000000000c8b008013b0600000000000001e908013c060000000000000f2109013d06000000000000085909013e06000000000000a99009013f06000000000000b5c809014006000000000000c5000a014106000000000000d2380a01420600000000000006710a014306000000000000f5a80a0144060000000000002be10a01450600000000000012190b01460600000000000048510b01470600000000000086890b014806000000000000e5920b014906000000000000c4c10b014a0600000000000000fa0b014b060000000000001d320c014c060000000000000b6a0c014d06000000000000c5980c014e060000000000001aa20c014f06000000000000d7d00c0150060000000000002dda0c01510600000000000069120d015206000000000000a44a0d015306000000000000df820d0154060000000000001dbb0d01550600000000000055f30d015606000000000000852b0e01570600000000000083630e015806000000000000c39b0e0159060000000000001ba50e015a060000000000007bae0e015b06000000000000f7d30e015c06000000000000afe60e015d06000000000000290c0f015e0600000000000065440f015f06000000000000db690f016006000000000000977c0f016106000000000000d2b40f016206000000000000ecec0f016306000000000000062510016406000000000000ea5c10016506000000000000f49410016606000000000000ffcc100167060000000000005ed610016806000000000000d6fb10016906000000000000340511016a06000000000000613d11016b060000000000008b7511016c06000000000000919111016d06000000000000abad11016e06000000000000e0e511016f060000000000001d1e120170060000000000005556120171060000000000006c8e120172060000000000008aaa12017306000000000000a3c612017406000000000000bdfe12017506000000000000f83613017606000000000000126f130177060000000000006c9413017806000000000000c99d1301790600000000000029a713017a060000000000005bdf13017b06000000000000b8e813017c0600000000000016f213017d060000000000008d1714017e06000000000000ec2014017f06000000000000a43314018006000000000000bc4f14018106000000000000d58714018206000000000000919a1401830600000000000005c0140184060000000000005fc914018506000000000000f8f714018606000000000000a10a15018706000000000000fa1315018806000000000000561d15018906000000000000fa2f15018a06000000000000513915018b06000000000000aa4215018c06000000000000106815018d060000000000002f8415018e060000000000004ba015018f060000000000002cbc15019006000000000000ccce1501910600000000000019d81501920600000000000076e115019306000000000000331016019406000000000000664816019506000000000000998016019606000000000000d5b81601970600000000000093cb16019806000000000000f3d4160199060000000000000ff116019a06000000000000cd0317019b06000000000000492917019c06000000000000a33217019d06000000000000444517019e060000000000003a6117019f06000000000000117d1701a0060000000000001c991701a10600000000000059d11701a2060000000000008c091801a306000000000000c2411801a4060000000000001e4b1801a50600000000000037671801a606000000000000f2791801a7060000000000001fb21801a806000000000000dec41801a90600000000000056ea1801aa0600000000000005fd1801ab0600000000000079221901ac06000000000000b25a1901ad06000000000000e5921901ae06000000000000f9ca1901af060000000000005df01901b00600000000000017031a01b1060000000000003a3b1a01b206000000000000e64d1a01b30600000000000044731a01b406000000000000a37c1a01b50600000000000078ab1a01b6060000000000006ee31a01b706000000000000921b1b01b806000000000000be531b01b9060000000000001d5d1b01ba06000000000000ec8b1b01bb0600000000000009c41b01bc06000000000000e5fb1b01bd06000000000000f1331c01be06000000000000ef6b1c01bf06000000000000a39a1c01c006000000000000fba31c01c106000000000000f2db1c01c206000000000000f8131d01c306000000000000df4b1d01c40600000000000075831d01c506000000000000aaa81d01c6060000000000003bbb1d01c7060000000000002fd71d01c80600000000000017f31d01c90600000000000067fc1d01ca06000000000000ad211e01cb06000000000000fb2a1e01cc0600000000000052341e01cd06000000000000da621e01ce06000000000000c87e1e01cf06000000000000b09a1e01d00600000000000089d21e01d1060000000000000fe51e01d2060000000000005fee1e01d3060000000000003b0a1f01d406000000000000f8411f01d50600000000000098541f01d606000000000000ac5d1f01d70600000000000094791f01d8060000000000006eb11f01d90600000000000038e91f01da060000000000000b212001db06000000000000e6582001dc06000000000000c8902001dd0600000000000062a32001de060000000000007ac82001df060000000000001cdb2001e0060000000000005d002101e10600000000000021382101e206000000000000f76f2101e3060000000000003d792101e406000000000000cea72101e50600000000000095df2101e6060000000000006e172201e706000000000000334f2201e80600000000000085582201e90600000000000010872201ea06000000000000eea22201eb06000000000000cbbe2201ec06000000000000a9da2201ed060000000000009ef62201ee060000000000003d092301ef06000000000000782e2301f0060000000000000c412301f1060000000000005e4a2301f20600000000000045662301f3060000000000003b822301f406000000000000299e2301f506000000000000fed52301f606000000000000990d2401f7060000000000002c202401f806000000000000173c2401f90600000000000063452401fa06000000000000fd572401fb060000000000002a7d2401fc0600000000000000b52401fd06000000000000b8ec2401fe0600000000000037242501ff06000000000000155c25010007000000000000e69325010107000000000000a6cb25010207000000000000630326010307000000000000b30c260104070000000000000916260105070000000000005b1f26010607000000000000523b260107070000000000004857260108070000000000002d732601090700000000000018ab26010a07000000000000fdc626010b07000000000000ede226010c070000000000008d1127010d07000000000000e31a27010e07000000000000cc5227010f07000000000000ac8a270110070000000000004b9d2701110700000000000090c22701120700000000000087fa27011307000000000000583228011407000000000000fe6928011507000000000000557328011607000000000000f4a128011707000000000000ced9280118070000000000007d1129011907000000000000414929011a070000000000001a8129011b07000000000000deb829011c07000000000000bff029011d07000000000000a8282a011e070000000000008b602a011f07000000000000dc692a0120070000000000002d732a0121070000000000007a7c2a012207000000000000198f2a01230700000000000069982a01240700000000000003ab2a0125070000000000004ab42a0126070000000000009ebd2a01270700000000000041d02a012807000000000000e7e22a01290700000000000089f52a012a0700000000000023082b012b07000000000000cb1a2b012c0700000000000018242b012d070000000000006b2d2b012e07000000000000ba362b012f070000000000000e402b013007000000000000af522b013107000000000000035c2b0132070000000000004c652b0133070000000000009b6e2b013407000000000000e4772b013507000000000000abaf2b013607000000000000f8b82b01370700000000000052c22b01" }, "name": "Polkadot", "properties": { diff --git a/artifacts/polkadot_metadata_full.scale b/artifacts/polkadot_metadata_full.scale index 4eebe8da6e7d4b044d31ceb30a0242944f7a6f65..ddde0b5f46309aace441be7ba555ebe4ca95fb6a 100644 GIT binary patch delta 266 zcmaF-P-x?0p$#XrxLhidbFHk(jIFGiuWPkm*J9j$U5n{ZF(c3PS@W1?*(>;$r52^- zYsVSv7sVUC+MX3zzER2kfK;!aK zGE;zh70MHf6_UVe6;jK97L{b=m!@Zc?I=hrO3Vb>4^)wtU!njvM{nAGCNWtKmXeVC ke1+V^yh?;|#R|ox1qC^o(+`$2skSdY$+UgxNoKp}05)r5RsaA1 delta 74 zcmV-Q0JZELgVHL8(kcPB(kcSNa{&mKm7W5c gmxM$DBDayB0_-ON9JhYQ0zd+XQOW|hQOW~g=Zy;tVygyiQd Date: Wed, 28 Feb 2024 17:50:35 +0000 Subject: [PATCH 34/66] [lightclient] lookup chain ID just once at beginning of each message (#1452) * lookup chain ID just once at beginning of each message * data => chain_data for more clarity * cargo fmt --- lightclient/src/background.rs | 90 +++++++++++++++++++++-------------- 1 file changed, 55 insertions(+), 35 deletions(-) diff --git a/lightclient/src/background.rs b/lightclient/src/background.rs index 01614d202e..b755b383b7 100644 --- a/lightclient/src/background.rs +++ b/lightclient/src/background.rs @@ -61,22 +61,37 @@ pub enum FromSubxt { pub struct BackgroundTask { /// Smoldot light client implementation that leverages the exposed platform. client: smoldot_light::Client, + /// Per-chain data. + chain_data: HashMap, +} + +/// The data that we store for each chain. +#[derive(Default)] +struct ChainData { /// Generates an unique monotonically increasing ID for each chain. - request_id_per_chain: HashMap, + last_request_id: usize, /// Map the request ID of a RPC method to the frontend `Sender`. - requests: HashMap<(usize, smoldot_light::ChainId), oneshot::Sender>, + requests: HashMap>, /// Subscription calls first need to make a plain RPC method /// request to obtain the subscription ID. /// /// The RPC method request is made in the background and the response should /// not be sent back to the user. /// Map the request ID of a RPC method to the frontend `Sender`. - id_to_subscription: HashMap<(usize, smoldot_light::ChainId), PendingSubscription>, + id_to_subscription: HashMap, /// Map the subscription ID to the frontend `Sender`. /// /// The subscription ID is entirely generated by the node (smoldot). Therefore, it is /// possible for two distinct subscriptions of different chains to have the same subscription ID. - subscriptions: HashMap<(usize, smoldot_light::ChainId), ActiveSubscription>, + subscriptions: HashMap, +} + +impl ChainData { + /// Fetch and increment the request ID. + fn next_id(&mut self) -> usize { + self.last_request_id = self.last_request_id.wrapping_add(1); + self.last_request_id + } } /// The state needed to resolve the subscription ID and send @@ -114,19 +129,20 @@ impl BackgroundTask { ) -> BackgroundTask { BackgroundTask { client, - request_id_per_chain: Default::default(), - requests: Default::default(), - id_to_subscription: Default::default(), - subscriptions: Default::default(), + chain_data: Default::default(), } } - /// Fetch and increment the request ID. - fn next_id(&mut self, chain_id: smoldot_light::ChainId) -> usize { - let next = self.request_id_per_chain.entry(chain_id).or_insert(1); - let id = *next; - *next = next.wrapping_add(1); - id + fn for_chain_id( + &mut self, + chain_id: smoldot_light::ChainId, + ) -> ( + &mut ChainData, + &mut smoldot_light::Client, + ) { + let chain_data = self.chain_data.entry(chain_id).or_default(); + let client = &mut self.client; + (chain_data, client) } /// Handle the registration messages received from the user. @@ -138,16 +154,18 @@ impl BackgroundTask { sender, chain_id, } => { - let id = self.next_id(chain_id); + let (chain_data, client) = self.for_chain_id(chain_id); + let id = chain_data.next_id(); + let request = format!( r#"{{"jsonrpc":"2.0","id":"{}", "method":"{}","params":{}}}"#, id, method, params ); - self.requests.insert((id, chain_id), sender); + chain_data.requests.insert(id, sender); tracing::trace!(target: LOG_TARGET, "Tracking request id={id} chain={chain_id:?}"); - let result = self.client.json_rpc_request(request, chain_id); + let result = client.json_rpc_request(request, chain_id); if let Err(err) = result { tracing::warn!( target: LOG_TARGET, @@ -155,9 +173,9 @@ impl BackgroundTask { err.to_string() ); - let sender = self + let sender = chain_data .requests - .remove(&(id, chain_id)) + .remove(&id) .expect("Channel is inserted above; qed"); // Send the error back to frontend. @@ -182,9 +200,11 @@ impl BackgroundTask { sender, chain_id, } => { + let (chain_data, client) = self.for_chain_id(chain_id); + let id = chain_data.next_id(); + // For subscriptions we need to make a plain RPC request to the subscription method. // The server will return as a result the subscription ID. - let id = self.next_id(chain_id); let request = format!( r#"{{"jsonrpc":"2.0","id":"{}", "method":"{}","params":{}}}"#, id, method, params @@ -198,19 +218,20 @@ impl BackgroundTask { unsubscribe_method, }, }; - self.id_to_subscription - .insert((id, chain_id), subscription_id_state); + chain_data + .id_to_subscription + .insert(id, subscription_id_state); - let result = self.client.json_rpc_request(request, chain_id); + let result = client.json_rpc_request(request, chain_id); if let Err(err) = result { tracing::warn!( target: LOG_TARGET, "Cannot send RPC request to lightclient {:?}", err.to_string() ); - let subscription_id_state = self + let subscription_id_state = chain_data .id_to_subscription - .remove(&(id, chain_id)) + .remove(&id) .expect("Channels are inserted above; qed"); // Send the error back to frontend. @@ -234,6 +255,7 @@ impl BackgroundTask { /// Parse the response received from the light client and sent it to the appropriate user. fn handle_rpc_response(&mut self, chain_id: smoldot_light::ChainId, response: String) { tracing::trace!(target: LOG_TARGET, "Received from smoldot response={response} chain={chain_id:?}"); + let (chain_data, _client) = self.for_chain_id(chain_id); match RpcResponse::from_str(&response) { Ok(RpcResponse::Error { id, error }) => { @@ -242,7 +264,7 @@ impl BackgroundTask { return; }; - if let Some(sender) = self.requests.remove(&(id, chain_id)) { + if let Some(sender) = chain_data.requests.remove(&id) { if sender .send(Err(LightClientRpcError::Request(error.to_string()))) .is_err() @@ -253,7 +275,7 @@ impl BackgroundTask { ); } } else if let Some(subscription_id_state) = - self.id_to_subscription.remove(&(id, chain_id)) + chain_data.id_to_subscription.remove(&id) { if subscription_id_state .sub_id_sender @@ -274,15 +296,14 @@ impl BackgroundTask { }; // Send the response back. - if let Some(sender) = self.requests.remove(&(id, chain_id)) { + if let Some(sender) = chain_data.requests.remove(&id) { if sender.send(Ok(result)).is_err() { tracing::warn!( target: LOG_TARGET, "Cannot send method response to id={id} chain={chain_id:?}", ); } - } else if let Some(pending_subscription) = - self.id_to_subscription.remove(&(id, chain_id)) + } else if let Some(pending_subscription) = chain_data.id_to_subscription.remove(&id) { let Ok(sub_id) = result .get() @@ -310,8 +331,7 @@ impl BackgroundTask { } // Track this subscription ID if send is successful. - self.subscriptions - .insert((sub_id, chain_id), active_subscription); + chain_data.subscriptions.insert(sub_id, active_subscription); } else { tracing::warn!( target: LOG_TARGET, @@ -325,7 +345,7 @@ impl BackgroundTask { return; }; - let Some(subscription_state) = self.subscriptions.get_mut(&(id, chain_id)) else { + let Some(subscription_state) = chain_data.subscriptions.get_mut(&id) else { tracing::warn!( target: LOG_TARGET, "Subscription response id={id} chain={chain_id:?} method={method} is not tracked", @@ -338,12 +358,12 @@ impl BackgroundTask { } // User dropped the receiver, unsubscribe from the method and remove internal tracking. - let Some(subscription_state) = self.subscriptions.remove(&(id, chain_id)) else { + let Some(subscription_state) = chain_data.subscriptions.remove(&id) else { // State is checked to be some above, so this should never happen. return; }; // Make a call to unsubscribe from this method. - let unsub_id = self.next_id(chain_id); + let unsub_id = chain_data.next_id(); let request = format!( r#"{{"jsonrpc":"2.0","id":"{}", "method":"{}","params":["{}"]}}"#, unsub_id, subscription_state.unsubscribe_method, id From ddd0865fa91e668cda420c5cc69062f8358f9719 Mon Sep 17 00:00:00 2001 From: James Wilson Date: Thu, 29 Feb 2024 13:13:58 +0000 Subject: [PATCH 35/66] Make storage_page_size for the LegacyBackend configurable (#1458) --- subxt/src/backend/legacy/mod.rs | 58 ++++++++++++++++--- subxt/src/client/online_client.rs | 6 +- .../integration-tests/src/utils/node_proc.rs | 2 +- 3 files changed, 53 insertions(+), 13 deletions(-) diff --git a/subxt/src/backend/legacy/mod.rs b/subxt/src/backend/legacy/mod.rs index cffb3f4475..7649da1592 100644 --- a/subxt/src/backend/legacy/mod.rs +++ b/subxt/src/backend/legacy/mod.rs @@ -22,18 +22,56 @@ use std::task::{Context, Poll}; // Expose the RPC methods. pub use rpc_methods::LegacyRpcMethods; +/// Configure and build an [`LegacyBackend`]. +pub struct LegacyBackendBuilder { + storage_page_size: u32, + _marker: std::marker::PhantomData, +} + +impl Default for LegacyBackendBuilder { + fn default() -> Self { + Self::new() + } +} + +impl LegacyBackendBuilder { + /// Create a new [`LegacyBackendBuilder`]. + pub fn new() -> Self { + Self { + storage_page_size: 64, + _marker: std::marker::PhantomData, + } + } + + /// Iterating over storage entries using the [`LegacyBackend`] requires + /// fetching entries in batches. This configures the number of entries that + /// we'll try to obtain in each batch (default: 64). + pub fn storage_page_size(mut self, storage_page_size: u32) -> Self { + self.storage_page_size = storage_page_size; + self + } + + /// Given an [`RpcClient`] to use to make requests, this returns a [`LegacyBackend`], + /// which implements the [`Backend`] trait. + pub fn build(self, client: RpcClient) -> LegacyBackend { + LegacyBackend { + storage_page_size: self.storage_page_size, + methods: LegacyRpcMethods::new(client), + } + } +} + /// The legacy backend. #[derive(Debug, Clone)] pub struct LegacyBackend { + storage_page_size: u32, methods: LegacyRpcMethods, } impl LegacyBackend { - /// Instantiate a new backend which uses the legacy API methods. - pub fn new(client: RpcClient) -> Self { - Self { - methods: LegacyRpcMethods::new(client), - } + /// Configure and construct an [`LegacyBackend`]. + pub fn builder() -> LegacyBackendBuilder { + LegacyBackendBuilder::new() } } @@ -74,6 +112,7 @@ impl Backend for LegacyBackend { let keys = StorageFetchDescendantKeysStream { at, key, + storage_page_size: self.storage_page_size, methods: self.methods.clone(), done: Default::default(), keys_fut: Default::default(), @@ -104,6 +143,7 @@ impl Backend for LegacyBackend { let keys_stream = StorageFetchDescendantKeysStream { at, key, + storage_page_size: self.storage_page_size, methods: self.methods.clone(), done: Default::default(), keys_fut: Default::default(), @@ -332,9 +372,6 @@ where }) } -/// How many keys/values to fetch at once. -const STORAGE_PAGE_SIZE: u32 = 32; - /// This provides a stream of values given some prefix `key`. It /// internally manages pagination and such. #[allow(clippy::type_complexity)] @@ -342,6 +379,8 @@ pub struct StorageFetchDescendantKeysStream { methods: LegacyRpcMethods, key: Vec, at: T::Hash, + // How many entries to ask for each time. + storage_page_size: u32, // What key do we start paginating from? None = from the beginning. pagination_start_key: Option>, // Keys, future and cached: @@ -392,12 +431,13 @@ impl Stream for StorageFetchDescendantKeysStream { let methods = this.methods.clone(); let key = this.key.clone(); let at = this.at; + let storage_page_size = this.storage_page_size; let pagination_start_key = this.pagination_start_key.take(); let keys_fut = async move { methods .state_get_keys_paged( &key, - STORAGE_PAGE_SIZE, + storage_page_size, pagination_start_key.as_deref(), Some(at), ) diff --git a/subxt/src/client/online_client.rs b/subxt/src/client/online_client.rs index f4e2f8c723..77718caa7f 100644 --- a/subxt/src/client/online_client.rs +++ b/subxt/src/client/online_client.rs @@ -76,7 +76,7 @@ impl OnlineClient { /// Allows insecure URLs without SSL encryption, e.g. (http:// and ws:// URLs). pub async fn from_insecure_url(url: impl AsRef) -> Result, Error> { let client = RpcClient::from_insecure_url(url).await?; - let backend = LegacyBackend::new(client); + let backend = LegacyBackend::builder().build(client); OnlineClient::from_backend(Arc::new(backend)).await } } @@ -85,7 +85,7 @@ impl OnlineClient { /// Construct a new [`OnlineClient`] by providing an [`RpcClient`] to drive the connection. /// This will use the current default [`Backend`], which may change in future releases. pub async fn from_rpc_client(rpc_client: RpcClient) -> Result, Error> { - let backend = Arc::new(LegacyBackend::new(rpc_client)); + let backend = Arc::new(LegacyBackend::builder().build(rpc_client)); OnlineClient::from_backend(backend).await } @@ -108,7 +108,7 @@ impl OnlineClient { metadata: impl Into, rpc_client: RpcClient, ) -> Result, Error> { - let backend = Arc::new(LegacyBackend::new(rpc_client)); + let backend = Arc::new(LegacyBackend::builder().build(rpc_client)); OnlineClient::from_backend_with(genesis_hash, runtime_version, metadata, backend) } diff --git a/testing/integration-tests/src/utils/node_proc.rs b/testing/integration-tests/src/utils/node_proc.rs index d3ac752fec..65a27012bc 100644 --- a/testing/integration-tests/src/utils/node_proc.rs +++ b/testing/integration-tests/src/utils/node_proc.rs @@ -201,7 +201,7 @@ async fn build_rpc_client(ws_url: &str) -> Result { async fn build_legacy_client( rpc_client: rpc::RpcClient, ) -> Result, String> { - let backend = legacy::LegacyBackend::new(rpc_client); + let backend = legacy::LegacyBackend::builder().build(rpc_client); let client = OnlineClient::from_backend(Arc::new(backend)) .await .map_err(|e| format!("Cannot construct OnlineClient from backend: {e}"))?; From 2727f77910bef5cc879de00ab55e5a337c3b1cfe Mon Sep 17 00:00:00 2001 From: Tadeo Hepperle <62739623+tadeohepperle@users.noreply.github.com> Date: Fri, 1 Mar 2024 10:04:34 +0100 Subject: [PATCH 36/66] Extrinsic Params Refinement (#1439) * refinement based approach to params * doc and test fixes * bundle refine data into struct --- examples/wasm-example/Cargo.lock | 107 ++++++++--------- examples/wasm-example/src/routes/signing.rs | 4 +- subxt/examples/rpc_legacy.rs | 7 +- subxt/examples/setup_config_custom.rs | 19 +-- .../examples/setup_config_signed_extension.rs | 13 +-- subxt/src/book/setup/config.rs | 2 +- subxt/src/book/usage/transactions.rs | 7 +- subxt/src/config/default_extrinsic_params.rs | 18 ++- subxt/src/config/extrinsic_params.rs | 7 +- subxt/src/config/mod.rs | 4 +- subxt/src/config/refine_params.rs | 85 ++++++++++++++ subxt/src/config/signed_extensions.rs | 109 +++++++++++------- subxt/src/tx/tx_client.rs | 93 ++++++++++----- .../src/full_client/client/unstable_rpcs.rs | 2 +- 14 files changed, 327 insertions(+), 150 deletions(-) create mode 100644 subxt/src/config/refine_params.rs diff --git a/examples/wasm-example/Cargo.lock b/examples/wasm-example/Cargo.lock index 0e00f041a3..f46412c7b8 100644 --- a/examples/wasm-example/Cargo.lock +++ b/examples/wasm-example/Cargo.lock @@ -476,12 +476,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.3" +version = "0.20.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" +checksum = "c376d08ea6aa96aafe61237c7200d1241cb177b7d3a542d791f2d118e9cbb955" dependencies = [ - "darling_core 0.20.3", - "darling_macro 0.20.3", + "darling_core 0.20.6", + "darling_macro 0.20.6", ] [[package]] @@ -500,9 +500,9 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.3" +version = "0.20.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" +checksum = "33043dcd19068b8192064c704b3f83eb464f91f1ff527b44a4e2b08d9cdb8855" dependencies = [ "fnv", "ident_case", @@ -525,11 +525,11 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.3" +version = "0.20.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" +checksum = "c5a91391accf613803c2a9bf9abccdbaa07c54b4244a5b64883f9c3c137c86be" dependencies = [ - "darling_core 0.20.3", + "darling_core 0.20.6", "quote", "syn 2.0.48", ] @@ -610,9 +610,9 @@ dependencies = [ [[package]] name = "either" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" [[package]] name = "equivalent" @@ -1329,18 +1329,18 @@ checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "js-sys" -version = "0.3.67" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1" +checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" dependencies = [ "wasm-bindgen", ] [[package]] name = "jsonrpsee" -version = "0.21.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9579d0ca9fb30da026bac2f0f7d9576ec93489aeb7cd4971dd5b4617d82c79b2" +checksum = "16fcc9dd231e72d22993f1643d5f7f0db785737dbe3c3d7ca222916ab4280795" dependencies = [ "jsonrpsee-client-transport", "jsonrpsee-core", @@ -1350,9 +1350,9 @@ dependencies = [ [[package]] name = "jsonrpsee-client-transport" -version = "0.21.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9f9ed46590a8d5681975f126e22531698211b926129a40a2db47cbca429220" +checksum = "0476c96eb741b40d39dcb39d0124e3b9be9840ec77653c42a0996563ae2a53f7" dependencies = [ "futures-channel", "futures-util", @@ -1373,9 +1373,9 @@ dependencies = [ [[package]] name = "jsonrpsee-core" -version = "0.21.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "776d009e2f591b78c038e0d053a796f94575d66ca4e77dd84bfc5e81419e436c" +checksum = "b974d8f6139efbe8425f32cb33302aba6d5e049556b5bfc067874e7a0da54a2e" dependencies = [ "anyhow", "async-lock", @@ -1398,9 +1398,9 @@ dependencies = [ [[package]] name = "jsonrpsee-http-client" -version = "0.21.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b7de9f3219d95985eb77fd03194d7c1b56c19bce1abfcc9d07462574b15572" +checksum = "19dc795a277cff37f27173b3ca790d042afcc0372c34a7ca068d2e76de2cb6d1" dependencies = [ "async-trait", "hyper", @@ -1418,9 +1418,9 @@ dependencies = [ [[package]] name = "jsonrpsee-types" -version = "0.21.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3266dfb045c9174b24c77c2dfe0084914bb23a6b2597d70c9dc6018392e1cd1b" +checksum = "b13dac43c1a9fc2648b37f306b0a5b0e29b2a6e1c36a33b95c1948da2494e9c5" dependencies = [ "anyhow", "beef", @@ -1713,18 +1713,18 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" dependencies = [ "proc-macro2", "quote", @@ -2289,9 +2289,9 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.195" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] @@ -2318,9 +2318,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.195" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", @@ -2329,9 +2329,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.111" +version = "1.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4" +checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" dependencies = [ "itoa", "ryu", @@ -2540,9 +2540,9 @@ dependencies = [ [[package]] name = "sp-core-hashing" -version = "13.0.0" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb8524f01591ee58b46cd83c9dbc0fcffd2fd730dabec4f59326cd58a00f17e2" +checksum = "1e0f4990add7b2cefdeca883c0efa99bb4d912cb2196120e1500c0cc099553b0" dependencies = [ "blake2b_simd", "byteorder", @@ -2659,7 +2659,7 @@ dependencies = [ name = "subxt-macro" version = "0.34.0" dependencies = [ - "darling 0.20.3", + "darling 0.20.6", "parity-scale-codec", "proc-macro-error", "quote", @@ -2672,11 +2672,12 @@ dependencies = [ name = "subxt-metadata" version = "0.34.0" dependencies = [ + "derive_more", "frame-metadata 16.0.0", + "hashbrown 0.14.3", "parity-scale-codec", "scale-info", "sp-core-hashing", - "thiserror", ] [[package]] @@ -2709,18 +2710,18 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "thiserror" -version = "1.0.56" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" +checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.56" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" +checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" dependencies = [ "proc-macro2", "quote", @@ -2744,9 +2745,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.35.1" +version = "1.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104" +checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" dependencies = [ "backtrace", "bytes", @@ -3010,9 +3011,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406" +checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3020,9 +3021,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd" +checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" dependencies = [ "bumpalo", "log", @@ -3047,9 +3048,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999" +checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3057,9 +3058,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7" +checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" dependencies = [ "proc-macro2", "quote", @@ -3070,9 +3071,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b" +checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" [[package]] name = "wasm-example" diff --git a/examples/wasm-example/src/routes/signing.rs b/examples/wasm-example/src/routes/signing.rs index db6d059ada..7891ef92f8 100644 --- a/examples/wasm-example/src/routes/signing.rs +++ b/examples/wasm-example/src/routes/signing.rs @@ -7,6 +7,7 @@ use subxt::ext::codec::{Decode, Encode}; use subxt::tx::SubmittableExtrinsic; use subxt::tx::TxPayload; use subxt::utils::{AccountId32, MultiSignature}; +use subxt::config::DefaultExtrinsicParamsBuilder; use crate::services::{extension_signature_for_extrinsic, get_accounts, polkadot, Account}; use web_sys::HtmlInputElement; @@ -155,7 +156,8 @@ impl Component for SigningExamplesComponent { return Message::Error(anyhow!("MultiSignature Decoding")); }; - let Ok(partial_signed) = api.tx().create_partial_signed_with_nonce(&remark_call, account_nonce, Default::default()) else { + let params = DefaultExtrinsicParamsBuilder::new().nonce(account_nonce).build(); + let Ok(partial_signed) = api.tx().create_partial_signed_offline(&remark_call, params) else { return Message::Error(anyhow!("PartialExtrinsic creation failed")); }; diff --git a/subxt/examples/rpc_legacy.rs b/subxt/examples/rpc_legacy.rs index f0b831c3b6..84bd837e2d 100644 --- a/subxt/examples/rpc_legacy.rs +++ b/subxt/examples/rpc_legacy.rs @@ -40,7 +40,10 @@ async fn main() -> Result<(), Box> { .await?; let current_header = rpc.chain_get_header(None).await?.unwrap(); - let ext_params = Params::new().mortal(¤t_header, 8).build(); + let ext_params = Params::new() + .mortal(¤t_header, 8) + .nonce(current_nonce) + .build(); let balance_transfer = polkadot::tx() .balances() @@ -48,7 +51,7 @@ async fn main() -> Result<(), Box> { let ext_hash = api .tx() - .create_signed_with_nonce(&balance_transfer, &alice, current_nonce, ext_params)? + .create_signed_offline(&balance_transfer, &alice, ext_params)? .submit() .await?; diff --git a/subxt/examples/setup_config_custom.rs b/subxt/examples/setup_config_custom.rs index 4748202e1f..df4dec9fae 100644 --- a/subxt/examples/setup_config_custom.rs +++ b/subxt/examples/setup_config_custom.rs @@ -1,7 +1,9 @@ #![allow(missing_docs)] use codec::Encode; use subxt::client::OfflineClientT; -use subxt::config::{Config, ExtrinsicParams, ExtrinsicParamsEncoder, ExtrinsicParamsError}; +use subxt::config::{ + Config, ExtrinsicParams, ExtrinsicParamsEncoder, ExtrinsicParamsError, RefineParams, +}; use subxt_signer::sr25519::dev; #[subxt::subxt(runtime_metadata_path = "../artifacts/polkadot_metadata_full.scale")] @@ -51,24 +53,27 @@ impl CustomExtrinsicParamsBuilder { } } +impl RefineParams for CustomExtrinsicParamsBuilder {} + // Describe how to fetch and then encode the params: impl ExtrinsicParams for CustomExtrinsicParams { - type OtherParams = CustomExtrinsicParamsBuilder; + type Params = CustomExtrinsicParamsBuilder; // Gather together all of the params we will need to encode: fn new>( - _nonce: u64, client: Client, - other_params: Self::OtherParams, + params: Self::Params, ) -> Result { Ok(Self { genesis_hash: client.genesis_hash(), - tip: other_params.tip, - foo: other_params.foo, + tip: params.tip, + foo: params.foo, }) } } +impl RefineParams for CustomExtrinsicParams {} + // Encode the relevant params when asked: impl ExtrinsicParamsEncoder for CustomExtrinsicParams { fn encode_extra_to(&self, v: &mut Vec) { @@ -86,7 +91,7 @@ async fn main() { let tx_payload = runtime::tx().system().remark(b"Hello".to_vec()); - // Build your custom "OtherParams": + // Build your custom "Params": let tx_config = CustomExtrinsicParamsBuilder::new().tip(1234).enable_foo(); // And provide them when submitting a transaction: diff --git a/subxt/examples/setup_config_signed_extension.rs b/subxt/examples/setup_config_signed_extension.rs index 2442de629b..e4a2733be5 100644 --- a/subxt/examples/setup_config_signed_extension.rs +++ b/subxt/examples/setup_config_signed_extension.rs @@ -58,12 +58,11 @@ impl signed_extensions::SignedExtension for CustomSignedExtension // Gather together any params we need for our signed extension, here none. impl ExtrinsicParams for CustomSignedExtension { - type OtherParams = (); + type Params = (); fn new>( - _nonce: u64, _client: Client, - _other_params: Self::OtherParams, + _params: Self::Params, ) -> Result { Ok(CustomSignedExtension) } @@ -80,13 +79,13 @@ impl ExtrinsicParamsEncoder for CustomSignedExtension { } // When composing a tuple of signed extensions, the user parameters we need must -// be able to convert `Into` a tuple of corresponding `OtherParams`. Here, we just -// "hijack" the default param builder, but add the `OtherParams` (`()`) for our +// be able to convert `Into` a tuple of corresponding `Params`. Here, we just +// "hijack" the default param builder, but add the `Params` (`()`) for our // new signed extension at the end, to make the types line up. IN reality you may wish -// to construct an entirely new interface to provide the relevant `OtherParams`. +// to construct an entirely new interface to provide the relevant `Params`. pub fn custom( params: DefaultExtrinsicParamsBuilder, -) -> <::ExtrinsicParams as ExtrinsicParams>::OtherParams { +) -> <::ExtrinsicParams as ExtrinsicParams>::Params { let (a, b, c, d, e, f, g) = params.build(); (a, b, c, d, e, f, g, ()) } diff --git a/subxt/src/book/setup/config.rs b/subxt/src/book/setup/config.rs index 6e6e811a55..a26ee75a94 100644 --- a/subxt/src/book/setup/config.rs +++ b/subxt/src/book/setup/config.rs @@ -71,7 +71,7 @@ //! //! The `ExtrinsicParams` config type expects to be given an implementation of the [`crate::config::ExtrinsicParams`] trait. //! Implementations of the [`crate::config::ExtrinsicParams`] trait are handed some parameters from Subxt itself, and can -//! accept arbitrary `OtherParams` from users, and are then expected to provide this "extra" and "additional" data when asked +//! accept arbitrary other `Params` from users, and are then expected to provide this "extra" and "additional" data when asked //! via the required [`crate::config::ExtrinsicParamsEncoder`] impl. //! //! **In most cases, the default [crate::config::DefaultExtrinsicParams] type will work**: it understands the "standard" diff --git a/subxt/src/book/usage/transactions.rs b/subxt/src/book/usage/transactions.rs index 6cbae2fa4c..e900846af2 100644 --- a/subxt/src/book/usage/transactions.rs +++ b/subxt/src/book/usage/transactions.rs @@ -137,11 +137,10 @@ //! Value::from_bytes("Hello there") //! ]); //! -//! // Construct the tx but don't sign it. You need to provide the nonce -//! // here, or can use `create_partial_signed` to fetch the correct nonce. -//! let partial_tx = client.tx().create_partial_signed_with_nonce( +//! // Construct the tx but don't sign it. The account nonce here defaults to 0. +//! // You can use `create_partial_signed` to fetch the correct nonce. +//! let partial_tx = client.tx().create_partial_signed_offline( //! &payload, -//! 0u64, //! Default::default() //! )?; //! diff --git a/subxt/src/config/default_extrinsic_params.rs b/subxt/src/config/default_extrinsic_params.rs index dce83853bf..1ed66c34fb 100644 --- a/subxt/src/config/default_extrinsic_params.rs +++ b/subxt/src/config/default_extrinsic_params.rs @@ -2,6 +2,7 @@ // This file is dual-licensed as Apache-2.0 or GPL-3.0. // see LICENSE for license details. +use super::signed_extensions::CheckNonceParams; use super::{signed_extensions, ExtrinsicParams}; use super::{Config, Header}; @@ -20,12 +21,14 @@ pub type DefaultExtrinsicParams = signed_extensions::AnyOf< ), >; -/// A builder that outputs the set of [`super::ExtrinsicParams::OtherParams`] required for +/// A builder that outputs the set of [`super::ExtrinsicParams::Params`] required for /// [`DefaultExtrinsicParams`]. This may expose methods that aren't applicable to the current /// chain; such values will simply be ignored if so. pub struct DefaultExtrinsicParamsBuilder { /// `None` means the tx will be immortal. mortality: Option>, + /// `None` means the nonce will be automatically set. + nonce: Option, /// `None` means we'll use the native token. tip_of_asset_id: Option, tip: u128, @@ -49,6 +52,7 @@ impl Default for DefaultExtrinsicParamsBuilder { tip: 0, tip_of: 0, tip_of_asset_id: None, + nonce: None, } } } @@ -72,6 +76,12 @@ impl DefaultExtrinsicParamsBuilder { self } + /// Provide a specific nonce for the submitter of the extrinsic + pub fn nonce(mut self, nonce: u64) -> Self { + self.nonce = Some(nonce); + self + } + /// Make the transaction mortal, given a block number and block hash (which must both point to /// the same block) that it should be mortal from, and the number of blocks (roughly; it'll be /// rounded to a power of two) that it will be mortal for. @@ -111,7 +121,7 @@ impl DefaultExtrinsicParamsBuilder { } /// Build the extrinsic parameters. - pub fn build(self) -> as ExtrinsicParams>::OtherParams { + pub fn build(self) -> as ExtrinsicParams>::Params { let check_mortality_params = if let Some(mortality) = self.mortality { signed_extensions::CheckMortalityParams::mortal( mortality.period, @@ -131,10 +141,12 @@ impl DefaultExtrinsicParamsBuilder { let charge_transaction_params = signed_extensions::ChargeTransactionPaymentParams::tip(self.tip); + let check_nonce_params = CheckNonceParams(self.nonce); + ( (), (), - (), + check_nonce_params, (), check_mortality_params, charge_asset_tx_params, diff --git a/subxt/src/config/extrinsic_params.rs b/subxt/src/config/extrinsic_params.rs index 42f3b620af..5b3148c269 100644 --- a/subxt/src/config/extrinsic_params.rs +++ b/subxt/src/config/extrinsic_params.rs @@ -10,6 +10,8 @@ use crate::{client::OfflineClientT, Config}; use core::fmt::Debug; +use super::refine_params::RefineParams; + /// An error that can be emitted when trying to construct an instance of [`ExtrinsicParams`], /// encode data from the instance, or match on signed extensions. #[derive(thiserror::Error, Debug)] @@ -53,13 +55,12 @@ pub trait ExtrinsicParams: ExtrinsicParamsEncoder + Sized + 'static { /// These parameters can be provided to the constructor along with /// some default parameters that `subxt` understands, in order to /// help construct your [`ExtrinsicParams`] object. - type OtherParams; + type Params: RefineParams; /// Construct a new instance of our [`ExtrinsicParams`]. fn new>( - nonce: u64, client: Client, - other_params: Self::OtherParams, + params: Self::Params, ) -> Result; } diff --git a/subxt/src/config/mod.rs b/subxt/src/config/mod.rs index ddfa2466c7..ca84a4e9bb 100644 --- a/subxt/src/config/mod.rs +++ b/subxt/src/config/mod.rs @@ -10,6 +10,7 @@ mod default_extrinsic_params; mod extrinsic_params; +mod refine_params; pub mod polkadot; pub mod signed_extensions; @@ -25,6 +26,7 @@ use serde::{de::DeserializeOwned, Serialize}; pub use default_extrinsic_params::{DefaultExtrinsicParams, DefaultExtrinsicParamsBuilder}; pub use extrinsic_params::{ExtrinsicParams, ExtrinsicParamsEncoder, ExtrinsicParamsError}; pub use polkadot::{PolkadotConfig, PolkadotExtrinsicParams, PolkadotExtrinsicParamsBuilder}; +pub use refine_params::{RefineParams, RefineParamsData}; pub use signed_extensions::SignedExtension; pub use substrate::{SubstrateConfig, SubstrateExtrinsicParams, SubstrateExtrinsicParamsBuilder}; @@ -60,7 +62,7 @@ pub trait Config: Sized + Send + Sync + 'static { } /// given some [`Config`], this return the other params needed for its `ExtrinsicParams`. -pub type OtherParamsFor = <::ExtrinsicParams as ExtrinsicParams>::OtherParams; +pub type ParamsFor = <::ExtrinsicParams as ExtrinsicParams>::Params; /// Block hashes must conform to a bunch of things to be used in Subxt. pub trait BlockHash: diff --git a/subxt/src/config/refine_params.rs b/subxt/src/config/refine_params.rs new file mode 100644 index 0000000000..3a5c3a2087 --- /dev/null +++ b/subxt/src/config/refine_params.rs @@ -0,0 +1,85 @@ +// Copyright 2019-2023 Parity Technologies (UK) Ltd. +// This file is dual-licensed as Apache-2.0 or GPL-3.0. +// see LICENSE for license details. + +//! Refining params with values fetched from the chain + +use crate::Config; + +/// Data that can be used to refine the params of signed extensions. +pub struct RefineParamsData { + account_nonce: u64, + block_number: u64, + block_hash: T::Hash, +} + +impl RefineParamsData { + pub(crate) fn new(account_nonce: u64, block_number: u64, block_hash: T::Hash) -> Self { + RefineParamsData { + account_nonce, + block_number, + block_hash, + } + } + + /// account nonce for extrinsic author + pub fn account_nonce(&self) -> u64 { + self.account_nonce + } + + /// latest finalized block number + pub fn block_number(&self) -> u64 { + self.block_number + } + + /// latest finalized block hash + pub fn block_hash(&self) -> T::Hash { + self.block_hash + } +} + +/// Types implementing [`RefineParams`] can be modified to reflect live information from the chain. +pub trait RefineParams { + /// Refine params to an extrinsic. There is usually some notion of 'the param is already set/unset' in types implementing this trait. + /// The refinement should most likely not affect cases where a param is in a 'is already set by the user' state. + fn refine(&mut self, _data: &RefineParamsData) {} +} + +impl RefineParams for () {} + +macro_rules! impl_tuples { + ($($ident:ident $index:tt),+) => { + + impl ),+> RefineParams for ($($ident,)+){ + fn refine(&mut self, data: &RefineParamsData) { + $(self.$index.refine(data);)+ + } + + } + } +} + +#[rustfmt::skip] +const _: () = { + impl_tuples!(A 0); + impl_tuples!(A 0, B 1); + impl_tuples!(A 0, B 1, C 2); + impl_tuples!(A 0, B 1, C 2, D 3); + impl_tuples!(A 0, B 1, C 2, D 3, E 4); + impl_tuples!(A 0, B 1, C 2, D 3, E 4, F 5); + impl_tuples!(A 0, B 1, C 2, D 3, E 4, F 5, G 6); + impl_tuples!(A 0, B 1, C 2, D 3, E 4, F 5, G 6, H 7); + impl_tuples!(A 0, B 1, C 2, D 3, E 4, F 5, G 6, H 7, I 8); + impl_tuples!(A 0, B 1, C 2, D 3, E 4, F 5, G 6, H 7, I 8, J 9); + impl_tuples!(A 0, B 1, C 2, D 3, E 4, F 5, G 6, H 7, I 8, J 9, K 10); + impl_tuples!(A 0, B 1, C 2, D 3, E 4, F 5, G 6, H 7, I 8, J 9, K 10, L 11); + impl_tuples!(A 0, B 1, C 2, D 3, E 4, F 5, G 6, H 7, I 8, J 9, K 10, L 11, M 12); + impl_tuples!(A 0, B 1, C 2, D 3, E 4, F 5, G 6, H 7, I 8, J 9, K 10, L 11, M 12, N 13); + impl_tuples!(A 0, B 1, C 2, D 3, E 4, F 5, G 6, H 7, I 8, J 9, K 10, L 11, M 12, N 13, O 14); + impl_tuples!(A 0, B 1, C 2, D 3, E 4, F 5, G 6, H 7, I 8, J 9, K 10, L 11, M 12, N 13, O 14, P 15); + impl_tuples!(A 0, B 1, C 2, D 3, E 4, F 5, G 6, H 7, I 8, J 9, K 10, L 11, M 12, N 13, O 14, P 15, Q 16); + impl_tuples!(A 0, B 1, C 2, D 3, E 4, F 5, G 6, H 7, I 8, J 9, K 10, L 11, M 12, N 13, O 14, P 15, Q 16, R 17); + impl_tuples!(A 0, B 1, C 2, D 3, E 4, F 5, G 6, H 7, I 8, J 9, K 10, L 11, M 12, N 13, O 14, P 15, Q 16, R 17, S 18); + impl_tuples!(A 0, B 1, C 2, D 3, E 4, F 5, G 6, H 7, I 8, J 9, K 10, L 11, M 12, N 13, O 14, P 15, Q 16, R 17, S 18, U 19); + impl_tuples!(A 0, B 1, C 2, D 3, E 4, F 5, G 6, H 7, I 8, J 9, K 10, L 11, M 12, N 13, O 14, P 15, Q 16, R 17, S 18, U 19, V 20); +}; diff --git a/subxt/src/config/signed_extensions.rs b/subxt/src/config/signed_extensions.rs index f0864cee61..d5d2a1c66b 100644 --- a/subxt/src/config/signed_extensions.rs +++ b/subxt/src/config/signed_extensions.rs @@ -8,6 +8,8 @@ //! when interacting with a chain. use super::extrinsic_params::{ExtrinsicParams, ExtrinsicParamsEncoder, ExtrinsicParamsError}; +use super::refine_params::RefineParamsData; +use super::RefineParams; use crate::utils::Era; use crate::{client::OfflineClientT, Config}; use codec::{Compact, Encode}; @@ -37,12 +39,11 @@ pub trait SignedExtension: ExtrinsicParams { pub struct CheckSpecVersion(u32); impl ExtrinsicParams for CheckSpecVersion { - type OtherParams = (); + type Params = (); fn new>( - _nonce: u64, client: Client, - _other_params: Self::OtherParams, + _params: Self::Params, ) -> Result { Ok(CheckSpecVersion(client.runtime_version().spec_version)) } @@ -65,13 +66,14 @@ impl SignedExtension for CheckSpecVersion { pub struct CheckNonce(Compact); impl ExtrinsicParams for CheckNonce { - type OtherParams = (); + type Params = CheckNonceParams; fn new>( - nonce: u64, _client: Client, - _other_params: Self::OtherParams, + params: Self::Params, ) -> Result { + // If no nonce is set (nor by user nor refinement), use a nonce of 0. + let nonce = params.0.unwrap_or(0); Ok(CheckNonce(Compact(nonce))) } } @@ -89,16 +91,27 @@ impl SignedExtension for CheckNonce { } } +/// Params for [`CheckNonce`] +#[derive(Debug, Clone, Default)] +pub struct CheckNonceParams(pub Option); + +impl RefineParams for CheckNonceParams { + fn refine(&mut self, data: &RefineParamsData) { + if self.0.is_none() { + self.0 = Some(data.account_nonce()); + } + } +} + /// The [`CheckTxVersion`] signed extension. pub struct CheckTxVersion(u32); impl ExtrinsicParams for CheckTxVersion { - type OtherParams = (); + type Params = (); fn new>( - _nonce: u64, client: Client, - _other_params: Self::OtherParams, + _params: Self::Params, ) -> Result { Ok(CheckTxVersion(client.runtime_version().transaction_version)) } @@ -121,12 +134,11 @@ impl SignedExtension for CheckTxVersion { pub struct CheckGenesis(T::Hash); impl ExtrinsicParams for CheckGenesis { - type OtherParams = (); + type Params = (); fn new>( - _nonce: u64, client: Client, - _other_params: Self::OtherParams, + _params: Self::Params, ) -> Result { Ok(CheckGenesis(client.genesis_hash())) } @@ -152,16 +164,25 @@ pub struct CheckMortality { } /// Parameters to configure the [`CheckMortality`] signed extension. -pub struct CheckMortalityParams { +pub struct CheckMortalityParams(Option>); +struct CheckMortalityParamsInner { era: Era, checkpoint: Option, } impl Default for CheckMortalityParams { fn default() -> Self { - Self { - era: Default::default(), - checkpoint: Default::default(), + CheckMortalityParams(None) + } +} + +impl RefineParams for CheckMortalityParams { + fn refine(&mut self, data: &RefineParamsData) { + if self.0.is_none() { + // By default we refine the params to have a mortal transaction valid for 32 blocks. + const TX_VALID_FOR: u64 = 32; + *self = + CheckMortalityParams::mortal(TX_VALID_FOR, data.block_number(), data.block_hash()); } } } @@ -172,32 +193,39 @@ impl CheckMortalityParams { /// `block_hash` should both point to the same block, and are the block that /// the transaction is mortal from. pub fn mortal(period: u64, block_number: u64, block_hash: T::Hash) -> Self { - CheckMortalityParams { + Self(Some(CheckMortalityParamsInner { era: Era::mortal(period, block_number), checkpoint: Some(block_hash), - } + })) } /// An immortal transaction. pub fn immortal() -> Self { - CheckMortalityParams { + Self(Some(CheckMortalityParamsInner { era: Era::Immortal, checkpoint: None, - } + })) } } impl ExtrinsicParams for CheckMortality { - type OtherParams = CheckMortalityParams; + type Params = CheckMortalityParams; fn new>( - _nonce: u64, client: Client, - other_params: Self::OtherParams, + params: Self::Params, ) -> Result { - Ok(CheckMortality { - era: other_params.era, - checkpoint: other_params.checkpoint.unwrap_or(client.genesis_hash()), - }) + let check_mortality = if let Some(params) = params.0 { + CheckMortality { + era: params.era, + checkpoint: params.checkpoint.unwrap_or(client.genesis_hash()), + } + } else { + CheckMortality { + era: Era::Immortal, + checkpoint: client.genesis_hash(), + } + }; + Ok(check_mortality) } } @@ -278,20 +306,21 @@ impl ChargeAssetTxPaymentParams { } impl ExtrinsicParams for ChargeAssetTxPayment { - type OtherParams = ChargeAssetTxPaymentParams; + type Params = ChargeAssetTxPaymentParams; fn new>( - _nonce: u64, _client: Client, - other_params: Self::OtherParams, + params: Self::Params, ) -> Result { Ok(ChargeAssetTxPayment { - tip: Compact(other_params.tip), - asset_id: other_params.asset_id, + tip: Compact(params.tip), + asset_id: params.asset_id, }) } } +impl RefineParams for ChargeAssetTxPaymentParams {} + impl ExtrinsicParamsEncoder for ChargeAssetTxPayment { fn encode_extra_to(&self, v: &mut Vec) { (self.tip, &self.asset_id).encode_to(v); @@ -336,19 +365,20 @@ impl ChargeTransactionPaymentParams { } impl ExtrinsicParams for ChargeTransactionPayment { - type OtherParams = ChargeTransactionPaymentParams; + type Params = ChargeTransactionPaymentParams; fn new>( - _nonce: u64, _client: Client, - other_params: Self::OtherParams, + params: Self::Params, ) -> Result { Ok(ChargeTransactionPayment { - tip: Compact(other_params.tip), + tip: Compact(params.tip), }) } } +impl RefineParams for ChargeTransactionPaymentParams {} + impl ExtrinsicParamsEncoder for ChargeTransactionPayment { fn encode_extra_to(&self, v: &mut Vec) { self.tip.encode_to(v); @@ -380,12 +410,11 @@ macro_rules! impl_tuples { T: Config, $($ident: SignedExtension,)+ { - type OtherParams = ($($ident::OtherParams,)+); + type Params = ($($ident::Params,)+); fn new>( - nonce: u64, client: Client, - other_params: Self::OtherParams, + params: Self::Params, ) -> Result { let metadata = client.metadata(); let types = metadata.types(); @@ -401,7 +430,7 @@ macro_rules! impl_tuples { } // Break and record as soon as we find a match: if $ident::matches(e.identifier(), e.extra_ty(), types) { - let ext = $ident::new(nonce, client.clone(), other_params.$index)?; + let ext = $ident::new(client.clone(), params.$index)?; let boxed_ext: Box = Box::new(ext); exts_by_index.insert(idx, boxed_ext); break diff --git a/subxt/src/tx/tx_client.rs b/subxt/src/tx/tx_client.rs index 6bf6c9ab57..49b940d40c 100644 --- a/subxt/src/tx/tx_client.rs +++ b/subxt/src/tx/tx_client.rs @@ -7,8 +7,11 @@ use std::borrow::Cow; use crate::{ backend::{BackendExt, BlockRef, TransactionStatus}, client::{OfflineClientT, OnlineClientT}, - config::{Config, ExtrinsicParams, ExtrinsicParamsEncoder, Hasher}, - error::{Error, MetadataError}, + config::{ + Config, ExtrinsicParams, ExtrinsicParamsEncoder, Hasher, Header, RefineParams, + RefineParamsData, + }, + error::{BlockError, Error, MetadataError}, tx::{Signer as SignerT, TxPayload, TxProgress}, utils::{Encoded, PhantomDataSendSync}, }; @@ -103,11 +106,13 @@ impl> TxClient { } /// Create a partial extrinsic. - pub fn create_partial_signed_with_nonce( + /// + /// Note: if not provided, the default account nonce will be set to 0 and the default mortality will be _immortal_. + /// This is because this method runs offline, and so is unable to fetch the data needed for more appropriate values. + pub fn create_partial_signed_offline( &self, call: &Call, - account_nonce: u64, - other_params: >::OtherParams, + params: >::Params, ) -> Result, Error> where Call: TxPayload, @@ -120,11 +125,8 @@ impl> TxClient { let call_data = self.call_data(call)?; // 3. Construct our custom additional/extra params. - let additional_and_extra_params = >::new( - account_nonce, - self.client.clone(), - other_params, - )?; + let additional_and_extra_params = + >::new(self.client.clone(), params)?; // Return these details, ready to construct a signed extrinsic from. Ok(PartialExtrinsic { @@ -135,12 +137,14 @@ impl> TxClient { } /// Creates a signed extrinsic without submitting it. - pub fn create_signed_with_nonce( + /// + /// Note: if not provided, the default account nonce will be set to 0 and the default mortality will be _immortal_. + /// This is because this method runs offline, and so is unable to fetch the data needed for more appropriate values. + pub fn create_signed_offline( &self, call: &Call, signer: &Signer, - account_nonce: u64, - other_params: >::OtherParams, + params: >::Params, ) -> Result, Error> where Call: TxPayload, @@ -152,8 +156,7 @@ impl> TxClient { // 2. Gather the "additional" and "extra" params along with the encoded call data, // ready to be signed. - let partial_signed = - self.create_partial_signed_with_nonce(call, account_nonce, other_params)?; + let partial_signed = self.create_partial_signed_offline(call, params)?; // 3. Sign and construct an extrinsic from these details. Ok(partial_signed.sign(signer)) @@ -165,6 +168,30 @@ where T: Config, C: OnlineClientT, { + /// Fetch the latest block header and account nonce from the backend and use them to refine [`ExtrinsicParams::Params`]. + async fn refine_params( + &self, + account_id: &T::AccountId, + params: &mut >::Params, + ) -> Result<(), Error> { + let block_ref = self.client.backend().latest_finalized_block_ref().await?; + let block_header = self + .client + .backend() + .block_header(block_ref.hash()) + .await? + .ok_or_else(|| Error::Block(BlockError::not_found(block_ref.hash())))?; + let account_nonce = + crate::blocks::get_account_nonce(&self.client, account_id, block_ref.hash()).await?; + + params.refine(&RefineParamsData::new( + account_nonce, + block_header.number().into(), + block_header.hash(), + )); + Ok(()) + } + /// Get the account nonce for a given account ID. pub async fn account_nonce(&self, account_id: &T::AccountId) -> Result { let block_ref = self.client.backend().latest_finalized_block_ref().await?; @@ -176,13 +203,15 @@ where &self, call: &Call, account_id: &T::AccountId, - other_params: >::OtherParams, + mut params: >::Params, ) -> Result, Error> where Call: TxPayload, { - let account_nonce = self.account_nonce(account_id).await?; - self.create_partial_signed_with_nonce(call, account_nonce, other_params) + // Refine the params by adding account nonce and latest block information: + self.refine_params(account_id, &mut params).await?; + // Create the partial extrinsic with the refined params: + self.create_partial_signed_offline(call, params) } /// Creates a signed extrinsic, without submitting it. @@ -190,14 +219,24 @@ where &self, call: &Call, signer: &Signer, - other_params: >::OtherParams, + params: >::Params, ) -> Result, Error> where Call: TxPayload, Signer: SignerT, { - let account_nonce = self.account_nonce(&signer.account_id()).await?; - self.create_signed_with_nonce(call, signer, account_nonce, other_params) + // 1. Validate this call against the current node metadata if the call comes + // with a hash allowing us to do so. + self.validate(call)?; + + // 2. Gather the "additional" and "extra" params along with the encoded call data, + // ready to be signed. + let partial_signed = self + .create_partial_signed(call, &signer.account_id(), params) + .await?; + + // 3. Sign and construct an extrinsic from these details. + Ok(partial_signed.sign(signer)) } /// Creates and signs an extrinsic and submits it to the chain. Passes default parameters @@ -213,7 +252,7 @@ where where Call: TxPayload, Signer: SignerT, - >::OtherParams: Default, + >::Params: Default, { self.sign_and_submit_then_watch(call, signer, Default::default()) .await @@ -227,13 +266,13 @@ where &self, call: &Call, signer: &Signer, - other_params: >::OtherParams, + params: >::Params, ) -> Result, Error> where Call: TxPayload, Signer: SignerT, { - self.create_signed(call, signer, other_params) + self.create_signed(call, signer, params) .await? .submit_and_watch() .await @@ -257,7 +296,7 @@ where where Call: TxPayload, Signer: SignerT, - >::OtherParams: Default, + >::Params: Default, { self.sign_and_submit(call, signer, Default::default()).await } @@ -274,13 +313,13 @@ where &self, call: &Call, signer: &Signer, - other_params: >::OtherParams, + params: >::Params, ) -> Result where Call: TxPayload, Signer: SignerT, { - self.create_signed(call, signer, other_params) + self.create_signed(call, signer, params) .await? .submit() .await diff --git a/testing/integration-tests/src/full_client/client/unstable_rpcs.rs b/testing/integration-tests/src/full_client/client/unstable_rpcs.rs index 7704e0d002..084c1223a8 100644 --- a/testing/integration-tests/src/full_client/client/unstable_rpcs.rs +++ b/testing/integration-tests/src/full_client/client/unstable_rpcs.rs @@ -261,7 +261,7 @@ async fn transaction_unstable_submit_and_watch() { let tx_bytes = ctx .client() .tx() - .create_signed_with_nonce(&payload, &dev::alice(), 0, Default::default()) + .create_signed_offline(&payload, &dev::alice(), Default::default()) .unwrap() .into_encoded(); From 9773cb53c92bb9edd52035f9a81fe9f3c7d2516b Mon Sep 17 00:00:00 2001 From: "paritytech-subxt-pr-maker[bot]" <159533160+paritytech-subxt-pr-maker[bot]@users.noreply.github.com> Date: Mon, 4 Mar 2024 10:20:25 +0100 Subject: [PATCH 37/66] Update Artifacts (auto-generated) (#1463) Co-authored-by: tadeohepperle <62739623+tadeohepperle@users.noreply.github.com> --- artifacts/demo_chain_specs/polkadot.json | 8 +- artifacts/polkadot_metadata_full.scale | Bin 307633 -> 402123 bytes artifacts/polkadot_metadata_small.scale | Bin 61025 -> 69830 bytes artifacts/polkadot_metadata_tiny.scale | Bin 37920 -> 38035 bytes .../src/full_client/codegen/polkadot.rs | 8701 ++++++++++++++--- 5 files changed, 7613 insertions(+), 1096 deletions(-) diff --git a/artifacts/demo_chain_specs/polkadot.json b/artifacts/demo_chain_specs/polkadot.json index a24aa92599..6b715a7ac7 100644 --- a/artifacts/demo_chain_specs/polkadot.json +++ b/artifacts/demo_chain_specs/polkadot.json @@ -43,10 +43,10 @@ }, "id": "polkadot", "lightSyncState": { - "babeEpochChanges": "0x0499ed11844881f9a3e6791b1032a0e229db03a40fd8c5634cbacc85757c3c1b92abaf2b010173eef91000000000d3f7f9100000000004651bd04476837746eaf45e4269c11d1ae31c02468cf50d968b347db96ec3b198f8b82b0101d3f7f910000000003301fa100000000004440a975e0d61ca352b2acd649ebaa94d6c42695ce0ee438c627abe2c518171a352c22b01013301fa1000000000930afa100000000000000c440a975e0d61ca352b2acd649ebaa94d6c42695ce0ee438c627abe2c518171a352c22b01011f200000000000003301fa10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a54010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec214541750100000000000000643fa48931f2331b61ce9664acef49522251d1e671490d50d48aebdab81c2b3101000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000503cafb91c14eaa2931c4507090b27170b90a2a76d3cd4669f922202c781fc350100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e010000000000000028cbfe245b9eec3bf55d8d249ab3680490644aa23a7b688e00478e7fcb0fe02901000000000000003ed19f8df1a2d2c1176df07baff4206c94f4d752de6a46c5f3f34264a88b0a0701000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b0100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a935010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f01000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b74010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc190100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f067877170100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf710100000000000000b6397b9e34e46715868bbaa83cb67dec4d78ce992f4a9c973e6fc1e2dde3d76b010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e70210100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf080100000000000000be03fe6bc03a7884524047567a8ccf43b3c988bf3b447ca9e1520d1c1f83c53901000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b01000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb5501000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b0100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d8708132010000000000000080413d2894759b53a03874bf96ffcb66117e4a08ad7f159c008f2b3b6cfcbb470100000000000000ea885fca10a9473631bcca2549cb8183beef534a7ee2bd59a0a6f74d97bcfc4401000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a796260100000000000000344589372873125fd660e2ff3ad9bf67230f9306acccaea070aed322a8ede264010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d030100000000000000584bf60b8b17ddaf70f87f371bd2b425a3637e05c1b75469f45ea85717063b6901000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000f85f12f4fb92075bc59a1711f35e8f3c8313ff08028d2af80a79b3682a3785590100000000000000f8db92b1e5f6e9a7f23435a2aadab56d5ab7746c978965d924de2f89ef063c21010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a0100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b35150100000000000000800dd25a7aea3fd7359065185cb35b4a2fad0b81b3d58de638e6764dc8a8211d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e638010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb1901000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f610010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000ba12ca0e39666950f91cccac64a409fc9216e0e6e7466d26cbcf7925c3d0fe120100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f845010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f49533301000000000000009ad5ff7033b5708f5de5496a94c16fefa6de45ad641910b81d6699c37888435801000000000000003ed1ddb7a3c787fb4b4ec4b71c6d8b8227ec5b2b74206be0df38c9e85af482040100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea8400100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d7101000000000000001cdcbae0de1e2be6288b7bdb0837bdba849f0c93e86b21d8f8f7d425d933193001000000000000000c73fd83ff0d798ecd6be0518e340dd60c45bdd386c95236ad1db6b1572f1c7d01000000000000004678cfe8b5ab7811861b19336b572f9c7175ad92efbd8a031e5fcdda58173f51010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d010000000000000092d42adbe88eb57759aac9f72ef4a88c3459635bf9886f4613371efd4e7fd14a0100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000b2967e3480b89af39e38367f948fb287568f27bfdac4b65fbc9d97536c79c7000100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d410100000000000000d0389974c754c672124ce98f5d49f4582fc60aae5fec560b5c332a07d835412d01000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000026fa6b3ccef89437308d6c893173c45de62e3c2cca8b6a67ad951ef8127792240100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d80666401000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e01000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e2529010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da7201000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c49142010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f0100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac56101000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000f6f94569aba4acba85b7745a91caaac8a89c95469cf2b9813891eeb94327937b010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de32010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d0100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d6901000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f0100000000000000e0f7debc0989ef62dee42d2cfc81a07625f89e511c3baeed9e6952e66d9b6a460100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a010000000000000066f55d4bd0b47f3cdad20c74b98e204e51bd12799df198045a1d670e3661732b01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa3502010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e01000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f07685201000000000000008ac742d2a3a14cefdfc819c03f5d439eb8325b7f0eeec0a9d4025784ba7e057b010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc240100000000000000ca526faf8ee5263d4006452735885dce304cf724040fce84399254d9160d6f350100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c2801000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e4601000000000000009afa4df63a9a72e8dd0710638b6b6a10e37fbe2ca640f828c0f943e5ea38395501000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb5568770100000000000000683ce8ca29f09be942c929571aaa188b89625f28569721b41eb48329dc1b4b0a01000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000b842693f8e988a596491b840510f98489ae286129b41fa51b8331ca3b82da7590100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e2101000000000000003289fb8751519a2f8d56df55e5491439852a63aa916d9d779cbf574df9a5d86e0100000000000000b85b1b7b8ed510a5bc1d0979fdc04ec7b73d84c7d1d767dafb6faccc8dfd402c010000000000000038ab6c4b18e1c86176cf53301ea990f1cdddcdc3f2c3e0f8dde126fa59f60b2f0100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a1843220100000000000000840c71fc86d7df66080508495f2c2ef97ae503dbd75362c96a6dcfd2cb30b4450100000000000000040000000000000002651bd04476837746eaf45e4269c11d1ae31c02468cf50d968b347db96ec3b198f8b82b01011e20000000000000d3f7f910000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a54010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec214541750100000000000000643fa48931f2331b61ce9664acef49522251d1e671490d50d48aebdab81c2b3101000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000503cafb91c14eaa2931c4507090b27170b90a2a76d3cd4669f922202c781fc350100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e010000000000000028cbfe245b9eec3bf55d8d249ab3680490644aa23a7b688e00478e7fcb0fe02901000000000000003ed19f8df1a2d2c1176df07baff4206c94f4d752de6a46c5f3f34264a88b0a0701000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b0100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a935010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f01000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b74010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc190100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f067877170100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf710100000000000000b6397b9e34e46715868bbaa83cb67dec4d78ce992f4a9c973e6fc1e2dde3d76b010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e70210100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf080100000000000000be03fe6bc03a7884524047567a8ccf43b3c988bf3b447ca9e1520d1c1f83c53901000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b01000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb5501000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b0100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d8708132010000000000000080413d2894759b53a03874bf96ffcb66117e4a08ad7f159c008f2b3b6cfcbb470100000000000000ea885fca10a9473631bcca2549cb8183beef534a7ee2bd59a0a6f74d97bcfc4401000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a796260100000000000000344589372873125fd660e2ff3ad9bf67230f9306acccaea070aed322a8ede264010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d030100000000000000584bf60b8b17ddaf70f87f371bd2b425a3637e05c1b75469f45ea85717063b6901000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000f85f12f4fb92075bc59a1711f35e8f3c8313ff08028d2af80a79b3682a3785590100000000000000f8db92b1e5f6e9a7f23435a2aadab56d5ab7746c978965d924de2f89ef063c21010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a0100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b35150100000000000000800dd25a7aea3fd7359065185cb35b4a2fad0b81b3d58de638e6764dc8a8211d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e638010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb1901000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f610010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000ba12ca0e39666950f91cccac64a409fc9216e0e6e7466d26cbcf7925c3d0fe120100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f845010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f49533301000000000000009ad5ff7033b5708f5de5496a94c16fefa6de45ad641910b81d6699c37888435801000000000000003ed1ddb7a3c787fb4b4ec4b71c6d8b8227ec5b2b74206be0df38c9e85af482040100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea8400100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d7101000000000000001cdcbae0de1e2be6288b7bdb0837bdba849f0c93e86b21d8f8f7d425d933193001000000000000000c73fd83ff0d798ecd6be0518e340dd60c45bdd386c95236ad1db6b1572f1c7d01000000000000004678cfe8b5ab7811861b19336b572f9c7175ad92efbd8a031e5fcdda58173f51010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d010000000000000092d42adbe88eb57759aac9f72ef4a88c3459635bf9886f4613371efd4e7fd14a0100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000b2967e3480b89af39e38367f948fb287568f27bfdac4b65fbc9d97536c79c7000100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d410100000000000000d0389974c754c672124ce98f5d49f4582fc60aae5fec560b5c332a07d835412d01000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000026fa6b3ccef89437308d6c893173c45de62e3c2cca8b6a67ad951ef8127792240100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d80666401000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e01000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e2529010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da7201000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c49142010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f0100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac56101000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000f6f94569aba4acba85b7745a91caaac8a89c95469cf2b9813891eeb94327937b010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de32010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d0100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d6901000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f0100000000000000e0f7debc0989ef62dee42d2cfc81a07625f89e511c3baeed9e6952e66d9b6a460100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a010000000000000066f55d4bd0b47f3cdad20c74b98e204e51bd12799df198045a1d670e3661732b01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa3502010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e01000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f07685201000000000000008ac742d2a3a14cefdfc819c03f5d439eb8325b7f0eeec0a9d4025784ba7e057b010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc240100000000000000ca526faf8ee5263d4006452735885dce304cf724040fce84399254d9160d6f350100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c2801000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e4601000000000000009afa4df63a9a72e8dd0710638b6b6a10e37fbe2ca640f828c0f943e5ea38395501000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb5568770100000000000000683ce8ca29f09be942c929571aaa188b89625f28569721b41eb48329dc1b4b0a01000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000b842693f8e988a596491b840510f98489ae286129b41fa51b8331ca3b82da7590100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e2101000000000000003289fb8751519a2f8d56df55e5491439852a63aa916d9d779cbf574df9a5d86e0100000000000000b85b1b7b8ed510a5bc1d0979fdc04ec7b73d84c7d1d767dafb6faccc8dfd402c010000000000000038ab6c4b18e1c86176cf53301ea990f1cdddcdc3f2c3e0f8dde126fa59f60b2f0100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a184322010000000000000069e31581291fb1d743f0e22442d12c828c5b1e0d6976003991273662361969e0010000000000000004000000000000000299ed11844881f9a3e6791b1032a0e229db03a40fd8c5634cbacc85757c3c1b92abaf2b01011d2000000000000073eef910000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a54010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec214541750100000000000000643fa48931f2331b61ce9664acef49522251d1e671490d50d48aebdab81c2b3101000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000503cafb91c14eaa2931c4507090b27170b90a2a76d3cd4669f922202c781fc350100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e010000000000000028cbfe245b9eec3bf55d8d249ab3680490644aa23a7b688e00478e7fcb0fe02901000000000000003ed19f8df1a2d2c1176df07baff4206c94f4d752de6a46c5f3f34264a88b0a0701000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b0100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a935010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f01000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b74010000000000000042e7851b82d8b7722b9eeb5eead57b21bf533fd25acb10542a52889376fc3920010000000000000028ce9c093ac772f56acb8dfe8b33a3966d4b8699bd41814117352d397195bd5f010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc190100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f067877170100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf710100000000000000b6397b9e34e46715868bbaa83cb67dec4d78ce992f4a9c973e6fc1e2dde3d76b010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e70210100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf080100000000000000be03fe6bc03a7884524047567a8ccf43b3c988bf3b447ca9e1520d1c1f83c53901000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b01000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb5501000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b0100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d8708132010000000000000080413d2894759b53a03874bf96ffcb66117e4a08ad7f159c008f2b3b6cfcbb470100000000000000ea885fca10a9473631bcca2549cb8183beef534a7ee2bd59a0a6f74d97bcfc4401000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a796260100000000000000344589372873125fd660e2ff3ad9bf67230f9306acccaea070aed322a8ede264010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d030100000000000000584bf60b8b17ddaf70f87f371bd2b425a3637e05c1b75469f45ea85717063b6901000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000f85f12f4fb92075bc59a1711f35e8f3c8313ff08028d2af80a79b3682a3785590100000000000000f8db92b1e5f6e9a7f23435a2aadab56d5ab7746c978965d924de2f89ef063c21010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a0100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b35150100000000000000800dd25a7aea3fd7359065185cb35b4a2fad0b81b3d58de638e6764dc8a8211d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e638010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb1901000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f610010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000ba12ca0e39666950f91cccac64a409fc9216e0e6e7466d26cbcf7925c3d0fe120100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f845010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f49533301000000000000009ad5ff7033b5708f5de5496a94c16fefa6de45ad641910b81d6699c37888435801000000000000003ed1ddb7a3c787fb4b4ec4b71c6d8b8227ec5b2b74206be0df38c9e85af482040100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea8400100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d7101000000000000009c576fccaf2ffb4885a0ac8ed7ba0b80ee5fd060856fb9f80bdd3219e5d7800d01000000000000000c73fd83ff0d798ecd6be0518e340dd60c45bdd386c95236ad1db6b1572f1c7d01000000000000004678cfe8b5ab7811861b19336b572f9c7175ad92efbd8a031e5fcdda58173f51010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d010000000000000092d42adbe88eb57759aac9f72ef4a88c3459635bf9886f4613371efd4e7fd14a0100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000b2967e3480b89af39e38367f948fb287568f27bfdac4b65fbc9d97536c79c7000100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d410100000000000000d0389974c754c672124ce98f5d49f4582fc60aae5fec560b5c332a07d835412d01000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000026fa6b3ccef89437308d6c893173c45de62e3c2cca8b6a67ad951ef8127792240100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d80666401000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e01000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000a811cc491bb3487d5e604dcf6dca3bf529437162f3b8cfb8514ffab16809ff600100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e2529010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da7201000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c49142010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f0100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac56101000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000f6f94569aba4acba85b7745a91caaac8a89c95469cf2b9813891eeb94327937b010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de32010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d0100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d6901000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f0100000000000000e0f7debc0989ef62dee42d2cfc81a07625f89e511c3baeed9e6952e66d9b6a460100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a010000000000000066f55d4bd0b47f3cdad20c74b98e204e51bd12799df198045a1d670e3661732b01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000d0106f6fb9b008052da3223c389525681d9b6e4fdb73a4078f7f1949bfaa3502010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e01000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f07685201000000000000008ac742d2a3a14cefdfc819c03f5d439eb8325b7f0eeec0a9d4025784ba7e057b010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc240100000000000000ca526faf8ee5263d4006452735885dce304cf724040fce84399254d9160d6f350100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c2801000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000000c3292b5065b7b78a2de5f4fe397fff21df37c0ff7eef94c5fc4397f760e6e4601000000000000009afa4df63a9a72e8dd0710638b6b6a10e37fbe2ca640f828c0f943e5ea38395501000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb5568770100000000000000683ce8ca29f09be942c929571aaa188b89625f28569721b41eb48329dc1b4b0a01000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000b842693f8e988a596491b840510f98489ae286129b41fa51b8331ca3b82da7590100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e2101000000000000003289fb8751519a2f8d56df55e5491439852a63aa916d9d779cbf574df9a5d86e0100000000000000b85b1b7b8ed510a5bc1d0979fdc04ec7b73d84c7d1d767dafb6faccc8dfd402c010000000000000038ab6c4b18e1c86176cf53301ea990f1cdddcdc3f2c3e0f8dde126fa59f60b2f0100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a184322010000000000000035df8c67b3e36862a6d20e58b429c739fe60cdcb14a977335c692cf84061672f0100000000000000040000000000000002", - "babeFinalizedBlockWeight": 4905142, - "finalizedBlockHeader": "0xbaf2c66b730543579b98aac3c82340520834bd8edb0825504768951a28f039c29e0faf0438c607f9e2b5704ee47af74adc75b555a5d9bbdfaf00caaed4642fc05318e8de41565cf4a345b56c5a24d8c446567c16929f2279c904371363048fef12c7013e0c0642414245b501033f0000006df9f910000000009c40b3360d552bc490667bd8a20a3ce5e6322f3bf196d98e65e4c6f720e5b84a18c53a29473c2731e3a029bf4170042482be4b4a539a83a247db59c5879f440ebee6eabb0526d1f8927754cda5fe9d46094d313edc5f6a1be6c3bf69641a190c04424545468403b2c2b8932a78da0ef27b6e51f96b877954d11041311ac99533f2903bf3c71cf7054241424501015a8edff0a718f96d27d5a4f975882a1ed4dddc3d137717f535600ca66f13710f68686b9dfa9c9365cc9883aaf2608cd39351a4cbcfc9b55d28fd72cb7ca8f08d", - "grandpaAuthoritySet": "0xa5046f706506065685b322054d22e8a1f23ca9df75c32a88dda5214ad58b553b4cca01000000000000008a239af78d4659897af698b5670533fa6d215864be8c41e3a2fc4309f9f83dcb0100000000000000e2b9e72d9202e99526fa626d9a6651dfd7c1daec8fc6ba1130af96f7d21a42da010000000000000047f940bc985355be7187c709ded2b689b66d69e61e293a507f1d4f90bdbeceee01000000000000001bae9b223279cf7f43805d7158bc4a31a981be184f969784091af289f854a0a801000000000000004a3fc0fe1020c7f460c7bd23d0b657c03368552b2f0a12d80a1c406fd066e0db01000000000000009b992b5e9b99eb2cd3b2b648d6db81ed722a2feb4938d998b58dcb5d159fadfa0100000000000000aee9de3938173700b3e3f4fbf2b200ae296173a0854157f40de2598dd4cad8f10100000000000000ed70004b41d483626fb8080957192ded96e08afe38fd0d185ea02bbf3b2f6a760100000000000000243f110deac5efe8e963d794eb8706a1895ae1942523ab0fe9e1623515b7dea80100000000000000b61e9b13e849779be8f5378a670d61991875d8e091f359384d7be73d02d506930100000000000000426b2be4596a759a15028d84e08c5c56440e6cede68d088f47c671cc3387c3e6010000000000000070ba6e5985990ba1b1392713236f1b50df750f10f744cc6eb95fa7c5cfbc68760100000000000000d343862beda4cf485b4a3b7e9b62d3b7e6263b47f65a7c88c88f6e0f1350c7a501000000000000009fc0dde9a352d1ee6ec34287a06a99e80bcbe708469d795a8c29448bed6a6c45010000000000000054e3d0d93579bedb7759b60e4b5a009f93fc86ff8da59c00b06b318a4c8d95ea0100000000000000e511d441d6d3c822cb276bb2a14b1c8071d9fe1995802383fb5dcf8a92edcfc20100000000000000a15896b8bbf01f757f120813bc2e78b21388eea66db4b0dc2e1afeabd3d46dc00100000000000000be2235b9d9c9164f494dd688000fb569a37d5c47912ef99b9ebda9318d13345e01000000000000000139b946b46bee4c61be50c986f2a9ef2e76917644e2ecd842c59d61a94ee612010000000000000019a9d56ea35496122fc44fcb5c29d27fbb43520556d6f8d97753767aaa0f228e0100000000000000a8dbfc6cb88ac105e25b9dc7f11e883631824647cd4d0c18014bb6239627b2900100000000000000a5b094ae7c156592baa68ce18dab6368d5b665e9a0f07dfc5f54f58309e086c1010000000000000041ef4a31eb7dc1e01f4630604e1908e644d7cdee3f66a60f98d6d59605326f8b010000000000000097743d6364cdb6c4790cd37c4c2ab5fbc6c65e8bb606625e70a6ee04ed1650d9010000000000000008cc1d6c743da905511a39a6f0a68809a6bc32f8ac25e53bb2d6aca4f493fc9b0100000000000000acd71d4269b3ba2a9de822d494c4d841708e1519c08de41d7fc6153eaf48da810100000000000000d04d64a07f144638f20f081de122b88fed0cc8bda57e4810e7afb38036dd8bbf0100000000000000f26945a8a64032a1defa76e720a99649125b55751b6088205e7acab901de670b01000000000000005cba2c6f569da1edc3778308da406f266aa53140381dbb3f14f22909ba6e30040100000000000000dac2e90de824b109043f70818d53eabe05e79d518bda504e951d7f4056b0b2720100000000000000652f455eb3d30486151c716a4031bc02bd00254ef3e8290fd29f946d958a46b60100000000000000589fc35b132ef9d7ed9a6787a203e5a3a37f8cd6c775f47ac5e589d55d381a6401000000000000006f4855725ebb9eced957bae43ffa7d30657ce7d06b251ce20e2218bcf929e4050100000000000000749556da4a259bc1f0b8ea8e3726c2251656b92205c30b635ec9f42038f8defb01000000000000000ce4d93e25fa5302f4b059456f680047f87be428ae88579e0b862502b5ceed600100000000000000c1758f7cbffeb844419bc494a9dc65fb394259f01e9bf23789a75acc29d7d9620100000000000000c1c1ff5f66fefb5c0849e3b2333411d1f7e9dd4888600e334e7a33623f15fa360100000000000000fe240e80ff8a48a77947b394979cf361017cd906ddaab637d72cf72e729d79bf010000000000000006854c73f5703242d31d2576ac2297c93f0b5dc16ade0097c59d5dc0faa43c550100000000000000fa2c21f1a03638d4cb35202102240c2b85f5667924d5838cc503721117049da601000000000000008aabd4f6d7ecec7a749c83fc7be33f3b4818cca6f93a4927b4964900df9454e50100000000000000fcc0d954c7d519851e0094cd9a015b4789022a37091e3a04791d0731bd85f0d301000000000000003948bfd09bbbc2fe6ac5dfe53146e32df50828eecf7b2b18cdcff8dc385cbd750100000000000000a2a4af2a11ae7ba812fcc32845583d0354a0f2ffb1271a53c9a976a0f47fff44010000000000000058e304af91397247f704ce95d60845629aa59a50fba1c13896bb2300708db4720100000000000000070bae15860ce96e4a0cbdcc051c75e37a458c8e6c5ae59681d0ed938e588d4501000000000000003ec37919f9f43a9f85f539edfde3ceebea1b0e8279cb036641d588a9da81a6ad01000000000000005e48598ca89db19a4c279a251216d81e33f6b69e7d2ab4450968a1f9409df4a30100000000000000f510cb6c7032c9134dd3e50014ff6d391cfc91606d003fd4acd37e00f919d8350100000000000000cbd74a646a84b73518eadc73b1983dc9733839739576af9a98c698070a3a4b590100000000000000d2e72b0ab02a001b2e573c0d3b78404a7d3c600c3a9fd8ef38e823cad6ed3d6601000000000000003047f8f7e9c47fda9130ccd57d5dc8d407bd89b8dcf8ecbaccf00da184c73a570100000000000000024743c39cd9e151344dc23c65ee0346132d190a224b687be5c5ae31c5e7bb0a01000000000000004e3fb8c16ad624c1852777456805e5352d0221269de66949c95da4076206b35a01000000000000007ad55381f9de00220678c95a19489640fc61331e2a40d927e3d833555575c6fc0100000000000000485d1c94299c3b74c4a87aab7b7d8e2ec3256fce3bcdc0f33a4d2a196e4ee2b60100000000000000b98c920666586f392d129d480e78a965764ac82de45e691589b3aab7831a7f020100000000000000cb92ffeace78dbafe6fbf275741b4b38657fb81590712aa0bca7877931f6ad39010000000000000034a18d21097f479eecbe51b91c522a798582caafc787134bab6888854742406e010000000000000027791275ae7d4735aa45e70210663067f7d268aa57126a26044c8f6d8572a7d80100000000000000f7c9f4bc8669969246cfb748ac6996db6cd4c1fc634d981a1093b2c3d7a2eadf0100000000000000ba95f5d0e987305bb794dfeae69d7dd6a7987aa66cd7c9d42aca15e9160ec6a10100000000000000ffd82ddc49373448bed6feb0032744e20068f4e21adc4cb6d2cbf05ce73f4ce40100000000000000a9f24f0208a21e8cda4e450c72074f20d76a927bb80fa4418e480e0b59575c6b0100000000000000507b0289bfb2f55c7a62ec3c3298690909013c916dd5885b05b330fdc0caf127010000000000000016278af083f6d261762f8a97b6a09ff83e2f5927ce26c2e48f3c7e771dc7e6950100000000000000c49e3cd2c701bb845963c2870dcca12ed070c3f67ffc20144327a93aa6e896ec010000000000000081b1fce3ee9e31723f1023eaa9f8793e8663e72c50fbb0fbcea9bc78bacc491b01000000000000002dad5b2212ee688f2eeb9ca1fb6a90574f006dc1c6680ac3a8523363a248940b010000000000000067ccabbf18c035791cee9c748bea2ca03cf72c40f5ae786f297f84fb05973262010000000000000050f9fd6c0623020debb7843bcb832ee1d80db9b156d8e6083ccebd434fe979470100000000000000b8183b905f28b87c68c2d5b2f39f009f2ee22b47235f6c6d6cf6e63121b490300100000000000000b7c13f1239888cda5c8e6ac9ea10675df17633368906e66a487f91ddd3268ca601000000000000002cd51e09c3197e04155b78f3d97742ceffface390dc46f81f2613a94b2e483fd0100000000000000affb713ecdae328aa4436756f6a3e8add6b274d5ef1cc19d7aa69ab82c80e472010000000000000052912b3dfd0ccacd00586b97f1abe32431a2f6fa9c2b3bb17837a1ecde61728001000000000000008a2b50acd1a4955fc814bf6720c7427902a6ce709f3a2d7c17c55b67f6f1c06301000000000000003a511828c0cdc0fd257387843fdbf6f19d5ca1ef1c29ec7e971fc9f1195eb60c0100000000000000ee5605c1a9ed9484a70b8a591339830f24530eefc4599a7c6188a78896908e2c0100000000000000ad06042b85ed16ff4e46f5a68eba9ac12395366ab17c2da24b4f6747b2c8934f0100000000000000d1c146d2429a5a827660008721c7a880e71f44feaa3dc75524c1a9281bac48cd0100000000000000e4b2cffd0b9cacfc500050b27ecae3c55b9b51bd9a416d62605118c8ad4fb09f0100000000000000b28ba3f09e3521f7d09f0098c6743bc218ee2970068adfa5d908d9d06e627ae50100000000000000f6d74de7b39455519a5d6480c8f12c93fc7a4cfc9af39154fc60857a39ad888b0100000000000000c8be78d05f652edd0a64a5865455de36d0fadb0d91c470fd344f8de23c8a6b9c01000000000000002bb7b11dfe79a12110b0370510ef20d40ba8a563f517310f8bf37cf7f0403de40100000000000000f86e50733ff2142e88fe5b898087b4b1d6a3250064a439097f8995069624adef0100000000000000bba7a1ccb67a410afedb8e033ad69c39e7c554ce0ce6584b0e6688bae30f7d69010000000000000040533a786cd0be9618126633512666b1b1b9ab3b436fa653c93e2f65da9c196b0100000000000000be95095d93298171c6fb8a1847adfa173d127e13f53482dcb694f891d68f0c58010000000000000085b714accac0654ba57fac59b626dd35802269d2c1d995cea7c335cb05a88f7f01000000000000006a5f902cdeda2c2161d16bd21d586720c08c0bbb7b463d9c59147338d26a8a9601000000000000009c11e35911f023df6e4d218e53412ab4e4a20c17961d63ba381c913b51f394c001000000000000007448b6f6db7cfffd8650a1f3f08ddad1e114321ea770c9cfe6154882f586edb50100000000000000ffcca343512faeffe1cb3a8a7ce62fa4ee0c7f6a5f3e5ac883482846e132813d010000000000000037483029302a84623f0a8db165fbed905b0a4fc25e7cfb56e975a0e98336a59b0100000000000000ecc7b49598787520ef6336abaf798adbadd6406bb889d8bcefacbbc1a887a3fa010000000000000053b5918f72e73f92f32b578d1b602f0cc554d98bee8c4e131ef0ac7a63399fb4010000000000000063e935d23d285cec7b014cb7736d65b4acffc45ca589003d3231de8e6db8a8aa01000000000000006180a56305eff3231eebe895b44751f075f826684ef42a862f11e79c3e689cd301000000000000001935d43843c66ecf76a9f4c4229de9ed7c172f52aa53d1a279f2856a736661b80100000000000000068f2c90b93ba6130eb3a03f568411a471d0710086a468f8cba32b34e37411dd01000000000000001b08e8788191e92c357ebc21cac8b35558598fbf2f15a5f9a6bc6d980c2857670100000000000000c7d9cab0fb88dccd0cf4abbf5df9d7f36a3de439c5070c599d397e74133bdfed0100000000000000866fe4ae134938ccf4c5caf01358881c75cfde473b0bb8a2623cc231db2ea3b901000000000000005d202a011f023dfaa6713f16bfd4409dde8bfe594abd59e2be32484c73b97982010000000000000008cb5d0ff7f138698c9fb80a1383155cff65ec7e127c5b3614e2e17963969f100100000000000000fc555c014d927fe7838e840609916b9af5d93892ce6f394398858286802b8c6101000000000000006727561447ed474ff4e15645b952a37fa5008d4e694d4853bb55594fa34c4f340100000000000000af9c4c3cf1a3581ee22c9d1a648bfe92fe6d3a7ae39410f213ef25ce6daecffe0100000000000000ec295fb809e22c332aa36a57afe05f2c093b2d13e52b0971d8265c5514e4e9690100000000000000efb5f1e4c4ba37f8c159d452d897c607a58518b8355a8454620b3e3ccc3271230100000000000000099a9eb71f9cb1b7d15eae384790b4ec35045a19acea1730ba62f3e7caf31e8b0100000000000000d34560b879f8f4dd8d2fbd4f6d51b9b6f41b76656860646fcef4e1498859a19001000000000000008c3dbd5a1b928cb51e918452191e5328b0f6e8de0259517831a90b02dba3e6110100000000000000aa6fd06015b8309ea9103f4b0e29bfa7e21ab5bb1431c3a76433f591c739f8380100000000000000a892342c56149812a43e98c82b6a3dfee7eff384d9b6d832002ea63838f64900010000000000000081bbaa3313b09e3b0ea2817c3e968a33587ec8928539c3f3a6d0e65644612f49010000000000000023f07bcb8dade90cefd08732183d5fe32b89ad8a4f84987b9e4e7e767c2587560100000000000000c13b603b5fe774d98e59c26fac03f8096ccc42c57d0cbc6a443b4f07a3c077920100000000000000be6b59cb464fadec4e0b22a9f12857ba5cf7a14c4f9551439d36305d582dd7fb0100000000000000f916634f9fd7e54374e30ac6b722ad1793c13cb2d5f2ad38769eaca2f79d414b01000000000000007ba967a2dae0d8839cf44710591db994d18e53b25ec6d0f861da0037c4a4366a0100000000000000222ee6c6a6c62d56cadb4eaad5104d595fe962fbbdd551c81562d3b509212907010000000000000055ca63358082034ddaf76b75f41a396081dd4f39a61eff13f7575e506e10335601000000000000000aadf1b2009026f8f5dd75d532e91dc756fd47572aa0f3c15d26790e6d6b2f270100000000000000d0a196fdff4cbca9c7d8a893f9ed66d86038378d8faa1fd8543fcce60ff1cd8c0100000000000000d0b4aada93fb3d0b358e8d59f8914f5987acbc6f5b4f3e12a1ed8d962eded8270100000000000000941547f54cc3f578cd00bb09f03cc5a6d3684fc1e5279f8148b625d993dbf06f01000000000000004f950be5bf61958a0ae6e6a036b85b33ba838de8bd5508b558cbe2602d341168010000000000000082e6b6bf1f275c59fbde0dad91393ae690d5e644d11d23898a9ccfdda025920a010000000000000074b60dfb12745236ba9dc8f925efa21482b50c870c567638ba3240a05fe363d90100000000000000d761043f405069ac01285f1ff258450aac675f08d906b1ae0a1ce54eabcb36d901000000000000000dfbc1b5757e1f0ba348f8af64fb631aaff86cd21fa0529e0bb1fbab250879260100000000000000b770208e14dc236c373cad93e19b092e9c6c7a90604d941c19ca19923d33013f0100000000000000de74612da9080d47be35bf4ded2094e23c1de14477114ddcd7b76b815456ec0c0100000000000000d3b3d9703a265a51a137b9de348587c645a168981ef3e01c9dc482856751b8ef010000000000000003dd543dddd6ad00137ddf94a218bfa19d2f08b4365d696765dc25deef76598b0100000000000000cfb9f7f1fcf903a51af729ed1647aee928630e148990309f9dc9f3b14b114b760100000000000000a2ee8d9c22eba97998d63854409d99c87b21d079f5c888d863a81d41d6abf0110100000000000000d14a779884de1b2fbf079b8e47e8c0edb1c29e282996899a4eab5aaf1f4f41130100000000000000c2344c6fb787621295335b6b5acbab9531199901492d41e13a64dfb2927f83be01000000000000002ba5634557f15c4e9198d1ce0cc525e897d3fdecb0c18af8a53fe4e3384f4a1d0100000000000000fd9edd1de37e1788a07c1563d30ce7929cadd7684c279764e2126cc1477d4bb30100000000000000a70aece9abab1251e65fda7a67d7709c2c5ddb7a253c8a83f146c03732469bd101000000000000001ec0811cbe4f2ea1e5a714d3ba08c6d7fdec138bcc6406da3c6cd32f1686616d01000000000000005208fe27477acbc6750d0caa831c0b26801c58eca046a6cf9d4143f85d877e8301000000000000005667d5ab2b7b56ad406d51dc657f573e65bc1fa542fc3ff43793a487af92aab601000000000000005cd3c5512d1bdedb73e633eb63f71e7f0bfadfb6990de4c8d2b2de1d2195df1e010000000000000021a0865e3e99965f51edf95012ffd7d6ea460956c5ba029cdf1c8820376e51c8010000000000000025ebbb2a00126545bbedf00318a78b6e61a0b52c81e30231ff45bd32e311472f0100000000000000726e7a352b2e7451af1998888180bdf7954e7849230d99bc86b4df51bef4399501000000000000007bbd4f800c34110b6c739ff1e8913a36ab62f25641c4bb7413cd354894b602930100000000000000500a9e1ea37636c24ebf4e32668897dae936eef42b6da49027f606d4f24a7e96010000000000000055d7ad9e836af36e9553c49dbd25d703db296fe5f60099918a12bd1abaa2f7830100000000000000ddac76c2a61c9aef4a9b3247aa0953187533f346466f02840235662440d2945c0100000000000000055c25dcc9cf8a08ad007ed9c8afb0ba53cebd129a20f194d272535ca9fa064901000000000000001e1fe4a3c9f590aff5a70b9cae569605ac78531cc10d310436fe0c306cf2e36101000000000000008ad2a4c25ba87cadf77dccde3a56ac8387fb01a6e84d2dac43927f163e7ca0bf01000000000000004df6e4d7da2c11ddb9153c714699f9ab625bbcd5e8e38f1cdeee567dc04abc610100000000000000982d9e3cc8ef3f8d99638b6f9df32c82356e1cd88f123d1e586a604d1d4b0cb401000000000000009cfeed14dd2f96550a0e7edebd9c9a8c8b1d8f7efdd1abca01987654239f3c860100000000000000736925c31654df870fbc29437c9b2a488ac3262e5d80798534ad00c43a61e5470100000000000000572538d1aaea11c9979bf074e0723ba0228690aa9ee8aa0b81db32aabfd822de01000000000000004c3b4b0a3acf902acec7f5d868f77d78b17fa4cfc5f785d393c9f3d15e04880501000000000000008404cabeb0674765bb77af690fa838ba28fa2045d602994a89f07680f4851c83010000000000000006b9e740c0a0e1f8fd31717438d5918ed8680eaccb70fdc9511931ce0d164ae50100000000000000b8cf76a8082d518016ea5588be57b64e156ed23b0f72248975522c23d15ef16101000000000000002565e04c6e0b665fac87f8238bee74837f8f621ed63409f3838d263603400a980100000000000000373b26b330a41547971874dd81c2cbbf8b7e3eda05b861c57205ad7e8c15bbcf01000000000000002a38a4dcdffc571d547ee3e59121fdd378335df7c65877f983f0957cdc9824130100000000000000620c78305072857b43dadced80ebc057dbfc82b58c14c7b63372ef02140867650100000000000000546ce2099b3863d2d75324d5866bfd5324d8ee4701a99dd53528f8a8c898ca4801000000000000004dc2e72680dbf0156818114fa34d3591f8e6948df25a128e191190c66f6ac35301000000000000005d50d6099c7c88f367568fa473b44785acccd030251627cb371de16e5fa704260100000000000000811038f59afeb084566271eb138b0106a8ca013f57e589d6f777bc7bb2219e760100000000000000f5e2c973d4ccbdd36d8ed4e3dae75d3b50002cc1c74eb0a1fe29ef1ef8e3f0cc0100000000000000258f23d60623fcb1d699a35f79776a9e81e979150ba5098dcc8e3a69a407ff9a0100000000000000b1f748c87b12edf7242b4719cfe68e6761acaa4329beee538d6ff740941d3cd301000000000000008b35aa0d212e4032ede352d5426696c260c9ecffa632a2e14e6a6629a6c9f637010000000000000072341ca1eb3a0fd4e790318b51ace114315573d5355c9d5336e39382ba0642560100000000000000a79cd2241bd68004641baac25c1900da3a9e6d83101aea3ef2a58d78c657272f0100000000000000b14911cb101f45b88c437a36bd82a5f8641b1c55052060ea46ea2baea570e8bf0100000000000000b66e24ea84d5e02a7b2b58e20bbf17a0f2a19c4654bf8b07669ba3b9fc4a468101000000000000003c1dcee818434058b7de26ee874ade21bd1149185d6dcba1f67048b931ec3dda01000000000000009d31c78ebe9664e2bd8ba41cddcd9c5b9fb0cc6f8be0a2e5b91f6bcf66a5c7530100000000000000290be52ae5259f3e8bd0cdf454004607867a97c1db86d0c9ff16c8c83625bc830100000000000000c91199db47b7591bf1a928534cdbd3e5979a0d09d6a464f2a9607ec444bd8a9701000000000000000428e3ccdba17d779ffba05c9ec7a6264187d13bf89b6009e97200474ad3439701000000000000004c43a374e6b3e6f7d6c5a6b8518ae0d0d232a1c46d63af8fbc800045a14cbe930100000000000000c34f62968a87b2e4a9340a75004029dff5777a020f60fb287f08038491881f220100000000000000f54bb82d58c665ce3289b8765c40e60d84f74da663c164c38e16784d5c142b2c01000000000000004d9b0bbfc6a294ee0492bdc595a5d8f7cf371c729c5c319a3822f0248bb4fef70100000000000000bbff79a9b92ef586f0be053cc01639b9a335ad8e2910146d070997e285007d830100000000000000ccc84b255e5e73b971f2e71d1903b5ef9bd6d0965ff3ce29c517c875bd7ab65701000000000000001babed13d56d28fdb937b07bce846689584099575382c273f7e425f822c8159f0100000000000000bdee8597e248688fddc627ad9c95cbebf7d3b5f248b9a742aa2d8e761fa365050100000000000000a128a73c5eaa1803618a75bc368c38e4c5cd40999cb72d615b8af1d30cb8cf1d010000000000000020270811c3dc453f37b27d958ef7ad7dd4c7f217c83f94bd0ecd84c60018a86601000000000000001887f7937a8ca4ec67ceaedebfad3d307b10f416219de1ed4f8646409eab730a0100000000000000d64083c00178b8dd224afade9792fed8076031bdfe9efc5b8128e6372a9261e201000000000000001c6842f07fb07b318a8d00ce6258844374f8e894853ae5fd4a85c867d3fc32e30100000000000000417e120dbfd0297d59458b48407b62570987f1e907dd6dfa9a20bfe64eb489d8010000000000000042f20843bf75f4916ade8eb2faad0ada3795b3cacd29b679f18805f2826367550100000000000000be724139e9bdd099b70f7edab7d1acf0d05fa1a4ca212f5e2958d31f4272dcda0100000000000000ee40b85aa515fdbe6e559f815edc7ec1e321e0d152dd54258382ba31b54e447a0100000000000000134cf4720486824c6a27fa7892c8d82e805653ba1d98480267ec284a76b792c20100000000000000c3150e4ca47e7bc6486f198bf0a742a18ab0871bb1efa34e82c4ce81f27926670100000000000000c2eb94269c5e5d2ab9a1a300387358679640763b053aca99ba5c1c9083ee717f0100000000000000316bafdefb60951da2738d6c9c2ef1866d139b34b5eab6944d6bae754dd3fb110100000000000000b65475766e6229c87ff34263f5ca58525ab133962bc599ca0eab096ff296f4e60100000000000000ebb1834a568ea7653bc66f394937a0aa4f2f617118d2161e2c11c0d7d2febb9d0100000000000000b6d7ac98d6667fe8f4a186ef12a66b017df05a54e11b45d3f2967cb3d6b6827f010000000000000042f47dad5949be7b7b8f81faaec17b1b53465b01b9f8f81e6a45f2fc74e12daf01000000000000007a1291795805dbe300425311ae50ed698450b1912b62e5b5a3264c68bfa970760100000000000000e0df5b2f299314d2d419b46d15c3c8a739182d91c3d4b98cd16c013c3a25c04b01000000000000000150276c1b3d28d42630801c1d4a738ae723887d9286e40ba48d10b0752f7dcc010000000000000098a6defcfeb3dfca36ec46eb373734627a2c395cdd2d886046a11788ed6467af0100000000000000853ba986f8785e8fc1a2ae2fb86f17cc91886d931182ccb8d148379a35cbf02701000000000000009bbc024bfe4f072b94735afda064dc3c7da2b4bc0c50cfad44722543583a372e01000000000000002b71a8a81bc2be65f3224ba3711d1bb243446d154369e209f97d8375b5fe8deb0100000000000000496826b538d97906e14d417b48598d7d591a483ab5f4c6786cd0b96239c2f4cf0100000000000000ef27d1d5573e6419ffcc7c4372668105118256b810ab2e2dbb5e7d8280ee94250100000000000000c7009be830fe78c42f12f0753923131d16300bac230650001636b6a546cf0aa30100000000000000ed3f97f83ee7799c4aeba9f40bd18134c862c1a30875fc1e038cd27bae3a739a0100000000000000348e8bacc2d40191a6a00e137c745a422ff8fb03148d2ff9cad75efbb7a670140100000000000000efb31c5039e45fda750af5d2ea31b3210a407b168adec8f98db1f3dbc4cd943801000000000000003afc780f5d6cf676fbafe8bc742aa01b64d7d12530ebe1aab2db123a23f439b00100000000000000bff74b6ff5ccdce9a659408871d486511938422a6e550fe0669ccd739f80108101000000000000009ac13f915431b39f99d8c0bed7e9c62d22e1e8b6daaee809920f491154ef6f8b01000000000000002ff9330a8c344ad3adf4d97db014a2d0891d4dd69f5c8369dad3e0b25566173e01000000000000008f44b6746d8d809da87915d6ec208a07ee63481d24b275c6424429e16ff4d25e0100000000000000e01d6eda8094e949bfbb05c819b509a12eb662a414b822f841d9555d58e1ce7601000000000000001262625cc59c0e4b7548904c31a02231a601305881a231d4dea45eec6cbbbdcc0100000000000000c3576342cbf99792896ee5329b04ff2eee2fc2bb6d53c5c03d52c8957ee793fb01000000000000006ad4bc289673029ab44f3045eb6fdd3589d05e0e5fd76ee017f650a662f898fb0100000000000000a82f563264d1892dd46873205d03c098d8b03f53e21c797839737e4e5f66a87e010000000000000059dadf17dc0f84c1c334e6a815a04bdfcd0988a3f3bcb713c66ae29e17276cc60100000000000000297dc7cf28b3d40a42c5e8faac876bf7227c670e6e031dd0e0537f4fb70e6fbe010000000000000043601ae31cf5b03cb49395dda13809f7398d8670ee4d2172b14a1ab05986ac3b01000000000000000909c1eff97923f6bd47e6ec8b5dc163b32d5b675a3b13138d3599e5cc77ab9f0100000000000000a5f788e86ee2d311357b7aa4a128f063fa4ee36958baf10304c10bde7421aa2c0100000000000000290321d793b7dcb12ad148c2438bb60821bd938b7e9164a0c3d0fc82987f8b6301000000000000002ef11bc5ce1e7b53f788ba01ba581b9171ef36449719ff3eb20973342a4a82850100000000000000e3a73e5e042574299206b6520770553482e099d075bf00cbeb139b5f6737afed01000000000000003bb30832d06cdd3e081afef0cf2b7770bfe81dc58081d1886443e4e4547da8a101000000000000002832b59000d2027d2bf57fdb40da04bd8aac1498923397517181cc487a92815201000000000000000cd7067f96a2d63fa72065302432f48690485fa5f47c9afab17123e0482785230100000000000000f6f23ae9bb4c269a5959d51f9173270ddefcc354b63de77b672bce58cabe60c8010000000000000073dce1727ec50c50366378cd389246e19543d900d7e9dab8e323d04cf5b202a701000000000000002ada479e1fde7211de15900ed29035f6f07506cdbadc4c232aab96d62006b9de0100000000000000ee1a56541083b083f1a13b5f8aa4042a098de2cec4c43f3250baaba8f03a52ea010000000000000062a91ffda8611ffce3edeb628ea6d3b8b12e5b2448beda6da8334e77a9ecbdd701000000000000005246164c02e9e6bfb7a2dbf7ba8a5440a189f8048373678f5b1085f217464c050100000000000000dea69c3badff9b8d7571cb6c538cd099544da7460a19e1b8651c5c530a6dd53c01000000000000001889f1b031fa7d64c4b480a17cd2941be2c02681bca397c93607091f37bf5ee1010000000000000005062bede97a45c6e1c6b593675ee07ce969fae45136cc2b2afc6e705a77f4700100000000000000dc6e03f650e4304ca8d1598dde8d4faf45891987bfc49ef785ace47c4c0b557301000000000000002d12330b8029ef13e02675c6df0e10c6fdbc10e974803730866e603305ff4471010000000000000018ede59e820bcdd0ed2faf99a21bdc916d71577dd35117f90efe77b8513e631001000000000000008c258b4ca16dfb8e5afde4cf40fecf115307798117b4860475511b3b5d5615840100000000000000309bf143989c9effebb5cf0ad8b5cd8ea1c8db104500606280ae90a93d6abc2e01000000000000000e7bc96895730726225e47e31c742fd44d3936f31ecd32658c694fc11df2522401000000000000006375ae0c1bf2b0388e16971715fd68c31ed179f38947531c165f0da2c3fe76670100000000000000e7931a825260ba7d4fdb5f4990d39a71e2a8b215a776ebf770102ca772f103a3010000000000000095fde7b91441fae9d2a6360d30228392519293be5e78cf3305667595cb15e566010000000000000047ede3eca5f6c8f0a51f2d36d7d1c236aab07a8b2aaa6ab08c8ccf8d87ce3dd10100000000000000a5d172126aadfe80d2b711776674d61df5a1cd1a0129761fb2d2de58ed9d48a001000000000000001bbc459bd14434c8b961d3c4108986f28e50a33c825b0cbee11b22a60b90a6d30100000000000000e7eb7de26e0e24fd528fbbcecf837f26579784dfd4db512c9237e2811139738701000000000000009f677785cfbf44140bdf38770f3d8076f222aa1c9997842d89d580b0f256198f01000000000000009a0ea02dca493accceb975732f31c9d249d4c90ff1ca0bd86cbe00f1728146b401000000000000003adbd2d5abdb70ef56c2d8bd4a7c0d67882a1c2050a856937491e98496a496fe0100000000000000f7b6a82ff22dd13d5665015a8abec429d244f857d3d6dc78e3f3c65496e4a99f01000000000000002b07c366c1ed899a2ac9722b76e092828714a8177368e51ca05ec05c565866b301000000000000008e3d1c8c0261e193e87403c8959919ef035ba39175d3ba22f31190303601412e010000000000000094416582fe359e0a310da59bf93df8ff9665b89071d4977a9a9f3390b75c0c450100000000000000ff568b8e0dbe74604c6d04b5de6f2df03b343bea074c4495c6a10e511ba473d90100000000000000a7254986c00f94b1ced526583ce2ffc0e853afd27a8e90cd57178a328e633866010000000000000032bbff551f7ed51452d264d796315e578d982e942eebb60e519ca648935d8b0c01000000000000003a4bfd825ccd308def4a61bac80c579db42b02ea5f1a0768656a326e83a0dd880100000000000000d2f1b3b5f7eb1b0d8328911d9ec920327d7a30729e80c1238f86dfe27c4fa3470100000000000000068f911f5ffd2e94be67762e2eb02e792b79ac8983720f40615e27ad203e03c50100000000000000841584e602ab975c936fe7c2025fcea2b5a0061e839b1ad96528942b33d0974b0100000000000000f33b53556f28f27d250585317cd57a18f37c5d5f2b3c1bd00a0c91ea54f1636f0100000000000000bcc6391e5ad7e8e51ab7cf27eb77d7a631428fd973ca532bd6756dc67acdc49e0100000000000000e056900cabddb471de9e1846d7efdddd8b5ad400b02fc54b4402ba725c78bf9a010000000000000006e45b1345e00445a4ed84345b8bb15ad011fe5b23fd8f074d8d3e332bd505950100000000000000232b04be856e808b2616319b11eec858097a8afee5c18f0af0e1c33f1c6973ad01000000000000001a02012d8a476cc43998b10fd5c8f5174ba2a2eedebf27fab9831c0d812b0528010000000000000098763eb72b3f7dbb7a793bd1d4367af5f072ff45a1a6eae0e002e1eaa24c5d55010000000000000079f73931b31ce353119fb4063412e844b16cb3eb92e592ebd822a8c21303554801000000000000002929dacc53614cea1848e7ba20fdeed7cb0bd81571aa72dfb63dfc84d3965d2b010000000000000030afa9ef79458f844a27a3881655b6eafb90b3912737f1bcddb95e78eb098c1d010000000000000031a46e639e57d1a11119b17f76617a35b3606d206fb5c3e87710f464f7a57de50100000000000000ed25d7114e2aef2f0e57dc2be1401a4994d8aaafb30223162634a512604a2366010000000000000038070000000000000001e7c32b0100e11c00000000000000002904050001000000000000002a0d050002000000000000002f16050003000000000000008e1f05000400000000000000ee28050005000000000000004d32050006000000000000009d3b05000700000000000000fd44050008000000000000005c4e05000900000000000000b75705000a00000000000000176105000b00000000000000766a05000c00000000000000d67305000d00000000000000357d05000e00000000000000958605000f00000000000000f58f0500100000000000000055990500110000000000000095a205001200000000000000d8ab050013000000000000000db50500140000000000000024da05001500000000000000aaec05001600000000000000f4f5050017000000000000003bff050018000000000000008b0806001900000000000000992406001a00000000000000f92d06001b000000000000000d4a06001c00000000000000685306001d00000000000000b65c06001e00000000000000f76506001f00000000000000308b060020000000000000007b940600210000000000000025a70600220000000000000033c3060023000000000000007fcc06002400000000000000c3d50600250000000000000011df060026000000000000005ae806002700000000000000a0f106002800000000000000410407002900000000000000880d07002a000000000000001b3c07002b00000000000000764507002c00000000000000357407002d00000000000000239907002e000000000000006fa207002f00000000000000c3ab070030000000000000006abe07003100000000000000bdc7070032000000000000000fd107003300000000000000b2e3070034000000000000000aed07003500000000000000971b080036000000000000009d24080037000000000000009c4008003800000000000000255308003900000000000000735c08003a000000000000000c6f08003b00000000000000048b08003c00000000000000589408003d00000000000000d3c208003e00000000000000e4de08003f000000000000003fe808004000000000000000f7fa08004100000000000000aa0d09004200000000000000153309004300000000000000fc6a090044000000000000003e74090045000000000000009a7d0900460000000000000000a30900470000000000000014db0900480000000000000020130a004900000000000000791c0a004a00000000000000364b0a004b0000000000000043830a004c00000000000000e5950a004d0000000000000045bb0a004e0000000000000059f30a004f000000000000000e060b005000000000000000812b0b005100000000000000dc340b005200000000000000ef500b005300000000000000a3630b005400000000000000b69b0b005500000000000000c7d30b005600000000000000dd0b0c005700000000000000f3430c005800000000000000087c0c00590000000000000052b30c005a0000000000000060eb0c005b00000000000000baf40c005c0000000000000072230d005d00000000000000805b0d005e000000000000007e930d005f000000000000007ccb0d00600000000000000076030e006100000000000000793b0e00620000000000000088730e00630000000000000092ab0e00640000000000000083e30e006500000000000000731b0f00660000000000000079530f006700000000000000748b0f0068000000000000001fc30f006900000000000000d0fa0f006a00000000000000633210006b00000000000000826a10006c0000000000000028a210006d0000000000000005b310006e0000000000000055d810006f000000000000004810110070000000000000006548110071000000000000008e8011007200000000000000bfb811007300000000000000bbf011007400000000000000e828120075000000000000001561120076000000000000003b991200770000000000000058d112007800000000000000770913007900000000000000944113007a00000000000000c07913007b00000000000000e7b113007c000000000000000cea13007d0000000000000067f313007e00000000000000d31814007f000000000000002e22140080000000000000008c2b14008100000000000000545a14008200000000000000ad63140083000000000000000e89140084000000000000006892140085000000000000008dca14008600000000000000b00215008700000000000000d03a15008800000000000000f3721500890000000000000015ab15008a000000000000003be315008b000000000000005d1b16008c00000000000000855316008d00000000000000b18b16008e00000000000000d3c316008f00000000000000e9fb16009000000000000000073417009100000000000000bf4617009200000000000000286c1700930000000000000029a41700940000000000000041dc17009500000000000000591418009600000000000000bf3918009700000000000000704c18009800000000000000948418009900000000000000f28d18009a00000000000000bcbc18009b00000000000000e4f418009c000000000000000b2d19009d000000000000002c6519009e00000000000000896e19009f00000000000000519d1900a00000000000000075d51900a100000000000000920d1a00a200000000000000ec161a00a300000000000000b6451a00a400000000000000887d1a00a50000000000000077b51a00a600000000000000cdbe1a00a70000000000000070ed1a00a80000000000000083091b00a9000000000000004e251b00aa00000000000000fe371b00ab00000000000000065d1b00ac000000000000005f661b00ad00000000000000bd6f1b00ae00000000000000de941b00af00000000000000fecc1b00b0000000000000001f041c00b1000000000000000c321c00b2000000000000002f3b1c00b3000000000000002e721c00b4000000000000000ca01c00b50000000000000044a91c00b60000000000000022e11c00b70000000000000044191d00b8000000000000000c481d00b9000000000000006b511d00ba000000000000008b891d00bb00000000000000a5c11d00bc0000000000000053f91d00bd00000000000000ff301e00be00000000000000054d1e00bf0000000000000002691e00c000000000000000d1a01e00c100000000000000c5d81e00c200000000000000cf101f00c30000000000000083481f00c400000000000000af801f00c500000000000000d0b81f00c600000000000000f0f01f00c7000000000000001b292000c80000000000000039612000c90000000000000054992000ca000000000000004fd12000cb000000000000004c092100cc00000000000000031c2100cd000000000000006d412100ce00000000000000cc4a2100cf0000000000000098792100d000000000000000c4b12100d100000000000000eee92100d20000000000000011222200d300000000000000325a2200d40000000000000055922200d50000000000000075ca2200d6000000000000008f022300d700000000000000b13a2300d800000000000000cd722300d90000000000000078852300da00000000000000ce8e2300db00000000000000bdaa2300dc00000000000000abe22300dd0000000000000012112400de00000000000000501a2400df0000000000000045512400e000000000000000a1882400e1000000000000005fc02400e20000000000000013f82400e30000000000000007302500e40000000000000013682500e500000000000000c37a2500e600000000000000a8962500e700000000000000fb9f2500e80000000000000000d82500e90000000000000019102600ea000000000000002b482600eb0000000000000028802600ec000000000000002eb82600ed0000000000000044d42600ee0000000000000058f02600ef00000000000000b3f92600f00000000000000065282700f10000000000000057602700f20000000000000064982700f3000000000000008dd02700f400000000000000a7ec2700f500000000000000b9082800f600000000000000e0402800f700000000000000f6782800f80000000000000019b12800f90000000000000040e92800fa000000000000006c212900fb00000000000000a0592900fc00000000000000107f2900fd00000000000000bc912900fe00000000000000eac92900ff00000000000000fd012a000001000000000000ff1d2a0001010000000000000c3a2a0002010000000000002b722a00030100000000000005aa2a000401000000000000fce12a0005010000000000004ceb2a000601000000000000e0fd2a000701000000000000c3192b000801000000000000be512b0009010000000000000a772b000a01000000000000ae892b000b01000000000000b0a52b000c01000000000000abc12b000d010000000000009bf92b000e0100000000000093312c000f0100000000000087692c00100100000000000075a12c00110100000000000074d92c00120100000000000089112d00130100000000000099492d001401000000000000b0812d001501000000000000c3b92d001601000000000000d1f12d001701000000000000d6292e001801000000000000e9612e001901000000000000ea992e001a01000000000000efd12e001b01000000000000f8092f001c01000000000000f0412f001d01000000000000e9792f001e0100000000000036832f001f01000000000000b2b12f002001000000000000a9cd2f00210100000000000094e92f0022010000000000007121300023010000000000003b5930002401000000000000089130002501000000000000599a30002601000000000000f6c830002701000000000000e30031002801000000000000c03831002901000000000000a17031002a01000000000000f27931002b010000000000007fa831002c010000000000005de031002d01000000000000aae931002e01000000000000441832002f01000000000000295032003001000000000000fe8732003101000000000000aa9a3200320100000000000010c0320033010000000000003af8320034010000000000005f303300350100000000000059683300360100000000000078a0330037010000000000009bd833003801000000000000cb1034003901000000000000f44834003a010000000000001c8134003b0100000000000044b934003c0100000000000055f134003d010000000000009dfa34003e01000000000000302935003f01000000000000c6573500400100000000000023613500410100000000000053993500420100000000000080d135004301000000000000560036004401000000000000b10936004501000000000000ce4136004601000000000000037a3600470100000000000031b2360048010000000000005fea360049010000000000007b2237004a01000000000000995a37004b01000000000000f56337004c01000000000000c69237004d01000000000000feca37004e01000000000000340338004f01000000000000683b380050010000000000009e7338005101000000000000c9ab38005201000000000000dcc7380053010000000000003cd138005401000000000000f8e338005501000000000000b0f6380056010000000000001c1c390057010000000000007a2539005801000000000000da2e39005901000000000000525439005a01000000000000878c39005b01000000000000bbc439005c01000000000000f3fc39005d0100000000000028353a005e010000000000005f6d3a005f0100000000000098a53a006001000000000000cedd3a0061010000000000000c163b006201000000000000404e3b00630100000000000019853b006401000000000000608e3b006501000000000000b8973b0066010000000000000fa13b006701000000000000a7b33b006801000000000000fabc3b00690100000000000049c63b006a010000000000009ccf3b006b01000000000000eed83b006c01000000000000c1f43b006d0100000000000014fe3b006e0100000000000066073c006f01000000000000b7103c0070010000000000009e2c3c007101000000000000ee353c00720100000000000094483c007301000000000000e0513c0074010000000000007c643c0075010000000000001d773c0076010000000000004b9c3c00770100000000000010d43c007801000000000000d80b3d0079010000000000001a153d007a0100000000000053433d007b01000000000000ea553d007c01000000000000225f3d007d0100000000000072683d007e01000000000000b4713d007f01000000000000fb7a3d0080010000000000007a8d3d008101000000000000b8963d00820100000000000006a03d00830100000000000088b23d008401000000000000c8bb3d0085010000000000000bc53d0086010000000000001dea3d008701000000000000e9053e008801000000000000b5213e0089010000000000003b343e008a01000000000000843d3e008b010000000000005e593e008c010000000000001f913e008d0100000000000065c83e008e010000000000006bed3e008f01000000000000a9f63e009001000000000000f6ff3e009101000000000000c1373f0092010000000000005c4a3f0093010000000000003b663f009401000000000000856f3f009501000000000000cf783f0096010000000000003ea73f009701000000000000ccde3f0098010000000000008516400099010000000000001e2940009a010000000000006e4e40009b01000000000000c35740009c010000000000009b8640009d01000000000000cebe40009e0100000000000001f740009f01000000000000372f4100a00100000000000097384100a10100000000000070674100a201000000000000a99f4100a30100000000000065b24100a401000000000000ddd74100a50100000000000096ea4100a6010000000000000b104200a70100000000000044484200a8010000000000009c514200a9010000000000003b804200aa0100000000000051b84200ab010000000000006fd44200ac010000000000005ef04200ad01000000000000b9f94200ae010000000000006a284300af0100000000000078604300b00100000000000077984300b101000000000000abd04300b20100000000000064e34300b30100000000000072ff4300b401000000000000d2084400b50100000000000008414400b6010000000000002e794400b7010000000000005eb14400b8010000000000007de94400b9010000000000009e214500ba010000000000005d344500bb01000000000000d0594500bc0100000000000006924500bd010000000000001aca4500be010000000000004a024600bf01000000000000603a4600c00100000000000084724600c101000000000000abaa4600c20100000000000047bd4600c3010000000000009ec64600c401000000000000a0e24600c5010000000000005df54600c601000000000000bf1a4700c701000000000000d1524700c8010000000000007f814700c901000000000000dd8a4700ca0100000000000039944700cb01000000000000f2c24700cc0100000000000010fb4700cd01000000000000d5294800ce010000000000002c334800cf01000000000000f9614800d001000000000000596b4800d10100000000000078874800d2010000000000008da34800d301000000000000aadb4800d401000000000000c6134900d501000000000000eb4b4900d601000000000000e7834900d701000000000000f9bb4900d801000000000000b6ce4900d9010000000000001bf44900da010000000000004a2c4a00db0100000000000066644a00dc010000000000002f7d4a00dd0100000000000019994a00de01000000000000c0ab4a00df01000000000000aec74a00e001000000000000fed04a00e101000000000000bbff4a00e20100000000000019094b00e301000000000000902e4b00e40100000000000041414b00e50100000000000010704b00e6010000000000006e794b00e7010000000000002b8c4b00e80100000000000094b14b00e901000000000000a4e94b00ea01000000000000d4214c00eb01000000000000d7594c00ec01000000000000e8914c00ed0100000000000004ae4c00ee01000000000000ebc94c00ef0100000000000014024d00f001000000000000fe394d00f1010000000000000a724d00f201000000000000667b4d00f30100000000000013aa4d00f40100000000000031c64d00f50100000000000037e24d00f6010000000000004afe4d00f7010000000000002c1a4e00f801000000000000ea2c4e00f90100000000000049364e00fa010000000000004e524e00fb01000000000000628a4e00fc0100000000000079a64e00fd010000000000001ab94e00fe0100000000000079c24e00ff0100000000000094de4e000002000000000000aafa4e00010200000000000059324f00020200000000000004654f000302000000000000ff764f0004020000000000000d804f0005020000000000007e924f000602000000000000c29b4f000702000000000000f4d34f000802000000000000160c50000902000000000000504450000a02000000000000877c50000b02000000000000b6b450000c02000000000000e7ec50000d0200000000000046f650000e02000000000000b61b51000f020000000000001625510010020000000000004f5d510011020000000000000f7051001202000000000000889551001302000000000000b5cd5100140200000000000014d751001502000000000000e605520016020000000000001f3e5200170200000000000053765200180200000000000089ae52001902000000000000e8b752001a02000000000000b7e652001b0200000000000074f952001c02000000000000e81e53001d020000000000001a5753001e02000000000000558f53001f020000000000008ac753002002000000000000b9ff53002102000000000000f13754002202000000000000277054002302000000000000418c54002402000000000000d1a354002502000000000000d9c8540026020000000000007edb54002702000000000000b81355002802000000000000e34b55002902000000000000c58355002a02000000000000d6bb55002b0200000000000007f455002c02000000000000c30656002d020000000000002c2c56002e020000000000005d6456002f020000000000008f9c56003002000000000000c9d456003102000000000000070d570032020000000000004345570033020000000000007a7d570034020000000000007d99570035020000000000009ab557003602000000000000b4ed57003702000000000000f225580038020000000000002f5e580039020000000000006b9658003a02000000000000a6ce58003b02000000000000e30659003c02000000000000183f59003d02000000000000517759003e02000000000000ad8059003f020000000000008baf59004002000000000000e9b859004102000000000000c5e75900420200000000000002205a0043020000000000003f585a0044020000000000007c905a004502000000000000bcc85a004602000000000000f1005b004702000000000000111d5b00480200000000000030395b0049020000000000006f715b004a02000000000000aca95b004b02000000000000e9e15b004c02000000000000251a5c004d0200000000000060525c004e020000000000009f8a5c004f02000000000000dbc25c00500200000000000019fb5c00510200000000000058335d005202000000000000956b5d005302000000000000c7a35d005402000000000000f7db5d00550200000000000031145e0056020000000000006f4c5e005702000000000000a7845e005802000000000000e0bc5e0059020000000000003fc65e005a020000000000001cf55e005b02000000000000582d5f005c0200000000000093655f005d02000000000000cf9d5f005e0200000000000005d65f005f02000000000000440e600060020000000000008346600061020000000000006a7e6000620200000000000056b46000630200000000000000ec60006402000000000000a72361006502000000000000e25b61006602000000000000f293610067020000000000001bcc61006802000000000000dade61006902000000000000590462006a02000000000000963c62006b02000000000000cc7462006c020000000000008c8762006d02000000000000ffac62006e020000000000003ae562006f02000000000000731d63007002000000000000b05563007102000000000000e98d630072020000000000001dc6630073020000000000005dfe63007402000000000000993664007502000000000000d86e6400760200000000000017a76400770200000000000051df640078020000000000008a1765007902000000000000c34f65007a02000000000000018865007b020000000000003ec065007c020000000000007af865007d02000000000000b63066007e02000000000000f06866007f0200000000000004a16600800200000000000041d966008102000000000000711167008202000000000000ac4967008302000000000000de8167008402000000000000f8b967008502000000000000b8cc6700860200000000000035f2670087020000000000006e2a680088020000000000001c3d680089020000000000007f6268008a02000000000000ba9a68008b02000000000000f3d268008c02000000000000310b69008d02000000000000704369008e02000000000000ae7b69008f02000000000000eeb3690090020000000000002bec6900910200000000000065246a009202000000000000a45c6a009302000000000000e0946a0094020000000000001dcd6a009502000000000000dbdf6a00960200000000000059056b00970200000000000018186b009802000000000000923d6b009902000000000000b0756b009a02000000000000e6ad6b009b0200000000000021e66b009c020000000000005e1e6c009d0200000000000096566c009e02000000000000d28e6c009f020000000000000ac76c00a00200000000000047ff6c00a10200000000000077376d00a202000000000000876f6d00a3020000000000000fa76d00a40200000000000059dc6d00a50200000000000022146e00a602000000000000464c6e00a70200000000000071846e00a802000000000000eea96e00a902000000000000aabc6e00aa0200000000000085eb6e00ab02000000000000e4f46e00ac020000000000001c2d6f00ad02000000000000da3f6f00ae0200000000000053656f00af020000000000008c9d6f00b002000000000000c4d56f00b102000000000000d90d7000b202000000000000d7457000b302000000000000f67d7000b402000000000000deb57000b502000000000000b2ed7000b602000000000000a9257100b702000000000000975d7100b802000000000000338c7100b9020000000000007e957100ba0200000000000068b17100bb0200000000000050cd7100bc020000000000001c057200bd02000000000000610e7200be02000000000000c13c7200bf020000000000006b747200c0020000000000005aac7200c10200000000000032e47200c202000000000000dcf67200c302000000000000321c7300c4020000000000002b547300c5020000000000007d8b7300c60200000000000020c37300c702000000000000cefa7300c8020000000000003c327400c9020000000000009b697400ca02000000000000eda07400cb0200000000000056d87400cc0200000000000090107500cd02000000000000ad2c7500ce020000000000000b367500cf02000000000000c7487500d002000000000000fe807500d10200000000000039b97500d20200000000000073f17500d30200000000000030047600d4020000000000004b207600d502000000000000a9297600d60200000000000006337600d702000000000000d3617600d80200000000000090747600d902000000000000089a7600da020000000000002fd27600db020000000000001a0a7700dc0200000000000022427700dd02000000000000007a7700de02000000000000d2b17700df02000000000000f8e97700e0020000000000002b227800e102000000000000635a7800e202000000000000a0927800e302000000000000daca7800e40200000000000011037900e502000000000000483b7900e60200000000000085737900e702000000000000b1ab7900e802000000000000dae37900e902000000000000121c7a00ea0200000000000049547a00eb02000000000000878c7a00ec02000000000000bfc47a00ed02000000000000edfc7a00ee0200000000000026357b00ef02000000000000606d7b00f0020000000000009da57b00f102000000000000cddd7b00f20200000000000006167c00f3020000000000003f4e7c00f402000000000000fb607c00f50200000000000077867c00f602000000000000b4be7c00f70200000000000014c87c00f802000000000000e0f67c00f9020000000000001b2f7d00fa0200000000000058677d00fb02000000000000959f7d00fc02000000000000d2d77d00fd02000000000000ec0f7e00fe0200000000000025487e00ff020000000000005f807e0000030000000000009ab87e000103000000000000d3f07e000203000000000000ee0c7f0003030000000000000a297f000403000000000000c53b7f00050300000000000043617f0006030000000000007b997f000703000000000000b9d17f000803000000000000f20980000903000000000000284280000a030000000000005e7a80000b0300000000000099b280000c03000000000000d2ea80000d03000000000000082381000e030000000000003e5b81000f030000000000007b9381001003000000000000b8cb81001103000000000000f30382001203000000000000313c82001303000000000000697482001403000000000000a6ac82001503000000000000c4c882001603000000000000e0e482001703000000000000ff00830018030000000000001e1d83001903000000000000dd2f83001a030000000000005b5583001b03000000000000988d83001c03000000000000d5c583001d0300000000000010fe83001e030000000000004e3684001f03000000000000826e84002003000000000000bba684002103000000000000f5de840022030000000000006f0485002303000000000000cc0d850024030000000000002c1785002503000000000000ea2985002603000000000000634f850027030000000000007e6b850028030000000000009a878500290300000000000017ad85002a03000000000000d2bf85002b0300000000000031c985002c030000000000000ef885002d030000000000004a3086002e03000000000000866886002f03000000000000bea086003003000000000000f2d8860031030000000000002a1187003203000000000000871a870033030000000000006449870034030000000000001d5c87003503000000000000998187003603000000000000cfb987003703000000000000eed5870038030000000000000cf2870039030000000000004a2a88003a03000000000000a83388003b03000000000000826288003c03000000000000b69a88003d03000000000000efd288003e030000000000002d0b89003f030000000000004d27890040030000000000006c4389004103000000000000ab7b89004203000000000000eab38900430300000000000028ec8900440300000000000068248a004503000000000000a05c8a004603000000000000b4948a004703000000000000f4cc8a00480300000000000030058b0049030000000000006f3d8b004a030000000000008e598b004b03000000000000ae758b004c03000000000000ecad8b004d0300000000000028e68b004e03000000000000331e8c004f030000000000004f568c0050030000000000008e8e8c005103000000000000c7c68c00520300000000000005ff8c00530300000000000041378d005403000000000000746f8d005503000000000000a4a78d00560300000000000064ba8d005703000000000000e4df8d0058030000000000000a188e00590300000000000023508e005a0300000000000027888e005b03000000000000d89a8e005c0300000000000043c08e005d0300000000000082f88e005e03000000000000c0308f005f03000000000000ff688f0060030000000000001ba18f00610300000000000059d98f006203000000000000981190006303000000000000d64990006403000000000000f56590006503000000000000158290006603000000000000758b9000670300000000000053ba9000680300000000000092f290006903000000000000d22a91006a03000000000000106391006b03000000000000489b91006c03000000000000a2a491006d030000000000001bd391006e03000000000000530992006f03000000000000d32e9200700300000000000090419200710300000000000074799200720300000000000094b19200730300000000000072e092007403000000000000d2e992007503000000000000b21893007603000000000000122293007703000000000000445a93007803000000000000739293007903000000000000f3b793007a03000000000000abca93007b030000000000005ddd93007c03000000000000c40294007d03000000000000e13a94007e03000000000000217394007f0300000000000059ab9400800300000000000090e394008103000000000000c31b95008203000000000000ea53950083030000000000009866950084030000000000000b8c9500850300000000000046c49500860300000000000057fc950087030000000000008f3496008803000000000000cf6c960089030000000000000ba596008a0300000000000045dd96008b03000000000000a3e696008c03000000000000801597008d03000000000000bc4d97008e03000000000000f78597008f030000000000002ebe9700900300000000000030f6970091030000000000005a2e98009203000000000000956698009303000000000000d49e9800940300000000000014d7980095030000000000003b0f990096030000000000006c4799009703000000000000ac7f9900980300000000000078b79900990300000000000026ca99009a030000000000007cef99009b0300000000000085279a009c03000000000000be5f9a009d03000000000000fd979a009e03000000000000b9aa9a009f0300000000000022d09a00a0030000000000003dec9a00a10300000000000058089b00a20300000000000074249b00a3030000000000008b409b00a403000000000000e4499b00a50300000000000038789b00a60300000000000076819b00a703000000000000e4af9b00a803000000000000b7e79b00a903000000000000731f9c00aa03000000000000a6289c00ab030000000000002f3b9c00ac0300000000000012579c00ad030000000000005d609c00ae03000000000000cb8e9c00af0300000000000057a19c00b00300000000000086c69c00b1030000000000005afe9c00b20300000000000002369d00b303000000000000bc6d9d00b40300000000000099a59d00b5030000000000004edd9d00b603000000000000db149e00b703000000000000e0399e00b803000000000000724c9e00b9030000000000002a849e00ba03000000000000ee9f9e00bb03000000000000d1bb9e00bc030000000000007df39e00bd03000000000000f02a9f00be030000000000006a629f00bf03000000000000ff999f00c0030000000000002ed19f00c1030000000000004608a000c203000000000000893fa000c303000000000000a476a000c403000000000000dfada000c5030000000000001cb7a000c6030000000000003ce5a000c703000000000000921ca100c8030000000000008c53a100c903000000000000988aa100ca0300000000000010a6a100cb03000000000000a0c1a100cc03000000000000e5d3a100cd0300000000000072f8a100ce030000000000007c2fa200cf030000000000003766a200d003000000000000389da200d10300000000000056a6a200d203000000000000a9b8a200d303000000000000cac1a200d4030000000000001ad4a200d503000000000000200ba300d6030000000000002714a300d703000000000000bc41a300d8030000000000006778a300d9030000000000000aafa300da0300000000000046dca300db0300000000000065e5a300dc03000000000000a81ba400dd03000000000000d72da400de030000000000002352a400df030000000000006288a400e003000000000000c1bea400e103000000000000f8f4a400e203000000000000212ba500e3030000000000003f61a500e403000000000000656aa500e503000000000000e497a500e60300000000000040cea500e703000000000000b204a600e803000000000000fc3aa600e9030000000000009471a600ea0300000000000037a8a600eb030000000000001adfa600ec03000000000000ea0ca700ed030000000000000e16a700ee030000000000005228a700ef030000000000007d31a700f003000000000000034da700f1030000000000002084a700f2030000000000004a8da700f303000000000000a99fa700f403000000000000f6baa700f503000000000000c1f1a700f603000000000000be28a800f703000000000000a65fa800f8030000000000003e7ba800f903000000000000c296a800fa03000000000000c3cda800fb03000000000000d504a900fc03000000000000f83ba900fd030000000000005f73a900fe03000000000000ceaaa900ff030000000000000bb4a900000400000000000005e2a90001040000000000005e19aa000204000000000000c12baa0003040000000000008e50aa000404000000000000fd62aa0005040000000000008175aa000604000000000000fa87aa0007040000000000002f91aa0008040000000000005dbfaa000904000000000000a3c8aa000a04000000000000e5f6aa000b04000000000000e41bab000c040000000000005b2eab000d04000000000000e765ab000e040000000000004c9dab000f0400000000000085a6ab001004000000000000b8d4ab001104000000000000fdddab0012040000000000003b0cac001304000000000000d043ac001404000000000000827bac001504000000000000b8a0ac0016040000000000005bb3ac00170400000000000029ebac0018040000000000006af4ac0019040000000000000e07ad001a04000000000000f422ad001b04000000000000432cad001c040000000000009935ad001d04000000000000ee3ead001e04000000000000d55aad001f04000000000000bd76ad002004000000000000a592ad00210400000000000076caad002204000000000000f6dcad002304000000000000e001ae0024040000000000004f39ae0025040000000000001371ae0026040000000000005f7aae002704000000000000fc8cae002804000000000000cda8ae0029040000000000005ebbae002a0400000000000081e0ae002b040000000000004f18af002c040000000000001e50af002d04000000000000e687af002e04000000000000a0bfaf002f040000000000005ff7af003004000000000000042fb0003104000000000000da66b00032040000000000009a9eb000330400000000000063d6b0003404000000000000300eb1003504000000000000da45b10036040000000000009a7db100370400000000000050b5b100380400000000000029edb1003904000000000000971bb2003a04000000000000e024b2003b04000000000000995cb2003c040000000000006694b2003d0400000000000048b0b2003e040000000000002eccb2003f0400000000000075d5b200400400000000000008e8b2004104000000000000e703b3004204000000000000ce1fb3004304000000000000b63bb30044040000000000000d45b30045040000000000009f57b30046040000000000007573b3004704000000000000c67cb30048040000000000003aabb3004904000000000000e4e2b3004a04000000000000651ab4004b04000000000000f951b4004c040000000000009389b4004d0400000000000025c1b4004e04000000000000f6f8b4004f04000000000000241eb5005004000000000000b130b50051040000000000007068b500520400000000000040a0b5005304000000000000ecd7b50054040000000000000510b60055040000000000003e48b60056040000000000007a80b6005704000000000000b7b8b6005804000000000000f3f0b60059040000000000002f29b7005a04000000000000ae4eb7005b040000000000006861b7005c04000000000000a599b7005d04000000000000ded1b7005e040000000000005cf7b7005f04000000000000160ab80060040000000000005042b8006104000000000000964bb8006204000000000000687ab8006304000000000000a6b2b800640400000000000066c5b8006504000000000000e5eab80066040000000000000423b90067040000000000003f5bb90068040000000000005d77b90069040000000000007b93b9006a04000000000000b7cbb9006b04000000000000ef03ba006c04000000000000133cba006d040000000000003358ba006e040000000000005174ba006f0400000000000042acba0070040000000000006ce4ba007104000000000000a21cbb007204000000000000e054bb007304000000000000405ebb0074040000000000001b8dbb0075040000000000002ec5bb0076040000000000006dfdbb007704000000000000a435bc007804000000000000d06dbc0079040000000000000ca6bc007a040000000000004adebc007b040000000000008716bd007c04000000000000c34ebd007d04000000000000fc86bd007e040000000000003bbfbd007f040000000000007af7bd008004000000000000d500be008104000000000000b32fbe008204000000000000ea67be00830400000000000027a0be00840400000000000065d8be008504000000000000a410bf008604000000000000dd48bf0087040000000000003b52bf0088040000000000001881bf0089040000000000008fb8bf008a04000000000000cbc1bf008b04000000000000f8efbf008c040000000000007602c0008d040000000000008327c0008e04000000000000075fc0008f040000000000005d96c000900400000000000009cec00091040000000000003b06c10092040000000000002d3ec10093040000000000006476c10094040000000000007aaec1009504000000000000b9e6c1009604000000000000ef1ec20097040000000000002c57c2009804000000000000698fc20099040000000000008cc7c2009a040000000000009effc2009b04000000000000da37c3009c04000000000000ee6fc3009d0400000000000029a8c3009e0400000000000067e0c3009f04000000000000240fc400a0040000000000008218c400a104000000000000b150c400a204000000000000c088c400a304000000000000d2c0c400a404000000000000f6f8c400a5040000000000001231c500a604000000000000d143c500a7040000000000004d69c500a80400000000000089a1c500a904000000000000c4d9c500aa040000000000000112c600ab040000000000005c1bc600ac040000000000003a4ac600ad040000000000007482c600ae04000000000000abbac600af04000000000000e4f2c600b0040000000000001d2bc700b1040000000000002e47c700b2040000000000004863c700b304000000000000687fc700b404000000000000829bc700b5040000000000009bd3c700b604000000000000d80bc800b7040000000000001144c800b804000000000000704dc800b904000000000000d056c800ba040000000000004e7cc800bb0400000000000080b4c800bc04000000000000b1ecc800bd040000000000009808c900be040000000000008d24c900bf04000000000000c75cc900c004000000000000df94c900c104000000000000feb0c900c2040000000000001dcdc900c3040000000000004605ca00c4040000000000006e3dca00c5040000000000009e75ca00c604000000000000029bca00c704000000000000aeadca00c8040000000000008adcca00c904000000000000eae5ca00ca04000000000000251ecb00cb04000000000000fa55cb00cc04000000000000778ccb00cd04000000000000eec3cb00ce0400000000000005fccb00cf040000000000004134cc00d004000000000000716ccc00d10400000000000096a4cc00d204000000000000d3dccc00d30400000000000086efcc00d4040000000000000215cd00d504000000000000ac27cd00d604000000000000264dcd00d7040000000000008656cd00d8040000000000006385cd00d9040000000000003bb4cd00da0400000000000099bdcd00db04000000000000d8f5cd00dc04000000000000172ece00dd040000000000005366ce00de04000000000000909ece00df04000000000000b7d6ce00e00400000000000068e9ce00e104000000000000cc0ecf00e2040000000000000547cf00e304000000000000427fcf00e40400000000000079b7cf00e504000000000000b8efcf00e604000000000000f427d000e7040000000000000b60d000e8040000000000004698d000e90400000000000083d0d000ea04000000000000c008d100eb04000000000000fa40d100ec040000000000003679d100ed0400000000000073b1d100ee0400000000000087cdd100ef04000000000000a6e9d100f004000000000000e521d200f1040000000000001e5ad200f2040000000000005692d200f30400000000000092cad200f40400000000000052ddd200f504000000000000ce02d300f604000000000000e13ad300f7040000000000003444d300f804000000000000dc56d300f904000000000000ef72d300fa040000000000004d7cd300fb0400000000000024abd300fc04000000000000a1d0d300fd040000000000005be3d300fe04000000000000901bd400ff04000000000000ce53d40000050000000000000a8cd40001050000000000003ac4d40002050000000000004ae0d400030500000000000069fcd4000405000000000000a134d50005050000000000006047d5000605000000000000de6cd50007050000000000001ba5d500080500000000000058ddd50009050000000000009415d6000a05000000000000d24dd6000b05000000000000f085d6000c050000000000001ebed6000d05000000000000fbecd6000e050000000000005bf6d6000f050000000000008b2ed7001005000000000000c566d7001105000000000000029fd700120500000000000036d7d70013050000000000006f0fd80014050000000000009f47d8001505000000000000c97fd8001605000000000000e4b7d80017050000000000001ff0d80018050000000000005928d90019050000000000009560d9001a050000000000005473d9001b05000000000000718fd9001c05000000000000d198d9001d0500000000000031a2d9001e050000000000000fd1d9001f05000000000000cfe3d90020050000000000004f09da0021050000000000008941da002205000000000000b979da002305000000000000edb1da00240500000000000047bbda00250500000000000054d7da00260500000000000007eada00270500000000000067f3da0028050000000000003a22db0029050000000000005e5adb002a050000000000007892db002b05000000000000b0cadb002c05000000000000e702dc002d05000000000000183bdc002e050000000000007644dc002f050000000000002773dc003005000000000000dd85dc0031050000000000004dabdc00320500000000000086e3dc003305000000000000bb1bdd003405000000000000944add003505000000000000f453dd003605000000000000ad66dd003705000000000000298cdd00380500000000000060c4dd0039050000000000009cfcdd003a05000000000000fa05de003b05000000000000d734de003c05000000000000b56cde003d0500000000000045a4de003e05000000000000a1d2de003f05000000000000e4dbde0040050000000000002fe5de0041050000000000003c05df004205000000000000d81adf004305000000000000d636df0044050000000000002840df004505000000000000d252df004605000000000000cf6edf004705000000000000a9a6df004805000000000000eeafdf00490500000000000047b9df004a05000000000000b1dedf004b050000000000000de8df004c050000000000006e0de0004d05000000000000cb16e0004e05000000000000d84ee0004f050000000000007886e0005005000000000000b3bee0005105000000000000c3f6e0005205000000000000fe2ee10053050000000000002c67e1005405000000000000e679e1005505000000000000a68ce1005605000000000000629fe10057050000000000009bd7e10058050000000000005806e2005905000000000000b10fe2005a05000000000000e647e2005b050000000000001880e2005c050000000000007689e2005d050000000000004cb8e2005e050000000000007ef0e2005f05000000000000b228e3006005000000000000e760e30061050000000000002499e300620500000000000060d1e30063050000000000009c09e4006405000000000000d441e4006505000000000000334be40066050000000000000a7ae4006705000000000000e0a8e400680500000000000040b2e40069050000000000006feae4006a05000000000000a022e5006b05000000000000de5ae5006c050000000000001a93e5006d0500000000000055cbe5006e050000000000000bdee5006f050000000000008203e6007005000000000000db0ce6007105000000000000b53be6007205000000000000f073e60073050000000000004e7de60074050000000000002cace60075050000000000008cb5e60076050000000000006be4e6007705000000000000a51ce7007805000000000000dc54e7007905000000000000168de7007a050000000000004ac5e7007b0500000000000057fde7007c050000000000009335e8007d05000000000000d06de8007e050000000000002e77e8007f0500000000000004a6e80080050000000000003fdee80081050000000000007b16e9008205000000000000b74ee9008305000000000000e886e900840500000000000015bfe900850500000000000046f7e9008605000000000000602fea0087050000000000000442ea0088050000000000005a4bea0089050000000000006a67ea008a05000000000000889fea008b05000000000000daa8ea008c0500000000000079d7ea008d050000000000009f0feb008e050000000000005c22eb008f050000000000001c35eb009005000000000000d847eb0091050000000000000e80eb0092050000000000003eb8eb00930500000000000076f0eb009405000000000000ad28ec009505000000000000e660ec0096050000000000002399ec00970500000000000060d1ec0098050000000000009e09ed0099050000000000005e1ced009a05000000000000da41ed009b050000000000009654ed009c050000000000005567ed009d05000000000000127aed009e050000000000004ab2ed009f0500000000000082eaed00a005000000000000e1f3ed00a105000000000000bd22ee00a205000000000000fa5aee00a3050000000000003493ee00a405000000000000929cee00a50500000000000070cbee00a605000000000000ac03ef00a705000000000000eb3bef00a805000000000000fb73ef00a905000000000000feabef00aa05000000000000bebeef00ab0500000000000038e4ef00ac050000000000004e1cf000ad050000000000008854f000ae05000000000000958cf000af05000000000000c5c4f000b005000000000000fffcf000b1050000000000002e35f100b205000000000000de47f100b305000000000000466df100b4050000000000005da5f100b50500000000000094ddf100b605000000000000c115f200b705000000000000fa4df200b8050000000000002d86f200b90500000000000067bef200ba05000000000000a0f6f200bb05000000000000b52ef300bc050000000000003254f300bd05000000000000ef66f300be05000000000000239ff300bf0500000000000032d7f300c005000000000000dde9f300c1050000000000001e0ff400c2050000000000004f47f400c3050000000000008d7ff400c4050000000000006bb7f400c5050000000000009beff400c605000000000000c927f500c705000000000000ff5ff500c8050000000000003198f500c90500000000000063d0f500ca050000000000008908f600cb05000000000000c240f600cc050000000000001d66f600cd05000000000000ca78f600ce05000000000000fbb0f600cf0500000000000031e9f600d0050000000000006021f700d1050000000000009e59f700d205000000000000d891f700d3050000000000000acaf700d4050000000000004402f800d5050000000000007b3af800d605000000000000fa5ff800d705000000000000b672f800d805000000000000ebaaf800d90500000000000048b4f800da0500000000000024e3f800db05000000000000601bf900dc050000000000009753f900dd05000000000000ac8bf900de05000000000000e3c3f900df050000000000001cfcf900e0050000000000005934fa00e105000000000000936cfa00e205000000000000a7a4fa00e305000000000000dfdcfa00e4050000000000001a15fb00e5050000000000004d4dfb00e605000000000000a656fb00e7050000000000007b85fb00e805000000000000a2bdfb00e905000000000000dff5fb00ea050000000000005f1bfc00eb050000000000001e2efc00ec050000000000005266fc00ed050000000000000c79fc00ee05000000000000cc8bfc00ef050000000000002995fc00f005000000000000899efc00f105000000000000c1d6fc00f2050000000000007ee9fc00f3050000000000003dfcfc00f405000000000000f00efd00f5050000000000004c18fd00f6050000000000001a47fd00f7050000000000004a7ffd00f80500000000000086b7fd00f905000000000000beeffd00fa050000000000001ef9fd00fb05000000000000ee27fe00fc050000000000000944fe00fd050000000000002560fe00fe05000000000000307cfe00ff050000000000002798fe000006000000000000e2aafe00010600000000000042b4fe0002060000000000005dd0fe0003060000000000009a08ff000406000000000000ca40ff000506000000000000244aff000606000000000000f278ff0007060000000000002db1ff00080600000000000063e9ff000906000000000000712100010a06000000000000313400010b060000000000004c5000010c06000000000000ac5900010d06000000000000b49100010e06000000000000e3c900010f06000000000000f60101011006000000000000103a010111060000000000003056010112060000000000004c720101130600000000000084aa01011406000000000000c2e201011506000000000000fe1a02011606000000000000235302011706000000000000618b020118060000000000009dc3020119060000000000005ad602011a06000000000000badf02011b06000000000000d7fb02011c06000000000000370503011d06000000000000f71703011e06000000000000133403011f06000000000000516c03012006000000000000107f030121060000000000008da403012206000000000000cadc03012306000000000000f81404012406000000000000324d0401250600000000000070850401260600000000000080bd040127060000000000008bf504012806000000000000842d05012906000000000000d73605012a060000000000008b6505012b06000000000000c19d05012c06000000000000f9d505012d060000000000002e0e06012e06000000000000664606012f060000000000009d7e06013006000000000000d7b60601310600000000000011ef06013206000000000000442707013306000000000000725f07013406000000000000af9707013506000000000000e7cf070136060000000000001f0808013706000000000000372408013806000000000000544008013906000000000000917808013a06000000000000c8b008013b0600000000000001e908013c060000000000000f2109013d06000000000000085909013e06000000000000a99009013f06000000000000b5c809014006000000000000c5000a014106000000000000d2380a01420600000000000006710a014306000000000000f5a80a0144060000000000002be10a01450600000000000012190b01460600000000000048510b01470600000000000086890b014806000000000000e5920b014906000000000000c4c10b014a0600000000000000fa0b014b060000000000001d320c014c060000000000000b6a0c014d06000000000000c5980c014e060000000000001aa20c014f06000000000000d7d00c0150060000000000002dda0c01510600000000000069120d015206000000000000a44a0d015306000000000000df820d0154060000000000001dbb0d01550600000000000055f30d015606000000000000852b0e01570600000000000083630e015806000000000000c39b0e0159060000000000001ba50e015a060000000000007bae0e015b06000000000000f7d30e015c06000000000000afe60e015d06000000000000290c0f015e0600000000000065440f015f06000000000000db690f016006000000000000977c0f016106000000000000d2b40f016206000000000000ecec0f016306000000000000062510016406000000000000ea5c10016506000000000000f49410016606000000000000ffcc100167060000000000005ed610016806000000000000d6fb10016906000000000000340511016a06000000000000613d11016b060000000000008b7511016c06000000000000919111016d06000000000000abad11016e06000000000000e0e511016f060000000000001d1e120170060000000000005556120171060000000000006c8e120172060000000000008aaa12017306000000000000a3c612017406000000000000bdfe12017506000000000000f83613017606000000000000126f130177060000000000006c9413017806000000000000c99d1301790600000000000029a713017a060000000000005bdf13017b06000000000000b8e813017c0600000000000016f213017d060000000000008d1714017e06000000000000ec2014017f06000000000000a43314018006000000000000bc4f14018106000000000000d58714018206000000000000919a1401830600000000000005c0140184060000000000005fc914018506000000000000f8f714018606000000000000a10a15018706000000000000fa1315018806000000000000561d15018906000000000000fa2f15018a06000000000000513915018b06000000000000aa4215018c06000000000000106815018d060000000000002f8415018e060000000000004ba015018f060000000000002cbc15019006000000000000ccce1501910600000000000019d81501920600000000000076e115019306000000000000331016019406000000000000664816019506000000000000998016019606000000000000d5b81601970600000000000093cb16019806000000000000f3d4160199060000000000000ff116019a06000000000000cd0317019b06000000000000492917019c06000000000000a33217019d06000000000000444517019e060000000000003a6117019f06000000000000117d1701a0060000000000001c991701a10600000000000059d11701a2060000000000008c091801a306000000000000c2411801a4060000000000001e4b1801a50600000000000037671801a606000000000000f2791801a7060000000000001fb21801a806000000000000dec41801a90600000000000056ea1801aa0600000000000005fd1801ab0600000000000079221901ac06000000000000b25a1901ad06000000000000e5921901ae06000000000000f9ca1901af060000000000005df01901b00600000000000017031a01b1060000000000003a3b1a01b206000000000000e64d1a01b30600000000000044731a01b406000000000000a37c1a01b50600000000000078ab1a01b6060000000000006ee31a01b706000000000000921b1b01b806000000000000be531b01b9060000000000001d5d1b01ba06000000000000ec8b1b01bb0600000000000009c41b01bc06000000000000e5fb1b01bd06000000000000f1331c01be06000000000000ef6b1c01bf06000000000000a39a1c01c006000000000000fba31c01c106000000000000f2db1c01c206000000000000f8131d01c306000000000000df4b1d01c40600000000000075831d01c506000000000000aaa81d01c6060000000000003bbb1d01c7060000000000002fd71d01c80600000000000017f31d01c90600000000000067fc1d01ca06000000000000ad211e01cb06000000000000fb2a1e01cc0600000000000052341e01cd06000000000000da621e01ce06000000000000c87e1e01cf06000000000000b09a1e01d00600000000000089d21e01d1060000000000000fe51e01d2060000000000005fee1e01d3060000000000003b0a1f01d406000000000000f8411f01d50600000000000098541f01d606000000000000ac5d1f01d70600000000000094791f01d8060000000000006eb11f01d90600000000000038e91f01da060000000000000b212001db06000000000000e6582001dc06000000000000c8902001dd0600000000000062a32001de060000000000007ac82001df060000000000001cdb2001e0060000000000005d002101e10600000000000021382101e206000000000000f76f2101e3060000000000003d792101e406000000000000cea72101e50600000000000095df2101e6060000000000006e172201e706000000000000334f2201e80600000000000085582201e90600000000000010872201ea06000000000000eea22201eb06000000000000cbbe2201ec06000000000000a9da2201ed060000000000009ef62201ee060000000000003d092301ef06000000000000782e2301f0060000000000000c412301f1060000000000005e4a2301f20600000000000045662301f3060000000000003b822301f406000000000000299e2301f506000000000000fed52301f606000000000000990d2401f7060000000000002c202401f806000000000000173c2401f90600000000000063452401fa06000000000000fd572401fb060000000000002a7d2401fc0600000000000000b52401fd06000000000000b8ec2401fe0600000000000037242501ff06000000000000155c25010007000000000000e69325010107000000000000a6cb25010207000000000000630326010307000000000000b30c260104070000000000000916260105070000000000005b1f26010607000000000000523b260107070000000000004857260108070000000000002d732601090700000000000018ab26010a07000000000000fdc626010b07000000000000ede226010c070000000000008d1127010d07000000000000e31a27010e07000000000000cc5227010f07000000000000ac8a270110070000000000004b9d2701110700000000000090c22701120700000000000087fa27011307000000000000583228011407000000000000fe6928011507000000000000557328011607000000000000f4a128011707000000000000ced9280118070000000000007d1129011907000000000000414929011a070000000000001a8129011b07000000000000deb829011c07000000000000bff029011d07000000000000a8282a011e070000000000008b602a011f07000000000000dc692a0120070000000000002d732a0121070000000000007a7c2a012207000000000000198f2a01230700000000000069982a01240700000000000003ab2a0125070000000000004ab42a0126070000000000009ebd2a01270700000000000041d02a012807000000000000e7e22a01290700000000000089f52a012a0700000000000023082b012b07000000000000cb1a2b012c0700000000000018242b012d070000000000006b2d2b012e07000000000000ba362b012f070000000000000e402b013007000000000000af522b013107000000000000035c2b0132070000000000004c652b0133070000000000009b6e2b013407000000000000e4772b013507000000000000abaf2b013607000000000000f8b82b01370700000000000052c22b01" + "babeEpochChanges": "0x04ad4c5d4ce4e7689598cb1a034e310d4b49a8d747570ffccc36ddfebcab9f2dac8f362d01013378fb10000000009381fb1000000000046a690e9e3ef109b31594ab8512ee6ab87516c7474c7561a6b8565d0e4e3a268ed23f2d01019381fb1000000000f38afb100000000008a39ffd114678a743574a02f96c4347c1ef02d4f3069aee13c08510c866cf98ae25492d0101f38afb10000000005394fb100000000000d11bad54f29791d523495959e233d6ed1ebc69a2547c7af45d98fe38b5c4c14c25492d0101f38afb10000000005394fb10000000000000106a690e9e3ef109b31594ab8512ee6ab87516c7474c7561a6b8565d0e4e3a268ed23f2d010148200000000000009381fb10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a54010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec2145417501000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b92001000000000000004ceef9b2b8e3b5cd971f7557c3a3ad02c9c7a7bbc7365c2db5622fa74853790d010000000000000034b9bf86acb3f518dd359690e3c47c50c7418fd2cb0ebd8c7cab6dfe2dea095b0100000000000000503cafb91c14eaa2931c4507090b27170b90a2a76d3cd4669f922202c781fc350100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b0100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a935010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e4775887897201000000000000008a2ad071bfcfa2e03d48baa21d9e6118e8ac1192495edb1d84872041bee490040100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000e4ba5ffce05c90e6a5eea52b15922b6b3a78d13ca98f53fdbe08e5c24ce3c84101000000000000003057a5ccdbce651c71b1ce9d48e9fa23e6720e8e2bbf52f65a0ed14e4a6f3f700100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f01000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b740100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc190100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a010000000000000080c4603361b35d83eb9195126bfd81d8f1c49182c48e8f18e7ea772ff2bfd9400100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f067877170100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf71010000000000000058ca41f3fb960be9f54fcbfba3961d37709552b4b248bcd1f7f820ae3aaabc07010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e70210100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf080100000000000000be03fe6bc03a7884524047567a8ccf43b3c988bf3b447ca9e1520d1c1f83c53901000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b01000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb5501000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000003635c55546f19bfe62d84a220c4396b1c9d71a1acdb2da917a82f0c1415a2b020100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b0100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d87081320100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a796260100000000000000344589372873125fd660e2ff3ad9bf67230f9306acccaea070aed322a8ede264010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d0301000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000e850ee212192b3a62e0fb81140333b45c16d4f18479388d4dee1ec38f9ee5234010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a0100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b35150100000000000000800dd25a7aea3fd7359065185cb35b4a2fad0b81b3d58de638e6764dc8a8211d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e638010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb1901000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f610010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000024190e384934261c444897054262813c65a73aaf371806db97762e995e5b350e010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f845010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c81360100000000000000e63a8ae6fad7457095d994ce2da05fc637122d2ca0c4cf7aa76a0f07192a3d6901000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f4953330100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea8400100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d7101000000000000004678cfe8b5ab7811861b19336b572f9c7175ad92efbd8a031e5fcdda58173f510100000000000000d878a4f7ee2b2bcd16621a1a7e7f05f85c769a45d2a84304d4a8c0237287c501010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d0100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000b2967e3480b89af39e38367f948fb287568f27bfdac4b65fbc9d97536c79c7000100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d4101000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e0100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d80666401000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e01000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c230100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e2529010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da7201000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c49142010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f0100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e82301000000000000006eebb90d453e3e26540730fe99339d907a0e46365f6f2c8e2bd1a2dc83c2897e010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac56101000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000003213885ba6fd707b0716aeaad959cd824ab2f854e55963d9e69af006d194d51f01000000000000009a5099f6a61d1742af35c996ea7dc209517bda54bb8bd73a1a3618e39959902b0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de320100000000000000b64ba96a10f5387463bc1d09b8fc05a810215959727960267a6ba046ecb32942010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a463010000000000000000ac029d5e4ce570bafb50b677fed13d43eefcf0075b3ae2520be959c9782f1201000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d0100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d6901000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f0100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a010000000000000078f6eabfa5ce5c858c1d0d378fea88e98bbad82c6c2acb6c587bde67066f695501000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad2102010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e01000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000007836f32cd0a6a6ba2448cc32c48b0434efa8c92073a139f305aae8e73d2c844901000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f076852010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc240100000000000000ca526faf8ee5263d4006452735885dce304cf724040fce84399254d9160d6f350100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c280100000000000000e05c7c7d82498be85294ee984e1f0caf23c53fa9a64cc7e6c5053304c4bb785101000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d61010000000000000048970bde717a65371534a2b878995c8bc6c230d556035fa003da1c523092332a01000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b30401000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000002e1c4e3a1474325086c1ebf51c0cb6d335242921c645b7d0e070d9aa092afa680100000000000000683ce8ca29f09be942c929571aaa188b89625f28569721b41eb48329dc1b4b0a01000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000a2259245fb5a7251b99ee8f307b97ec6e7f20081c1f75284aa9b433153d888160100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf0043010000000000000036cc7d2df6c7b0ff8b0ec254297b35a8d235f7086fb54a3f9013a3a38809ef770100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a18432201000000000000009d178b3894ab647ea01b24f37b7e08786bfc0fe3e2d6473ca018bb3f915989bf0100000000000000040000000000000002a39ffd114678a743574a02f96c4347c1ef02d4f3069aee13c08510c866cf98ae25492d01014920000000000000f38afb10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a54010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec2145417501000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b92001000000000000004ceef9b2b8e3b5cd971f7557c3a3ad02c9c7a7bbc7365c2db5622fa74853790d010000000000000034b9bf86acb3f518dd359690e3c47c50c7418fd2cb0ebd8c7cab6dfe2dea095b0100000000000000503cafb91c14eaa2931c4507090b27170b90a2a76d3cd4669f922202c781fc350100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b0100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a935010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e4775887897201000000000000008a2ad071bfcfa2e03d48baa21d9e6118e8ac1192495edb1d84872041bee490040100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000e4ba5ffce05c90e6a5eea52b15922b6b3a78d13ca98f53fdbe08e5c24ce3c84101000000000000003057a5ccdbce651c71b1ce9d48e9fa23e6720e8e2bbf52f65a0ed14e4a6f3f700100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f01000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b740100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc190100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a010000000000000080c4603361b35d83eb9195126bfd81d8f1c49182c48e8f18e7ea772ff2bfd9400100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f067877170100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf71010000000000000058ca41f3fb960be9f54fcbfba3961d37709552b4b248bcd1f7f820ae3aaabc07010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e70210100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf080100000000000000be03fe6bc03a7884524047567a8ccf43b3c988bf3b447ca9e1520d1c1f83c53901000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b01000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb5501000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000003635c55546f19bfe62d84a220c4396b1c9d71a1acdb2da917a82f0c1415a2b020100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b0100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d87081320100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a796260100000000000000344589372873125fd660e2ff3ad9bf67230f9306acccaea070aed322a8ede264010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d0301000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000e850ee212192b3a62e0fb81140333b45c16d4f18479388d4dee1ec38f9ee5234010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a0100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b35150100000000000000800dd25a7aea3fd7359065185cb35b4a2fad0b81b3d58de638e6764dc8a8211d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e638010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb1901000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f610010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000024190e384934261c444897054262813c65a73aaf371806db97762e995e5b350e010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f845010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c81360100000000000000e63a8ae6fad7457095d994ce2da05fc637122d2ca0c4cf7aa76a0f07192a3d6901000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f4953330100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea8400100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d7101000000000000004678cfe8b5ab7811861b19336b572f9c7175ad92efbd8a031e5fcdda58173f510100000000000000d878a4f7ee2b2bcd16621a1a7e7f05f85c769a45d2a84304d4a8c0237287c501010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d0100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000b2967e3480b89af39e38367f948fb287568f27bfdac4b65fbc9d97536c79c7000100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d4101000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e0100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d80666401000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e01000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c230100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e2529010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da7201000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c49142010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f0100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e82301000000000000006eebb90d453e3e26540730fe99339d907a0e46365f6f2c8e2bd1a2dc83c2897e010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac56101000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000003213885ba6fd707b0716aeaad959cd824ab2f854e55963d9e69af006d194d51f01000000000000009a5099f6a61d1742af35c996ea7dc209517bda54bb8bd73a1a3618e39959902b0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de320100000000000000b64ba96a10f5387463bc1d09b8fc05a810215959727960267a6ba046ecb32942010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a463010000000000000000ac029d5e4ce570bafb50b677fed13d43eefcf0075b3ae2520be959c9782f1201000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d0100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d6901000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f0100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a010000000000000078f6eabfa5ce5c858c1d0d378fea88e98bbad82c6c2acb6c587bde67066f695501000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad2102010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e01000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000007836f32cd0a6a6ba2448cc32c48b0434efa8c92073a139f305aae8e73d2c844901000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f076852010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc240100000000000000ca526faf8ee5263d4006452735885dce304cf724040fce84399254d9160d6f350100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c280100000000000000e05c7c7d82498be85294ee984e1f0caf23c53fa9a64cc7e6c5053304c4bb785101000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d61010000000000000048970bde717a65371534a2b878995c8bc6c230d556035fa003da1c523092332a01000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b30401000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000002e1c4e3a1474325086c1ebf51c0cb6d335242921c645b7d0e070d9aa092afa680100000000000000683ce8ca29f09be942c929571aaa188b89625f28569721b41eb48329dc1b4b0a01000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000a2259245fb5a7251b99ee8f307b97ec6e7f20081c1f75284aa9b433153d888160100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf0043010000000000000036cc7d2df6c7b0ff8b0ec254297b35a8d235f7086fb54a3f9013a3a38809ef770100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a18432201000000000000005e5bb43d13a2a07aeba5e7bb79c0d0e5c434cc1afb5c528be0c094b0b26762820100000000000000040000000000000002ad4c5d4ce4e7689598cb1a034e310d4b49a8d747570ffccc36ddfebcab9f2dac8f362d010147200000000000003378fb10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a54010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec2145417501000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b92001000000000000004ceef9b2b8e3b5cd971f7557c3a3ad02c9c7a7bbc7365c2db5622fa74853790d010000000000000034b9bf86acb3f518dd359690e3c47c50c7418fd2cb0ebd8c7cab6dfe2dea095b0100000000000000503cafb91c14eaa2931c4507090b27170b90a2a76d3cd4669f922202c781fc350100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b0100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a935010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e4775887897201000000000000008a2ad071bfcfa2e03d48baa21d9e6118e8ac1192495edb1d84872041bee490040100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000e4ba5ffce05c90e6a5eea52b15922b6b3a78d13ca98f53fdbe08e5c24ce3c84101000000000000003057a5ccdbce651c71b1ce9d48e9fa23e6720e8e2bbf52f65a0ed14e4a6f3f700100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f01000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b740100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc190100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a010000000000000080c4603361b35d83eb9195126bfd81d8f1c49182c48e8f18e7ea772ff2bfd9400100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f067877170100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf71010000000000000058ca41f3fb960be9f54fcbfba3961d37709552b4b248bcd1f7f820ae3aaabc07010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e70210100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf080100000000000000be03fe6bc03a7884524047567a8ccf43b3c988bf3b447ca9e1520d1c1f83c53901000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b01000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb5501000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000003635c55546f19bfe62d84a220c4396b1c9d71a1acdb2da917a82f0c1415a2b020100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b0100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d87081320100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a796260100000000000000344589372873125fd660e2ff3ad9bf67230f9306acccaea070aed322a8ede264010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d0301000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000e850ee212192b3a62e0fb81140333b45c16d4f18479388d4dee1ec38f9ee5234010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a0100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b35150100000000000000800dd25a7aea3fd7359065185cb35b4a2fad0b81b3d58de638e6764dc8a8211d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e638010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb1901000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f610010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000024190e384934261c444897054262813c65a73aaf371806db97762e995e5b350e010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f845010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c81360100000000000000e63a8ae6fad7457095d994ce2da05fc637122d2ca0c4cf7aa76a0f07192a3d6901000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f4953330100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea8400100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d7101000000000000004678cfe8b5ab7811861b19336b572f9c7175ad92efbd8a031e5fcdda58173f510100000000000000d878a4f7ee2b2bcd16621a1a7e7f05f85c769a45d2a84304d4a8c0237287c501010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d0100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000b2967e3480b89af39e38367f948fb287568f27bfdac4b65fbc9d97536c79c7000100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d4101000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e0100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d80666401000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e01000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c230100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e2529010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da7201000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c49142010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f0100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e82301000000000000006eebb90d453e3e26540730fe99339d907a0e46365f6f2c8e2bd1a2dc83c2897e010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac56101000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000003213885ba6fd707b0716aeaad959cd824ab2f854e55963d9e69af006d194d51f01000000000000009a5099f6a61d1742af35c996ea7dc209517bda54bb8bd73a1a3618e39959902b0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de320100000000000000b64ba96a10f5387463bc1d09b8fc05a810215959727960267a6ba046ecb32942010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a463010000000000000000ac029d5e4ce570bafb50b677fed13d43eefcf0075b3ae2520be959c9782f1201000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d0100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d6901000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f0100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a010000000000000078f6eabfa5ce5c858c1d0d378fea88e98bbad82c6c2acb6c587bde67066f695501000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad2102010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e01000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000007836f32cd0a6a6ba2448cc32c48b0434efa8c92073a139f305aae8e73d2c844901000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f076852010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc240100000000000000ca526faf8ee5263d4006452735885dce304cf724040fce84399254d9160d6f350100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c280100000000000000e05c7c7d82498be85294ee984e1f0caf23c53fa9a64cc7e6c5053304c4bb785101000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d61010000000000000048970bde717a65371534a2b878995c8bc6c230d556035fa003da1c523092332a01000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b30401000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000002e1c4e3a1474325086c1ebf51c0cb6d335242921c645b7d0e070d9aa092afa680100000000000000683ce8ca29f09be942c929571aaa188b89625f28569721b41eb48329dc1b4b0a01000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000a2259245fb5a7251b99ee8f307b97ec6e7f20081c1f75284aa9b433153d888160100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf0043010000000000000036cc7d2df6c7b0ff8b0ec254297b35a8d235f7086fb54a3f9013a3a38809ef770100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a1843220100000000000000977ec9303e296a197ae58c8ffc6e55679a99adf1b894d009dfd66d2b3f59a3d20100000000000000040000000000000002d11bad54f29791d523495959e233d6ed1ebc69a2547c7af45d98fe38b5c4c14c25492d01014920000000000000f38afb10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a54010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec2145417501000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b92001000000000000004ceef9b2b8e3b5cd971f7557c3a3ad02c9c7a7bbc7365c2db5622fa74853790d010000000000000034b9bf86acb3f518dd359690e3c47c50c7418fd2cb0ebd8c7cab6dfe2dea095b0100000000000000503cafb91c14eaa2931c4507090b27170b90a2a76d3cd4669f922202c781fc350100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b0100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a935010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e4775887897201000000000000008a2ad071bfcfa2e03d48baa21d9e6118e8ac1192495edb1d84872041bee490040100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000e4ba5ffce05c90e6a5eea52b15922b6b3a78d13ca98f53fdbe08e5c24ce3c84101000000000000003057a5ccdbce651c71b1ce9d48e9fa23e6720e8e2bbf52f65a0ed14e4a6f3f700100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f01000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b740100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc190100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a010000000000000080c4603361b35d83eb9195126bfd81d8f1c49182c48e8f18e7ea772ff2bfd9400100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f067877170100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf71010000000000000058ca41f3fb960be9f54fcbfba3961d37709552b4b248bcd1f7f820ae3aaabc07010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e70210100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf080100000000000000be03fe6bc03a7884524047567a8ccf43b3c988bf3b447ca9e1520d1c1f83c53901000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b01000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb5501000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000003635c55546f19bfe62d84a220c4396b1c9d71a1acdb2da917a82f0c1415a2b020100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b0100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d87081320100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a796260100000000000000344589372873125fd660e2ff3ad9bf67230f9306acccaea070aed322a8ede264010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d0301000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000e850ee212192b3a62e0fb81140333b45c16d4f18479388d4dee1ec38f9ee5234010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a0100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b35150100000000000000800dd25a7aea3fd7359065185cb35b4a2fad0b81b3d58de638e6764dc8a8211d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e638010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb1901000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f610010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000024190e384934261c444897054262813c65a73aaf371806db97762e995e5b350e010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f845010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c81360100000000000000e63a8ae6fad7457095d994ce2da05fc637122d2ca0c4cf7aa76a0f07192a3d6901000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f4953330100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea8400100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d7101000000000000004678cfe8b5ab7811861b19336b572f9c7175ad92efbd8a031e5fcdda58173f510100000000000000d878a4f7ee2b2bcd16621a1a7e7f05f85c769a45d2a84304d4a8c0237287c501010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d0100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000b2967e3480b89af39e38367f948fb287568f27bfdac4b65fbc9d97536c79c7000100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d4101000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e0100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d80666401000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e01000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c230100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e2529010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da7201000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c49142010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f0100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e82301000000000000006eebb90d453e3e26540730fe99339d907a0e46365f6f2c8e2bd1a2dc83c2897e010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac56101000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000003213885ba6fd707b0716aeaad959cd824ab2f854e55963d9e69af006d194d51f01000000000000009a5099f6a61d1742af35c996ea7dc209517bda54bb8bd73a1a3618e39959902b0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de320100000000000000b64ba96a10f5387463bc1d09b8fc05a810215959727960267a6ba046ecb32942010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a463010000000000000000ac029d5e4ce570bafb50b677fed13d43eefcf0075b3ae2520be959c9782f1201000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d0100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d6901000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f0100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a010000000000000078f6eabfa5ce5c858c1d0d378fea88e98bbad82c6c2acb6c587bde67066f695501000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad2102010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e01000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000007836f32cd0a6a6ba2448cc32c48b0434efa8c92073a139f305aae8e73d2c844901000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f076852010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc240100000000000000ca526faf8ee5263d4006452735885dce304cf724040fce84399254d9160d6f350100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c280100000000000000e05c7c7d82498be85294ee984e1f0caf23c53fa9a64cc7e6c5053304c4bb785101000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d61010000000000000048970bde717a65371534a2b878995c8bc6c230d556035fa003da1c523092332a01000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b30401000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000002e1c4e3a1474325086c1ebf51c0cb6d335242921c645b7d0e070d9aa092afa680100000000000000683ce8ca29f09be942c929571aaa188b89625f28569721b41eb48329dc1b4b0a01000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000a2259245fb5a7251b99ee8f307b97ec6e7f20081c1f75284aa9b433153d888160100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf0043010000000000000036cc7d2df6c7b0ff8b0ec254297b35a8d235f7086fb54a3f9013a3a38809ef770100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a18432201000000000000005e5bb43d13a2a07aeba5e7bb79c0d0e5c434cc1afb5c528be0c094b0b26762820100000000000000040000000000000002", + "babeFinalizedBlockWeight": 4930225, + "finalizedBlockHeader": "0xdc8bb9ae1cef343fdd3953b848edb19d610dc774944b22c15ec9ab7b5a0d9fa72e2bb504cd68b77582e8272036e0fa710eb66c65b573d856e1c187df518ec4508c10fa6a0f038624486fee388df78a7b1f4a825281444dd7daebb2210ba94b65f956c03e0c0642414245b50103dc0000003b83fb10000000001226f6ab7b885bb9fd819a16ec72d031107f5aa04437340b9ee29c0c1b4b4f16fb1406351fd2bb9f7e9113635058eb595111adf9f7e6603d7c8f0605030345038050138f0ffaf501e3c2066daefaa654f2a8bf379243e9d215ea2e6c8b547e0104424545468403655ade9f06258891acab40411195e76791e4043d71903203f70a7204e84a41660542414245010176889e9683a83c8df341db3622e4a75becb6fad5f2d7990a01b2d44c6dde9772e5c140580136ad0fa6cce8685f8127e02b46b4d37c5f36fbc2c13fd1467faa83", + "grandpaAuthoritySet": "0xa5046f706506065685b322054d22e8a1f23ca9df75c32a88dda5214ad58b553b4cca01000000000000008a239af78d4659897af698b5670533fa6d215864be8c41e3a2fc4309f9f83dcb0100000000000000e2b9e72d9202e99526fa626d9a6651dfd7c1daec8fc6ba1130af96f7d21a42da010000000000000047f940bc985355be7187c709ded2b689b66d69e61e293a507f1d4f90bdbeceee01000000000000004a3fc0fe1020c7f460c7bd23d0b657c03368552b2f0a12d80a1c406fd066e0db01000000000000009b992b5e9b99eb2cd3b2b648d6db81ed722a2feb4938d998b58dcb5d159fadfa0100000000000000aee9de3938173700b3e3f4fbf2b200ae296173a0854157f40de2598dd4cad8f101000000000000003255f477781804204f24ddfd080346b0e75c7c5a92b37cec1fbbe79fa93407b0010000000000000057c55b2bbb6b86d6e9aedef9b51904ec5b29d8c1271308aa625fa445532738320100000000000000ed70004b41d483626fb8080957192ded96e08afe38fd0d185ea02bbf3b2f6a760100000000000000243f110deac5efe8e963d794eb8706a1895ae1942523ab0fe9e1623515b7dea80100000000000000b61e9b13e849779be8f5378a670d61991875d8e091f359384d7be73d02d506930100000000000000426b2be4596a759a15028d84e08c5c56440e6cede68d088f47c671cc3387c3e6010000000000000070ba6e5985990ba1b1392713236f1b50df750f10f744cc6eb95fa7c5cfbc68760100000000000000d343862beda4cf485b4a3b7e9b62d3b7e6263b47f65a7c88c88f6e0f1350c7a50100000000000000e511d441d6d3c822cb276bb2a14b1c8071d9fe1995802383fb5dcf8a92edcfc20100000000000000a15896b8bbf01f757f120813bc2e78b21388eea66db4b0dc2e1afeabd3d46dc00100000000000000be2235b9d9c9164f494dd688000fb569a37d5c47912ef99b9ebda9318d13345e01000000000000000139b946b46bee4c61be50c986f2a9ef2e76917644e2ecd842c59d61a94ee612010000000000000019a9d56ea35496122fc44fcb5c29d27fbb43520556d6f8d97753767aaa0f228e0100000000000000a8dbfc6cb88ac105e25b9dc7f11e883631824647cd4d0c18014bb6239627b2900100000000000000a5b094ae7c156592baa68ce18dab6368d5b665e9a0f07dfc5f54f58309e086c10100000000000000c8579421534e4e52ba78c6ed533bf75fabfef7148b439a7585754a7cb0b89222010000000000000041ef4a31eb7dc1e01f4630604e1908e644d7cdee3f66a60f98d6d59605326f8b010000000000000097743d6364cdb6c4790cd37c4c2ab5fbc6c65e8bb606625e70a6ee04ed1650d9010000000000000008cc1d6c743da905511a39a6f0a68809a6bc32f8ac25e53bb2d6aca4f493fc9b0100000000000000f7e159462ec9dc0e54c6f6b8a83c4b551ee91613cad4208bbd563f16418328710100000000000000c442b92816b7325602d86354ffdb7dc272c56468f3bb8d6c659e47b31deaa2c40100000000000000acd71d4269b3ba2a9de822d494c4d841708e1519c08de41d7fc6153eaf48da810100000000000000d04d64a07f144638f20f081de122b88fed0cc8bda57e4810e7afb38036dd8bbf0100000000000000f26945a8a64032a1defa76e720a99649125b55751b6088205e7acab901de670b01000000000000005cba2c6f569da1edc3778308da406f266aa53140381dbb3f14f22909ba6e30040100000000000000dac2e90de824b109043f70818d53eabe05e79d518bda504e951d7f4056b0b2720100000000000000652f455eb3d30486151c716a4031bc02bd00254ef3e8290fd29f946d958a46b60100000000000000589fc35b132ef9d7ed9a6787a203e5a3a37f8cd6c775f47ac5e589d55d381a6401000000000000006f4855725ebb9eced957bae43ffa7d30657ce7d06b251ce20e2218bcf929e4050100000000000000dccafad8bba5affbc80095564afc9376881907073a060979fabbb962bef08d560100000000000000c1758f7cbffeb844419bc494a9dc65fb394259f01e9bf23789a75acc29d7d9620100000000000000c1c1ff5f66fefb5c0849e3b2333411d1f7e9dd4888600e334e7a33623f15fa360100000000000000fe240e80ff8a48a77947b394979cf361017cd906ddaab637d72cf72e729d79bf010000000000000006854c73f5703242d31d2576ac2297c93f0b5dc16ade0097c59d5dc0faa43c550100000000000000fa2c21f1a03638d4cb35202102240c2b85f5667924d5838cc503721117049da601000000000000005f1a6f53d3bc80af21811c76e22269c1d3dddf9b86c8b8d2faa3a1f92d830f8101000000000000008aabd4f6d7ecec7a749c83fc7be33f3b4818cca6f93a4927b4964900df9454e50100000000000000fcc0d954c7d519851e0094cd9a015b4789022a37091e3a04791d0731bd85f0d301000000000000003948bfd09bbbc2fe6ac5dfe53146e32df50828eecf7b2b18cdcff8dc385cbd750100000000000000a2a4af2a11ae7ba812fcc32845583d0354a0f2ffb1271a53c9a976a0f47fff44010000000000000058e304af91397247f704ce95d60845629aa59a50fba1c13896bb2300708db4720100000000000000070bae15860ce96e4a0cbdcc051c75e37a458c8e6c5ae59681d0ed938e588d4501000000000000003ec37919f9f43a9f85f539edfde3ceebea1b0e8279cb036641d588a9da81a6ad01000000000000005e48598ca89db19a4c279a251216d81e33f6b69e7d2ab4450968a1f9409df4a30100000000000000f510cb6c7032c9134dd3e50014ff6d391cfc91606d003fd4acd37e00f919d8350100000000000000cbd74a646a84b73518eadc73b1983dc9733839739576af9a98c698070a3a4b590100000000000000d2e72b0ab02a001b2e573c0d3b78404a7d3c600c3a9fd8ef38e823cad6ed3d6601000000000000003047f8f7e9c47fda9130ccd57d5dc8d407bd89b8dcf8ecbaccf00da184c73a570100000000000000024743c39cd9e151344dc23c65ee0346132d190a224b687be5c5ae31c5e7bb0a01000000000000004e3fb8c16ad624c1852777456805e5352d0221269de66949c95da4076206b35a01000000000000007ad55381f9de00220678c95a19489640fc61331e2a40d927e3d833555575c6fc01000000000000009b11703e71109c2f7e5d5ed6780e867236062929da90c70ea616af2e99e80f2d0100000000000000b98c920666586f392d129d480e78a965764ac82de45e691589b3aab7831a7f020100000000000000cb92ffeace78dbafe6fbf275741b4b38657fb81590712aa0bca7877931f6ad39010000000000000034a18d21097f479eecbe51b91c522a798582caafc787134bab6888854742406e010000000000000027791275ae7d4735aa45e70210663067f7d268aa57126a26044c8f6d8572a7d80100000000000000f7c9f4bc8669969246cfb748ac6996db6cd4c1fc634d981a1093b2c3d7a2eadf0100000000000000ba95f5d0e987305bb794dfeae69d7dd6a7987aa66cd7c9d42aca15e9160ec6a10100000000000000ffd82ddc49373448bed6feb0032744e20068f4e21adc4cb6d2cbf05ce73f4ce40100000000000000a9f24f0208a21e8cda4e450c72074f20d76a927bb80fa4418e480e0b59575c6b0100000000000000507b0289bfb2f55c7a62ec3c3298690909013c916dd5885b05b330fdc0caf127010000000000000016278af083f6d261762f8a97b6a09ff83e2f5927ce26c2e48f3c7e771dc7e6950100000000000000c49e3cd2c701bb845963c2870dcca12ed070c3f67ffc20144327a93aa6e896ec010000000000000081b1fce3ee9e31723f1023eaa9f8793e8663e72c50fbb0fbcea9bc78bacc491b01000000000000002dad5b2212ee688f2eeb9ca1fb6a90574f006dc1c6680ac3a8523363a248940b010000000000000067ccabbf18c035791cee9c748bea2ca03cf72c40f5ae786f297f84fb05973262010000000000000050f9fd6c0623020debb7843bcb832ee1d80db9b156d8e6083ccebd434fe979470100000000000000b8183b905f28b87c68c2d5b2f39f009f2ee22b47235f6c6d6cf6e63121b490300100000000000000b7c13f1239888cda5c8e6ac9ea10675df17633368906e66a487f91ddd3268ca601000000000000002cd51e09c3197e04155b78f3d97742ceffface390dc46f81f2613a94b2e483fd0100000000000000affb713ecdae328aa4436756f6a3e8add6b274d5ef1cc19d7aa69ab82c80e472010000000000000052912b3dfd0ccacd00586b97f1abe32431a2f6fa9c2b3bb17837a1ecde61728001000000000000008a2b50acd1a4955fc814bf6720c7427902a6ce709f3a2d7c17c55b67f6f1c06301000000000000003a511828c0cdc0fd257387843fdbf6f19d5ca1ef1c29ec7e971fc9f1195eb60c0100000000000000ee5605c1a9ed9484a70b8a591339830f24530eefc4599a7c6188a78896908e2c0100000000000000ad06042b85ed16ff4e46f5a68eba9ac12395366ab17c2da24b4f6747b2c8934f0100000000000000d1c146d2429a5a827660008721c7a880e71f44feaa3dc75524c1a9281bac48cd01000000000000005d2b07941a21adb6ba52298c2f0b0bdb6023e4a1713018762a5f61973b2fd1e80100000000000000e4b2cffd0b9cacfc500050b27ecae3c55b9b51bd9a416d62605118c8ad4fb09f0100000000000000b28ba3f09e3521f7d09f0098c6743bc218ee2970068adfa5d908d9d06e627ae50100000000000000f6d74de7b39455519a5d6480c8f12c93fc7a4cfc9af39154fc60857a39ad888b0100000000000000c8be78d05f652edd0a64a5865455de36d0fadb0d91c470fd344f8de23c8a6b9c01000000000000002bb7b11dfe79a12110b0370510ef20d40ba8a563f517310f8bf37cf7f0403de40100000000000000f5fef7a87c9f3917fd28640907ce59ad26f33e41baa25d8ead8033ae0b944d7901000000000000005d0124063ede3e49f037df33948477235e5a58f93f8b98bf7203f25e11d4f0b4010000000000000040533a786cd0be9618126633512666b1b1b9ab3b436fa653c93e2f65da9c196b0100000000000000be95095d93298171c6fb8a1847adfa173d127e13f53482dcb694f891d68f0c58010000000000000085b714accac0654ba57fac59b626dd35802269d2c1d995cea7c335cb05a88f7f01000000000000006a5f902cdeda2c2161d16bd21d586720c08c0bbb7b463d9c59147338d26a8a9601000000000000009c11e35911f023df6e4d218e53412ab4e4a20c17961d63ba381c913b51f394c001000000000000007448b6f6db7cfffd8650a1f3f08ddad1e114321ea770c9cfe6154882f586edb50100000000000000ffcca343512faeffe1cb3a8a7ce62fa4ee0c7f6a5f3e5ac883482846e132813d010000000000000037483029302a84623f0a8db165fbed905b0a4fc25e7cfb56e975a0e98336a59b0100000000000000ecc7b49598787520ef6336abaf798adbadd6406bb889d8bcefacbbc1a887a3fa010000000000000053b5918f72e73f92f32b578d1b602f0cc554d98bee8c4e131ef0ac7a63399fb4010000000000000063e935d23d285cec7b014cb7736d65b4acffc45ca589003d3231de8e6db8a8aa0100000000000000587473ac474bbd8c99d14bec88d614426944b5c84dbf2912abac7610741560ff01000000000000001935d43843c66ecf76a9f4c4229de9ed7c172f52aa53d1a279f2856a736661b80100000000000000293ec1101d6cc9df89a04ede0ac8ced7418803cc1d52a36ca8e45cca734388f90100000000000000c7d9cab0fb88dccd0cf4abbf5df9d7f36a3de439c5070c599d397e74133bdfed0100000000000000866fe4ae134938ccf4c5caf01358881c75cfde473b0bb8a2623cc231db2ea3b901000000000000005d202a011f023dfaa6713f16bfd4409dde8bfe594abd59e2be32484c73b97982010000000000000008cb5d0ff7f138698c9fb80a1383155cff65ec7e127c5b3614e2e17963969f100100000000000000fc555c014d927fe7838e840609916b9af5d93892ce6f394398858286802b8c6101000000000000006727561447ed474ff4e15645b952a37fa5008d4e694d4853bb55594fa34c4f340100000000000000af9c4c3cf1a3581ee22c9d1a648bfe92fe6d3a7ae39410f213ef25ce6daecffe0100000000000000ec295fb809e22c332aa36a57afe05f2c093b2d13e52b0971d8265c5514e4e9690100000000000000efb5f1e4c4ba37f8c159d452d897c607a58518b8355a8454620b3e3ccc3271230100000000000000099a9eb71f9cb1b7d15eae384790b4ec35045a19acea1730ba62f3e7caf31e8b0100000000000000d34560b879f8f4dd8d2fbd4f6d51b9b6f41b76656860646fcef4e1498859a19001000000000000008c3dbd5a1b928cb51e918452191e5328b0f6e8de0259517831a90b02dba3e6110100000000000000aa6fd06015b8309ea9103f4b0e29bfa7e21ab5bb1431c3a76433f591c739f8380100000000000000a892342c56149812a43e98c82b6a3dfee7eff384d9b6d832002ea63838f64900010000000000000081bbaa3313b09e3b0ea2817c3e968a33587ec8928539c3f3a6d0e65644612f49010000000000000023f07bcb8dade90cefd08732183d5fe32b89ad8a4f84987b9e4e7e767c2587560100000000000000c13b603b5fe774d98e59c26fac03f8096ccc42c57d0cbc6a443b4f07a3c077920100000000000000be6b59cb464fadec4e0b22a9f12857ba5cf7a14c4f9551439d36305d582dd7fb0100000000000000f916634f9fd7e54374e30ac6b722ad1793c13cb2d5f2ad38769eaca2f79d414b01000000000000007ba967a2dae0d8839cf44710591db994d18e53b25ec6d0f861da0037c4a4366a0100000000000000222ee6c6a6c62d56cadb4eaad5104d595fe962fbbdd551c81562d3b509212907010000000000000055ca63358082034ddaf76b75f41a396081dd4f39a61eff13f7575e506e10335601000000000000000aadf1b2009026f8f5dd75d532e91dc756fd47572aa0f3c15d26790e6d6b2f270100000000000000d0a196fdff4cbca9c7d8a893f9ed66d86038378d8faa1fd8543fcce60ff1cd8c0100000000000000d0b4aada93fb3d0b358e8d59f8914f5987acbc6f5b4f3e12a1ed8d962eded82701000000000000004f950be5bf61958a0ae6e6a036b85b33ba838de8bd5508b558cbe2602d341168010000000000000082e6b6bf1f275c59fbde0dad91393ae690d5e644d11d23898a9ccfdda025920a010000000000000074b60dfb12745236ba9dc8f925efa21482b50c870c567638ba3240a05fe363d90100000000000000d761043f405069ac01285f1ff258450aac675f08d906b1ae0a1ce54eabcb36d901000000000000000dfbc1b5757e1f0ba348f8af64fb631aaff86cd21fa0529e0bb1fbab2508792601000000000000004abc35969775726127370e3bef6da0c45c5e281ed03b11bc32eb5d736d197e380100000000000000b770208e14dc236c373cad93e19b092e9c6c7a90604d941c19ca19923d33013f0100000000000000de74612da9080d47be35bf4ded2094e23c1de14477114ddcd7b76b815456ec0c0100000000000000b9f54ca6fa0be84b1c7b42a426f37cb4218cc7840b9e1aea647e215739cf19540100000000000000d3b3d9703a265a51a137b9de348587c645a168981ef3e01c9dc482856751b8ef010000000000000003dd543dddd6ad00137ddf94a218bfa19d2f08b4365d696765dc25deef76598b0100000000000000cfb9f7f1fcf903a51af729ed1647aee928630e148990309f9dc9f3b14b114b760100000000000000a2ee8d9c22eba97998d63854409d99c87b21d079f5c888d863a81d41d6abf0110100000000000000d14a779884de1b2fbf079b8e47e8c0edb1c29e282996899a4eab5aaf1f4f41130100000000000000c2344c6fb787621295335b6b5acbab9531199901492d41e13a64dfb2927f83be01000000000000002ba5634557f15c4e9198d1ce0cc525e897d3fdecb0c18af8a53fe4e3384f4a1d01000000000000001ec0811cbe4f2ea1e5a714d3ba08c6d7fdec138bcc6406da3c6cd32f1686616d01000000000000005208fe27477acbc6750d0caa831c0b26801c58eca046a6cf9d4143f85d877e83010000000000000021a0865e3e99965f51edf95012ffd7d6ea460956c5ba029cdf1c8820376e51c801000000000000001468c7f6c2eb735d70a1226e3c0c9834e5994e34a57ce30c2633fbdab2a4886d010000000000000025ebbb2a00126545bbedf00318a78b6e61a0b52c81e30231ff45bd32e311472f01000000000000007bbd4f800c34110b6c739ff1e8913a36ab62f25641c4bb7413cd354894b602930100000000000000500a9e1ea37636c24ebf4e32668897dae936eef42b6da49027f606d4f24a7e96010000000000000055d7ad9e836af36e9553c49dbd25d703db296fe5f60099918a12bd1abaa2f7830100000000000000ddac76c2a61c9aef4a9b3247aa0953187533f346466f02840235662440d2945c0100000000000000055c25dcc9cf8a08ad007ed9c8afb0ba53cebd129a20f194d272535ca9fa064901000000000000001e1fe4a3c9f590aff5a70b9cae569605ac78531cc10d310436fe0c306cf2e36101000000000000004df6e4d7da2c11ddb9153c714699f9ab625bbcd5e8e38f1cdeee567dc04abc610100000000000000982d9e3cc8ef3f8d99638b6f9df32c82356e1cd88f123d1e586a604d1d4b0cb401000000000000009cfeed14dd2f96550a0e7edebd9c9a8c8b1d8f7efdd1abca01987654239f3c860100000000000000736925c31654df870fbc29437c9b2a488ac3262e5d80798534ad00c43a61e54701000000000000004c3b4b0a3acf902acec7f5d868f77d78b17fa4cfc5f785d393c9f3d15e04880501000000000000008404cabeb0674765bb77af690fa838ba28fa2045d602994a89f07680f4851c83010000000000000006b9e740c0a0e1f8fd31717438d5918ed8680eaccb70fdc9511931ce0d164ae50100000000000000b8cf76a8082d518016ea5588be57b64e156ed23b0f72248975522c23d15ef16101000000000000002565e04c6e0b665fac87f8238bee74837f8f621ed63409f3838d263603400a980100000000000000373b26b330a41547971874dd81c2cbbf8b7e3eda05b861c57205ad7e8c15bbcf01000000000000002a38a4dcdffc571d547ee3e59121fdd378335df7c65877f983f0957cdc9824130100000000000000620c78305072857b43dadced80ebc057dbfc82b58c14c7b63372ef02140867650100000000000000546ce2099b3863d2d75324d5866bfd5324d8ee4701a99dd53528f8a8c898ca4801000000000000004dc2e72680dbf0156818114fa34d3591f8e6948df25a128e191190c66f6ac35301000000000000005d50d6099c7c88f367568fa473b44785acccd030251627cb371de16e5fa704260100000000000000811038f59afeb084566271eb138b0106a8ca013f57e589d6f777bc7bb2219e760100000000000000f5e2c973d4ccbdd36d8ed4e3dae75d3b50002cc1c74eb0a1fe29ef1ef8e3f0cc0100000000000000258f23d60623fcb1d699a35f79776a9e81e979150ba5098dcc8e3a69a407ff9a0100000000000000b1f748c87b12edf7242b4719cfe68e6761acaa4329beee538d6ff740941d3cd301000000000000008b35aa0d212e4032ede352d5426696c260c9ecffa632a2e14e6a6629a6c9f637010000000000000072341ca1eb3a0fd4e790318b51ace114315573d5355c9d5336e39382ba0642560100000000000000a79cd2241bd68004641baac25c1900da3a9e6d83101aea3ef2a58d78c657272f0100000000000000b14911cb101f45b88c437a36bd82a5f8641b1c55052060ea46ea2baea570e8bf0100000000000000b66e24ea84d5e02a7b2b58e20bbf17a0f2a19c4654bf8b07669ba3b9fc4a468101000000000000003c1dcee818434058b7de26ee874ade21bd1149185d6dcba1f67048b931ec3dda01000000000000000d8e0ceb31d11634ff50f20c90d57239a9307602e221baa190c784b144a7eb980100000000000000290be52ae5259f3e8bd0cdf454004607867a97c1db86d0c9ff16c8c83625bc830100000000000000c91199db47b7591bf1a928534cdbd3e5979a0d09d6a464f2a9607ec444bd8a9701000000000000000428e3ccdba17d779ffba05c9ec7a6264187d13bf89b6009e97200474ad3439701000000000000004c43a374e6b3e6f7d6c5a6b8518ae0d0d232a1c46d63af8fbc800045a14cbe930100000000000000c34f62968a87b2e4a9340a75004029dff5777a020f60fb287f08038491881f220100000000000000f54bb82d58c665ce3289b8765c40e60d84f74da663c164c38e16784d5c142b2c01000000000000004d9b0bbfc6a294ee0492bdc595a5d8f7cf371c729c5c319a3822f0248bb4fef70100000000000000bbff79a9b92ef586f0be053cc01639b9a335ad8e2910146d070997e285007d830100000000000000ccc84b255e5e73b971f2e71d1903b5ef9bd6d0965ff3ce29c517c875bd7ab65701000000000000001babed13d56d28fdb937b07bce846689584099575382c273f7e425f822c8159f0100000000000000bdee8597e248688fddc627ad9c95cbebf7d3b5f248b9a742aa2d8e761fa365050100000000000000a128a73c5eaa1803618a75bc368c38e4c5cd40999cb72d615b8af1d30cb8cf1d010000000000000020270811c3dc453f37b27d958ef7ad7dd4c7f217c83f94bd0ecd84c60018a86601000000000000001887f7937a8ca4ec67ceaedebfad3d307b10f416219de1ed4f8646409eab730a0100000000000000d64083c00178b8dd224afade9792fed8076031bdfe9efc5b8128e6372a9261e201000000000000001c6842f07fb07b318a8d00ce6258844374f8e894853ae5fd4a85c867d3fc32e30100000000000000417e120dbfd0297d59458b48407b62570987f1e907dd6dfa9a20bfe64eb489d8010000000000000042f20843bf75f4916ade8eb2faad0ada3795b3cacd29b679f18805f2826367550100000000000000be724139e9bdd099b70f7edab7d1acf0d05fa1a4ca212f5e2958d31f4272dcda0100000000000000ee40b85aa515fdbe6e559f815edc7ec1e321e0d152dd54258382ba31b54e447a0100000000000000134cf4720486824c6a27fa7892c8d82e805653ba1d98480267ec284a76b792c20100000000000000c3150e4ca47e7bc6486f198bf0a742a18ab0871bb1efa34e82c4ce81f27926670100000000000000c2eb94269c5e5d2ab9a1a300387358679640763b053aca99ba5c1c9083ee717f0100000000000000316bafdefb60951da2738d6c9c2ef1866d139b34b5eab6944d6bae754dd3fb110100000000000000b65475766e6229c87ff34263f5ca58525ab133962bc599ca0eab096ff296f4e60100000000000000ebb1834a568ea7653bc66f394937a0aa4f2f617118d2161e2c11c0d7d2febb9d0100000000000000b6d7ac98d6667fe8f4a186ef12a66b017df05a54e11b45d3f2967cb3d6b6827f010000000000000042f47dad5949be7b7b8f81faaec17b1b53465b01b9f8f81e6a45f2fc74e12daf01000000000000007a1291795805dbe300425311ae50ed698450b1912b62e5b5a3264c68bfa970760100000000000000e0df5b2f299314d2d419b46d15c3c8a739182d91c3d4b98cd16c013c3a25c04b01000000000000000150276c1b3d28d42630801c1d4a738ae723887d9286e40ba48d10b0752f7dcc01000000000000003f2c01a2e1e996a73582943fd0749ec223b2ea8129513a2c5c4b52bedc1f75a6010000000000000098a6defcfeb3dfca36ec46eb373734627a2c395cdd2d886046a11788ed6467af0100000000000000853ba986f8785e8fc1a2ae2fb86f17cc91886d931182ccb8d148379a35cbf02701000000000000009bbc024bfe4f072b94735afda064dc3c7da2b4bc0c50cfad44722543583a372e01000000000000002b71a8a81bc2be65f3224ba3711d1bb243446d154369e209f97d8375b5fe8deb0100000000000000496826b538d97906e14d417b48598d7d591a483ab5f4c6786cd0b96239c2f4cf0100000000000000ef27d1d5573e6419ffcc7c4372668105118256b810ab2e2dbb5e7d8280ee94250100000000000000c7009be830fe78c42f12f0753923131d16300bac230650001636b6a546cf0aa30100000000000000ed3f97f83ee7799c4aeba9f40bd18134c862c1a30875fc1e038cd27bae3a739a0100000000000000348e8bacc2d40191a6a00e137c745a422ff8fb03148d2ff9cad75efbb7a67014010000000000000066b964258b3239799608ad4ffde6214a7b04ab3e0fd889fc7eb078548b3518ec01000000000000004201a9d54fc376fb7fad6e22bff58bba820f9f6a8318d812eb6578412293a9790100000000000000efb31c5039e45fda750af5d2ea31b3210a407b168adec8f98db1f3dbc4cd94380100000000000000bff74b6ff5ccdce9a659408871d486511938422a6e550fe0669ccd739f80108101000000000000009ac13f915431b39f99d8c0bed7e9c62d22e1e8b6daaee809920f491154ef6f8b01000000000000002ff9330a8c344ad3adf4d97db014a2d0891d4dd69f5c8369dad3e0b25566173e01000000000000008f44b6746d8d809da87915d6ec208a07ee63481d24b275c6424429e16ff4d25e0100000000000000e01d6eda8094e949bfbb05c819b509a12eb662a414b822f841d9555d58e1ce7601000000000000001262625cc59c0e4b7548904c31a02231a601305881a231d4dea45eec6cbbbdcc0100000000000000c3576342cbf99792896ee5329b04ff2eee2fc2bb6d53c5c03d52c8957ee793fb01000000000000006ad4bc289673029ab44f3045eb6fdd3589d05e0e5fd76ee017f650a662f898fb0100000000000000a82f563264d1892dd46873205d03c098d8b03f53e21c797839737e4e5f66a87e010000000000000062aca2798b15062d38b79faa681032eae9f6d465451fa864dcc1ac58eead4517010000000000000059dadf17dc0f84c1c334e6a815a04bdfcd0988a3f3bcb713c66ae29e17276cc60100000000000000297dc7cf28b3d40a42c5e8faac876bf7227c670e6e031dd0e0537f4fb70e6fbe010000000000000043601ae31cf5b03cb49395dda13809f7398d8670ee4d2172b14a1ab05986ac3b01000000000000000909c1eff97923f6bd47e6ec8b5dc163b32d5b675a3b13138d3599e5cc77ab9f0100000000000000a5f788e86ee2d311357b7aa4a128f063fa4ee36958baf10304c10bde7421aa2c0100000000000000290321d793b7dcb12ad148c2438bb60821bd938b7e9164a0c3d0fc82987f8b6301000000000000002ef11bc5ce1e7b53f788ba01ba581b9171ef36449719ff3eb20973342a4a82850100000000000000e3a73e5e042574299206b6520770553482e099d075bf00cbeb139b5f6737afed01000000000000003bb30832d06cdd3e081afef0cf2b7770bfe81dc58081d1886443e4e4547da8a101000000000000002832b59000d2027d2bf57fdb40da04bd8aac1498923397517181cc487a92815201000000000000000cd7067f96a2d63fa72065302432f48690485fa5f47c9afab17123e0482785230100000000000000d02d870053a31afc4984a7a9c5e458804d8f589eed67f2a6249d7787f1ea45670100000000000000f6f23ae9bb4c269a5959d51f9173270ddefcc354b63de77b672bce58cabe60c8010000000000000073dce1727ec50c50366378cd389246e19543d900d7e9dab8e323d04cf5b202a701000000000000002ada479e1fde7211de15900ed29035f6f07506cdbadc4c232aab96d62006b9de0100000000000000ee1a56541083b083f1a13b5f8aa4042a098de2cec4c43f3250baaba8f03a52ea010000000000000062a91ffda8611ffce3edeb628ea6d3b8b12e5b2448beda6da8334e77a9ecbdd701000000000000005246164c02e9e6bfb7a2dbf7ba8a5440a189f8048373678f5b1085f217464c050100000000000000dea69c3badff9b8d7571cb6c538cd099544da7460a19e1b8651c5c530a6dd53c01000000000000001889f1b031fa7d64c4b480a17cd2941be2c02681bca397c93607091f37bf5ee1010000000000000005062bede97a45c6e1c6b593675ee07ce969fae45136cc2b2afc6e705a77f4700100000000000000dc6e03f650e4304ca8d1598dde8d4faf45891987bfc49ef785ace47c4c0b5573010000000000000018ede59e820bcdd0ed2faf99a21bdc916d71577dd35117f90efe77b8513e631001000000000000008c258b4ca16dfb8e5afde4cf40fecf115307798117b4860475511b3b5d561584010000000000000034b7b6219ad085de72069d3eea14c419a637ae610ab55c6389aa10b2c22a5ec901000000000000000e7bc96895730726225e47e31c742fd44d3936f31ecd32658c694fc11df252240100000000000000b426ef68c50245a003dd068c5c086fc9012c08a7f9ec53fbf7df4318261c8c2c0100000000000000e7931a825260ba7d4fdb5f4990d39a71e2a8b215a776ebf770102ca772f103a3010000000000000095fde7b91441fae9d2a6360d30228392519293be5e78cf3305667595cb15e566010000000000000047ede3eca5f6c8f0a51f2d36d7d1c236aab07a8b2aaa6ab08c8ccf8d87ce3dd101000000000000008e82b9499c7d6ff25d62c88428d0b6a1d56e5f166dd46f0ad3d8d373465fa8840100000000000000a5d172126aadfe80d2b711776674d61df5a1cd1a0129761fb2d2de58ed9d48a00100000000000000e7eb7de26e0e24fd528fbbcecf837f26579784dfd4db512c9237e2811139738701000000000000009f677785cfbf44140bdf38770f3d8076f222aa1c9997842d89d580b0f256198f01000000000000009a0ea02dca493accceb975732f31c9d249d4c90ff1ca0bd86cbe00f1728146b401000000000000003adbd2d5abdb70ef56c2d8bd4a7c0d67882a1c2050a856937491e98496a496fe0100000000000000f7b6a82ff22dd13d5665015a8abec429d244f857d3d6dc78e3f3c65496e4a99f01000000000000002b07c366c1ed899a2ac9722b76e092828714a8177368e51ca05ec05c565866b301000000000000008e3d1c8c0261e193e87403c8959919ef035ba39175d3ba22f31190303601412e0100000000000000e2cbfcc26562b49e656aed7d837a26fe0f9802db088b10330227b6147e150012010000000000000094416582fe359e0a310da59bf93df8ff9665b89071d4977a9a9f3390b75c0c4501000000000000001ac44a1e32a5aabcb2bd23d6586da06e7d97d49a36cd670acaee574df1b912210100000000000000ac5230e4338aa51c44ab6a0fb903e6fd914fd029dab8f7ca447be54ceba74934010000000000000032bbff551f7ed51452d264d796315e578d982e942eebb60e519ca648935d8b0c01000000000000003a4bfd825ccd308def4a61bac80c579db42b02ea5f1a0768656a326e83a0dd880100000000000000d2f1b3b5f7eb1b0d8328911d9ec920327d7a30729e80c1238f86dfe27c4fa347010000000000000078a2957fa87dcd755360693156976dc31d1ca27a869e032fb1a2d46ae06fd8d10100000000000000068f911f5ffd2e94be67762e2eb02e792b79ac8983720f40615e27ad203e03c50100000000000000841584e602ab975c936fe7c2025fcea2b5a0061e839b1ad96528942b33d0974b0100000000000000f33b53556f28f27d250585317cd57a18f37c5d5f2b3c1bd00a0c91ea54f1636f0100000000000000e056900cabddb471de9e1846d7efdddd8b5ad400b02fc54b4402ba725c78bf9a0100000000000000e3686e9ce1551a491d0b0a1a1c7f66d8f1910d33d5e6f4b873807e37c96c4fb8010000000000000098763eb72b3f7dbb7a793bd1d4367af5f072ff45a1a6eae0e002e1eaa24c5d55010000000000000079f73931b31ce353119fb4063412e844b16cb3eb92e592ebd822a8c21303554801000000000000002929dacc53614cea1848e7ba20fdeed7cb0bd81571aa72dfb63dfc84d3965d2b010000000000000030afa9ef79458f844a27a3881655b6eafb90b3912737f1bcddb95e78eb098c1d010000000000000053bbc598c69604e82050d2008b95b491ce8c826dc39a2e300437ffacc86d52ef010000000000000031a46e639e57d1a11119b17f76617a35b3606d206fb5c3e87710f464f7a57de50100000000000000ed25d7114e2aef2f0e57dc2be1401a4994d8aaafb30223162634a512604a2366010000000000000045070000000000000001cb4a2d0100151d00000000000000002904050001000000000000002a0d050002000000000000002f16050003000000000000008e1f05000400000000000000ee28050005000000000000004d32050006000000000000009d3b05000700000000000000fd44050008000000000000005c4e05000900000000000000b75705000a00000000000000176105000b00000000000000766a05000c00000000000000d67305000d00000000000000357d05000e00000000000000958605000f00000000000000f58f0500100000000000000055990500110000000000000095a205001200000000000000d8ab050013000000000000000db50500140000000000000024da05001500000000000000aaec05001600000000000000f4f5050017000000000000003bff050018000000000000008b0806001900000000000000992406001a00000000000000f92d06001b000000000000000d4a06001c00000000000000685306001d00000000000000b65c06001e00000000000000f76506001f00000000000000308b060020000000000000007b940600210000000000000025a70600220000000000000033c3060023000000000000007fcc06002400000000000000c3d50600250000000000000011df060026000000000000005ae806002700000000000000a0f106002800000000000000410407002900000000000000880d07002a000000000000001b3c07002b00000000000000764507002c00000000000000357407002d00000000000000239907002e000000000000006fa207002f00000000000000c3ab070030000000000000006abe07003100000000000000bdc7070032000000000000000fd107003300000000000000b2e3070034000000000000000aed07003500000000000000971b080036000000000000009d24080037000000000000009c4008003800000000000000255308003900000000000000735c08003a000000000000000c6f08003b00000000000000048b08003c00000000000000589408003d00000000000000d3c208003e00000000000000e4de08003f000000000000003fe808004000000000000000f7fa08004100000000000000aa0d09004200000000000000153309004300000000000000fc6a090044000000000000003e74090045000000000000009a7d0900460000000000000000a30900470000000000000014db0900480000000000000020130a004900000000000000791c0a004a00000000000000364b0a004b0000000000000043830a004c00000000000000e5950a004d0000000000000045bb0a004e0000000000000059f30a004f000000000000000e060b005000000000000000812b0b005100000000000000dc340b005200000000000000ef500b005300000000000000a3630b005400000000000000b69b0b005500000000000000c7d30b005600000000000000dd0b0c005700000000000000f3430c005800000000000000087c0c00590000000000000052b30c005a0000000000000060eb0c005b00000000000000baf40c005c0000000000000072230d005d00000000000000805b0d005e000000000000007e930d005f000000000000007ccb0d00600000000000000076030e006100000000000000793b0e00620000000000000088730e00630000000000000092ab0e00640000000000000083e30e006500000000000000731b0f00660000000000000079530f006700000000000000748b0f0068000000000000001fc30f006900000000000000d0fa0f006a00000000000000633210006b00000000000000826a10006c0000000000000028a210006d0000000000000005b310006e0000000000000055d810006f000000000000004810110070000000000000006548110071000000000000008e8011007200000000000000bfb811007300000000000000bbf011007400000000000000e828120075000000000000001561120076000000000000003b991200770000000000000058d112007800000000000000770913007900000000000000944113007a00000000000000c07913007b00000000000000e7b113007c000000000000000cea13007d0000000000000067f313007e00000000000000d31814007f000000000000002e22140080000000000000008c2b14008100000000000000545a14008200000000000000ad63140083000000000000000e89140084000000000000006892140085000000000000008dca14008600000000000000b00215008700000000000000d03a15008800000000000000f3721500890000000000000015ab15008a000000000000003be315008b000000000000005d1b16008c00000000000000855316008d00000000000000b18b16008e00000000000000d3c316008f00000000000000e9fb16009000000000000000073417009100000000000000bf4617009200000000000000286c1700930000000000000029a41700940000000000000041dc17009500000000000000591418009600000000000000bf3918009700000000000000704c18009800000000000000948418009900000000000000f28d18009a00000000000000bcbc18009b00000000000000e4f418009c000000000000000b2d19009d000000000000002c6519009e00000000000000896e19009f00000000000000519d1900a00000000000000075d51900a100000000000000920d1a00a200000000000000ec161a00a300000000000000b6451a00a400000000000000887d1a00a50000000000000077b51a00a600000000000000cdbe1a00a70000000000000070ed1a00a80000000000000083091b00a9000000000000004e251b00aa00000000000000fe371b00ab00000000000000065d1b00ac000000000000005f661b00ad00000000000000bd6f1b00ae00000000000000de941b00af00000000000000fecc1b00b0000000000000001f041c00b1000000000000000c321c00b2000000000000002f3b1c00b3000000000000002e721c00b4000000000000000ca01c00b50000000000000044a91c00b60000000000000022e11c00b70000000000000044191d00b8000000000000000c481d00b9000000000000006b511d00ba000000000000008b891d00bb00000000000000a5c11d00bc0000000000000053f91d00bd00000000000000ff301e00be00000000000000054d1e00bf0000000000000002691e00c000000000000000d1a01e00c100000000000000c5d81e00c200000000000000cf101f00c30000000000000083481f00c400000000000000af801f00c500000000000000d0b81f00c600000000000000f0f01f00c7000000000000001b292000c80000000000000039612000c90000000000000054992000ca000000000000004fd12000cb000000000000004c092100cc00000000000000031c2100cd000000000000006d412100ce00000000000000cc4a2100cf0000000000000098792100d000000000000000c4b12100d100000000000000eee92100d20000000000000011222200d300000000000000325a2200d40000000000000055922200d50000000000000075ca2200d6000000000000008f022300d700000000000000b13a2300d800000000000000cd722300d90000000000000078852300da00000000000000ce8e2300db00000000000000bdaa2300dc00000000000000abe22300dd0000000000000012112400de00000000000000501a2400df0000000000000045512400e000000000000000a1882400e1000000000000005fc02400e20000000000000013f82400e30000000000000007302500e40000000000000013682500e500000000000000c37a2500e600000000000000a8962500e700000000000000fb9f2500e80000000000000000d82500e90000000000000019102600ea000000000000002b482600eb0000000000000028802600ec000000000000002eb82600ed0000000000000044d42600ee0000000000000058f02600ef00000000000000b3f92600f00000000000000065282700f10000000000000057602700f20000000000000064982700f3000000000000008dd02700f400000000000000a7ec2700f500000000000000b9082800f600000000000000e0402800f700000000000000f6782800f80000000000000019b12800f90000000000000040e92800fa000000000000006c212900fb00000000000000a0592900fc00000000000000107f2900fd00000000000000bc912900fe00000000000000eac92900ff00000000000000fd012a000001000000000000ff1d2a0001010000000000000c3a2a0002010000000000002b722a00030100000000000005aa2a000401000000000000fce12a0005010000000000004ceb2a000601000000000000e0fd2a000701000000000000c3192b000801000000000000be512b0009010000000000000a772b000a01000000000000ae892b000b01000000000000b0a52b000c01000000000000abc12b000d010000000000009bf92b000e0100000000000093312c000f0100000000000087692c00100100000000000075a12c00110100000000000074d92c00120100000000000089112d00130100000000000099492d001401000000000000b0812d001501000000000000c3b92d001601000000000000d1f12d001701000000000000d6292e001801000000000000e9612e001901000000000000ea992e001a01000000000000efd12e001b01000000000000f8092f001c01000000000000f0412f001d01000000000000e9792f001e0100000000000036832f001f01000000000000b2b12f002001000000000000a9cd2f00210100000000000094e92f0022010000000000007121300023010000000000003b5930002401000000000000089130002501000000000000599a30002601000000000000f6c830002701000000000000e30031002801000000000000c03831002901000000000000a17031002a01000000000000f27931002b010000000000007fa831002c010000000000005de031002d01000000000000aae931002e01000000000000441832002f01000000000000295032003001000000000000fe8732003101000000000000aa9a3200320100000000000010c0320033010000000000003af8320034010000000000005f303300350100000000000059683300360100000000000078a0330037010000000000009bd833003801000000000000cb1034003901000000000000f44834003a010000000000001c8134003b0100000000000044b934003c0100000000000055f134003d010000000000009dfa34003e01000000000000302935003f01000000000000c6573500400100000000000023613500410100000000000053993500420100000000000080d135004301000000000000560036004401000000000000b10936004501000000000000ce4136004601000000000000037a3600470100000000000031b2360048010000000000005fea360049010000000000007b2237004a01000000000000995a37004b01000000000000f56337004c01000000000000c69237004d01000000000000feca37004e01000000000000340338004f01000000000000683b380050010000000000009e7338005101000000000000c9ab38005201000000000000dcc7380053010000000000003cd138005401000000000000f8e338005501000000000000b0f6380056010000000000001c1c390057010000000000007a2539005801000000000000da2e39005901000000000000525439005a01000000000000878c39005b01000000000000bbc439005c01000000000000f3fc39005d0100000000000028353a005e010000000000005f6d3a005f0100000000000098a53a006001000000000000cedd3a0061010000000000000c163b006201000000000000404e3b00630100000000000019853b006401000000000000608e3b006501000000000000b8973b0066010000000000000fa13b006701000000000000a7b33b006801000000000000fabc3b00690100000000000049c63b006a010000000000009ccf3b006b01000000000000eed83b006c01000000000000c1f43b006d0100000000000014fe3b006e0100000000000066073c006f01000000000000b7103c0070010000000000009e2c3c007101000000000000ee353c00720100000000000094483c007301000000000000e0513c0074010000000000007c643c0075010000000000001d773c0076010000000000004b9c3c00770100000000000010d43c007801000000000000d80b3d0079010000000000001a153d007a0100000000000053433d007b01000000000000ea553d007c01000000000000225f3d007d0100000000000072683d007e01000000000000b4713d007f01000000000000fb7a3d0080010000000000007a8d3d008101000000000000b8963d00820100000000000006a03d00830100000000000088b23d008401000000000000c8bb3d0085010000000000000bc53d0086010000000000001dea3d008701000000000000e9053e008801000000000000b5213e0089010000000000003b343e008a01000000000000843d3e008b010000000000005e593e008c010000000000001f913e008d0100000000000065c83e008e010000000000006bed3e008f01000000000000a9f63e009001000000000000f6ff3e009101000000000000c1373f0092010000000000005c4a3f0093010000000000003b663f009401000000000000856f3f009501000000000000cf783f0096010000000000003ea73f009701000000000000ccde3f0098010000000000008516400099010000000000001e2940009a010000000000006e4e40009b01000000000000c35740009c010000000000009b8640009d01000000000000cebe40009e0100000000000001f740009f01000000000000372f4100a00100000000000097384100a10100000000000070674100a201000000000000a99f4100a30100000000000065b24100a401000000000000ddd74100a50100000000000096ea4100a6010000000000000b104200a70100000000000044484200a8010000000000009c514200a9010000000000003b804200aa0100000000000051b84200ab010000000000006fd44200ac010000000000005ef04200ad01000000000000b9f94200ae010000000000006a284300af0100000000000078604300b00100000000000077984300b101000000000000abd04300b20100000000000064e34300b30100000000000072ff4300b401000000000000d2084400b50100000000000008414400b6010000000000002e794400b7010000000000005eb14400b8010000000000007de94400b9010000000000009e214500ba010000000000005d344500bb01000000000000d0594500bc0100000000000006924500bd010000000000001aca4500be010000000000004a024600bf01000000000000603a4600c00100000000000084724600c101000000000000abaa4600c20100000000000047bd4600c3010000000000009ec64600c401000000000000a0e24600c5010000000000005df54600c601000000000000bf1a4700c701000000000000d1524700c8010000000000007f814700c901000000000000dd8a4700ca0100000000000039944700cb01000000000000f2c24700cc0100000000000010fb4700cd01000000000000d5294800ce010000000000002c334800cf01000000000000f9614800d001000000000000596b4800d10100000000000078874800d2010000000000008da34800d301000000000000aadb4800d401000000000000c6134900d501000000000000eb4b4900d601000000000000e7834900d701000000000000f9bb4900d801000000000000b6ce4900d9010000000000001bf44900da010000000000004a2c4a00db0100000000000066644a00dc010000000000002f7d4a00dd0100000000000019994a00de01000000000000c0ab4a00df01000000000000aec74a00e001000000000000fed04a00e101000000000000bbff4a00e20100000000000019094b00e301000000000000902e4b00e40100000000000041414b00e50100000000000010704b00e6010000000000006e794b00e7010000000000002b8c4b00e80100000000000094b14b00e901000000000000a4e94b00ea01000000000000d4214c00eb01000000000000d7594c00ec01000000000000e8914c00ed0100000000000004ae4c00ee01000000000000ebc94c00ef0100000000000014024d00f001000000000000fe394d00f1010000000000000a724d00f201000000000000667b4d00f30100000000000013aa4d00f40100000000000031c64d00f50100000000000037e24d00f6010000000000004afe4d00f7010000000000002c1a4e00f801000000000000ea2c4e00f90100000000000049364e00fa010000000000004e524e00fb01000000000000628a4e00fc0100000000000079a64e00fd010000000000001ab94e00fe0100000000000079c24e00ff0100000000000094de4e000002000000000000aafa4e00010200000000000059324f00020200000000000004654f000302000000000000ff764f0004020000000000000d804f0005020000000000007e924f000602000000000000c29b4f000702000000000000f4d34f000802000000000000160c50000902000000000000504450000a02000000000000877c50000b02000000000000b6b450000c02000000000000e7ec50000d0200000000000046f650000e02000000000000b61b51000f020000000000001625510010020000000000004f5d510011020000000000000f7051001202000000000000889551001302000000000000b5cd5100140200000000000014d751001502000000000000e605520016020000000000001f3e5200170200000000000053765200180200000000000089ae52001902000000000000e8b752001a02000000000000b7e652001b0200000000000074f952001c02000000000000e81e53001d020000000000001a5753001e02000000000000558f53001f020000000000008ac753002002000000000000b9ff53002102000000000000f13754002202000000000000277054002302000000000000418c54002402000000000000d1a354002502000000000000d9c8540026020000000000007edb54002702000000000000b81355002802000000000000e34b55002902000000000000c58355002a02000000000000d6bb55002b0200000000000007f455002c02000000000000c30656002d020000000000002c2c56002e020000000000005d6456002f020000000000008f9c56003002000000000000c9d456003102000000000000070d570032020000000000004345570033020000000000007a7d570034020000000000007d99570035020000000000009ab557003602000000000000b4ed57003702000000000000f225580038020000000000002f5e580039020000000000006b9658003a02000000000000a6ce58003b02000000000000e30659003c02000000000000183f59003d02000000000000517759003e02000000000000ad8059003f020000000000008baf59004002000000000000e9b859004102000000000000c5e75900420200000000000002205a0043020000000000003f585a0044020000000000007c905a004502000000000000bcc85a004602000000000000f1005b004702000000000000111d5b00480200000000000030395b0049020000000000006f715b004a02000000000000aca95b004b02000000000000e9e15b004c02000000000000251a5c004d0200000000000060525c004e020000000000009f8a5c004f02000000000000dbc25c00500200000000000019fb5c00510200000000000058335d005202000000000000956b5d005302000000000000c7a35d005402000000000000f7db5d00550200000000000031145e0056020000000000006f4c5e005702000000000000a7845e005802000000000000e0bc5e0059020000000000003fc65e005a020000000000001cf55e005b02000000000000582d5f005c0200000000000093655f005d02000000000000cf9d5f005e0200000000000005d65f005f02000000000000440e600060020000000000008346600061020000000000006a7e6000620200000000000056b46000630200000000000000ec60006402000000000000a72361006502000000000000e25b61006602000000000000f293610067020000000000001bcc61006802000000000000dade61006902000000000000590462006a02000000000000963c62006b02000000000000cc7462006c020000000000008c8762006d02000000000000ffac62006e020000000000003ae562006f02000000000000731d63007002000000000000b05563007102000000000000e98d630072020000000000001dc6630073020000000000005dfe63007402000000000000993664007502000000000000d86e6400760200000000000017a76400770200000000000051df640078020000000000008a1765007902000000000000c34f65007a02000000000000018865007b020000000000003ec065007c020000000000007af865007d02000000000000b63066007e02000000000000f06866007f0200000000000004a16600800200000000000041d966008102000000000000711167008202000000000000ac4967008302000000000000de8167008402000000000000f8b967008502000000000000b8cc6700860200000000000035f2670087020000000000006e2a680088020000000000001c3d680089020000000000007f6268008a02000000000000ba9a68008b02000000000000f3d268008c02000000000000310b69008d02000000000000704369008e02000000000000ae7b69008f02000000000000eeb3690090020000000000002bec6900910200000000000065246a009202000000000000a45c6a009302000000000000e0946a0094020000000000001dcd6a009502000000000000dbdf6a00960200000000000059056b00970200000000000018186b009802000000000000923d6b009902000000000000b0756b009a02000000000000e6ad6b009b0200000000000021e66b009c020000000000005e1e6c009d0200000000000096566c009e02000000000000d28e6c009f020000000000000ac76c00a00200000000000047ff6c00a10200000000000077376d00a202000000000000876f6d00a3020000000000000fa76d00a40200000000000059dc6d00a50200000000000022146e00a602000000000000464c6e00a70200000000000071846e00a802000000000000eea96e00a902000000000000aabc6e00aa0200000000000085eb6e00ab02000000000000e4f46e00ac020000000000001c2d6f00ad02000000000000da3f6f00ae0200000000000053656f00af020000000000008c9d6f00b002000000000000c4d56f00b102000000000000d90d7000b202000000000000d7457000b302000000000000f67d7000b402000000000000deb57000b502000000000000b2ed7000b602000000000000a9257100b702000000000000975d7100b802000000000000338c7100b9020000000000007e957100ba0200000000000068b17100bb0200000000000050cd7100bc020000000000001c057200bd02000000000000610e7200be02000000000000c13c7200bf020000000000006b747200c0020000000000005aac7200c10200000000000032e47200c202000000000000dcf67200c302000000000000321c7300c4020000000000002b547300c5020000000000007d8b7300c60200000000000020c37300c702000000000000cefa7300c8020000000000003c327400c9020000000000009b697400ca02000000000000eda07400cb0200000000000056d87400cc0200000000000090107500cd02000000000000ad2c7500ce020000000000000b367500cf02000000000000c7487500d002000000000000fe807500d10200000000000039b97500d20200000000000073f17500d30200000000000030047600d4020000000000004b207600d502000000000000a9297600d60200000000000006337600d702000000000000d3617600d80200000000000090747600d902000000000000089a7600da020000000000002fd27600db020000000000001a0a7700dc0200000000000022427700dd02000000000000007a7700de02000000000000d2b17700df02000000000000f8e97700e0020000000000002b227800e102000000000000635a7800e202000000000000a0927800e302000000000000daca7800e40200000000000011037900e502000000000000483b7900e60200000000000085737900e702000000000000b1ab7900e802000000000000dae37900e902000000000000121c7a00ea0200000000000049547a00eb02000000000000878c7a00ec02000000000000bfc47a00ed02000000000000edfc7a00ee0200000000000026357b00ef02000000000000606d7b00f0020000000000009da57b00f102000000000000cddd7b00f20200000000000006167c00f3020000000000003f4e7c00f402000000000000fb607c00f50200000000000077867c00f602000000000000b4be7c00f70200000000000014c87c00f802000000000000e0f67c00f9020000000000001b2f7d00fa0200000000000058677d00fb02000000000000959f7d00fc02000000000000d2d77d00fd02000000000000ec0f7e00fe0200000000000025487e00ff020000000000005f807e0000030000000000009ab87e000103000000000000d3f07e000203000000000000ee0c7f0003030000000000000a297f000403000000000000c53b7f00050300000000000043617f0006030000000000007b997f000703000000000000b9d17f000803000000000000f20980000903000000000000284280000a030000000000005e7a80000b0300000000000099b280000c03000000000000d2ea80000d03000000000000082381000e030000000000003e5b81000f030000000000007b9381001003000000000000b8cb81001103000000000000f30382001203000000000000313c82001303000000000000697482001403000000000000a6ac82001503000000000000c4c882001603000000000000e0e482001703000000000000ff00830018030000000000001e1d83001903000000000000dd2f83001a030000000000005b5583001b03000000000000988d83001c03000000000000d5c583001d0300000000000010fe83001e030000000000004e3684001f03000000000000826e84002003000000000000bba684002103000000000000f5de840022030000000000006f0485002303000000000000cc0d850024030000000000002c1785002503000000000000ea2985002603000000000000634f850027030000000000007e6b850028030000000000009a878500290300000000000017ad85002a03000000000000d2bf85002b0300000000000031c985002c030000000000000ef885002d030000000000004a3086002e03000000000000866886002f03000000000000bea086003003000000000000f2d8860031030000000000002a1187003203000000000000871a870033030000000000006449870034030000000000001d5c87003503000000000000998187003603000000000000cfb987003703000000000000eed5870038030000000000000cf2870039030000000000004a2a88003a03000000000000a83388003b03000000000000826288003c03000000000000b69a88003d03000000000000efd288003e030000000000002d0b89003f030000000000004d27890040030000000000006c4389004103000000000000ab7b89004203000000000000eab38900430300000000000028ec8900440300000000000068248a004503000000000000a05c8a004603000000000000b4948a004703000000000000f4cc8a00480300000000000030058b0049030000000000006f3d8b004a030000000000008e598b004b03000000000000ae758b004c03000000000000ecad8b004d0300000000000028e68b004e03000000000000331e8c004f030000000000004f568c0050030000000000008e8e8c005103000000000000c7c68c00520300000000000005ff8c00530300000000000041378d005403000000000000746f8d005503000000000000a4a78d00560300000000000064ba8d005703000000000000e4df8d0058030000000000000a188e00590300000000000023508e005a0300000000000027888e005b03000000000000d89a8e005c0300000000000043c08e005d0300000000000082f88e005e03000000000000c0308f005f03000000000000ff688f0060030000000000001ba18f00610300000000000059d98f006203000000000000981190006303000000000000d64990006403000000000000f56590006503000000000000158290006603000000000000758b9000670300000000000053ba9000680300000000000092f290006903000000000000d22a91006a03000000000000106391006b03000000000000489b91006c03000000000000a2a491006d030000000000001bd391006e03000000000000530992006f03000000000000d32e9200700300000000000090419200710300000000000074799200720300000000000094b19200730300000000000072e092007403000000000000d2e992007503000000000000b21893007603000000000000122293007703000000000000445a93007803000000000000739293007903000000000000f3b793007a03000000000000abca93007b030000000000005ddd93007c03000000000000c40294007d03000000000000e13a94007e03000000000000217394007f0300000000000059ab9400800300000000000090e394008103000000000000c31b95008203000000000000ea53950083030000000000009866950084030000000000000b8c9500850300000000000046c49500860300000000000057fc950087030000000000008f3496008803000000000000cf6c960089030000000000000ba596008a0300000000000045dd96008b03000000000000a3e696008c03000000000000801597008d03000000000000bc4d97008e03000000000000f78597008f030000000000002ebe9700900300000000000030f6970091030000000000005a2e98009203000000000000956698009303000000000000d49e9800940300000000000014d7980095030000000000003b0f990096030000000000006c4799009703000000000000ac7f9900980300000000000078b79900990300000000000026ca99009a030000000000007cef99009b0300000000000085279a009c03000000000000be5f9a009d03000000000000fd979a009e03000000000000b9aa9a009f0300000000000022d09a00a0030000000000003dec9a00a10300000000000058089b00a20300000000000074249b00a3030000000000008b409b00a403000000000000e4499b00a50300000000000038789b00a60300000000000076819b00a703000000000000e4af9b00a803000000000000b7e79b00a903000000000000731f9c00aa03000000000000a6289c00ab030000000000002f3b9c00ac0300000000000012579c00ad030000000000005d609c00ae03000000000000cb8e9c00af0300000000000057a19c00b00300000000000086c69c00b1030000000000005afe9c00b20300000000000002369d00b303000000000000bc6d9d00b40300000000000099a59d00b5030000000000004edd9d00b603000000000000db149e00b703000000000000e0399e00b803000000000000724c9e00b9030000000000002a849e00ba03000000000000ee9f9e00bb03000000000000d1bb9e00bc030000000000007df39e00bd03000000000000f02a9f00be030000000000006a629f00bf03000000000000ff999f00c0030000000000002ed19f00c1030000000000004608a000c203000000000000893fa000c303000000000000a476a000c403000000000000dfada000c5030000000000001cb7a000c6030000000000003ce5a000c703000000000000921ca100c8030000000000008c53a100c903000000000000988aa100ca0300000000000010a6a100cb03000000000000a0c1a100cc03000000000000e5d3a100cd0300000000000072f8a100ce030000000000007c2fa200cf030000000000003766a200d003000000000000389da200d10300000000000056a6a200d203000000000000a9b8a200d303000000000000cac1a200d4030000000000001ad4a200d503000000000000200ba300d6030000000000002714a300d703000000000000bc41a300d8030000000000006778a300d9030000000000000aafa300da0300000000000046dca300db0300000000000065e5a300dc03000000000000a81ba400dd03000000000000d72da400de030000000000002352a400df030000000000006288a400e003000000000000c1bea400e103000000000000f8f4a400e203000000000000212ba500e3030000000000003f61a500e403000000000000656aa500e503000000000000e497a500e60300000000000040cea500e703000000000000b204a600e803000000000000fc3aa600e9030000000000009471a600ea0300000000000037a8a600eb030000000000001adfa600ec03000000000000ea0ca700ed030000000000000e16a700ee030000000000005228a700ef030000000000007d31a700f003000000000000034da700f1030000000000002084a700f2030000000000004a8da700f303000000000000a99fa700f403000000000000f6baa700f503000000000000c1f1a700f603000000000000be28a800f703000000000000a65fa800f8030000000000003e7ba800f903000000000000c296a800fa03000000000000c3cda800fb03000000000000d504a900fc03000000000000f83ba900fd030000000000005f73a900fe03000000000000ceaaa900ff030000000000000bb4a900000400000000000005e2a90001040000000000005e19aa000204000000000000c12baa0003040000000000008e50aa000404000000000000fd62aa0005040000000000008175aa000604000000000000fa87aa0007040000000000002f91aa0008040000000000005dbfaa000904000000000000a3c8aa000a04000000000000e5f6aa000b04000000000000e41bab000c040000000000005b2eab000d04000000000000e765ab000e040000000000004c9dab000f0400000000000085a6ab001004000000000000b8d4ab001104000000000000fdddab0012040000000000003b0cac001304000000000000d043ac001404000000000000827bac001504000000000000b8a0ac0016040000000000005bb3ac00170400000000000029ebac0018040000000000006af4ac0019040000000000000e07ad001a04000000000000f422ad001b04000000000000432cad001c040000000000009935ad001d04000000000000ee3ead001e04000000000000d55aad001f04000000000000bd76ad002004000000000000a592ad00210400000000000076caad002204000000000000f6dcad002304000000000000e001ae0024040000000000004f39ae0025040000000000001371ae0026040000000000005f7aae002704000000000000fc8cae002804000000000000cda8ae0029040000000000005ebbae002a0400000000000081e0ae002b040000000000004f18af002c040000000000001e50af002d04000000000000e687af002e04000000000000a0bfaf002f040000000000005ff7af003004000000000000042fb0003104000000000000da66b00032040000000000009a9eb000330400000000000063d6b0003404000000000000300eb1003504000000000000da45b10036040000000000009a7db100370400000000000050b5b100380400000000000029edb1003904000000000000971bb2003a04000000000000e024b2003b04000000000000995cb2003c040000000000006694b2003d0400000000000048b0b2003e040000000000002eccb2003f0400000000000075d5b200400400000000000008e8b2004104000000000000e703b3004204000000000000ce1fb3004304000000000000b63bb30044040000000000000d45b30045040000000000009f57b30046040000000000007573b3004704000000000000c67cb30048040000000000003aabb3004904000000000000e4e2b3004a04000000000000651ab4004b04000000000000f951b4004c040000000000009389b4004d0400000000000025c1b4004e04000000000000f6f8b4004f04000000000000241eb5005004000000000000b130b50051040000000000007068b500520400000000000040a0b5005304000000000000ecd7b50054040000000000000510b60055040000000000003e48b60056040000000000007a80b6005704000000000000b7b8b6005804000000000000f3f0b60059040000000000002f29b7005a04000000000000ae4eb7005b040000000000006861b7005c04000000000000a599b7005d04000000000000ded1b7005e040000000000005cf7b7005f04000000000000160ab80060040000000000005042b8006104000000000000964bb8006204000000000000687ab8006304000000000000a6b2b800640400000000000066c5b8006504000000000000e5eab80066040000000000000423b90067040000000000003f5bb90068040000000000005d77b90069040000000000007b93b9006a04000000000000b7cbb9006b04000000000000ef03ba006c04000000000000133cba006d040000000000003358ba006e040000000000005174ba006f0400000000000042acba0070040000000000006ce4ba007104000000000000a21cbb007204000000000000e054bb007304000000000000405ebb0074040000000000001b8dbb0075040000000000002ec5bb0076040000000000006dfdbb007704000000000000a435bc007804000000000000d06dbc0079040000000000000ca6bc007a040000000000004adebc007b040000000000008716bd007c04000000000000c34ebd007d04000000000000fc86bd007e040000000000003bbfbd007f040000000000007af7bd008004000000000000d500be008104000000000000b32fbe008204000000000000ea67be00830400000000000027a0be00840400000000000065d8be008504000000000000a410bf008604000000000000dd48bf0087040000000000003b52bf0088040000000000001881bf0089040000000000008fb8bf008a04000000000000cbc1bf008b04000000000000f8efbf008c040000000000007602c0008d040000000000008327c0008e04000000000000075fc0008f040000000000005d96c000900400000000000009cec00091040000000000003b06c10092040000000000002d3ec10093040000000000006476c10094040000000000007aaec1009504000000000000b9e6c1009604000000000000ef1ec20097040000000000002c57c2009804000000000000698fc20099040000000000008cc7c2009a040000000000009effc2009b04000000000000da37c3009c04000000000000ee6fc3009d0400000000000029a8c3009e0400000000000067e0c3009f04000000000000240fc400a0040000000000008218c400a104000000000000b150c400a204000000000000c088c400a304000000000000d2c0c400a404000000000000f6f8c400a5040000000000001231c500a604000000000000d143c500a7040000000000004d69c500a80400000000000089a1c500a904000000000000c4d9c500aa040000000000000112c600ab040000000000005c1bc600ac040000000000003a4ac600ad040000000000007482c600ae04000000000000abbac600af04000000000000e4f2c600b0040000000000001d2bc700b1040000000000002e47c700b2040000000000004863c700b304000000000000687fc700b404000000000000829bc700b5040000000000009bd3c700b604000000000000d80bc800b7040000000000001144c800b804000000000000704dc800b904000000000000d056c800ba040000000000004e7cc800bb0400000000000080b4c800bc04000000000000b1ecc800bd040000000000009808c900be040000000000008d24c900bf04000000000000c75cc900c004000000000000df94c900c104000000000000feb0c900c2040000000000001dcdc900c3040000000000004605ca00c4040000000000006e3dca00c5040000000000009e75ca00c604000000000000029bca00c704000000000000aeadca00c8040000000000008adcca00c904000000000000eae5ca00ca04000000000000251ecb00cb04000000000000fa55cb00cc04000000000000778ccb00cd04000000000000eec3cb00ce0400000000000005fccb00cf040000000000004134cc00d004000000000000716ccc00d10400000000000096a4cc00d204000000000000d3dccc00d30400000000000086efcc00d4040000000000000215cd00d504000000000000ac27cd00d604000000000000264dcd00d7040000000000008656cd00d8040000000000006385cd00d9040000000000003bb4cd00da0400000000000099bdcd00db04000000000000d8f5cd00dc04000000000000172ece00dd040000000000005366ce00de04000000000000909ece00df04000000000000b7d6ce00e00400000000000068e9ce00e104000000000000cc0ecf00e2040000000000000547cf00e304000000000000427fcf00e40400000000000079b7cf00e504000000000000b8efcf00e604000000000000f427d000e7040000000000000b60d000e8040000000000004698d000e90400000000000083d0d000ea04000000000000c008d100eb04000000000000fa40d100ec040000000000003679d100ed0400000000000073b1d100ee0400000000000087cdd100ef04000000000000a6e9d100f004000000000000e521d200f1040000000000001e5ad200f2040000000000005692d200f30400000000000092cad200f40400000000000052ddd200f504000000000000ce02d300f604000000000000e13ad300f7040000000000003444d300f804000000000000dc56d300f904000000000000ef72d300fa040000000000004d7cd300fb0400000000000024abd300fc04000000000000a1d0d300fd040000000000005be3d300fe04000000000000901bd400ff04000000000000ce53d40000050000000000000a8cd40001050000000000003ac4d40002050000000000004ae0d400030500000000000069fcd4000405000000000000a134d50005050000000000006047d5000605000000000000de6cd50007050000000000001ba5d500080500000000000058ddd50009050000000000009415d6000a05000000000000d24dd6000b05000000000000f085d6000c050000000000001ebed6000d05000000000000fbecd6000e050000000000005bf6d6000f050000000000008b2ed7001005000000000000c566d7001105000000000000029fd700120500000000000036d7d70013050000000000006f0fd80014050000000000009f47d8001505000000000000c97fd8001605000000000000e4b7d80017050000000000001ff0d80018050000000000005928d90019050000000000009560d9001a050000000000005473d9001b05000000000000718fd9001c05000000000000d198d9001d0500000000000031a2d9001e050000000000000fd1d9001f05000000000000cfe3d90020050000000000004f09da0021050000000000008941da002205000000000000b979da002305000000000000edb1da00240500000000000047bbda00250500000000000054d7da00260500000000000007eada00270500000000000067f3da0028050000000000003a22db0029050000000000005e5adb002a050000000000007892db002b05000000000000b0cadb002c05000000000000e702dc002d05000000000000183bdc002e050000000000007644dc002f050000000000002773dc003005000000000000dd85dc0031050000000000004dabdc00320500000000000086e3dc003305000000000000bb1bdd003405000000000000944add003505000000000000f453dd003605000000000000ad66dd003705000000000000298cdd00380500000000000060c4dd0039050000000000009cfcdd003a05000000000000fa05de003b05000000000000d734de003c05000000000000b56cde003d0500000000000045a4de003e05000000000000a1d2de003f05000000000000e4dbde0040050000000000002fe5de0041050000000000003c05df004205000000000000d81adf004305000000000000d636df0044050000000000002840df004505000000000000d252df004605000000000000cf6edf004705000000000000a9a6df004805000000000000eeafdf00490500000000000047b9df004a05000000000000b1dedf004b050000000000000de8df004c050000000000006e0de0004d05000000000000cb16e0004e05000000000000d84ee0004f050000000000007886e0005005000000000000b3bee0005105000000000000c3f6e0005205000000000000fe2ee10053050000000000002c67e1005405000000000000e679e1005505000000000000a68ce1005605000000000000629fe10057050000000000009bd7e10058050000000000005806e2005905000000000000b10fe2005a05000000000000e647e2005b050000000000001880e2005c050000000000007689e2005d050000000000004cb8e2005e050000000000007ef0e2005f05000000000000b228e3006005000000000000e760e30061050000000000002499e300620500000000000060d1e30063050000000000009c09e4006405000000000000d441e4006505000000000000334be40066050000000000000a7ae4006705000000000000e0a8e400680500000000000040b2e40069050000000000006feae4006a05000000000000a022e5006b05000000000000de5ae5006c050000000000001a93e5006d0500000000000055cbe5006e050000000000000bdee5006f050000000000008203e6007005000000000000db0ce6007105000000000000b53be6007205000000000000f073e60073050000000000004e7de60074050000000000002cace60075050000000000008cb5e60076050000000000006be4e6007705000000000000a51ce7007805000000000000dc54e7007905000000000000168de7007a050000000000004ac5e7007b0500000000000057fde7007c050000000000009335e8007d05000000000000d06de8007e050000000000002e77e8007f0500000000000004a6e80080050000000000003fdee80081050000000000007b16e9008205000000000000b74ee9008305000000000000e886e900840500000000000015bfe900850500000000000046f7e9008605000000000000602fea0087050000000000000442ea0088050000000000005a4bea0089050000000000006a67ea008a05000000000000889fea008b05000000000000daa8ea008c0500000000000079d7ea008d050000000000009f0feb008e050000000000005c22eb008f050000000000001c35eb009005000000000000d847eb0091050000000000000e80eb0092050000000000003eb8eb00930500000000000076f0eb009405000000000000ad28ec009505000000000000e660ec0096050000000000002399ec00970500000000000060d1ec0098050000000000009e09ed0099050000000000005e1ced009a05000000000000da41ed009b050000000000009654ed009c050000000000005567ed009d05000000000000127aed009e050000000000004ab2ed009f0500000000000082eaed00a005000000000000e1f3ed00a105000000000000bd22ee00a205000000000000fa5aee00a3050000000000003493ee00a405000000000000929cee00a50500000000000070cbee00a605000000000000ac03ef00a705000000000000eb3bef00a805000000000000fb73ef00a905000000000000feabef00aa05000000000000bebeef00ab0500000000000038e4ef00ac050000000000004e1cf000ad050000000000008854f000ae05000000000000958cf000af05000000000000c5c4f000b005000000000000fffcf000b1050000000000002e35f100b205000000000000de47f100b305000000000000466df100b4050000000000005da5f100b50500000000000094ddf100b605000000000000c115f200b705000000000000fa4df200b8050000000000002d86f200b90500000000000067bef200ba05000000000000a0f6f200bb05000000000000b52ef300bc050000000000003254f300bd05000000000000ef66f300be05000000000000239ff300bf0500000000000032d7f300c005000000000000dde9f300c1050000000000001e0ff400c2050000000000004f47f400c3050000000000008d7ff400c4050000000000006bb7f400c5050000000000009beff400c605000000000000c927f500c705000000000000ff5ff500c8050000000000003198f500c90500000000000063d0f500ca050000000000008908f600cb05000000000000c240f600cc050000000000001d66f600cd05000000000000ca78f600ce05000000000000fbb0f600cf0500000000000031e9f600d0050000000000006021f700d1050000000000009e59f700d205000000000000d891f700d3050000000000000acaf700d4050000000000004402f800d5050000000000007b3af800d605000000000000fa5ff800d705000000000000b672f800d805000000000000ebaaf800d90500000000000048b4f800da0500000000000024e3f800db05000000000000601bf900dc050000000000009753f900dd05000000000000ac8bf900de05000000000000e3c3f900df050000000000001cfcf900e0050000000000005934fa00e105000000000000936cfa00e205000000000000a7a4fa00e305000000000000dfdcfa00e4050000000000001a15fb00e5050000000000004d4dfb00e605000000000000a656fb00e7050000000000007b85fb00e805000000000000a2bdfb00e905000000000000dff5fb00ea050000000000005f1bfc00eb050000000000001e2efc00ec050000000000005266fc00ed050000000000000c79fc00ee05000000000000cc8bfc00ef050000000000002995fc00f005000000000000899efc00f105000000000000c1d6fc00f2050000000000007ee9fc00f3050000000000003dfcfc00f405000000000000f00efd00f5050000000000004c18fd00f6050000000000001a47fd00f7050000000000004a7ffd00f80500000000000086b7fd00f905000000000000beeffd00fa050000000000001ef9fd00fb05000000000000ee27fe00fc050000000000000944fe00fd050000000000002560fe00fe05000000000000307cfe00ff050000000000002798fe000006000000000000e2aafe00010600000000000042b4fe0002060000000000005dd0fe0003060000000000009a08ff000406000000000000ca40ff000506000000000000244aff000606000000000000f278ff0007060000000000002db1ff00080600000000000063e9ff000906000000000000712100010a06000000000000313400010b060000000000004c5000010c06000000000000ac5900010d06000000000000b49100010e06000000000000e3c900010f06000000000000f60101011006000000000000103a010111060000000000003056010112060000000000004c720101130600000000000084aa01011406000000000000c2e201011506000000000000fe1a02011606000000000000235302011706000000000000618b020118060000000000009dc3020119060000000000005ad602011a06000000000000badf02011b06000000000000d7fb02011c06000000000000370503011d06000000000000f71703011e06000000000000133403011f06000000000000516c03012006000000000000107f030121060000000000008da403012206000000000000cadc03012306000000000000f81404012406000000000000324d0401250600000000000070850401260600000000000080bd040127060000000000008bf504012806000000000000842d05012906000000000000d73605012a060000000000008b6505012b06000000000000c19d05012c06000000000000f9d505012d060000000000002e0e06012e06000000000000664606012f060000000000009d7e06013006000000000000d7b60601310600000000000011ef06013206000000000000442707013306000000000000725f07013406000000000000af9707013506000000000000e7cf070136060000000000001f0808013706000000000000372408013806000000000000544008013906000000000000917808013a06000000000000c8b008013b0600000000000001e908013c060000000000000f2109013d06000000000000085909013e06000000000000a99009013f06000000000000b5c809014006000000000000c5000a014106000000000000d2380a01420600000000000006710a014306000000000000f5a80a0144060000000000002be10a01450600000000000012190b01460600000000000048510b01470600000000000086890b014806000000000000e5920b014906000000000000c4c10b014a0600000000000000fa0b014b060000000000001d320c014c060000000000000b6a0c014d06000000000000c5980c014e060000000000001aa20c014f06000000000000d7d00c0150060000000000002dda0c01510600000000000069120d015206000000000000a44a0d015306000000000000df820d0154060000000000001dbb0d01550600000000000055f30d015606000000000000852b0e01570600000000000083630e015806000000000000c39b0e0159060000000000001ba50e015a060000000000007bae0e015b06000000000000f7d30e015c06000000000000afe60e015d06000000000000290c0f015e0600000000000065440f015f06000000000000db690f016006000000000000977c0f016106000000000000d2b40f016206000000000000ecec0f016306000000000000062510016406000000000000ea5c10016506000000000000f49410016606000000000000ffcc100167060000000000005ed610016806000000000000d6fb10016906000000000000340511016a06000000000000613d11016b060000000000008b7511016c06000000000000919111016d06000000000000abad11016e06000000000000e0e511016f060000000000001d1e120170060000000000005556120171060000000000006c8e120172060000000000008aaa12017306000000000000a3c612017406000000000000bdfe12017506000000000000f83613017606000000000000126f130177060000000000006c9413017806000000000000c99d1301790600000000000029a713017a060000000000005bdf13017b06000000000000b8e813017c0600000000000016f213017d060000000000008d1714017e06000000000000ec2014017f06000000000000a43314018006000000000000bc4f14018106000000000000d58714018206000000000000919a1401830600000000000005c0140184060000000000005fc914018506000000000000f8f714018606000000000000a10a15018706000000000000fa1315018806000000000000561d15018906000000000000fa2f15018a06000000000000513915018b06000000000000aa4215018c06000000000000106815018d060000000000002f8415018e060000000000004ba015018f060000000000002cbc15019006000000000000ccce1501910600000000000019d81501920600000000000076e115019306000000000000331016019406000000000000664816019506000000000000998016019606000000000000d5b81601970600000000000093cb16019806000000000000f3d4160199060000000000000ff116019a06000000000000cd0317019b06000000000000492917019c06000000000000a33217019d06000000000000444517019e060000000000003a6117019f06000000000000117d1701a0060000000000001c991701a10600000000000059d11701a2060000000000008c091801a306000000000000c2411801a4060000000000001e4b1801a50600000000000037671801a606000000000000f2791801a7060000000000001fb21801a806000000000000dec41801a90600000000000056ea1801aa0600000000000005fd1801ab0600000000000079221901ac06000000000000b25a1901ad06000000000000e5921901ae06000000000000f9ca1901af060000000000005df01901b00600000000000017031a01b1060000000000003a3b1a01b206000000000000e64d1a01b30600000000000044731a01b406000000000000a37c1a01b50600000000000078ab1a01b6060000000000006ee31a01b706000000000000921b1b01b806000000000000be531b01b9060000000000001d5d1b01ba06000000000000ec8b1b01bb0600000000000009c41b01bc06000000000000e5fb1b01bd06000000000000f1331c01be06000000000000ef6b1c01bf06000000000000a39a1c01c006000000000000fba31c01c106000000000000f2db1c01c206000000000000f8131d01c306000000000000df4b1d01c40600000000000075831d01c506000000000000aaa81d01c6060000000000003bbb1d01c7060000000000002fd71d01c80600000000000017f31d01c90600000000000067fc1d01ca06000000000000ad211e01cb06000000000000fb2a1e01cc0600000000000052341e01cd06000000000000da621e01ce06000000000000c87e1e01cf06000000000000b09a1e01d00600000000000089d21e01d1060000000000000fe51e01d2060000000000005fee1e01d3060000000000003b0a1f01d406000000000000f8411f01d50600000000000098541f01d606000000000000ac5d1f01d70600000000000094791f01d8060000000000006eb11f01d90600000000000038e91f01da060000000000000b212001db06000000000000e6582001dc06000000000000c8902001dd0600000000000062a32001de060000000000007ac82001df060000000000001cdb2001e0060000000000005d002101e10600000000000021382101e206000000000000f76f2101e3060000000000003d792101e406000000000000cea72101e50600000000000095df2101e6060000000000006e172201e706000000000000334f2201e80600000000000085582201e90600000000000010872201ea06000000000000eea22201eb06000000000000cbbe2201ec06000000000000a9da2201ed060000000000009ef62201ee060000000000003d092301ef06000000000000782e2301f0060000000000000c412301f1060000000000005e4a2301f20600000000000045662301f3060000000000003b822301f406000000000000299e2301f506000000000000fed52301f606000000000000990d2401f7060000000000002c202401f806000000000000173c2401f90600000000000063452401fa06000000000000fd572401fb060000000000002a7d2401fc0600000000000000b52401fd06000000000000b8ec2401fe0600000000000037242501ff06000000000000155c25010007000000000000e69325010107000000000000a6cb25010207000000000000630326010307000000000000b30c260104070000000000000916260105070000000000005b1f26010607000000000000523b260107070000000000004857260108070000000000002d732601090700000000000018ab26010a07000000000000fdc626010b07000000000000ede226010c070000000000008d1127010d07000000000000e31a27010e07000000000000cc5227010f07000000000000ac8a270110070000000000004b9d2701110700000000000090c22701120700000000000087fa27011307000000000000583228011407000000000000fe6928011507000000000000557328011607000000000000f4a128011707000000000000ced9280118070000000000007d1129011907000000000000414929011a070000000000001a8129011b07000000000000deb829011c07000000000000bff029011d07000000000000a8282a011e070000000000008b602a011f07000000000000dc692a0120070000000000002d732a0121070000000000007a7c2a012207000000000000198f2a01230700000000000069982a01240700000000000003ab2a0125070000000000004ab42a0126070000000000009ebd2a01270700000000000041d02a012807000000000000e7e22a01290700000000000089f52a012a0700000000000023082b012b07000000000000cb1a2b012c0700000000000018242b012d070000000000006b2d2b012e07000000000000ba362b012f070000000000000e402b013007000000000000af522b013107000000000000035c2b0132070000000000004c652b0133070000000000009b6e2b013407000000000000e4772b013507000000000000abaf2b013607000000000000f8b82b01370700000000000052c22b013807000000000000f0d42b0139070000000000008de72b013a0700000000000081032c013b070000000000005e1f2c013c070000000000004a3b2c013d0700000000000037572c013e070000000000000a8f2c013f070000000000005e982c014007000000000000eeaa2c0141070000000000007fbd2c014207000000000000d2c62c014307000000000000b6fe2c0144070000000000008f362d01" }, "name": "Polkadot", "properties": { diff --git a/artifacts/polkadot_metadata_full.scale b/artifacts/polkadot_metadata_full.scale index ddde0b5f46309aace441be7ba555ebe4ca95fb6a..070797601ace8ba50f323a28614bb73c82350cdb 100644 GIT binary patch delta 131879 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

sd!&hEY+#ao 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⁡$Ik_7yb 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 O-h7Dr8a%ztY5PCLWZU@w delta 38185 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 SG~wa)6$)(fOe_IUc^Lq4tee&V diff --git a/artifacts/polkadot_metadata_small.scale b/artifacts/polkadot_metadata_small.scale index af3db68469505fdb1953b0bb95f140e5bcbe8e2a..8f750277f4ba91150acb8b9643b38e61b265c06c 100644 GIT binary patch delta 15598 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 delta 6647 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 Hmb3o{%aEmM diff --git a/artifacts/polkadot_metadata_tiny.scale b/artifacts/polkadot_metadata_tiny.scale index bd9195401d5bc52b8de6c69a8c6e513784ab7eb9..c3525c9aa2757474cc48f5b6bde777f4955a1d70 100644 GIT binary patch delta 4870 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 PX6XJ%7ANH2;@STIunhnS delta 4976 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 diff --git a/testing/integration-tests/src/full_client/codegen/polkadot.rs b/testing/integration-tests/src/full_client/codegen/polkadot.rs index ba064ab70a..785f4d82a1 100644 --- a/testing/integration-tests/src/full_client/codegen/polkadot.rs +++ b/testing/integration-tests/src/full_client/codegen/polkadot.rs @@ -6,7 +6,7 @@ pub mod api { mod root_mod { pub use super::*; } - pub static PALLETS: [&str; 67usize] = [ + pub static PALLETS: [&str; 66usize] = [ "System", "Babe", "Timestamp", @@ -56,7 +56,6 @@ pub mod api { "ParasSlashing", "MessageQueue", "OnDemandAssignmentProvider", - "ParachainsAssignmentProvider", "CoretimeAssignmentProvider", "Registrar", "Slots", @@ -216,7 +215,7 @@ pub mod api { ], ) } - #[doc = " Initialize a block with the given header."] + #[doc = " Initialize a block with the given header and return the runtime executive mode."] pub fn initialize_block( &self, header: types::initialize_block::Header, @@ -229,9 +228,9 @@ pub mod api { "initialize_block", types::InitializeBlock { header }, [ - 146u8, 138u8, 72u8, 240u8, 63u8, 96u8, 110u8, 189u8, 77u8, 92u8, 96u8, - 232u8, 41u8, 217u8, 105u8, 148u8, 83u8, 190u8, 152u8, 219u8, 19u8, - 87u8, 163u8, 1u8, 232u8, 25u8, 221u8, 74u8, 224u8, 67u8, 223u8, 34u8, + 132u8, 169u8, 113u8, 112u8, 80u8, 139u8, 113u8, 35u8, 41u8, 81u8, 36u8, + 35u8, 37u8, 202u8, 29u8, 207u8, 205u8, 229u8, 145u8, 7u8, 133u8, 94u8, + 25u8, 108u8, 233u8, 86u8, 234u8, 29u8, 236u8, 57u8, 56u8, 186u8, ], ) } @@ -283,7 +282,7 @@ pub mod api { runtime_types::sp_runtime::generic::header::Header<::core::primitive::u32>; pub mod output { use super::runtime_types; - pub type Output = (); + pub type Output = runtime_types::sp_runtime::ExtrinsicInclusionMode; } } #[derive( @@ -4009,9 +4008,9 @@ pub mod api { .hash(); runtime_metadata_hash == [ - 242u8, 57u8, 130u8, 28u8, 242u8, 22u8, 24u8, 111u8, 149u8, 94u8, 72u8, 167u8, 72u8, - 22u8, 128u8, 181u8, 113u8, 19u8, 74u8, 216u8, 162u8, 229u8, 14u8, 254u8, 68u8, - 90u8, 180u8, 37u8, 184u8, 74u8, 59u8, 10u8, + 156u8, 238u8, 89u8, 253u8, 131u8, 142u8, 74u8, 227u8, 39u8, 8u8, 168u8, 223u8, + 105u8, 129u8, 225u8, 253u8, 181u8, 1u8, 91u8, 107u8, 103u8, 177u8, 147u8, 165u8, + 10u8, 219u8, 72u8, 215u8, 120u8, 62u8, 229u8, 179u8, ] } pub mod system { @@ -4037,7 +4036,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::remark`]."] + #[doc = "Make some on-chain remark."] + #[doc = ""] + #[doc = "Can be executed by every `origin`."] pub struct Remark { pub remark: remark::Remark, } @@ -4059,7 +4060,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_heap_pages`]."] + #[doc = "Set the number of pages in the WebAssembly environment's heap."] pub struct SetHeapPages { pub pages: set_heap_pages::Pages, } @@ -4081,7 +4082,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_code`]."] + #[doc = "Set the new runtime code."] pub struct SetCode { pub code: set_code::Code, } @@ -4103,7 +4104,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_code_without_checks`]."] + #[doc = "Set the new runtime code without doing any checks of the given `code`."] + #[doc = ""] + #[doc = "Note that runtime upgrades will not run if this is called with a not-increasing spec"] + #[doc = "version!"] pub struct SetCodeWithoutChecks { pub code: set_code_without_checks::Code, } @@ -4125,7 +4129,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_storage`]."] + #[doc = "Set some items of storage."] pub struct SetStorage { pub items: set_storage::Items, } @@ -4150,7 +4154,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::kill_storage`]."] + #[doc = "Kill some items from storage."] pub struct KillStorage { pub keys: kill_storage::Keys, } @@ -4172,7 +4176,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::kill_prefix`]."] + #[doc = "Kill all storage items with a key that starts with the given prefix."] + #[doc = ""] + #[doc = "**NOTE:** We rely on the Root origin to provide us the number of subkeys under"] + #[doc = "the prefix we are removing to accurately calculate the weight of this function."] pub struct KillPrefix { pub prefix: kill_prefix::Prefix, pub subkeys: kill_prefix::Subkeys, @@ -4196,7 +4203,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::remark_with_event`]."] + #[doc = "Make some on-chain remark and emit event."] pub struct RemarkWithEvent { pub remark: remark_with_event::Remark, } @@ -4218,7 +4225,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::authorize_upgrade`]."] + #[doc = "Authorize an upgrade to a given `code_hash` for the runtime. The runtime can be supplied"] + #[doc = "later."] + #[doc = ""] + #[doc = "This call requires Root origin."] pub struct AuthorizeUpgrade { pub code_hash: authorize_upgrade::CodeHash, } @@ -4240,7 +4250,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::authorize_upgrade_without_checks`]."] + #[doc = "Authorize an upgrade to a given `code_hash` for the runtime. The runtime can be supplied"] + #[doc = "later."] + #[doc = ""] + #[doc = "WARNING: This authorizes an upgrade that will take place without any safety checks, for"] + #[doc = "example that the spec name remains the same and that the version number increases. Not"] + #[doc = "recommended for normal use. Use `authorize_upgrade` instead."] + #[doc = ""] + #[doc = "This call requires Root origin."] pub struct AuthorizeUpgradeWithoutChecks { pub code_hash: authorize_upgrade_without_checks::CodeHash, } @@ -4262,7 +4279,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::apply_authorized_upgrade`]."] + #[doc = "Provide the preimage (runtime binary) `code` for an upgrade that has been authorized."] + #[doc = ""] + #[doc = "If the authorization required a version check, this call will ensure the spec name"] + #[doc = "remains unchanged and that the spec version has increased."] + #[doc = ""] + #[doc = "Depending on the runtime's `OnSetCode` configuration, this function may directly apply"] + #[doc = "the new `code` in the same block or attempt to schedule the upgrade."] + #[doc = ""] + #[doc = "All origins are allowed."] pub struct ApplyAuthorizedUpgrade { pub code: apply_authorized_upgrade::Code, } @@ -4277,7 +4302,9 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::remark`]."] + #[doc = "Make some on-chain remark."] + #[doc = ""] + #[doc = "Can be executed by every `origin`."] pub fn remark( &self, remark: types::remark::Remark, @@ -4294,7 +4321,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_heap_pages`]."] + #[doc = "Set the number of pages in the WebAssembly environment's heap."] pub fn set_heap_pages( &self, pages: types::set_heap_pages::Pages, @@ -4311,7 +4338,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_code`]."] + #[doc = "Set the new runtime code."] pub fn set_code( &self, code: types::set_code::Code, @@ -4327,7 +4354,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_code_without_checks`]."] + #[doc = "Set the new runtime code without doing any checks of the given `code`."] + #[doc = ""] + #[doc = "Note that runtime upgrades will not run if this is called with a not-increasing spec"] + #[doc = "version!"] pub fn set_code_without_checks( &self, code: types::set_code_without_checks::Code, @@ -4344,7 +4374,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_storage`]."] + #[doc = "Set some items of storage."] pub fn set_storage( &self, items: types::set_storage::Items, @@ -4361,7 +4391,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::kill_storage`]."] + #[doc = "Kill some items from storage."] pub fn kill_storage( &self, keys: types::kill_storage::Keys, @@ -4378,7 +4408,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::kill_prefix`]."] + #[doc = "Kill all storage items with a key that starts with the given prefix."] + #[doc = ""] + #[doc = "**NOTE:** We rely on the Root origin to provide us the number of subkeys under"] + #[doc = "the prefix we are removing to accurately calculate the weight of this function."] pub fn kill_prefix( &self, prefix: types::kill_prefix::Prefix, @@ -4396,7 +4429,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remark_with_event`]."] + #[doc = "Make some on-chain remark and emit event."] pub fn remark_with_event( &self, remark: types::remark_with_event::Remark, @@ -4412,7 +4445,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::authorize_upgrade`]."] + #[doc = "Authorize an upgrade to a given `code_hash` for the runtime. The runtime can be supplied"] + #[doc = "later."] + #[doc = ""] + #[doc = "This call requires Root origin."] pub fn authorize_upgrade( &self, code_hash: types::authorize_upgrade::CodeHash, @@ -4429,7 +4465,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::authorize_upgrade_without_checks`]."] + #[doc = "Authorize an upgrade to a given `code_hash` for the runtime. The runtime can be supplied"] + #[doc = "later."] + #[doc = ""] + #[doc = "WARNING: This authorizes an upgrade that will take place without any safety checks, for"] + #[doc = "example that the spec name remains the same and that the version number increases. Not"] + #[doc = "recommended for normal use. Use `authorize_upgrade` instead."] + #[doc = ""] + #[doc = "This call requires Root origin."] pub fn authorize_upgrade_without_checks( &self, code_hash: types::authorize_upgrade_without_checks::CodeHash, @@ -4446,7 +4489,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::apply_authorized_upgrade`]."] + #[doc = "Provide the preimage (runtime binary) `code` for an upgrade that has been authorized."] + #[doc = ""] + #[doc = "If the authorization required a version check, this call will ensure the spec name"] + #[doc = "remains unchanged and that the spec version has increased."] + #[doc = ""] + #[doc = "Depending on the runtime's `OnSetCode` configuration, this function may directly apply"] + #[doc = "the new `code` in the same block or attempt to schedule the upgrade."] + #[doc = ""] + #[doc = "All origins are allowed."] pub fn apply_authorized_upgrade( &self, code: types::apply_authorized_upgrade::Code, @@ -4639,6 +4690,10 @@ pub mod api { use super::runtime_types; pub type ExtrinsicCount = ::core::primitive::u32; } + pub mod inherents_applied { + use super::runtime_types; + pub type InherentsApplied = ::core::primitive::bool; + } pub mod block_weight { use super::runtime_types; pub type BlockWeight = runtime_types::frame_support::dispatch::PerDispatchClass< @@ -4782,6 +4837,27 @@ pub mod api { ], ) } + #[doc = " Whether all inherents have been applied."] + pub fn inherents_applied( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + types::inherents_applied::InherentsApplied, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "System", + "InherentsApplied", + vec![], + [ + 132u8, 249u8, 142u8, 252u8, 8u8, 103u8, 80u8, 120u8, 50u8, 6u8, 188u8, + 223u8, 101u8, 55u8, 165u8, 189u8, 172u8, 249u8, 165u8, 230u8, 183u8, + 109u8, 34u8, 65u8, 185u8, 150u8, 29u8, 8u8, 186u8, 129u8, 135u8, 239u8, + ], + ) + } #[doc = " The current weight for the block."] pub fn block_weight( &self, @@ -5267,7 +5343,7 @@ pub mod api { ], ) } - #[doc = " Get the chain's current version."] + #[doc = " Get the chain's in-code version."] pub fn version( &self, ) -> ::subxt::constants::Address @@ -5325,7 +5401,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::report_equivocation`]."] + #[doc = "Report authority equivocation/misbehavior. This method will verify"] + #[doc = "the equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence will"] + #[doc = "be reported."] pub struct ReportEquivocation { pub equivocation_proof: ::std::boxed::Box, @@ -5356,7 +5435,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + #[doc = "Report authority equivocation/misbehavior. This method will verify"] + #[doc = "the equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence will"] + #[doc = "be reported."] + #[doc = "This extrinsic must be called unsigned and it is expected that only"] + #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] + #[doc = "if the block author is defined it will be defined as the equivocation"] + #[doc = "reporter."] pub struct ReportEquivocationUnsigned { pub equivocation_proof: ::std::boxed::Box, @@ -5387,7 +5473,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::plan_config_change`]."] + #[doc = "Plan an epoch config change. The epoch config change is recorded and will be enacted on"] + #[doc = "the next call to `enact_epoch_change`. The config will be activated one epoch after."] + #[doc = "Multiple calls to this method will replace any existing planned config change that had"] + #[doc = "not been enacted yet."] pub struct PlanConfigChange { pub config: plan_config_change::Config, } @@ -5403,7 +5492,10 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::report_equivocation`]."] + #[doc = "Report authority equivocation/misbehavior. This method will verify"] + #[doc = "the equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence will"] + #[doc = "be reported."] pub fn report_equivocation( &self, equivocation_proof: types::report_equivocation::EquivocationProof, @@ -5424,7 +5516,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + #[doc = "Report authority equivocation/misbehavior. This method will verify"] + #[doc = "the equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence will"] + #[doc = "be reported."] + #[doc = "This extrinsic must be called unsigned and it is expected that only"] + #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] + #[doc = "if the block author is defined it will be defined as the equivocation"] + #[doc = "reporter."] pub fn report_equivocation_unsigned( &self, equivocation_proof: types::report_equivocation_unsigned::EquivocationProof, @@ -5444,7 +5543,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::plan_config_change`]."] + #[doc = "Plan an epoch config change. The epoch config change is recorded and will be enacted on"] + #[doc = "the next call to `enact_epoch_change`. The config will be activated one epoch after."] + #[doc = "Multiple calls to this method will replace any existing planned config change that had"] + #[doc = "not been enacted yet."] pub fn plan_config_change( &self, config: types::plan_config_change::Config, @@ -6088,7 +6190,25 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set`]."] + #[doc = "Set the current time."] + #[doc = ""] + #[doc = "This call should be invoked exactly once per block. It will panic at the finalization"] + #[doc = "phase, if this call hasn't been invoked by that time."] + #[doc = ""] + #[doc = "The timestamp should be greater than the previous one by the amount specified by"] + #[doc = "[`Config::MinimumPeriod`]."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _None_."] + #[doc = ""] + #[doc = "This dispatch class is _Mandatory_ to ensure it gets executed in the block. Be aware"] + #[doc = "that changing the complexity of this call could result exhausting the resources in a"] + #[doc = "block to execute any other calls."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)` (Note that implementations of `OnTimestampSet` must also be `O(1)`)"] + #[doc = "- 1 storage read and 1 storage mutation (codec `O(1)` because of `DidUpdate::take` in"] + #[doc = " `on_finalize`)"] + #[doc = "- 1 event handler `on_timestamp_set`. Must be `O(1)`."] pub struct Set { #[codec(compact)] pub now: set::Now, @@ -6104,7 +6224,25 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::set`]."] + #[doc = "Set the current time."] + #[doc = ""] + #[doc = "This call should be invoked exactly once per block. It will panic at the finalization"] + #[doc = "phase, if this call hasn't been invoked by that time."] + #[doc = ""] + #[doc = "The timestamp should be greater than the previous one by the amount specified by"] + #[doc = "[`Config::MinimumPeriod`]."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _None_."] + #[doc = ""] + #[doc = "This dispatch class is _Mandatory_ to ensure it gets executed in the block. Be aware"] + #[doc = "that changing the complexity of this call could result exhausting the resources in a"] + #[doc = "block to execute any other calls."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)` (Note that implementations of `OnTimestampSet` must also be `O(1)`)"] + #[doc = "- 1 storage read and 1 storage mutation (codec `O(1)` because of `DidUpdate::take` in"] + #[doc = " `on_finalize`)"] + #[doc = "- 1 event handler `on_timestamp_set`. Must be `O(1)`."] pub fn set(&self, now: types::set::Now) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Timestamp", @@ -6232,7 +6370,18 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::claim`]."] + #[doc = "Assign an previously unassigned index."] + #[doc = ""] + #[doc = "Payment: `Deposit` is reserved from the sender account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `index`: the index to be claimed. This must not be in use."] + #[doc = ""] + #[doc = "Emits `IndexAssigned` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub struct Claim { pub index: claim::Index, } @@ -6254,7 +6403,18 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::transfer`]."] + #[doc = "Assign an index already owned by the sender to another account. The balance reservation"] + #[doc = "is effectively transferred to the new account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `index`: the index to be re-assigned. This must be owned by the sender."] + #[doc = "- `new`: the new owner of the index. This function is a no-op if it is equal to sender."] + #[doc = ""] + #[doc = "Emits `IndexAssigned` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub struct Transfer { pub new: transfer::New, pub index: transfer::Index, @@ -6278,7 +6438,18 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::free`]."] + #[doc = "Free up an index owned by the sender."] + #[doc = ""] + #[doc = "Payment: Any previous deposit placed for the index is unreserved in the sender account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must own the index."] + #[doc = ""] + #[doc = "- `index`: the index to be freed. This must be owned by the sender."] + #[doc = ""] + #[doc = "Emits `IndexFreed` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub struct Free { pub index: free::Index, } @@ -6300,7 +6471,19 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_transfer`]."] + #[doc = "Force an index to an account. This doesn't require a deposit. If the index is already"] + #[doc = "held, then any deposit is reimbursed to its current owner."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "- `index`: the index to be (re-)assigned."] + #[doc = "- `new`: the new owner of the index. This function is a no-op if it is equal to sender."] + #[doc = "- `freeze`: if set to `true`, will freeze the index so it cannot be transferred."] + #[doc = ""] + #[doc = "Emits `IndexAssigned` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub struct ForceTransfer { pub new: force_transfer::New, pub index: force_transfer::Index, @@ -6326,7 +6509,18 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::freeze`]."] + #[doc = "Freeze an index so it will always point to the sender account. This consumes the"] + #[doc = "deposit."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the signing account must have a"] + #[doc = "non-frozen account `index`."] + #[doc = ""] + #[doc = "- `index`: the index to be frozen in place."] + #[doc = ""] + #[doc = "Emits `IndexFrozen` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub struct Freeze { pub index: freeze::Index, } @@ -6341,7 +6535,18 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::claim`]."] + #[doc = "Assign an previously unassigned index."] + #[doc = ""] + #[doc = "Payment: `Deposit` is reserved from the sender account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `index`: the index to be claimed. This must not be in use."] + #[doc = ""] + #[doc = "Emits `IndexAssigned` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn claim( &self, index: types::claim::Index, @@ -6357,7 +6562,18 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::transfer`]."] + #[doc = "Assign an index already owned by the sender to another account. The balance reservation"] + #[doc = "is effectively transferred to the new account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `index`: the index to be re-assigned. This must be owned by the sender."] + #[doc = "- `new`: the new owner of the index. This function is a no-op if it is equal to sender."] + #[doc = ""] + #[doc = "Emits `IndexAssigned` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn transfer( &self, new: types::transfer::New, @@ -6375,7 +6591,18 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::free`]."] + #[doc = "Free up an index owned by the sender."] + #[doc = ""] + #[doc = "Payment: Any previous deposit placed for the index is unreserved in the sender account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must own the index."] + #[doc = ""] + #[doc = "- `index`: the index to be freed. This must be owned by the sender."] + #[doc = ""] + #[doc = "Emits `IndexFreed` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn free(&self, index: types::free::Index) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Indices", @@ -6389,7 +6616,19 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_transfer`]."] + #[doc = "Force an index to an account. This doesn't require a deposit. If the index is already"] + #[doc = "held, then any deposit is reimbursed to its current owner."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "- `index`: the index to be (re-)assigned."] + #[doc = "- `new`: the new owner of the index. This function is a no-op if it is equal to sender."] + #[doc = "- `freeze`: if set to `true`, will freeze the index so it cannot be transferred."] + #[doc = ""] + #[doc = "Emits `IndexAssigned` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn force_transfer( &self, new: types::force_transfer::New, @@ -6408,7 +6647,18 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::freeze`]."] + #[doc = "Freeze an index so it will always point to the sender account. This consumes the"] + #[doc = "deposit."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the signing account must have a"] + #[doc = "non-frozen account `index`."] + #[doc = ""] + #[doc = "- `index`: the index to be frozen in place."] + #[doc = ""] + #[doc = "Emits `IndexFrozen` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn freeze( &self, index: types::freeze::Index, @@ -6609,7 +6859,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::transfer_allow_death`]."] + #[doc = "Transfer some liquid free balance to another account."] + #[doc = ""] + #[doc = "`transfer_allow_death` will set the `FreeBalance` of the sender and receiver."] + #[doc = "If the sender's account is below the existential deposit as a result"] + #[doc = "of the transfer, the account will be reaped."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be `Signed` by the transactor."] pub struct TransferAllowDeath { pub dest: transfer_allow_death::Dest, #[codec(compact)] @@ -6634,7 +6890,8 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_transfer`]."] + #[doc = "Exactly as `transfer_allow_death`, except the origin must be root and the source account"] + #[doc = "may be specified."] pub struct ForceTransfer { pub source: force_transfer::Source, pub dest: force_transfer::Dest, @@ -6661,7 +6918,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::transfer_keep_alive`]."] + #[doc = "Same as the [`transfer_allow_death`] call, but with a check that the transfer will not"] + #[doc = "kill the origin account."] + #[doc = ""] + #[doc = "99% of the time you want [`transfer_allow_death`] instead."] + #[doc = ""] + #[doc = "[`transfer_allow_death`]: struct.Pallet.html#method.transfer"] pub struct TransferKeepAlive { pub dest: transfer_keep_alive::Dest, #[codec(compact)] @@ -6686,7 +6948,21 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::transfer_all`]."] + #[doc = "Transfer the entire transferable balance from the caller account."] + #[doc = ""] + #[doc = "NOTE: This function only attempts to transfer _transferable_ balances. This means that"] + #[doc = "any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be"] + #[doc = "transferred by this function. To ensure that this function results in a killed account,"] + #[doc = "you might need to prepare the account by removing any reference counters, storage"] + #[doc = "deposits, etc..."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be Signed."] + #[doc = ""] + #[doc = "- `dest`: The recipient of the transfer."] + #[doc = "- `keep_alive`: A boolean to determine if the `transfer_all` operation should send all"] + #[doc = " of the funds the account has, causing the sender account to be killed (false), or"] + #[doc = " transfer everything except at least the existential deposit, which will guarantee to"] + #[doc = " keep the sender account alive (true)."] pub struct TransferAll { pub dest: transfer_all::Dest, pub keep_alive: transfer_all::KeepAlive, @@ -6710,7 +6986,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_unreserve`]."] + #[doc = "Unreserve some balance from a user by force."] + #[doc = ""] + #[doc = "Can only be called by ROOT."] pub struct ForceUnreserve { pub who: force_unreserve::Who, pub amount: force_unreserve::Amount, @@ -6734,7 +7012,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::upgrade_accounts`]."] + #[doc = "Upgrade a specified account."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed`."] + #[doc = "- `who`: The account to be upgraded."] + #[doc = ""] + #[doc = "This will waive the transaction fee if at least all but 10% of the accounts needed to"] + #[doc = "be upgraded. (We let some not have to be upgraded just in order to allow for the"] + #[doc = "possibililty of churn)."] pub struct UpgradeAccounts { pub who: upgrade_accounts::Who, } @@ -6756,7 +7041,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_set_balance`]."] + #[doc = "Set the regular balance of a given account."] + #[doc = ""] + #[doc = "The dispatch origin for this call is `root`."] pub struct ForceSetBalance { pub who: force_set_balance::Who, #[codec(compact)] @@ -6781,7 +7068,11 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_adjust_total_issuance`]."] + #[doc = "Adjust the total issuance in a saturating way."] + #[doc = ""] + #[doc = "Can only be called by root and always needs a positive `delta`."] + #[doc = ""] + #[doc = "# Example"] pub struct ForceAdjustTotalIssuance { pub direction: force_adjust_total_issuance::Direction, #[codec(compact)] @@ -6799,7 +7090,13 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::transfer_allow_death`]."] + #[doc = "Transfer some liquid free balance to another account."] + #[doc = ""] + #[doc = "`transfer_allow_death` will set the `FreeBalance` of the sender and receiver."] + #[doc = "If the sender's account is below the existential deposit as a result"] + #[doc = "of the transfer, the account will be reaped."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be `Signed` by the transactor."] pub fn transfer_allow_death( &self, dest: types::transfer_allow_death::Dest, @@ -6817,7 +7114,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_transfer`]."] + #[doc = "Exactly as `transfer_allow_death`, except the origin must be root and the source account"] + #[doc = "may be specified."] pub fn force_transfer( &self, source: types::force_transfer::Source, @@ -6839,7 +7137,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::transfer_keep_alive`]."] + #[doc = "Same as the [`transfer_allow_death`] call, but with a check that the transfer will not"] + #[doc = "kill the origin account."] + #[doc = ""] + #[doc = "99% of the time you want [`transfer_allow_death`] instead."] + #[doc = ""] + #[doc = "[`transfer_allow_death`]: struct.Pallet.html#method.transfer"] pub fn transfer_keep_alive( &self, dest: types::transfer_keep_alive::Dest, @@ -6856,7 +7159,21 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::transfer_all`]."] + #[doc = "Transfer the entire transferable balance from the caller account."] + #[doc = ""] + #[doc = "NOTE: This function only attempts to transfer _transferable_ balances. This means that"] + #[doc = "any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be"] + #[doc = "transferred by this function. To ensure that this function results in a killed account,"] + #[doc = "you might need to prepare the account by removing any reference counters, storage"] + #[doc = "deposits, etc..."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be Signed."] + #[doc = ""] + #[doc = "- `dest`: The recipient of the transfer."] + #[doc = "- `keep_alive`: A boolean to determine if the `transfer_all` operation should send all"] + #[doc = " of the funds the account has, causing the sender account to be killed (false), or"] + #[doc = " transfer everything except at least the existential deposit, which will guarantee to"] + #[doc = " keep the sender account alive (true)."] pub fn transfer_all( &self, dest: types::transfer_all::Dest, @@ -6873,7 +7190,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_unreserve`]."] + #[doc = "Unreserve some balance from a user by force."] + #[doc = ""] + #[doc = "Can only be called by ROOT."] pub fn force_unreserve( &self, who: types::force_unreserve::Who, @@ -6891,7 +7210,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::upgrade_accounts`]."] + #[doc = "Upgrade a specified account."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed`."] + #[doc = "- `who`: The account to be upgraded."] + #[doc = ""] + #[doc = "This will waive the transaction fee if at least all but 10% of the accounts needed to"] + #[doc = "be upgraded. (We let some not have to be upgraded just in order to allow for the"] + #[doc = "possibililty of churn)."] pub fn upgrade_accounts( &self, who: types::upgrade_accounts::Who, @@ -6907,7 +7233,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_set_balance`]."] + #[doc = "Set the regular balance of a given account."] + #[doc = ""] + #[doc = "The dispatch origin for this call is `root`."] pub fn force_set_balance( &self, who: types::force_set_balance::Who, @@ -6924,7 +7252,11 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_adjust_total_issuance`]."] + #[doc = "Adjust the total issuance in a saturating way."] + #[doc = ""] + #[doc = "Can only be called by root and always needs a positive `delta`."] + #[doc = ""] + #[doc = "# Example"] pub fn force_adjust_total_issuance( &self, direction: types::force_adjust_total_issuance::Direction, @@ -8397,7 +8729,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_keys`]."] + #[doc = "Sets the session key(s) of the function caller to `keys`."] + #[doc = "Allows an account to set its session key prior to becoming a validator."] + #[doc = "This doesn't take effect until the next session."] + #[doc = ""] + #[doc = "The dispatch origin of this function must be signed."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`. Actual cost depends on the number of length of `T::Keys::key_ids()` which is"] + #[doc = " fixed."] pub struct SetKeys { pub keys: set_keys::Keys, pub proof: set_keys::Proof, @@ -8421,7 +8761,18 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::purge_keys`]."] + #[doc = "Removes any session key(s) of the function caller."] + #[doc = ""] + #[doc = "This doesn't take effect until the next session."] + #[doc = ""] + #[doc = "The dispatch origin of this function must be Signed and the account must be either be"] + #[doc = "convertible to a validator ID using the chain's typical addressing system (this usually"] + #[doc = "means being a controller account) or directly convertible into a validator ID (which"] + #[doc = "usually means being a stash account)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)` in number of key types. Actual cost depends on the number of length of"] + #[doc = " `T::Keys::key_ids()` which is fixed."] pub struct PurgeKeys; impl ::subxt::blocks::StaticExtrinsic for PurgeKeys { const PALLET: &'static str = "Session"; @@ -8430,7 +8781,15 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::set_keys`]."] + #[doc = "Sets the session key(s) of the function caller to `keys`."] + #[doc = "Allows an account to set its session key prior to becoming a validator."] + #[doc = "This doesn't take effect until the next session."] + #[doc = ""] + #[doc = "The dispatch origin of this function must be signed."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`. Actual cost depends on the number of length of `T::Keys::key_ids()` which is"] + #[doc = " fixed."] pub fn set_keys( &self, keys: types::set_keys::Keys, @@ -8448,7 +8807,18 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::purge_keys`]."] + #[doc = "Removes any session key(s) of the function caller."] + #[doc = ""] + #[doc = "This doesn't take effect until the next session."] + #[doc = ""] + #[doc = "The dispatch origin of this function must be Signed and the account must be either be"] + #[doc = "convertible to a validator ID using the chain's typical addressing system (this usually"] + #[doc = "means being a controller account) or directly convertible into a validator ID (which"] + #[doc = "usually means being a stash account)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)` in number of key types. Actual cost depends on the number of length of"] + #[doc = " `T::Keys::key_ids()` which is fixed."] pub fn purge_keys(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Session", @@ -8795,7 +9165,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::report_equivocation`]."] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] pub struct ReportEquivocation { pub equivocation_proof: ::std::boxed::Box, @@ -8824,7 +9197,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] + #[doc = ""] + #[doc = "This extrinsic must be called unsigned and it is expected that only"] + #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] + #[doc = "if the block author is defined it will be defined as the equivocation"] + #[doc = "reporter."] pub struct ReportEquivocationUnsigned { pub equivocation_proof: ::std::boxed::Box, @@ -8853,7 +9234,18 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::note_stalled`]."] + #[doc = "Note that the current authority set of the GRANDPA finality gadget has stalled."] + #[doc = ""] + #[doc = "This will trigger a forced authority set change at the beginning of the next session, to"] + #[doc = "be enacted `delay` blocks after that. The `delay` should be high enough to safely assume"] + #[doc = "that the block signalling the forced change will not be re-orged e.g. 1000 blocks."] + #[doc = "The block production rate (which may be slowed down because of finality lagging) should"] + #[doc = "be taken into account when choosing the `delay`. The GRANDPA voters based on the new"] + #[doc = "authority will start voting on top of `best_finalized_block_number` for new finalized"] + #[doc = "blocks. `best_finalized_block_number` should be the highest of the latest finalized"] + #[doc = "block of all validators of the new authority set."] + #[doc = ""] + #[doc = "Only callable by root."] pub struct NoteStalled { pub delay: note_stalled::Delay, pub best_finalized_block_number: note_stalled::BestFinalizedBlockNumber, @@ -8870,7 +9262,10 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::report_equivocation`]."] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] pub fn report_equivocation( &self, equivocation_proof: types::report_equivocation::EquivocationProof, @@ -8890,7 +9285,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] + #[doc = ""] + #[doc = "This extrinsic must be called unsigned and it is expected that only"] + #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] + #[doc = "if the block author is defined it will be defined as the equivocation"] + #[doc = "reporter."] pub fn report_equivocation_unsigned( &self, equivocation_proof: types::report_equivocation_unsigned::EquivocationProof, @@ -8910,7 +9313,18 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::note_stalled`]."] + #[doc = "Note that the current authority set of the GRANDPA finality gadget has stalled."] + #[doc = ""] + #[doc = "This will trigger a forced authority set change at the beginning of the next session, to"] + #[doc = "be enacted `delay` blocks after that. The `delay` should be high enough to safely assume"] + #[doc = "that the block signalling the forced change will not be re-orged e.g. 1000 blocks."] + #[doc = "The block production rate (which may be slowed down because of finality lagging) should"] + #[doc = "be taken into account when choosing the `delay`. The GRANDPA voters based on the new"] + #[doc = "authority will start voting on top of `best_finalized_block_number` for new finalized"] + #[doc = "blocks. `best_finalized_block_number` should be the highest of the latest finalized"] + #[doc = "block of all validators of the new authority set."] + #[doc = ""] + #[doc = "Only callable by root."] pub fn note_stalled( &self, delay: types::note_stalled::Delay, @@ -9381,7 +9795,22 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::propose_spend`]."] + #[doc = "Put forward a suggestion for spending."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be signed."] + #[doc = ""] + #[doc = "## Details"] + #[doc = "A deposit proportional to the value is reserved and slashed if the proposal is rejected."] + #[doc = "It is returned once the proposal is awarded."] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = "- O(1)"] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::Proposed`] if successful."] pub struct ProposeSpend { #[codec(compact)] pub value: propose_spend::Value, @@ -9407,7 +9836,21 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::reject_proposal`]."] + #[doc = "Reject a proposed spend."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::RejectOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = "The original deposit will be slashed."] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = "- O(1)"] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::Rejected`] if successful."] pub struct RejectProposal { #[codec(compact)] pub proposal_id: reject_proposal::ProposalId, @@ -9430,7 +9873,23 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::approve_proposal`]."] + #[doc = "Approve a proposal."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::ApproveOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "At a later time, the proposal will be allocated to the beneficiary and the original"] + #[doc = "deposit will be returned."] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = " - O(1)."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "No events are emitted from this dispatch."] pub struct ApproveProposal { #[codec(compact)] pub proposal_id: approve_proposal::ProposalId, @@ -9453,7 +9912,23 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::spend_local`]."] + #[doc = "Propose and approve a spend of treasury funds."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::SpendOrigin`] with the `Success` value being at least `amount`."] + #[doc = ""] + #[doc = "### Details"] + #[doc = "NOTE: For record-keeping purposes, the proposer is deemed to be equivalent to the"] + #[doc = "beneficiary."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `amount`: The amount to be transferred from the treasury to the `beneficiary`."] + #[doc = "- `beneficiary`: The destination account for the transfer."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::SpendApproved`] if successful."] pub struct SpendLocal { #[codec(compact)] pub amount: spend_local::Amount, @@ -9479,7 +9954,27 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::remove_approval`]."] + #[doc = "Force a previously approved proposal to be removed from the approval queue."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::RejectOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "The original deposit will no longer be returned."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `proposal_id`: The index of a proposal"] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = "- O(A) where `A` is the number of approvals"] + #[doc = ""] + #[doc = "### Errors"] + #[doc = "- [`Error::ProposalNotApproved`]: The `proposal_id` supplied was not found in the"] + #[doc = " approval queue, i.e., the proposal has not been approved. This could also mean the"] + #[doc = " proposal does not exist altogether, thus there is no way it would have been approved"] + #[doc = " in the first place."] pub struct RemoveApproval { #[codec(compact)] pub proposal_id: remove_approval::ProposalId, @@ -9502,7 +9997,32 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::spend`]."] + #[doc = "Propose and approve a spend of treasury funds."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::SpendOrigin`] with the `Success` value being at least"] + #[doc = "`amount` of `asset_kind` in the native asset. The amount of `asset_kind` is converted"] + #[doc = "for assertion using the [`Config::BalanceConverter`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "Create an approved spend for transferring a specific `amount` of `asset_kind` to a"] + #[doc = "designated beneficiary. The spend must be claimed using the `payout` dispatchable within"] + #[doc = "the [`Config::PayoutPeriod`]."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `asset_kind`: An indicator of the specific asset class to be spent."] + #[doc = "- `amount`: The amount to be transferred from the treasury to the `beneficiary`."] + #[doc = "- `beneficiary`: The beneficiary of the spend."] + #[doc = "- `valid_from`: The block number from which the spend can be claimed. It can refer to"] + #[doc = " the past if the resulting spend has not yet expired according to the"] + #[doc = " [`Config::PayoutPeriod`]. If `None`, the spend can be claimed immediately after"] + #[doc = " approval."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::AssetSpendApproved`] if successful."] pub struct Spend { pub asset_kind: ::std::boxed::Box, #[codec(compact)] @@ -9532,7 +10052,25 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::payout`]."] + #[doc = "Claim a spend."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be signed."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "Spends must be claimed within some temporal bounds. A spend may be claimed within one"] + #[doc = "[`Config::PayoutPeriod`] from the `valid_from` block."] + #[doc = "In case of a payout failure, the spend status must be updated with the `check_status`"] + #[doc = "dispatchable before retrying with the current function."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `index`: The spend index."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::Paid`] if successful."] pub struct Payout { pub index: payout::Index, } @@ -9554,7 +10092,25 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::check_status`]."] + #[doc = "Check the status of the spend and remove it from the storage if processed."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be signed."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "The status check is a prerequisite for retrying a failed payout."] + #[doc = "If a spend has either succeeded or expired, it is removed from the storage by this"] + #[doc = "function. In such instances, transaction fees are refunded."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `index`: The spend index."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::PaymentFailed`] if the spend payout has failed."] + #[doc = "Emits [`Event::SpendProcessed`] if the spend payout has succeed."] pub struct CheckStatus { pub index: check_status::Index, } @@ -9576,7 +10132,22 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::void_spend`]."] + #[doc = "Void previously approved spend."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::RejectOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "A spend void is only possible if the payout has not been attempted yet."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `index`: The spend index."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::AssetSpendVoided`] if successful."] pub struct VoidSpend { pub index: void_spend::Index, } @@ -9591,7 +10162,22 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::propose_spend`]."] + #[doc = "Put forward a suggestion for spending."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be signed."] + #[doc = ""] + #[doc = "## Details"] + #[doc = "A deposit proportional to the value is reserved and slashed if the proposal is rejected."] + #[doc = "It is returned once the proposal is awarded."] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = "- O(1)"] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::Proposed`] if successful."] pub fn propose_spend( &self, value: types::propose_spend::Value, @@ -9608,7 +10194,21 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::reject_proposal`]."] + #[doc = "Reject a proposed spend."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::RejectOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = "The original deposit will be slashed."] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = "- O(1)"] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::Rejected`] if successful."] pub fn reject_proposal( &self, proposal_id: types::reject_proposal::ProposalId, @@ -9624,7 +10224,23 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::approve_proposal`]."] + #[doc = "Approve a proposal."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::ApproveOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "At a later time, the proposal will be allocated to the beneficiary and the original"] + #[doc = "deposit will be returned."] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = " - O(1)."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "No events are emitted from this dispatch."] pub fn approve_proposal( &self, proposal_id: types::approve_proposal::ProposalId, @@ -9640,7 +10256,23 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::spend_local`]."] + #[doc = "Propose and approve a spend of treasury funds."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::SpendOrigin`] with the `Success` value being at least `amount`."] + #[doc = ""] + #[doc = "### Details"] + #[doc = "NOTE: For record-keeping purposes, the proposer is deemed to be equivalent to the"] + #[doc = "beneficiary."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `amount`: The amount to be transferred from the treasury to the `beneficiary`."] + #[doc = "- `beneficiary`: The destination account for the transfer."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::SpendApproved`] if successful."] pub fn spend_local( &self, amount: types::spend_local::Amount, @@ -9660,7 +10292,27 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_approval`]."] + #[doc = "Force a previously approved proposal to be removed from the approval queue."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::RejectOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "The original deposit will no longer be returned."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `proposal_id`: The index of a proposal"] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = "- O(A) where `A` is the number of approvals"] + #[doc = ""] + #[doc = "### Errors"] + #[doc = "- [`Error::ProposalNotApproved`]: The `proposal_id` supplied was not found in the"] + #[doc = " approval queue, i.e., the proposal has not been approved. This could also mean the"] + #[doc = " proposal does not exist altogether, thus there is no way it would have been approved"] + #[doc = " in the first place."] pub fn remove_approval( &self, proposal_id: types::remove_approval::ProposalId, @@ -9677,7 +10329,32 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::spend`]."] + #[doc = "Propose and approve a spend of treasury funds."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::SpendOrigin`] with the `Success` value being at least"] + #[doc = "`amount` of `asset_kind` in the native asset. The amount of `asset_kind` is converted"] + #[doc = "for assertion using the [`Config::BalanceConverter`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "Create an approved spend for transferring a specific `amount` of `asset_kind` to a"] + #[doc = "designated beneficiary. The spend must be claimed using the `payout` dispatchable within"] + #[doc = "the [`Config::PayoutPeriod`]."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `asset_kind`: An indicator of the specific asset class to be spent."] + #[doc = "- `amount`: The amount to be transferred from the treasury to the `beneficiary`."] + #[doc = "- `beneficiary`: The beneficiary of the spend."] + #[doc = "- `valid_from`: The block number from which the spend can be claimed. It can refer to"] + #[doc = " the past if the resulting spend has not yet expired according to the"] + #[doc = " [`Config::PayoutPeriod`]. If `None`, the spend can be claimed immediately after"] + #[doc = " approval."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::AssetSpendApproved`] if successful."] pub fn spend( &self, asset_kind: types::spend::AssetKind, @@ -9702,7 +10379,25 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::payout`]."] + #[doc = "Claim a spend."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be signed."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "Spends must be claimed within some temporal bounds. A spend may be claimed within one"] + #[doc = "[`Config::PayoutPeriod`] from the `valid_from` block."] + #[doc = "In case of a payout failure, the spend status must be updated with the `check_status`"] + #[doc = "dispatchable before retrying with the current function."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `index`: The spend index."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::Paid`] if successful."] pub fn payout( &self, index: types::payout::Index, @@ -9718,7 +10413,25 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::check_status`]."] + #[doc = "Check the status of the spend and remove it from the storage if processed."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be signed."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "The status check is a prerequisite for retrying a failed payout."] + #[doc = "If a spend has either succeeded or expired, it is removed from the storage by this"] + #[doc = "function. In such instances, transaction fees are refunded."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `index`: The spend index."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::PaymentFailed`] if the spend payout has failed."] + #[doc = "Emits [`Event::SpendProcessed`] if the spend payout has succeed."] pub fn check_status( &self, index: types::check_status::Index, @@ -9734,7 +10447,22 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::void_spend`]."] + #[doc = "Void previously approved spend."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::RejectOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "A spend void is only possible if the payout has not been attempted yet."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `index`: The spend index."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::AssetSpendVoided`] if successful."] pub fn void_spend( &self, index: types::void_spend::Index, @@ -10467,7 +11195,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::vote`]."] + #[doc = "Vote in a poll. If `vote.is_aye()`, the vote is to enact the proposal;"] + #[doc = "otherwise it is a vote to keep the status quo."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_."] + #[doc = ""] + #[doc = "- `poll_index`: The index of the poll to vote for."] + #[doc = "- `vote`: The vote configuration."] + #[doc = ""] + #[doc = "Weight: `O(R)` where R is the number of polls the voter has voted on."] pub struct Vote { #[codec(compact)] pub poll_index: vote::PollIndex, @@ -10494,7 +11230,29 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::delegate`]."] + #[doc = "Delegate the voting power (with some given conviction) of the sending account for a"] + #[doc = "particular class of polls."] + #[doc = ""] + #[doc = "The balance delegated is locked for as long as it's delegated, and thereafter for the"] + #[doc = "time appropriate for the conviction's lock period."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_, and the signing account must either:"] + #[doc = " - be delegating already; or"] + #[doc = " - have no voting activity (if there is, then it will need to be removed through"] + #[doc = " `remove_vote`)."] + #[doc = ""] + #[doc = "- `to`: The account whose voting the `target` account's voting power will follow."] + #[doc = "- `class`: The class of polls to delegate. To delegate multiple classes, multiple calls"] + #[doc = " to this function are required."] + #[doc = "- `conviction`: The conviction that will be attached to the delegated votes. When the"] + #[doc = " account is undelegated, the funds will be locked for the corresponding period."] + #[doc = "- `balance`: The amount of the account's balance to be used in delegating. This must not"] + #[doc = " be more than the account's current balance."] + #[doc = ""] + #[doc = "Emits `Delegated`."] + #[doc = ""] + #[doc = "Weight: `O(R)` where R is the number of polls the voter delegating to has"] + #[doc = " voted on. Weight is initially charged as if maximum votes, but is refunded later."] pub struct Delegate { pub class: delegate::Class, pub to: delegate::To, @@ -10523,7 +11281,20 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::undelegate`]."] + #[doc = "Undelegate the voting power of the sending account for a particular class of polls."] + #[doc = ""] + #[doc = "Tokens may be unlocked following once an amount of time consistent with the lock period"] + #[doc = "of the conviction with which the delegation was issued has passed."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_ and the signing account must be"] + #[doc = "currently delegating."] + #[doc = ""] + #[doc = "- `class`: The class of polls to remove the delegation from."] + #[doc = ""] + #[doc = "Emits `Undelegated`."] + #[doc = ""] + #[doc = "Weight: `O(R)` where R is the number of polls the voter delegating to has"] + #[doc = " voted on. Weight is initially charged as if maximum votes, but is refunded later."] pub struct Undelegate { pub class: undelegate::Class, } @@ -10545,7 +11316,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::unlock`]."] + #[doc = "Remove the lock caused by prior voting/delegating which has expired within a particular"] + #[doc = "class."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_."] + #[doc = ""] + #[doc = "- `class`: The class of polls to unlock."] + #[doc = "- `target`: The account to remove the lock on."] + #[doc = ""] + #[doc = "Weight: `O(R)` with R number of vote of target."] pub struct Unlock { pub class: unlock::Class, pub target: unlock::Target, @@ -10569,7 +11348,35 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::remove_vote`]."] + #[doc = "Remove a vote for a poll."] + #[doc = ""] + #[doc = "If:"] + #[doc = "- the poll was cancelled, or"] + #[doc = "- the poll is ongoing, or"] + #[doc = "- the poll has ended such that"] + #[doc = " - the vote of the account was in opposition to the result; or"] + #[doc = " - there was no conviction to the account's vote; or"] + #[doc = " - the account made a split vote"] + #[doc = "...then the vote is removed cleanly and a following call to `unlock` may result in more"] + #[doc = "funds being available."] + #[doc = ""] + #[doc = "If, however, the poll has ended and:"] + #[doc = "- it finished corresponding to the vote of the account, and"] + #[doc = "- the account made a standard vote with conviction, and"] + #[doc = "- the lock period of the conviction is not over"] + #[doc = "...then the lock will be aggregated into the overall account's lock, which may involve"] + #[doc = "*overlocking* (where the two locks are combined into a single lock that is the maximum"] + #[doc = "of both the amount locked and the time is it locked for)."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_, and the signer must have a vote"] + #[doc = "registered for poll `index`."] + #[doc = ""] + #[doc = "- `index`: The index of poll of the vote to be removed."] + #[doc = "- `class`: Optional parameter, if given it indicates the class of the poll. For polls"] + #[doc = " which have finished or are cancelled, this must be `Some`."] + #[doc = ""] + #[doc = "Weight: `O(R + log R)` where R is the number of polls that `target` has voted on."] + #[doc = " Weight is calculated for the maximum number of vote."] pub struct RemoveVote { pub class: remove_vote::Class, pub index: remove_vote::Index, @@ -10593,7 +11400,22 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::remove_other_vote`]."] + #[doc = "Remove a vote for a poll."] + #[doc = ""] + #[doc = "If the `target` is equal to the signer, then this function is exactly equivalent to"] + #[doc = "`remove_vote`. If not equal to the signer, then the vote must have expired,"] + #[doc = "either because the poll was cancelled, because the voter lost the poll or"] + #[doc = "because the conviction period is over."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_."] + #[doc = ""] + #[doc = "- `target`: The account of the vote to be removed; this account must have voted for poll"] + #[doc = " `index`."] + #[doc = "- `index`: The index of poll of the vote to be removed."] + #[doc = "- `class`: The class of the poll."] + #[doc = ""] + #[doc = "Weight: `O(R + log R)` where R is the number of polls that `target` has voted on."] + #[doc = " Weight is calculated for the maximum number of vote."] pub struct RemoveOtherVote { pub target: remove_other_vote::Target, pub class: remove_other_vote::Class, @@ -10612,7 +11434,15 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::vote`]."] + #[doc = "Vote in a poll. If `vote.is_aye()`, the vote is to enact the proposal;"] + #[doc = "otherwise it is a vote to keep the status quo."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_."] + #[doc = ""] + #[doc = "- `poll_index`: The index of the poll to vote for."] + #[doc = "- `vote`: The vote configuration."] + #[doc = ""] + #[doc = "Weight: `O(R)` where R is the number of polls the voter has voted on."] pub fn vote( &self, poll_index: types::vote::PollIndex, @@ -10630,7 +11460,29 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::delegate`]."] + #[doc = "Delegate the voting power (with some given conviction) of the sending account for a"] + #[doc = "particular class of polls."] + #[doc = ""] + #[doc = "The balance delegated is locked for as long as it's delegated, and thereafter for the"] + #[doc = "time appropriate for the conviction's lock period."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_, and the signing account must either:"] + #[doc = " - be delegating already; or"] + #[doc = " - have no voting activity (if there is, then it will need to be removed through"] + #[doc = " `remove_vote`)."] + #[doc = ""] + #[doc = "- `to`: The account whose voting the `target` account's voting power will follow."] + #[doc = "- `class`: The class of polls to delegate. To delegate multiple classes, multiple calls"] + #[doc = " to this function are required."] + #[doc = "- `conviction`: The conviction that will be attached to the delegated votes. When the"] + #[doc = " account is undelegated, the funds will be locked for the corresponding period."] + #[doc = "- `balance`: The amount of the account's balance to be used in delegating. This must not"] + #[doc = " be more than the account's current balance."] + #[doc = ""] + #[doc = "Emits `Delegated`."] + #[doc = ""] + #[doc = "Weight: `O(R)` where R is the number of polls the voter delegating to has"] + #[doc = " voted on. Weight is initially charged as if maximum votes, but is refunded later."] pub fn delegate( &self, class: types::delegate::Class, @@ -10654,7 +11506,20 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::undelegate`]."] + #[doc = "Undelegate the voting power of the sending account for a particular class of polls."] + #[doc = ""] + #[doc = "Tokens may be unlocked following once an amount of time consistent with the lock period"] + #[doc = "of the conviction with which the delegation was issued has passed."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_ and the signing account must be"] + #[doc = "currently delegating."] + #[doc = ""] + #[doc = "- `class`: The class of polls to remove the delegation from."] + #[doc = ""] + #[doc = "Emits `Undelegated`."] + #[doc = ""] + #[doc = "Weight: `O(R)` where R is the number of polls the voter delegating to has"] + #[doc = " voted on. Weight is initially charged as if maximum votes, but is refunded later."] pub fn undelegate( &self, class: types::undelegate::Class, @@ -10671,7 +11536,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::unlock`]."] + #[doc = "Remove the lock caused by prior voting/delegating which has expired within a particular"] + #[doc = "class."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_."] + #[doc = ""] + #[doc = "- `class`: The class of polls to unlock."] + #[doc = "- `target`: The account to remove the lock on."] + #[doc = ""] + #[doc = "Weight: `O(R)` with R number of vote of target."] pub fn unlock( &self, class: types::unlock::Class, @@ -10689,7 +11562,35 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_vote`]."] + #[doc = "Remove a vote for a poll."] + #[doc = ""] + #[doc = "If:"] + #[doc = "- the poll was cancelled, or"] + #[doc = "- the poll is ongoing, or"] + #[doc = "- the poll has ended such that"] + #[doc = " - the vote of the account was in opposition to the result; or"] + #[doc = " - there was no conviction to the account's vote; or"] + #[doc = " - the account made a split vote"] + #[doc = "...then the vote is removed cleanly and a following call to `unlock` may result in more"] + #[doc = "funds being available."] + #[doc = ""] + #[doc = "If, however, the poll has ended and:"] + #[doc = "- it finished corresponding to the vote of the account, and"] + #[doc = "- the account made a standard vote with conviction, and"] + #[doc = "- the lock period of the conviction is not over"] + #[doc = "...then the lock will be aggregated into the overall account's lock, which may involve"] + #[doc = "*overlocking* (where the two locks are combined into a single lock that is the maximum"] + #[doc = "of both the amount locked and the time is it locked for)."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_, and the signer must have a vote"] + #[doc = "registered for poll `index`."] + #[doc = ""] + #[doc = "- `index`: The index of poll of the vote to be removed."] + #[doc = "- `class`: Optional parameter, if given it indicates the class of the poll. For polls"] + #[doc = " which have finished or are cancelled, this must be `Some`."] + #[doc = ""] + #[doc = "Weight: `O(R + log R)` where R is the number of polls that `target` has voted on."] + #[doc = " Weight is calculated for the maximum number of vote."] pub fn remove_vote( &self, class: types::remove_vote::Class, @@ -10707,7 +11608,22 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_other_vote`]."] + #[doc = "Remove a vote for a poll."] + #[doc = ""] + #[doc = "If the `target` is equal to the signer, then this function is exactly equivalent to"] + #[doc = "`remove_vote`. If not equal to the signer, then the vote must have expired,"] + #[doc = "either because the poll was cancelled, because the voter lost the poll or"] + #[doc = "because the conviction period is over."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_."] + #[doc = ""] + #[doc = "- `target`: The account of the vote to be removed; this account must have voted for poll"] + #[doc = " `index`."] + #[doc = "- `index`: The index of poll of the vote to be removed."] + #[doc = "- `class`: The class of the poll."] + #[doc = ""] + #[doc = "Weight: `O(R + log R)` where R is the number of polls that `target` has voted on."] + #[doc = " Weight is calculated for the maximum number of vote."] pub fn remove_other_vote( &self, target: types::remove_other_vote::Target, @@ -10993,7 +11909,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::submit`]."] + #[doc = "Propose a referendum on a privileged action."] + #[doc = ""] + #[doc = "- `origin`: must be `SubmitOrigin` and the account must have `SubmissionDeposit` funds"] + #[doc = " available."] + #[doc = "- `proposal_origin`: The origin from which the proposal should be executed."] + #[doc = "- `proposal`: The proposal."] + #[doc = "- `enactment_moment`: The moment that the proposal should be enacted."] + #[doc = ""] + #[doc = "Emits `Submitted`."] pub struct Submit { pub proposal_origin: ::std::boxed::Box, pub proposal: submit::Proposal, @@ -11025,7 +11949,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::place_decision_deposit`]."] + #[doc = "Post the Decision Deposit for a referendum."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` and the account must have funds available for the"] + #[doc = " referendum's track's Decision Deposit."] + #[doc = "- `index`: The index of the submitted referendum whose Decision Deposit is yet to be"] + #[doc = " posted."] + #[doc = ""] + #[doc = "Emits `DecisionDepositPlaced`."] pub struct PlaceDecisionDeposit { pub index: place_decision_deposit::Index, } @@ -11047,7 +11978,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::refund_decision_deposit`]."] + #[doc = "Refund the Decision Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Decision Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `DecisionDepositRefunded`."] pub struct RefundDecisionDeposit { pub index: refund_decision_deposit::Index, } @@ -11069,7 +12006,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::cancel`]."] + #[doc = "Cancel an ongoing referendum."] + #[doc = ""] + #[doc = "- `origin`: must be the `CancelOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Cancelled`."] pub struct Cancel { pub index: cancel::Index, } @@ -11091,7 +12033,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::kill`]."] + #[doc = "Cancel an ongoing referendum and slash the deposits."] + #[doc = ""] + #[doc = "- `origin`: must be the `KillOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Killed` and `DepositSlashed`."] pub struct Kill { pub index: kill::Index, } @@ -11113,7 +12060,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::nudge_referendum`]."] + #[doc = "Advance a referendum onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `index`: the referendum to be advanced."] pub struct NudgeReferendum { pub index: nudge_referendum::Index, } @@ -11135,7 +12085,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::one_fewer_deciding`]."] + #[doc = "Advance a track onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `track`: the track to be advanced."] + #[doc = ""] + #[doc = "Action item for when there is now one fewer referendum in the deciding phase and the"] + #[doc = "`DecidingCount` is not yet updated. This means that we should either:"] + #[doc = "- begin deciding another referendum (and leave `DecidingCount` alone); or"] + #[doc = "- decrement `DecidingCount`."] pub struct OneFewerDeciding { pub track: one_fewer_deciding::Track, } @@ -11157,7 +12115,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::refund_submission_deposit`]."] + #[doc = "Refund the Submission Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Submission Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `SubmissionDepositRefunded`."] pub struct RefundSubmissionDeposit { pub index: refund_submission_deposit::Index, } @@ -11179,7 +12143,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_metadata`]."] + #[doc = "Set or clear metadata of a referendum."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: Must be `Signed` by a creator of a referendum or by anyone to clear a"] + #[doc = " metadata of a finished referendum."] + #[doc = "- `index`: The index of a referendum to set or clear metadata for."] + #[doc = "- `maybe_hash`: The hash of an on-chain stored preimage. `None` to clear a metadata."] pub struct SetMetadata { pub index: set_metadata::Index, pub maybe_hash: set_metadata::MaybeHash, @@ -11196,7 +12166,15 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::submit`]."] + #[doc = "Propose a referendum on a privileged action."] + #[doc = ""] + #[doc = "- `origin`: must be `SubmitOrigin` and the account must have `SubmissionDeposit` funds"] + #[doc = " available."] + #[doc = "- `proposal_origin`: The origin from which the proposal should be executed."] + #[doc = "- `proposal`: The proposal."] + #[doc = "- `enactment_moment`: The moment that the proposal should be enacted."] + #[doc = ""] + #[doc = "Emits `Submitted`."] pub fn submit( &self, proposal_origin: types::submit::ProposalOrigin, @@ -11218,7 +12196,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::place_decision_deposit`]."] + #[doc = "Post the Decision Deposit for a referendum."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` and the account must have funds available for the"] + #[doc = " referendum's track's Decision Deposit."] + #[doc = "- `index`: The index of the submitted referendum whose Decision Deposit is yet to be"] + #[doc = " posted."] + #[doc = ""] + #[doc = "Emits `DecisionDepositPlaced`."] pub fn place_decision_deposit( &self, index: types::place_decision_deposit::Index, @@ -11234,7 +12219,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::refund_decision_deposit`]."] + #[doc = "Refund the Decision Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Decision Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `DecisionDepositRefunded`."] pub fn refund_decision_deposit( &self, index: types::refund_decision_deposit::Index, @@ -11250,7 +12241,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::cancel`]."] + #[doc = "Cancel an ongoing referendum."] + #[doc = ""] + #[doc = "- `origin`: must be the `CancelOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Cancelled`."] pub fn cancel( &self, index: types::cancel::Index, @@ -11267,7 +12263,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::kill`]."] + #[doc = "Cancel an ongoing referendum and slash the deposits."] + #[doc = ""] + #[doc = "- `origin`: must be the `KillOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Killed` and `DepositSlashed`."] pub fn kill(&self, index: types::kill::Index) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Referenda", @@ -11281,7 +12282,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::nudge_referendum`]."] + #[doc = "Advance a referendum onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `index`: the referendum to be advanced."] pub fn nudge_referendum( &self, index: types::nudge_referendum::Index, @@ -11298,7 +12302,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::one_fewer_deciding`]."] + #[doc = "Advance a track onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `track`: the track to be advanced."] + #[doc = ""] + #[doc = "Action item for when there is now one fewer referendum in the deciding phase and the"] + #[doc = "`DecidingCount` is not yet updated. This means that we should either:"] + #[doc = "- begin deciding another referendum (and leave `DecidingCount` alone); or"] + #[doc = "- decrement `DecidingCount`."] pub fn one_fewer_deciding( &self, track: types::one_fewer_deciding::Track, @@ -11315,7 +12327,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::refund_submission_deposit`]."] + #[doc = "Refund the Submission Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Submission Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `SubmissionDepositRefunded`."] pub fn refund_submission_deposit( &self, index: types::refund_submission_deposit::Index, @@ -11331,7 +12349,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_metadata`]."] + #[doc = "Set or clear metadata of a referendum."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: Must be `Signed` by a creator of a referendum or by anyone to clear a"] + #[doc = " metadata of a finished referendum."] + #[doc = "- `index`: The index of a referendum to set or clear metadata for."] + #[doc = "- `maybe_hash`: The hash of an on-chain stored preimage. `None` to clear a metadata."] pub fn set_metadata( &self, index: types::set_metadata::Index, @@ -12145,7 +13169,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::add_member`]."] + #[doc = "Introduce a new member."] + #[doc = ""] + #[doc = "- `origin`: Must be the `AddOrigin`."] + #[doc = "- `who`: Account of non-member which will become a member."] + #[doc = ""] + #[doc = "Weight: `O(1)`"] pub struct AddMember { pub who: add_member::Who, } @@ -12167,7 +13196,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::promote_member`]."] + #[doc = "Increment the rank of an existing member by one."] + #[doc = ""] + #[doc = "- `origin`: Must be the `PromoteOrigin`."] + #[doc = "- `who`: Account of existing member."] + #[doc = ""] + #[doc = "Weight: `O(1)`"] pub struct PromoteMember { pub who: promote_member::Who, } @@ -12189,7 +13223,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::demote_member`]."] + #[doc = "Decrement the rank of an existing member by one. If the member is already at rank zero,"] + #[doc = "then they are removed entirely."] + #[doc = ""] + #[doc = "- `origin`: Must be the `DemoteOrigin`."] + #[doc = "- `who`: Account of existing member of rank greater than zero."] + #[doc = ""] + #[doc = "Weight: `O(1)`, less if the member's index is highest in its rank."] pub struct DemoteMember { pub who: demote_member::Who, } @@ -12211,7 +13251,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::remove_member`]."] + #[doc = "Remove the member entirely."] + #[doc = ""] + #[doc = "- `origin`: Must be the `RemoveOrigin`."] + #[doc = "- `who`: Account of existing member of rank greater than zero."] + #[doc = "- `min_rank`: The rank of the member or greater."] + #[doc = ""] + #[doc = "Weight: `O(min_rank)`."] pub struct RemoveMember { pub who: remove_member::Who, pub min_rank: remove_member::MinRank, @@ -12235,7 +13281,17 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::vote`]."] + #[doc = "Add an aye or nay vote for the sender to the given proposal."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed` by a member account."] + #[doc = "- `poll`: Index of a poll which is ongoing."] + #[doc = "- `aye`: `true` if the vote is to approve the proposal, `false` otherwise."] + #[doc = ""] + #[doc = "Transaction fees are be waived if the member is voting on any particular proposal"] + #[doc = "for the first time and the call is successful. Subsequent vote changes will charge a"] + #[doc = "fee."] + #[doc = ""] + #[doc = "Weight: `O(1)`, less if there was no previous vote on the poll by the member."] pub struct Vote { pub poll: vote::Poll, pub aye: vote::Aye, @@ -12259,7 +13315,16 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::cleanup_poll`]."] + #[doc = "Remove votes from the given poll. It must have ended."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed` by any account."] + #[doc = "- `poll_index`: Index of a poll which is completed and for which votes continue to"] + #[doc = " exist."] + #[doc = "- `max`: Maximum number of vote items from remove in this call."] + #[doc = ""] + #[doc = "Transaction fees are waived if the operation is successful."] + #[doc = ""] + #[doc = "Weight `O(max)` (less if there are fewer items to remove than `max`)."] pub struct CleanupPoll { pub poll_index: cleanup_poll::PollIndex, pub max: cleanup_poll::Max, @@ -12283,7 +13348,11 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::exchange_member`]."] + #[doc = "Exchanges a member with a new account and the same existing rank."] + #[doc = ""] + #[doc = "- `origin`: Must be the `ExchangeOrigin`."] + #[doc = "- `who`: Account of existing member of rank greater than zero to be exchanged."] + #[doc = "- `new_who`: New Account of existing member of rank greater than zero to exchanged to."] pub struct ExchangeMember { pub who: exchange_member::Who, pub new_who: exchange_member::NewWho, @@ -12300,7 +13369,12 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::add_member`]."] + #[doc = "Introduce a new member."] + #[doc = ""] + #[doc = "- `origin`: Must be the `AddOrigin`."] + #[doc = "- `who`: Account of non-member which will become a member."] + #[doc = ""] + #[doc = "Weight: `O(1)`"] pub fn add_member( &self, who: types::add_member::Who, @@ -12316,7 +13390,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::promote_member`]."] + #[doc = "Increment the rank of an existing member by one."] + #[doc = ""] + #[doc = "- `origin`: Must be the `PromoteOrigin`."] + #[doc = "- `who`: Account of existing member."] + #[doc = ""] + #[doc = "Weight: `O(1)`"] pub fn promote_member( &self, who: types::promote_member::Who, @@ -12333,7 +13412,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::demote_member`]."] + #[doc = "Decrement the rank of an existing member by one. If the member is already at rank zero,"] + #[doc = "then they are removed entirely."] + #[doc = ""] + #[doc = "- `origin`: Must be the `DemoteOrigin`."] + #[doc = "- `who`: Account of existing member of rank greater than zero."] + #[doc = ""] + #[doc = "Weight: `O(1)`, less if the member's index is highest in its rank."] pub fn demote_member( &self, who: types::demote_member::Who, @@ -12350,7 +13435,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_member`]."] + #[doc = "Remove the member entirely."] + #[doc = ""] + #[doc = "- `origin`: Must be the `RemoveOrigin`."] + #[doc = "- `who`: Account of existing member of rank greater than zero."] + #[doc = "- `min_rank`: The rank of the member or greater."] + #[doc = ""] + #[doc = "Weight: `O(min_rank)`."] pub fn remove_member( &self, who: types::remove_member::Who, @@ -12368,7 +13459,17 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::vote`]."] + #[doc = "Add an aye or nay vote for the sender to the given proposal."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed` by a member account."] + #[doc = "- `poll`: Index of a poll which is ongoing."] + #[doc = "- `aye`: `true` if the vote is to approve the proposal, `false` otherwise."] + #[doc = ""] + #[doc = "Transaction fees are be waived if the member is voting on any particular proposal"] + #[doc = "for the first time and the call is successful. Subsequent vote changes will charge a"] + #[doc = "fee."] + #[doc = ""] + #[doc = "Weight: `O(1)`, less if there was no previous vote on the poll by the member."] pub fn vote( &self, poll: types::vote::Poll, @@ -12385,7 +13486,16 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::cleanup_poll`]."] + #[doc = "Remove votes from the given poll. It must have ended."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed` by any account."] + #[doc = "- `poll_index`: Index of a poll which is completed and for which votes continue to"] + #[doc = " exist."] + #[doc = "- `max`: Maximum number of vote items from remove in this call."] + #[doc = ""] + #[doc = "Transaction fees are waived if the operation is successful."] + #[doc = ""] + #[doc = "Weight `O(max)` (less if there are fewer items to remove than `max`)."] pub fn cleanup_poll( &self, poll_index: types::cleanup_poll::PollIndex, @@ -12403,7 +13513,11 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::exchange_member`]."] + #[doc = "Exchanges a member with a new account and the same existing rank."] + #[doc = ""] + #[doc = "- `origin`: Must be the `ExchangeOrigin`."] + #[doc = "- `who`: Account of existing member of rank greater than zero to be exchanged."] + #[doc = "- `new_who`: New Account of existing member of rank greater than zero to exchanged to."] pub fn exchange_member( &self, who: types::exchange_member::Who, @@ -12979,7 +14093,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::submit`]."] + #[doc = "Propose a referendum on a privileged action."] + #[doc = ""] + #[doc = "- `origin`: must be `SubmitOrigin` and the account must have `SubmissionDeposit` funds"] + #[doc = " available."] + #[doc = "- `proposal_origin`: The origin from which the proposal should be executed."] + #[doc = "- `proposal`: The proposal."] + #[doc = "- `enactment_moment`: The moment that the proposal should be enacted."] + #[doc = ""] + #[doc = "Emits `Submitted`."] pub struct Submit { pub proposal_origin: ::std::boxed::Box, pub proposal: submit::Proposal, @@ -13011,7 +14133,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::place_decision_deposit`]."] + #[doc = "Post the Decision Deposit for a referendum."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` and the account must have funds available for the"] + #[doc = " referendum's track's Decision Deposit."] + #[doc = "- `index`: The index of the submitted referendum whose Decision Deposit is yet to be"] + #[doc = " posted."] + #[doc = ""] + #[doc = "Emits `DecisionDepositPlaced`."] pub struct PlaceDecisionDeposit { pub index: place_decision_deposit::Index, } @@ -13033,7 +14162,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::refund_decision_deposit`]."] + #[doc = "Refund the Decision Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Decision Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `DecisionDepositRefunded`."] pub struct RefundDecisionDeposit { pub index: refund_decision_deposit::Index, } @@ -13055,7 +14190,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::cancel`]."] + #[doc = "Cancel an ongoing referendum."] + #[doc = ""] + #[doc = "- `origin`: must be the `CancelOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Cancelled`."] pub struct Cancel { pub index: cancel::Index, } @@ -13077,7 +14217,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::kill`]."] + #[doc = "Cancel an ongoing referendum and slash the deposits."] + #[doc = ""] + #[doc = "- `origin`: must be the `KillOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Killed` and `DepositSlashed`."] pub struct Kill { pub index: kill::Index, } @@ -13099,7 +14244,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::nudge_referendum`]."] + #[doc = "Advance a referendum onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `index`: the referendum to be advanced."] pub struct NudgeReferendum { pub index: nudge_referendum::Index, } @@ -13121,7 +14269,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::one_fewer_deciding`]."] + #[doc = "Advance a track onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `track`: the track to be advanced."] + #[doc = ""] + #[doc = "Action item for when there is now one fewer referendum in the deciding phase and the"] + #[doc = "`DecidingCount` is not yet updated. This means that we should either:"] + #[doc = "- begin deciding another referendum (and leave `DecidingCount` alone); or"] + #[doc = "- decrement `DecidingCount`."] pub struct OneFewerDeciding { pub track: one_fewer_deciding::Track, } @@ -13143,7 +14299,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::refund_submission_deposit`]."] + #[doc = "Refund the Submission Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Submission Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `SubmissionDepositRefunded`."] pub struct RefundSubmissionDeposit { pub index: refund_submission_deposit::Index, } @@ -13165,7 +14327,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_metadata`]."] + #[doc = "Set or clear metadata of a referendum."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: Must be `Signed` by a creator of a referendum or by anyone to clear a"] + #[doc = " metadata of a finished referendum."] + #[doc = "- `index`: The index of a referendum to set or clear metadata for."] + #[doc = "- `maybe_hash`: The hash of an on-chain stored preimage. `None` to clear a metadata."] pub struct SetMetadata { pub index: set_metadata::Index, pub maybe_hash: set_metadata::MaybeHash, @@ -13182,7 +14350,15 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::submit`]."] + #[doc = "Propose a referendum on a privileged action."] + #[doc = ""] + #[doc = "- `origin`: must be `SubmitOrigin` and the account must have `SubmissionDeposit` funds"] + #[doc = " available."] + #[doc = "- `proposal_origin`: The origin from which the proposal should be executed."] + #[doc = "- `proposal`: The proposal."] + #[doc = "- `enactment_moment`: The moment that the proposal should be enacted."] + #[doc = ""] + #[doc = "Emits `Submitted`."] pub fn submit( &self, proposal_origin: types::submit::ProposalOrigin, @@ -13204,7 +14380,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::place_decision_deposit`]."] + #[doc = "Post the Decision Deposit for a referendum."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` and the account must have funds available for the"] + #[doc = " referendum's track's Decision Deposit."] + #[doc = "- `index`: The index of the submitted referendum whose Decision Deposit is yet to be"] + #[doc = " posted."] + #[doc = ""] + #[doc = "Emits `DecisionDepositPlaced`."] pub fn place_decision_deposit( &self, index: types::place_decision_deposit::Index, @@ -13220,7 +14403,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::refund_decision_deposit`]."] + #[doc = "Refund the Decision Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Decision Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `DecisionDepositRefunded`."] pub fn refund_decision_deposit( &self, index: types::refund_decision_deposit::Index, @@ -13236,7 +14425,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::cancel`]."] + #[doc = "Cancel an ongoing referendum."] + #[doc = ""] + #[doc = "- `origin`: must be the `CancelOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Cancelled`."] pub fn cancel( &self, index: types::cancel::Index, @@ -13253,7 +14447,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::kill`]."] + #[doc = "Cancel an ongoing referendum and slash the deposits."] + #[doc = ""] + #[doc = "- `origin`: must be the `KillOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Killed` and `DepositSlashed`."] pub fn kill(&self, index: types::kill::Index) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "FellowshipReferenda", @@ -13267,7 +14466,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::nudge_referendum`]."] + #[doc = "Advance a referendum onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `index`: the referendum to be advanced."] pub fn nudge_referendum( &self, index: types::nudge_referendum::Index, @@ -13284,7 +14486,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::one_fewer_deciding`]."] + #[doc = "Advance a track onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `track`: the track to be advanced."] + #[doc = ""] + #[doc = "Action item for when there is now one fewer referendum in the deciding phase and the"] + #[doc = "`DecidingCount` is not yet updated. This means that we should either:"] + #[doc = "- begin deciding another referendum (and leave `DecidingCount` alone); or"] + #[doc = "- decrement `DecidingCount`."] pub fn one_fewer_deciding( &self, track: types::one_fewer_deciding::Track, @@ -13301,7 +14511,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::refund_submission_deposit`]."] + #[doc = "Refund the Submission Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Submission Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `SubmissionDepositRefunded`."] pub fn refund_submission_deposit( &self, index: types::refund_submission_deposit::Index, @@ -13317,7 +14533,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_metadata`]."] + #[doc = "Set or clear metadata of a referendum."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: Must be `Signed` by a creator of a referendum or by anyone to clear a"] + #[doc = " metadata of a finished referendum."] + #[doc = "- `index`: The index of a referendum to set or clear metadata for."] + #[doc = "- `maybe_hash`: The hash of an on-chain stored preimage. `None` to clear a metadata."] pub fn set_metadata( &self, index: types::set_metadata::Index, @@ -14129,7 +15351,6 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::whitelist_call`]."] pub struct WhitelistCall { pub call_hash: whitelist_call::CallHash, } @@ -14151,7 +15372,6 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::remove_whitelisted_call`]."] pub struct RemoveWhitelistedCall { pub call_hash: remove_whitelisted_call::CallHash, } @@ -14173,7 +15393,6 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::dispatch_whitelisted_call`]."] pub struct DispatchWhitelistedCall { pub call_hash: dispatch_whitelisted_call::CallHash, pub call_encoded_len: dispatch_whitelisted_call::CallEncodedLen, @@ -14199,7 +15418,6 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::dispatch_whitelisted_call_with_preimage`]."] pub struct DispatchWhitelistedCallWithPreimage { pub call: ::std::boxed::Box, } @@ -14214,7 +15432,6 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::whitelist_call`]."] pub fn whitelist_call( &self, call_hash: types::whitelist_call::CallHash, @@ -14231,7 +15448,6 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_whitelisted_call`]."] pub fn remove_whitelisted_call( &self, call_hash: types::remove_whitelisted_call::CallHash, @@ -14248,7 +15464,6 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::dispatch_whitelisted_call`]."] pub fn dispatch_whitelisted_call( &self, call_hash: types::dispatch_whitelisted_call::CallHash, @@ -14271,7 +15486,6 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::dispatch_whitelisted_call_with_preimage`]."] pub fn dispatch_whitelisted_call_with_preimage( &self, call: types::dispatch_whitelisted_call_with_preimage::Call, @@ -14284,10 +15498,9 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 22u8, 6u8, 147u8, 82u8, 187u8, 143u8, 69u8, 45u8, 97u8, 1u8, 106u8, - 162u8, 200u8, 33u8, 243u8, 148u8, 5u8, 143u8, 227u8, 242u8, 167u8, - 120u8, 17u8, 241u8, 102u8, 162u8, 217u8, 14u8, 178u8, 75u8, 143u8, - 104u8, + 5u8, 34u8, 158u8, 60u8, 245u8, 185u8, 170u8, 44u8, 214u8, 208u8, 88u8, + 254u8, 35u8, 136u8, 207u8, 220u8, 73u8, 73u8, 39u8, 5u8, 118u8, 197u8, + 197u8, 222u8, 123u8, 52u8, 213u8, 237u8, 129u8, 4u8, 50u8, 143u8, ], ) } @@ -14449,7 +15662,30 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::claim`]."] + #[doc = "Make a claim to collect your DOTs."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _None_."] + #[doc = ""] + #[doc = "Unsigned Validation:"] + #[doc = "A call to claim is deemed valid if the signature provided matches"] + #[doc = "the expected signed message of:"] + #[doc = ""] + #[doc = "> Ethereum Signed Message:"] + #[doc = "> (configured prefix string)(address)"] + #[doc = ""] + #[doc = "and `address` matches the `dest` account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `dest`: The destination account to payout the claim."] + #[doc = "- `ethereum_signature`: The signature of an ethereum signed message matching the format"] + #[doc = " described above."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "Weight includes logic to validate unsigned `claim` call."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] pub struct Claim { pub dest: claim::Dest, pub ethereum_signature: claim::EthereumSignature, @@ -14474,7 +15710,21 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::mint_claim`]."] + #[doc = "Mint a new claim to collect DOTs."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `who`: The Ethereum address allowed to collect this claim."] + #[doc = "- `value`: The number of DOTs that will be claimed."] + #[doc = "- `vesting_schedule`: An optional vesting schedule for these DOTs."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "We assume worst case that both vesting and statement is being inserted."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] pub struct MintClaim { pub who: mint_claim::Who, pub value: mint_claim::Value, @@ -14508,7 +15758,33 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::claim_attest`]."] + #[doc = "Make a claim to collect your DOTs by signing a statement."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _None_."] + #[doc = ""] + #[doc = "Unsigned Validation:"] + #[doc = "A call to `claim_attest` is deemed valid if the signature provided matches"] + #[doc = "the expected signed message of:"] + #[doc = ""] + #[doc = "> Ethereum Signed Message:"] + #[doc = "> (configured prefix string)(address)(statement)"] + #[doc = ""] + #[doc = "and `address` matches the `dest` account; the `statement` must match that which is"] + #[doc = "expected according to your purchase arrangement."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `dest`: The destination account to payout the claim."] + #[doc = "- `ethereum_signature`: The signature of an ethereum signed message matching the format"] + #[doc = " described above."] + #[doc = "- `statement`: The identity of the statement which is being attested to in the"] + #[doc = " signature."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "Weight includes logic to validate unsigned `claim_attest` call."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] pub struct ClaimAttest { pub dest: claim_attest::Dest, pub ethereum_signature: claim_attest::EthereumSignature, @@ -14535,7 +15811,25 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::attest`]."] + #[doc = "Attest to a statement, needed to finalize the claims process."] + #[doc = ""] + #[doc = "WARNING: Insecure unless your chain includes `PrevalidateAttests` as a"] + #[doc = "`SignedExtension`."] + #[doc = ""] + #[doc = "Unsigned Validation:"] + #[doc = "A call to attest is deemed valid if the sender has a `Preclaim` registered"] + #[doc = "and provides a `statement` which is expected for the account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `statement`: The identity of the statement which is being attested to in the"] + #[doc = " signature."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "Weight includes logic to do pre-validation on `attest` call."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] pub struct Attest { pub statement: attest::Statement, } @@ -14557,7 +15851,6 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::move_claim`]."] pub struct MoveClaim { pub old: move_claim::Old, pub new: move_claim::New, @@ -14576,7 +15869,30 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::claim`]."] + #[doc = "Make a claim to collect your DOTs."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _None_."] + #[doc = ""] + #[doc = "Unsigned Validation:"] + #[doc = "A call to claim is deemed valid if the signature provided matches"] + #[doc = "the expected signed message of:"] + #[doc = ""] + #[doc = "> Ethereum Signed Message:"] + #[doc = "> (configured prefix string)(address)"] + #[doc = ""] + #[doc = "and `address` matches the `dest` account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `dest`: The destination account to payout the claim."] + #[doc = "- `ethereum_signature`: The signature of an ethereum signed message matching the format"] + #[doc = " described above."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "Weight includes logic to validate unsigned `claim` call."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] pub fn claim( &self, dest: types::claim::Dest, @@ -14597,7 +15913,21 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::mint_claim`]."] + #[doc = "Mint a new claim to collect DOTs."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `who`: The Ethereum address allowed to collect this claim."] + #[doc = "- `value`: The number of DOTs that will be claimed."] + #[doc = "- `vesting_schedule`: An optional vesting schedule for these DOTs."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "We assume worst case that both vesting and statement is being inserted."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] pub fn mint_claim( &self, who: types::mint_claim::Who, @@ -14621,7 +15951,33 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::claim_attest`]."] + #[doc = "Make a claim to collect your DOTs by signing a statement."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _None_."] + #[doc = ""] + #[doc = "Unsigned Validation:"] + #[doc = "A call to `claim_attest` is deemed valid if the signature provided matches"] + #[doc = "the expected signed message of:"] + #[doc = ""] + #[doc = "> Ethereum Signed Message:"] + #[doc = "> (configured prefix string)(address)(statement)"] + #[doc = ""] + #[doc = "and `address` matches the `dest` account; the `statement` must match that which is"] + #[doc = "expected according to your purchase arrangement."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `dest`: The destination account to payout the claim."] + #[doc = "- `ethereum_signature`: The signature of an ethereum signed message matching the format"] + #[doc = " described above."] + #[doc = "- `statement`: The identity of the statement which is being attested to in the"] + #[doc = " signature."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "Weight includes logic to validate unsigned `claim_attest` call."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] pub fn claim_attest( &self, dest: types::claim_attest::Dest, @@ -14643,7 +15999,25 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::attest`]."] + #[doc = "Attest to a statement, needed to finalize the claims process."] + #[doc = ""] + #[doc = "WARNING: Insecure unless your chain includes `PrevalidateAttests` as a"] + #[doc = "`SignedExtension`."] + #[doc = ""] + #[doc = "Unsigned Validation:"] + #[doc = "A call to attest is deemed valid if the sender has a `Preclaim` registered"] + #[doc = "and provides a `statement` which is expected for the account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `statement`: The identity of the statement which is being attested to in the"] + #[doc = " signature."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "Weight includes logic to do pre-validation on `attest` call."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] pub fn attest( &self, statement: types::attest::Statement, @@ -14660,7 +16034,6 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::move_claim`]."] pub fn move_claim( &self, old: types::move_claim::Old, @@ -15015,7 +16388,24 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::batch`]."] + #[doc = "Send a batch of dispatch calls."] + #[doc = ""] + #[doc = "May be called from any origin except `None`."] + #[doc = ""] + #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] + #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] + #[doc = ""] + #[doc = "If origin is root then the calls are dispatched without checking origin filter. (This"] + #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(C) where C is the number of calls to be batched."] + #[doc = ""] + #[doc = "This will return `Ok` in all circumstances. To determine the success of the batch, an"] + #[doc = "event is deposited. If a call failed and the batch was interrupted, then the"] + #[doc = "`BatchInterrupted` event is deposited, along with the number of successful calls made"] + #[doc = "and the error of the failed call. If all were successful, then the `BatchCompleted`"] + #[doc = "event is deposited."] pub struct Batch { pub calls: batch::Calls, } @@ -15037,7 +16427,19 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::as_derivative`]."] + #[doc = "Send a call through an indexed pseudonym of the sender."] + #[doc = ""] + #[doc = "Filter from origin are passed along. The call will be dispatched with an origin which"] + #[doc = "use the same filter as the origin of this call."] + #[doc = ""] + #[doc = "NOTE: If you need to ensure that any account-based filtering is not honored (i.e."] + #[doc = "because you expect `proxy` to have been used prior in the call stack and you do not want"] + #[doc = "the call restrictions to apply to any sub-accounts), then use `as_multi_threshold_1`"] + #[doc = "in the Multisig pallet instead."] + #[doc = ""] + #[doc = "NOTE: Prior to version *12, this was called `as_limited_sub`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] pub struct AsDerivative { pub index: as_derivative::Index, pub call: ::std::boxed::Box, @@ -15061,7 +16463,19 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::batch_all`]."] + #[doc = "Send a batch of dispatch calls and atomically execute them."] + #[doc = "The whole transaction will rollback and fail if any of the calls failed."] + #[doc = ""] + #[doc = "May be called from any origin except `None`."] + #[doc = ""] + #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] + #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] + #[doc = ""] + #[doc = "If origin is root then the calls are dispatched without checking origin filter. (This"] + #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(C) where C is the number of calls to be batched."] pub struct BatchAll { pub calls: batch_all::Calls, } @@ -15083,7 +16497,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::dispatch_as`]."] + #[doc = "Dispatches a function call with a provided origin."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub struct DispatchAs { pub as_origin: ::std::boxed::Box, pub call: ::std::boxed::Box, @@ -15107,7 +16526,19 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_batch`]."] + #[doc = "Send a batch of dispatch calls."] + #[doc = "Unlike `batch`, it allows errors and won't interrupt."] + #[doc = ""] + #[doc = "May be called from any origin except `None`."] + #[doc = ""] + #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] + #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] + #[doc = ""] + #[doc = "If origin is root then the calls are dispatch without checking origin filter. (This"] + #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(C) where C is the number of calls to be batched."] pub struct ForceBatch { pub calls: force_batch::Calls, } @@ -15129,7 +16560,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::with_weight`]."] + #[doc = "Dispatch a function call with a specified weight."] + #[doc = ""] + #[doc = "This function does not check the weight of the call, and instead allows the"] + #[doc = "Root origin to specify the weight of the call."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] pub struct WithWeight { pub call: ::std::boxed::Box, pub weight: with_weight::Weight, @@ -15146,7 +16582,24 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::batch`]."] + #[doc = "Send a batch of dispatch calls."] + #[doc = ""] + #[doc = "May be called from any origin except `None`."] + #[doc = ""] + #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] + #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] + #[doc = ""] + #[doc = "If origin is root then the calls are dispatched without checking origin filter. (This"] + #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(C) where C is the number of calls to be batched."] + #[doc = ""] + #[doc = "This will return `Ok` in all circumstances. To determine the success of the batch, an"] + #[doc = "event is deposited. If a call failed and the batch was interrupted, then the"] + #[doc = "`BatchInterrupted` event is deposited, along with the number of successful calls made"] + #[doc = "and the error of the failed call. If all were successful, then the `BatchCompleted`"] + #[doc = "event is deposited."] pub fn batch( &self, calls: types::batch::Calls, @@ -15156,13 +16609,25 @@ pub mod api { "batch", types::Batch { calls }, [ - 190u8, 76u8, 194u8, 104u8, 12u8, 228u8, 170u8, 51u8, 80u8, 255u8, - 245u8, 201u8, 1u8, 6u8, 37u8, 123u8, 161u8, 141u8, 178u8, 35u8, 195u8, - 118u8, 25u8, 175u8, 79u8, 55u8, 53u8, 247u8, 11u8, 160u8, 207u8, 242u8, + 181u8, 127u8, 72u8, 3u8, 201u8, 66u8, 147u8, 14u8, 125u8, 58u8, 181u8, + 213u8, 122u8, 17u8, 115u8, 25u8, 62u8, 173u8, 182u8, 189u8, 10u8, + 112u8, 100u8, 66u8, 223u8, 190u8, 42u8, 175u8, 130u8, 137u8, 91u8, 0u8, ], ) } - #[doc = "See [`Pallet::as_derivative`]."] + #[doc = "Send a call through an indexed pseudonym of the sender."] + #[doc = ""] + #[doc = "Filter from origin are passed along. The call will be dispatched with an origin which"] + #[doc = "use the same filter as the origin of this call."] + #[doc = ""] + #[doc = "NOTE: If you need to ensure that any account-based filtering is not honored (i.e."] + #[doc = "because you expect `proxy` to have been used prior in the call stack and you do not want"] + #[doc = "the call restrictions to apply to any sub-accounts), then use `as_multi_threshold_1`"] + #[doc = "in the Multisig pallet instead."] + #[doc = ""] + #[doc = "NOTE: Prior to version *12, this was called `as_limited_sub`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] pub fn as_derivative( &self, index: types::as_derivative::Index, @@ -15176,14 +16641,26 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 150u8, 183u8, 64u8, 247u8, 10u8, 72u8, 40u8, 3u8, 104u8, 248u8, 146u8, - 47u8, 247u8, 114u8, 16u8, 108u8, 254u8, 162u8, 127u8, 91u8, 31u8, - 138u8, 203u8, 235u8, 247u8, 84u8, 30u8, 34u8, 228u8, 181u8, 103u8, - 246u8, + 42u8, 102u8, 244u8, 61u8, 176u8, 104u8, 53u8, 138u8, 130u8, 222u8, 2u8, + 120u8, 213u8, 145u8, 61u8, 190u8, 37u8, 201u8, 161u8, 231u8, 221u8, + 184u8, 164u8, 221u8, 246u8, 15u8, 180u8, 105u8, 174u8, 105u8, 202u8, + 204u8, ], ) } - #[doc = "See [`Pallet::batch_all`]."] + #[doc = "Send a batch of dispatch calls and atomically execute them."] + #[doc = "The whole transaction will rollback and fail if any of the calls failed."] + #[doc = ""] + #[doc = "May be called from any origin except `None`."] + #[doc = ""] + #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] + #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] + #[doc = ""] + #[doc = "If origin is root then the calls are dispatched without checking origin filter. (This"] + #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(C) where C is the number of calls to be batched."] pub fn batch_all( &self, calls: types::batch_all::Calls, @@ -15193,13 +16670,18 @@ pub mod api { "batch_all", types::BatchAll { calls }, [ - 93u8, 139u8, 245u8, 180u8, 137u8, 205u8, 82u8, 6u8, 172u8, 46u8, 253u8, - 155u8, 99u8, 197u8, 38u8, 242u8, 60u8, 160u8, 77u8, 73u8, 198u8, 233u8, - 204u8, 194u8, 156u8, 17u8, 64u8, 40u8, 156u8, 147u8, 212u8, 125u8, + 17u8, 73u8, 73u8, 197u8, 80u8, 151u8, 37u8, 8u8, 65u8, 201u8, 153u8, + 61u8, 81u8, 56u8, 220u8, 29u8, 176u8, 237u8, 55u8, 226u8, 209u8, 137u8, + 176u8, 146u8, 195u8, 175u8, 171u8, 69u8, 58u8, 189u8, 126u8, 120u8, ], ) } - #[doc = "See [`Pallet::dispatch_as`]."] + #[doc = "Dispatches a function call with a provided origin."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn dispatch_as( &self, as_origin: types::dispatch_as::AsOrigin, @@ -15213,14 +16695,25 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 46u8, 149u8, 47u8, 127u8, 211u8, 128u8, 96u8, 199u8, 179u8, 166u8, - 217u8, 15u8, 47u8, 137u8, 115u8, 124u8, 111u8, 203u8, 27u8, 54u8, 85u8, - 196u8, 162u8, 158u8, 216u8, 158u8, 184u8, 166u8, 14u8, 14u8, 104u8, - 57u8, + 26u8, 137u8, 228u8, 222u8, 250u8, 111u8, 29u8, 31u8, 210u8, 156u8, 9u8, + 151u8, 164u8, 71u8, 51u8, 228u8, 23u8, 121u8, 55u8, 27u8, 20u8, 41u8, + 198u8, 98u8, 174u8, 148u8, 124u8, 149u8, 141u8, 26u8, 17u8, 147u8, ], ) } - #[doc = "See [`Pallet::force_batch`]."] + #[doc = "Send a batch of dispatch calls."] + #[doc = "Unlike `batch`, it allows errors and won't interrupt."] + #[doc = ""] + #[doc = "May be called from any origin except `None`."] + #[doc = ""] + #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] + #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] + #[doc = ""] + #[doc = "If origin is root then the calls are dispatch without checking origin filter. (This"] + #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(C) where C is the number of calls to be batched."] pub fn force_batch( &self, calls: types::force_batch::Calls, @@ -15230,14 +16723,19 @@ pub mod api { "force_batch", types::ForceBatch { calls }, [ - 155u8, 161u8, 89u8, 164u8, 29u8, 151u8, 219u8, 213u8, 69u8, 167u8, - 226u8, 136u8, 117u8, 118u8, 112u8, 215u8, 137u8, 57u8, 237u8, 128u8, - 185u8, 217u8, 26u8, 24u8, 202u8, 14u8, 149u8, 113u8, 201u8, 155u8, - 203u8, 186u8, + 78u8, 200u8, 135u8, 14u8, 33u8, 152u8, 237u8, 126u8, 69u8, 160u8, 60u8, + 167u8, 206u8, 212u8, 121u8, 164u8, 192u8, 236u8, 58u8, 174u8, 37u8, + 63u8, 254u8, 178u8, 210u8, 68u8, 207u8, 154u8, 127u8, 173u8, 79u8, + 30u8, ], ) } - #[doc = "See [`Pallet::with_weight`]."] + #[doc = "Dispatch a function call with a specified weight."] + #[doc = ""] + #[doc = "This function does not check the weight of the call, and instead allows the"] + #[doc = "Root origin to specify the weight of the call."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] pub fn with_weight( &self, call: types::with_weight::Call, @@ -15251,9 +16749,9 @@ pub mod api { weight, }, [ - 47u8, 254u8, 18u8, 140u8, 124u8, 167u8, 16u8, 52u8, 50u8, 166u8, 123u8, - 107u8, 174u8, 238u8, 43u8, 129u8, 237u8, 255u8, 181u8, 210u8, 20u8, - 154u8, 96u8, 238u8, 219u8, 28u8, 74u8, 198u8, 122u8, 47u8, 13u8, 199u8, + 204u8, 3u8, 114u8, 23u8, 35u8, 43u8, 87u8, 118u8, 150u8, 70u8, 167u8, + 234u8, 87u8, 65u8, 39u8, 146u8, 138u8, 69u8, 125u8, 77u8, 84u8, 131u8, + 103u8, 92u8, 130u8, 48u8, 53u8, 170u8, 194u8, 103u8, 54u8, 184u8, ], ) } @@ -15427,7 +16925,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::add_registrar`]."] + #[doc = "Add a registrar to the system."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be `T::RegistrarOrigin`."] + #[doc = ""] + #[doc = "- `account`: the account of the registrar."] + #[doc = ""] + #[doc = "Emits `RegistrarAdded` if successful."] pub struct AddRegistrar { pub account: add_registrar::Account, } @@ -15450,7 +16954,16 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_identity`]."] + #[doc = "Set an account's identity information and reserve the appropriate deposit."] + #[doc = ""] + #[doc = "If the account already has identity information, the deposit is taken as part payment"] + #[doc = "for the new deposit."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `info`: The identity information."] + #[doc = ""] + #[doc = "Emits `IdentitySet` if successful."] pub struct SetIdentity { pub info: ::std::boxed::Box, } @@ -15472,7 +16985,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_subs`]."] + #[doc = "Set the sub-accounts of the sender."] + #[doc = ""] + #[doc = "Payment: Any aggregate balance reserved by previous `set_subs` calls will be returned"] + #[doc = "and an amount `SubAccountDeposit` will be reserved for each item in `subs`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "identity."] + #[doc = ""] + #[doc = "- `subs`: The identity's (new) sub-accounts."] pub struct SetSubs { pub subs: set_subs::Subs, } @@ -15497,7 +17018,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::clear_identity`]."] + #[doc = "Clear an account's identity info and all sub-accounts and return all deposits."] + #[doc = ""] + #[doc = "Payment: All reserved balances on the account are returned."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "identity."] + #[doc = ""] + #[doc = "Emits `IdentityCleared` if successful."] pub struct ClearIdentity; impl ::subxt::blocks::StaticExtrinsic for ClearIdentity { const PALLET: &'static str = "Identity"; @@ -15513,7 +17041,22 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::request_judgement`]."] + #[doc = "Request a judgement from a registrar."] + #[doc = ""] + #[doc = "Payment: At most `max_fee` will be reserved for payment to the registrar if judgement"] + #[doc = "given."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a"] + #[doc = "registered identity."] + #[doc = ""] + #[doc = "- `reg_index`: The index of the registrar whose judgement is requested."] + #[doc = "- `max_fee`: The maximum fee that may be paid. This should just be auto-populated as:"] + #[doc = ""] + #[doc = "```nocompile"] + #[doc = "Self::registrars().get(reg_index).unwrap().fee"] + #[doc = "```"] + #[doc = ""] + #[doc = "Emits `JudgementRequested` if successful."] pub struct RequestJudgement { #[codec(compact)] pub reg_index: request_judgement::RegIndex, @@ -15539,7 +17082,16 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::cancel_request`]."] + #[doc = "Cancel a previous request."] + #[doc = ""] + #[doc = "Payment: A previously reserved deposit is returned on success."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a"] + #[doc = "registered identity."] + #[doc = ""] + #[doc = "- `reg_index`: The index of the registrar whose judgement is no longer requested."] + #[doc = ""] + #[doc = "Emits `JudgementUnrequested` if successful."] pub struct CancelRequest { pub reg_index: cancel_request::RegIndex, } @@ -15561,7 +17113,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_fee`]."] + #[doc = "Set the fee required for a judgement to be requested from a registrar."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `index`."] + #[doc = ""] + #[doc = "- `index`: the index of the registrar whose fee is to be set."] + #[doc = "- `fee`: the new fee."] pub struct SetFee { #[codec(compact)] pub index: set_fee::Index, @@ -15587,7 +17145,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_account_id`]."] + #[doc = "Change the account associated with a registrar."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `index`."] + #[doc = ""] + #[doc = "- `index`: the index of the registrar whose fee is to be set."] + #[doc = "- `new`: the new account ID."] pub struct SetAccountId { #[codec(compact)] pub index: set_account_id::Index, @@ -15612,7 +17176,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_fields`]."] + #[doc = "Set the field information for a registrar."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `index`."] + #[doc = ""] + #[doc = "- `index`: the index of the registrar whose fee is to be set."] + #[doc = "- `fields`: the fields that the registrar concerns themselves with."] pub struct SetFields { #[codec(compact)] pub index: set_fields::Index, @@ -15637,7 +17207,21 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::provide_judgement`]."] + #[doc = "Provide a judgement for an account's identity."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `reg_index`."] + #[doc = ""] + #[doc = "- `reg_index`: the index of the registrar whose judgement is being made."] + #[doc = "- `target`: the account whose identity the judgement is upon. This must be an account"] + #[doc = " with a registered identity."] + #[doc = "- `judgement`: the judgement of the registrar of index `reg_index` about `target`."] + #[doc = "- `identity`: The hash of the [`IdentityInformationProvider`] for that the judgement is"] + #[doc = " provided."] + #[doc = ""] + #[doc = "Note: Judgements do not apply to a username."] + #[doc = ""] + #[doc = "Emits `JudgementGiven` if successful."] pub struct ProvideJudgement { #[codec(compact)] pub reg_index: provide_judgement::RegIndex, @@ -15667,7 +17251,18 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::kill_identity`]."] + #[doc = "Remove an account's identity and sub-account information and slash the deposits."] + #[doc = ""] + #[doc = "Payment: Reserved balances from `set_subs` and `set_identity` are slashed and handled by"] + #[doc = "`Slash`. Verification request deposits are not returned; they should be cancelled"] + #[doc = "manually using `cancel_request`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] + #[doc = ""] + #[doc = "- `target`: the account whose identity the judgement is upon. This must be an account"] + #[doc = " with a registered identity."] + #[doc = ""] + #[doc = "Emits `IdentityKilled` if successful."] pub struct KillIdentity { pub target: kill_identity::Target, } @@ -15689,7 +17284,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::add_sub`]."] + #[doc = "Add the given account to the sender's subs."] + #[doc = ""] + #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] + #[doc = "to the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "sub identity of `sub`."] pub struct AddSub { pub sub: add_sub::Sub, pub data: add_sub::Data, @@ -15713,7 +17314,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::rename_sub`]."] + #[doc = "Alter the associated name of the given sub-account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "sub identity of `sub`."] pub struct RenameSub { pub sub: rename_sub::Sub, pub data: rename_sub::Data, @@ -15737,7 +17341,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::remove_sub`]."] + #[doc = "Remove the given account from the sender's subs."] + #[doc = ""] + #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] + #[doc = "to the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "sub identity of `sub`."] pub struct RemoveSub { pub sub: remove_sub::Sub, } @@ -15759,7 +17369,16 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::quit_sub`]."] + #[doc = "Remove the sender as a sub-account."] + #[doc = ""] + #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] + #[doc = "to the sender (*not* the original depositor)."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "super-identity."] + #[doc = ""] + #[doc = "NOTE: This should not normally be used, but is provided in the case that the non-"] + #[doc = "controller of an account is maliciously registered as a sub-account."] pub struct QuitSub; impl ::subxt::blocks::StaticExtrinsic for QuitSub { const PALLET: &'static str = "Identity"; @@ -15775,7 +17394,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::add_username_authority`]."] + #[doc = "Add an `AccountId` with permission to grant usernames with a given `suffix` appended."] + #[doc = ""] + #[doc = "The authority can grant up to `allocation` usernames. To top up their allocation, they"] + #[doc = "should just issue (or request via governance) a new `add_username_authority` call."] pub struct AddUsernameAuthority { pub authority: add_username_authority::Authority, pub suffix: add_username_authority::Suffix, @@ -15802,7 +17424,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::remove_username_authority`]."] + #[doc = "Remove `authority` from the username authorities."] pub struct RemoveUsernameAuthority { pub authority: remove_username_authority::Authority, } @@ -15825,7 +17447,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_username_for`]."] + #[doc = "Set the username for `who`. Must be called by a username authority."] + #[doc = ""] + #[doc = "The authority must have an `allocation`. Users can either pre-sign their usernames or"] + #[doc = "accept them later."] + #[doc = ""] + #[doc = "Usernames must:"] + #[doc = " - Only contain lowercase ASCII characters or digits."] + #[doc = " - When combined with the suffix of the issuing authority be _less than_ the"] + #[doc = " `MaxUsernameLength`."] pub struct SetUsernameFor { pub who: set_username_for::Who, pub username: set_username_for::Username, @@ -15852,7 +17482,8 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::accept_username`]."] + #[doc = "Accept a given username that an `authority` granted. The call must include the full"] + #[doc = "username, as in `username.suffix`."] pub struct AcceptUsername { pub username: accept_username::Username, } @@ -15876,7 +17507,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::remove_expired_approval`]."] + #[doc = "Remove an expired username approval. The username was approved by an authority but never"] + #[doc = "accepted by the user and must now be beyond its expiration. The call must include the"] + #[doc = "full username, as in `username.suffix`."] pub struct RemoveExpiredApproval { pub username: remove_expired_approval::Username, } @@ -15900,7 +17533,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_primary_username`]."] + #[doc = "Set a given username as the primary. The username should include the suffix."] pub struct SetPrimaryUsername { pub username: set_primary_username::Username, } @@ -15924,7 +17557,8 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::remove_dangling_username`]."] + #[doc = "Remove a username that corresponds to an account with no identity. Exists when a user"] + #[doc = "gets a username but then calls `clear_identity`."] pub struct RemoveDanglingUsername { pub username: remove_dangling_username::Username, } @@ -15941,7 +17575,13 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::add_registrar`]."] + #[doc = "Add a registrar to the system."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be `T::RegistrarOrigin`."] + #[doc = ""] + #[doc = "- `account`: the account of the registrar."] + #[doc = ""] + #[doc = "Emits `RegistrarAdded` if successful."] pub fn add_registrar( &self, account: types::add_registrar::Account, @@ -15957,7 +17597,16 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_identity`]."] + #[doc = "Set an account's identity information and reserve the appropriate deposit."] + #[doc = ""] + #[doc = "If the account already has identity information, the deposit is taken as part payment"] + #[doc = "for the new deposit."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `info`: The identity information."] + #[doc = ""] + #[doc = "Emits `IdentitySet` if successful."] pub fn set_identity( &self, info: types::set_identity::Info, @@ -15976,7 +17625,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_subs`]."] + #[doc = "Set the sub-accounts of the sender."] + #[doc = ""] + #[doc = "Payment: Any aggregate balance reserved by previous `set_subs` calls will be returned"] + #[doc = "and an amount `SubAccountDeposit` will be reserved for each item in `subs`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "identity."] + #[doc = ""] + #[doc = "- `subs`: The identity's (new) sub-accounts."] pub fn set_subs( &self, subs: types::set_subs::Subs, @@ -15993,7 +17650,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::clear_identity`]."] + #[doc = "Clear an account's identity info and all sub-accounts and return all deposits."] + #[doc = ""] + #[doc = "Payment: All reserved balances on the account are returned."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "identity."] + #[doc = ""] + #[doc = "Emits `IdentityCleared` if successful."] pub fn clear_identity(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Identity", @@ -16007,7 +17671,22 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::request_judgement`]."] + #[doc = "Request a judgement from a registrar."] + #[doc = ""] + #[doc = "Payment: At most `max_fee` will be reserved for payment to the registrar if judgement"] + #[doc = "given."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a"] + #[doc = "registered identity."] + #[doc = ""] + #[doc = "- `reg_index`: The index of the registrar whose judgement is requested."] + #[doc = "- `max_fee`: The maximum fee that may be paid. This should just be auto-populated as:"] + #[doc = ""] + #[doc = "```nocompile"] + #[doc = "Self::registrars().get(reg_index).unwrap().fee"] + #[doc = "```"] + #[doc = ""] + #[doc = "Emits `JudgementRequested` if successful."] pub fn request_judgement( &self, reg_index: types::request_judgement::RegIndex, @@ -16024,7 +17703,16 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::cancel_request`]."] + #[doc = "Cancel a previous request."] + #[doc = ""] + #[doc = "Payment: A previously reserved deposit is returned on success."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a"] + #[doc = "registered identity."] + #[doc = ""] + #[doc = "- `reg_index`: The index of the registrar whose judgement is no longer requested."] + #[doc = ""] + #[doc = "Emits `JudgementUnrequested` if successful."] pub fn cancel_request( &self, reg_index: types::cancel_request::RegIndex, @@ -16041,7 +17729,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_fee`]."] + #[doc = "Set the fee required for a judgement to be requested from a registrar."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `index`."] + #[doc = ""] + #[doc = "- `index`: the index of the registrar whose fee is to be set."] + #[doc = "- `fee`: the new fee."] pub fn set_fee( &self, index: types::set_fee::Index, @@ -16059,7 +17753,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_account_id`]."] + #[doc = "Change the account associated with a registrar."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `index`."] + #[doc = ""] + #[doc = "- `index`: the index of the registrar whose fee is to be set."] + #[doc = "- `new`: the new account ID."] pub fn set_account_id( &self, index: types::set_account_id::Index, @@ -16077,7 +17777,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_fields`]."] + #[doc = "Set the field information for a registrar."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `index`."] + #[doc = ""] + #[doc = "- `index`: the index of the registrar whose fee is to be set."] + #[doc = "- `fields`: the fields that the registrar concerns themselves with."] pub fn set_fields( &self, index: types::set_fields::Index, @@ -16095,7 +17801,21 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::provide_judgement`]."] + #[doc = "Provide a judgement for an account's identity."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `reg_index`."] + #[doc = ""] + #[doc = "- `reg_index`: the index of the registrar whose judgement is being made."] + #[doc = "- `target`: the account whose identity the judgement is upon. This must be an account"] + #[doc = " with a registered identity."] + #[doc = "- `judgement`: the judgement of the registrar of index `reg_index` about `target`."] + #[doc = "- `identity`: The hash of the [`IdentityInformationProvider`] for that the judgement is"] + #[doc = " provided."] + #[doc = ""] + #[doc = "Note: Judgements do not apply to a username."] + #[doc = ""] + #[doc = "Emits `JudgementGiven` if successful."] pub fn provide_judgement( &self, reg_index: types::provide_judgement::RegIndex, @@ -16120,7 +17840,18 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::kill_identity`]."] + #[doc = "Remove an account's identity and sub-account information and slash the deposits."] + #[doc = ""] + #[doc = "Payment: Reserved balances from `set_subs` and `set_identity` are slashed and handled by"] + #[doc = "`Slash`. Verification request deposits are not returned; they should be cancelled"] + #[doc = "manually using `cancel_request`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] + #[doc = ""] + #[doc = "- `target`: the account whose identity the judgement is upon. This must be an account"] + #[doc = " with a registered identity."] + #[doc = ""] + #[doc = "Emits `IdentityKilled` if successful."] pub fn kill_identity( &self, target: types::kill_identity::Target, @@ -16137,7 +17868,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::add_sub`]."] + #[doc = "Add the given account to the sender's subs."] + #[doc = ""] + #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] + #[doc = "to the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "sub identity of `sub`."] pub fn add_sub( &self, sub: types::add_sub::Sub, @@ -16154,7 +17891,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::rename_sub`]."] + #[doc = "Alter the associated name of the given sub-account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "sub identity of `sub`."] pub fn rename_sub( &self, sub: types::rename_sub::Sub, @@ -16172,7 +17912,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_sub`]."] + #[doc = "Remove the given account from the sender's subs."] + #[doc = ""] + #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] + #[doc = "to the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "sub identity of `sub`."] pub fn remove_sub( &self, sub: types::remove_sub::Sub, @@ -16188,7 +17934,16 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::quit_sub`]."] + #[doc = "Remove the sender as a sub-account."] + #[doc = ""] + #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] + #[doc = "to the sender (*not* the original depositor)."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "super-identity."] + #[doc = ""] + #[doc = "NOTE: This should not normally be used, but is provided in the case that the non-"] + #[doc = "controller of an account is maliciously registered as a sub-account."] pub fn quit_sub(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Identity", @@ -16202,7 +17957,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::add_username_authority`]."] + #[doc = "Add an `AccountId` with permission to grant usernames with a given `suffix` appended."] + #[doc = ""] + #[doc = "The authority can grant up to `allocation` usernames. To top up their allocation, they"] + #[doc = "should just issue (or request via governance) a new `add_username_authority` call."] pub fn add_username_authority( &self, authority: types::add_username_authority::Authority, @@ -16225,7 +17983,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_username_authority`]."] + #[doc = "Remove `authority` from the username authorities."] pub fn remove_username_authority( &self, authority: types::remove_username_authority::Authority, @@ -16241,7 +17999,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_username_for`]."] + #[doc = "Set the username for `who`. Must be called by a username authority."] + #[doc = ""] + #[doc = "The authority must have an `allocation`. Users can either pre-sign their usernames or"] + #[doc = "accept them later."] + #[doc = ""] + #[doc = "Usernames must:"] + #[doc = " - Only contain lowercase ASCII characters or digits."] + #[doc = " - When combined with the suffix of the issuing authority be _less than_ the"] + #[doc = " `MaxUsernameLength`."] pub fn set_username_for( &self, who: types::set_username_for::Who, @@ -16264,7 +18030,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::accept_username`]."] + #[doc = "Accept a given username that an `authority` granted. The call must include the full"] + #[doc = "username, as in `username.suffix`."] pub fn accept_username( &self, username: types::accept_username::Username, @@ -16280,7 +18047,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_expired_approval`]."] + #[doc = "Remove an expired username approval. The username was approved by an authority but never"] + #[doc = "accepted by the user and must now be beyond its expiration. The call must include the"] + #[doc = "full username, as in `username.suffix`."] pub fn remove_expired_approval( &self, username: types::remove_expired_approval::Username, @@ -16296,7 +18065,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_primary_username`]."] + #[doc = "Set a given username as the primary. The username should include the suffix."] pub fn set_primary_username( &self, username: types::set_primary_username::Username, @@ -16312,7 +18081,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_dangling_username`]."] + #[doc = "Remove a username that corresponds to an account with no identity. Exists when a user"] + #[doc = "gets a username but then calls `clear_identity`."] pub fn remove_dangling_username( &self, username: types::remove_dangling_username::Username, @@ -17314,7 +19084,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::bid`]."] + #[doc = "A user outside of the society can make a bid for entry."] + #[doc = ""] + #[doc = "Payment: The group's Candidate Deposit will be reserved for making a bid. It is returned"] + #[doc = "when the bid becomes a member, or if the bid calls `unbid`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `value`: A one time payment the bid would like to receive when joining the society."] pub struct Bid { pub value: bid::Value, } @@ -17336,7 +19114,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::unbid`]."] + #[doc = "A bidder can remove their bid for entry into society."] + #[doc = "By doing so, they will have their candidate deposit returned or"] + #[doc = "they will unvouch their voucher."] + #[doc = ""] + #[doc = "Payment: The bid deposit is unreserved if the user made a bid."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a bidder."] pub struct Unbid; impl ::subxt::blocks::StaticExtrinsic for Unbid { const PALLET: &'static str = "Society"; @@ -17352,7 +19136,23 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::vouch`]."] + #[doc = "As a member, vouch for someone to join society by placing a bid on their behalf."] + #[doc = ""] + #[doc = "There is no deposit required to vouch for a new bid, but a member can only vouch for"] + #[doc = "one bid at a time. If the bid becomes a suspended candidate and ultimately rejected by"] + #[doc = "the suspension judgement origin, the member will be banned from vouching again."] + #[doc = ""] + #[doc = "As a vouching member, you can claim a tip if the candidate is accepted. This tip will"] + #[doc = "be paid as a portion of the reward the member will receive for joining the society."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `who`: The user who you would like to vouch for."] + #[doc = "- `value`: The total reward to be paid between you and the candidate if they become"] + #[doc = "a member in the society."] + #[doc = "- `tip`: Your cut of the total `value` payout when the candidate is inducted into"] + #[doc = "the society. Tips larger than `value` will be saturated upon payout."] pub struct Vouch { pub who: vouch::Who, pub value: vouch::Value, @@ -17378,7 +19178,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::unvouch`]."] + #[doc = "As a vouching member, unvouch a bid. This only works while vouched user is"] + #[doc = "only a bidder (and not a candidate)."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a vouching member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `pos`: Position in the `Bids` vector of the bid who should be unvouched."] pub struct Unvouch; impl ::subxt::blocks::StaticExtrinsic for Unvouch { const PALLET: &'static str = "Society"; @@ -17394,7 +19200,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::vote`]."] + #[doc = "As a member, vote on a candidate."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `candidate`: The candidate that the member would like to bid on."] + #[doc = "- `approve`: A boolean which says if the candidate should be approved (`true`) or"] + #[doc = " rejected (`false`)."] pub struct Vote { pub candidate: vote::Candidate, pub approve: vote::Approve, @@ -17419,7 +19232,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::defender_vote`]."] + #[doc = "As a member, vote on the defender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `approve`: A boolean which says if the candidate should be"] + #[doc = "approved (`true`) or rejected (`false`)."] pub struct DefenderVote { pub approve: defender_vote::Approve, } @@ -17441,7 +19260,16 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::payout`]."] + #[doc = "Transfer the first matured payout for the sender and remove it from the records."] + #[doc = ""] + #[doc = "NOTE: This extrinsic needs to be called multiple times to claim multiple matured"] + #[doc = "payouts."] + #[doc = ""] + #[doc = "Payment: The member will receive a payment equal to their first matured"] + #[doc = "payout to their free balance."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member with"] + #[doc = "payouts remaining."] pub struct Payout; impl ::subxt::blocks::StaticExtrinsic for Payout { const PALLET: &'static str = "Society"; @@ -17457,7 +19285,8 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::waive_repay`]."] + #[doc = "Repay the payment previously given to the member with the signed origin, remove any"] + #[doc = "pending payments, and elevate them from rank 0 to rank 1."] pub struct WaiveRepay { pub amount: waive_repay::Amount, } @@ -17479,7 +19308,23 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::found_society`]."] + #[doc = "Found the society."] + #[doc = ""] + #[doc = "This is done as a discrete action in order to allow for the"] + #[doc = "pallet to be included into a running chain and can only be done once."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be from the _FounderSetOrigin_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `founder` - The first member and head of the newly founded society."] + #[doc = "- `max_members` - The initial max number of members for the society."] + #[doc = "- `max_intake` - The maximum number of candidates per intake period."] + #[doc = "- `max_strikes`: The maximum number of strikes a member may get before they become"] + #[doc = " suspended and may only be reinstated by the founder."] + #[doc = "- `candidate_deposit`: The deposit required to make a bid for membership of the group."] + #[doc = "- `rules` - The rules of this society concerning membership."] + #[doc = ""] + #[doc = "Complexity: O(1)"] pub struct FoundSociety { pub founder: found_society::Founder, pub max_members: found_society::MaxMembers, @@ -17512,7 +19357,11 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::dissolve`]."] + #[doc = "Dissolve the society and remove all members."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be Signed, and the signing account must be both"] + #[doc = "the `Founder` and the `Head`. This implies that it may only be done when there is one"] + #[doc = "member."] pub struct Dissolve; impl ::subxt::blocks::StaticExtrinsic for Dissolve { const PALLET: &'static str = "Society"; @@ -17528,7 +19377,20 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::judge_suspended_member`]."] + #[doc = "Allow suspension judgement origin to make judgement on a suspended member."] + #[doc = ""] + #[doc = "If a suspended member is forgiven, we simply add them back as a member, not affecting"] + #[doc = "any of the existing storage items for that member."] + #[doc = ""] + #[doc = "If a suspended member is rejected, remove all associated storage items, including"] + #[doc = "their payouts, and remove any vouched bids they currently have."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be Signed from the Founder."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `who` - The suspended member to be judged."] + #[doc = "- `forgive` - A boolean representing whether the suspension judgement origin forgives"] + #[doc = " (`true`) or rejects (`false`) a suspended member."] pub struct JudgeSuspendedMember { pub who: judge_suspended_member::Who, pub forgive: judge_suspended_member::Forgive, @@ -17552,7 +19414,18 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_parameters`]."] + #[doc = "Change the maximum number of members in society and the maximum number of new candidates"] + #[doc = "in a single intake period."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be Signed by the Founder."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `max_members` - The maximum number of members for the society. This must be no less"] + #[doc = " than the current number of members."] + #[doc = "- `max_intake` - The maximum number of candidates per intake period."] + #[doc = "- `max_strikes`: The maximum number of strikes a member may get before they become"] + #[doc = " suspended and may only be reinstated by the founder."] + #[doc = "- `candidate_deposit`: The deposit required to make a bid for membership of the group."] pub struct SetParameters { pub max_members: set_parameters::MaxMembers, pub max_intake: set_parameters::MaxIntake, @@ -17580,7 +19453,8 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::punish_skeptic`]."] + #[doc = "Punish the skeptic with a strike if they did not vote on a candidate. Callable by the"] + #[doc = "candidate."] pub struct PunishSkeptic; impl ::subxt::blocks::StaticExtrinsic for PunishSkeptic { const PALLET: &'static str = "Society"; @@ -17596,7 +19470,8 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::claim_membership`]."] + #[doc = "Transform an approved candidate into a member. Callable only by the"] + #[doc = "the candidate, and only after the period for voting has ended."] pub struct ClaimMembership; impl ::subxt::blocks::StaticExtrinsic for ClaimMembership { const PALLET: &'static str = "Society"; @@ -17612,7 +19487,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::bestow_membership`]."] + #[doc = "Transform an approved candidate into a member. Callable only by the Signed origin of the"] + #[doc = "Founder, only after the period for voting has ended and only when the candidate is not"] + #[doc = "clearly rejected."] pub struct BestowMembership { pub candidate: bestow_membership::Candidate, } @@ -17634,7 +19511,11 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::kick_candidate`]."] + #[doc = "Remove the candidate's application from the society. Callable only by the Signed origin"] + #[doc = "of the Founder, only after the period for voting has ended, and only when they do not"] + #[doc = "have a clear approval."] + #[doc = ""] + #[doc = "Any bid deposit is lost and voucher is banned."] pub struct KickCandidate { pub candidate: kick_candidate::Candidate, } @@ -17656,7 +19537,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::resign_candidacy`]."] + #[doc = "Remove the candidate's application from the society. Callable only by the candidate."] + #[doc = ""] + #[doc = "Any bid deposit is lost and voucher is banned."] pub struct ResignCandidacy; impl ::subxt::blocks::StaticExtrinsic for ResignCandidacy { const PALLET: &'static str = "Society"; @@ -17672,7 +19555,11 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::drop_candidate`]."] + #[doc = "Remove a `candidate`'s failed application from the society. Callable by any"] + #[doc = "signed origin but only at the end of the subsequent round and only for"] + #[doc = "a candidate with more rejections than approvals."] + #[doc = ""] + #[doc = "The bid deposit is lost and the voucher is banned."] pub struct DropCandidate { pub candidate: drop_candidate::Candidate, } @@ -17694,7 +19581,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::cleanup_candidacy`]."] + #[doc = "Remove up to `max` stale votes for the given `candidate`."] + #[doc = ""] + #[doc = "May be called by any Signed origin, but only after the candidate's candidacy is ended."] pub struct CleanupCandidacy { pub candidate: cleanup_candidacy::Candidate, pub max: cleanup_candidacy::Max, @@ -17718,7 +19607,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::cleanup_challenge`]."] + #[doc = "Remove up to `max` stale votes for the defender in the given `challenge_round`."] + #[doc = ""] + #[doc = "May be called by any Signed origin, but only after the challenge round is ended."] pub struct CleanupChallenge { pub challenge_round: cleanup_challenge::ChallengeRound, pub max: cleanup_challenge::Max, @@ -17735,7 +19626,15 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::bid`]."] + #[doc = "A user outside of the society can make a bid for entry."] + #[doc = ""] + #[doc = "Payment: The group's Candidate Deposit will be reserved for making a bid. It is returned"] + #[doc = "when the bid becomes a member, or if the bid calls `unbid`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `value`: A one time payment the bid would like to receive when joining the society."] pub fn bid(&self, value: types::bid::Value) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Society", @@ -17748,7 +19647,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::unbid`]."] + #[doc = "A bidder can remove their bid for entry into society."] + #[doc = "By doing so, they will have their candidate deposit returned or"] + #[doc = "they will unvouch their voucher."] + #[doc = ""] + #[doc = "Payment: The bid deposit is unreserved if the user made a bid."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a bidder."] pub fn unbid(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Society", @@ -17762,7 +19667,23 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::vouch`]."] + #[doc = "As a member, vouch for someone to join society by placing a bid on their behalf."] + #[doc = ""] + #[doc = "There is no deposit required to vouch for a new bid, but a member can only vouch for"] + #[doc = "one bid at a time. If the bid becomes a suspended candidate and ultimately rejected by"] + #[doc = "the suspension judgement origin, the member will be banned from vouching again."] + #[doc = ""] + #[doc = "As a vouching member, you can claim a tip if the candidate is accepted. This tip will"] + #[doc = "be paid as a portion of the reward the member will receive for joining the society."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `who`: The user who you would like to vouch for."] + #[doc = "- `value`: The total reward to be paid between you and the candidate if they become"] + #[doc = "a member in the society."] + #[doc = "- `tip`: Your cut of the total `value` payout when the candidate is inducted into"] + #[doc = "the society. Tips larger than `value` will be saturated upon payout."] pub fn vouch( &self, who: types::vouch::Who, @@ -17780,7 +19701,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::unvouch`]."] + #[doc = "As a vouching member, unvouch a bid. This only works while vouched user is"] + #[doc = "only a bidder (and not a candidate)."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a vouching member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `pos`: Position in the `Bids` vector of the bid who should be unvouched."] pub fn unvouch(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Society", @@ -17794,7 +19721,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::vote`]."] + #[doc = "As a member, vote on a candidate."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `candidate`: The candidate that the member would like to bid on."] + #[doc = "- `approve`: A boolean which says if the candidate should be approved (`true`) or"] + #[doc = " rejected (`false`)."] pub fn vote( &self, candidate: types::vote::Candidate, @@ -17811,7 +19745,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::defender_vote`]."] + #[doc = "As a member, vote on the defender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `approve`: A boolean which says if the candidate should be"] + #[doc = "approved (`true`) or rejected (`false`)."] pub fn defender_vote( &self, approve: types::defender_vote::Approve, @@ -17828,7 +19768,16 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::payout`]."] + #[doc = "Transfer the first matured payout for the sender and remove it from the records."] + #[doc = ""] + #[doc = "NOTE: This extrinsic needs to be called multiple times to claim multiple matured"] + #[doc = "payouts."] + #[doc = ""] + #[doc = "Payment: The member will receive a payment equal to their first matured"] + #[doc = "payout to their free balance."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member with"] + #[doc = "payouts remaining."] pub fn payout(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Society", @@ -17841,7 +19790,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::waive_repay`]."] + #[doc = "Repay the payment previously given to the member with the signed origin, remove any"] + #[doc = "pending payments, and elevate them from rank 0 to rank 1."] pub fn waive_repay( &self, amount: types::waive_repay::Amount, @@ -17857,7 +19807,23 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::found_society`]."] + #[doc = "Found the society."] + #[doc = ""] + #[doc = "This is done as a discrete action in order to allow for the"] + #[doc = "pallet to be included into a running chain and can only be done once."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be from the _FounderSetOrigin_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `founder` - The first member and head of the newly founded society."] + #[doc = "- `max_members` - The initial max number of members for the society."] + #[doc = "- `max_intake` - The maximum number of candidates per intake period."] + #[doc = "- `max_strikes`: The maximum number of strikes a member may get before they become"] + #[doc = " suspended and may only be reinstated by the founder."] + #[doc = "- `candidate_deposit`: The deposit required to make a bid for membership of the group."] + #[doc = "- `rules` - The rules of this society concerning membership."] + #[doc = ""] + #[doc = "Complexity: O(1)"] pub fn found_society( &self, founder: types::found_society::Founder, @@ -17886,7 +19852,11 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::dissolve`]."] + #[doc = "Dissolve the society and remove all members."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be Signed, and the signing account must be both"] + #[doc = "the `Founder` and the `Head`. This implies that it may only be done when there is one"] + #[doc = "member."] pub fn dissolve(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Society", @@ -17900,7 +19870,20 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::judge_suspended_member`]."] + #[doc = "Allow suspension judgement origin to make judgement on a suspended member."] + #[doc = ""] + #[doc = "If a suspended member is forgiven, we simply add them back as a member, not affecting"] + #[doc = "any of the existing storage items for that member."] + #[doc = ""] + #[doc = "If a suspended member is rejected, remove all associated storage items, including"] + #[doc = "their payouts, and remove any vouched bids they currently have."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be Signed from the Founder."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `who` - The suspended member to be judged."] + #[doc = "- `forgive` - A boolean representing whether the suspension judgement origin forgives"] + #[doc = " (`true`) or rejects (`false`) a suspended member."] pub fn judge_suspended_member( &self, who: types::judge_suspended_member::Who, @@ -17917,7 +19900,18 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_parameters`]."] + #[doc = "Change the maximum number of members in society and the maximum number of new candidates"] + #[doc = "in a single intake period."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be Signed by the Founder."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `max_members` - The maximum number of members for the society. This must be no less"] + #[doc = " than the current number of members."] + #[doc = "- `max_intake` - The maximum number of candidates per intake period."] + #[doc = "- `max_strikes`: The maximum number of strikes a member may get before they become"] + #[doc = " suspended and may only be reinstated by the founder."] + #[doc = "- `candidate_deposit`: The deposit required to make a bid for membership of the group."] pub fn set_parameters( &self, max_members: types::set_parameters::MaxMembers, @@ -17942,7 +19936,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::punish_skeptic`]."] + #[doc = "Punish the skeptic with a strike if they did not vote on a candidate. Callable by the"] + #[doc = "candidate."] pub fn punish_skeptic(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Society", @@ -17956,7 +19951,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::claim_membership`]."] + #[doc = "Transform an approved candidate into a member. Callable only by the"] + #[doc = "the candidate, and only after the period for voting has ended."] pub fn claim_membership(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Society", @@ -17969,7 +19965,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::bestow_membership`]."] + #[doc = "Transform an approved candidate into a member. Callable only by the Signed origin of the"] + #[doc = "Founder, only after the period for voting has ended and only when the candidate is not"] + #[doc = "clearly rejected."] pub fn bestow_membership( &self, candidate: types::bestow_membership::Candidate, @@ -17985,7 +19983,11 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::kick_candidate`]."] + #[doc = "Remove the candidate's application from the society. Callable only by the Signed origin"] + #[doc = "of the Founder, only after the period for voting has ended, and only when they do not"] + #[doc = "have a clear approval."] + #[doc = ""] + #[doc = "Any bid deposit is lost and voucher is banned."] pub fn kick_candidate( &self, candidate: types::kick_candidate::Candidate, @@ -18001,7 +20003,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::resign_candidacy`]."] + #[doc = "Remove the candidate's application from the society. Callable only by the candidate."] + #[doc = ""] + #[doc = "Any bid deposit is lost and voucher is banned."] pub fn resign_candidacy(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Society", @@ -18015,7 +20019,11 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::drop_candidate`]."] + #[doc = "Remove a `candidate`'s failed application from the society. Callable by any"] + #[doc = "signed origin but only at the end of the subsequent round and only for"] + #[doc = "a candidate with more rejections than approvals."] + #[doc = ""] + #[doc = "The bid deposit is lost and the voucher is banned."] pub fn drop_candidate( &self, candidate: types::drop_candidate::Candidate, @@ -18031,7 +20039,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::cleanup_candidacy`]."] + #[doc = "Remove up to `max` stale votes for the given `candidate`."] + #[doc = ""] + #[doc = "May be called by any Signed origin, but only after the candidate's candidacy is ended."] pub fn cleanup_candidacy( &self, candidate: types::cleanup_candidacy::Candidate, @@ -18049,7 +20059,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::cleanup_challenge`]."] + #[doc = "Remove up to `max` stale votes for the defender in the given `challenge_round`."] + #[doc = ""] + #[doc = "May be called by any Signed origin, but only after the challenge round is ended."] pub fn cleanup_challenge( &self, challenge_round: types::cleanup_challenge::ChallengeRound, @@ -19435,7 +21447,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::as_recovered`]."] + #[doc = "Send a call through a recovered account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and registered to"] + #[doc = "be able to make calls on behalf of the recovered account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The recovered account you want to make a call on-behalf-of."] + #[doc = "- `call`: The call you want to make with the recovered account."] pub struct AsRecovered { pub account: as_recovered::Account, pub call: ::std::boxed::Box, @@ -19460,7 +21479,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_recovered`]."] + #[doc = "Allow ROOT to bypass the recovery process and set an a rescuer account"] + #[doc = "for a lost account directly."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _ROOT_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `lost`: The \"lost account\" to be recovered."] + #[doc = "- `rescuer`: The \"rescuer account\" which can call as the lost account."] pub struct SetRecovered { pub lost: set_recovered::Lost, pub rescuer: set_recovered::Rescuer, @@ -19485,7 +21511,22 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::create_recovery`]."] + #[doc = "Create a recovery configuration for your account. This makes your account recoverable."] + #[doc = ""] + #[doc = "Payment: `ConfigDepositBase` + `FriendDepositFactor` * #_of_friends balance"] + #[doc = "will be reserved for storing the recovery configuration. This deposit is returned"] + #[doc = "in full when the user calls `remove_recovery`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `friends`: A list of friends you trust to vouch for recovery attempts. Should be"] + #[doc = " ordered and contain no duplicate values."] + #[doc = "- `threshold`: The number of friends that must vouch for a recovery attempt before the"] + #[doc = " account can be recovered. Should be less than or equal to the length of the list of"] + #[doc = " friends."] + #[doc = "- `delay_period`: The number of blocks after a recovery attempt is initialized that"] + #[doc = " needs to pass before the account can be recovered."] pub struct CreateRecovery { pub friends: create_recovery::Friends, pub threshold: create_recovery::Threshold, @@ -19511,7 +21552,17 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::initiate_recovery`]."] + #[doc = "Initiate the process for recovering a recoverable account."] + #[doc = ""] + #[doc = "Payment: `RecoveryDeposit` balance will be reserved for initiating the"] + #[doc = "recovery process. This deposit will always be repatriated to the account"] + #[doc = "trying to be recovered. See `close_recovery`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The lost account that you want to recover. This account needs to be"] + #[doc = " recoverable (i.e. have a recovery configuration)."] pub struct InitiateRecovery { pub account: initiate_recovery::Account, } @@ -19534,7 +21585,18 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::vouch_recovery`]."] + #[doc = "Allow a \"friend\" of a recoverable account to vouch for an active recovery"] + #[doc = "process for that account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a \"friend\""] + #[doc = "for the recoverable account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `lost`: The lost account that you want to recover."] + #[doc = "- `rescuer`: The account trying to rescue the lost account that you want to vouch for."] + #[doc = ""] + #[doc = "The combination of these two parameters must point to an active recovery"] + #[doc = "process."] pub struct VouchRecovery { pub lost: vouch_recovery::Lost, pub rescuer: vouch_recovery::Rescuer, @@ -19559,7 +21621,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::claim_recovery`]."] + #[doc = "Allow a successful rescuer to claim their recovered account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a \"rescuer\""] + #[doc = "who has successfully completed the account recovery process: collected"] + #[doc = "`threshold` or more vouches, waited `delay_period` blocks since initiation."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The lost account that you want to claim has been successfully recovered by"] + #[doc = " you."] pub struct ClaimRecovery { pub account: claim_recovery::Account, } @@ -19582,7 +21652,17 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::close_recovery`]."] + #[doc = "As the controller of a recoverable account, close an active recovery"] + #[doc = "process for your account."] + #[doc = ""] + #[doc = "Payment: By calling this function, the recoverable account will receive"] + #[doc = "the recovery deposit `RecoveryDeposit` placed by the rescuer."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a"] + #[doc = "recoverable account with an active recovery process for it."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `rescuer`: The account trying to rescue this recoverable account."] pub struct CloseRecovery { pub rescuer: close_recovery::Rescuer, } @@ -19605,7 +21685,17 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::remove_recovery`]."] + #[doc = "Remove the recovery process for your account. Recovered accounts are still accessible."] + #[doc = ""] + #[doc = "NOTE: The user must make sure to call `close_recovery` on all active"] + #[doc = "recovery attempts before calling this function else it will fail."] + #[doc = ""] + #[doc = "Payment: By calling this function the recoverable account will unreserve"] + #[doc = "their recovery configuration deposit."] + #[doc = "(`ConfigDepositBase` + `FriendDepositFactor` * #_of_friends)"] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a"] + #[doc = "recoverable account (i.e. has a recovery configuration)."] pub struct RemoveRecovery; impl ::subxt::blocks::StaticExtrinsic for RemoveRecovery { const PALLET: &'static str = "Recovery"; @@ -19621,7 +21711,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::cancel_recovered`]."] + #[doc = "Cancel the ability to use `as_recovered` for `account`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and registered to"] + #[doc = "be able to make calls on behalf of the recovered account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The recovered account you are able to call on-behalf-of."] pub struct CancelRecovered { pub account: cancel_recovered::Account, } @@ -19637,7 +21733,14 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::as_recovered`]."] + #[doc = "Send a call through a recovered account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and registered to"] + #[doc = "be able to make calls on behalf of the recovered account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The recovered account you want to make a call on-behalf-of."] + #[doc = "- `call`: The call you want to make with the recovered account."] pub fn as_recovered( &self, account: types::as_recovered::Account, @@ -19651,13 +21754,21 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 37u8, 58u8, 252u8, 116u8, 228u8, 248u8, 131u8, 216u8, 1u8, 33u8, 213u8, - 41u8, 203u8, 3u8, 225u8, 255u8, 195u8, 8u8, 172u8, 38u8, 249u8, 105u8, - 83u8, 16u8, 13u8, 213u8, 0u8, 91u8, 198u8, 141u8, 6u8, 16u8, + 135u8, 12u8, 48u8, 186u8, 171u8, 82u8, 254u8, 243u8, 245u8, 181u8, + 120u8, 28u8, 237u8, 197u8, 36u8, 204u8, 118u8, 98u8, 112u8, 129u8, + 95u8, 226u8, 68u8, 252u8, 55u8, 72u8, 164u8, 40u8, 121u8, 195u8, 128u8, + 12u8, ], ) } - #[doc = "See [`Pallet::set_recovered`]."] + #[doc = "Allow ROOT to bypass the recovery process and set an a rescuer account"] + #[doc = "for a lost account directly."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _ROOT_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `lost`: The \"lost account\" to be recovered."] + #[doc = "- `rescuer`: The \"rescuer account\" which can call as the lost account."] pub fn set_recovered( &self, lost: types::set_recovered::Lost, @@ -19674,7 +21785,22 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::create_recovery`]."] + #[doc = "Create a recovery configuration for your account. This makes your account recoverable."] + #[doc = ""] + #[doc = "Payment: `ConfigDepositBase` + `FriendDepositFactor` * #_of_friends balance"] + #[doc = "will be reserved for storing the recovery configuration. This deposit is returned"] + #[doc = "in full when the user calls `remove_recovery`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `friends`: A list of friends you trust to vouch for recovery attempts. Should be"] + #[doc = " ordered and contain no duplicate values."] + #[doc = "- `threshold`: The number of friends that must vouch for a recovery attempt before the"] + #[doc = " account can be recovered. Should be less than or equal to the length of the list of"] + #[doc = " friends."] + #[doc = "- `delay_period`: The number of blocks after a recovery attempt is initialized that"] + #[doc = " needs to pass before the account can be recovered."] pub fn create_recovery( &self, friends: types::create_recovery::Friends, @@ -19696,7 +21822,17 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::initiate_recovery`]."] + #[doc = "Initiate the process for recovering a recoverable account."] + #[doc = ""] + #[doc = "Payment: `RecoveryDeposit` balance will be reserved for initiating the"] + #[doc = "recovery process. This deposit will always be repatriated to the account"] + #[doc = "trying to be recovered. See `close_recovery`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The lost account that you want to recover. This account needs to be"] + #[doc = " recoverable (i.e. have a recovery configuration)."] pub fn initiate_recovery( &self, account: types::initiate_recovery::Account, @@ -19712,7 +21848,18 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::vouch_recovery`]."] + #[doc = "Allow a \"friend\" of a recoverable account to vouch for an active recovery"] + #[doc = "process for that account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a \"friend\""] + #[doc = "for the recoverable account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `lost`: The lost account that you want to recover."] + #[doc = "- `rescuer`: The account trying to rescue the lost account that you want to vouch for."] + #[doc = ""] + #[doc = "The combination of these two parameters must point to an active recovery"] + #[doc = "process."] pub fn vouch_recovery( &self, lost: types::vouch_recovery::Lost, @@ -19729,7 +21876,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::claim_recovery`]."] + #[doc = "Allow a successful rescuer to claim their recovered account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a \"rescuer\""] + #[doc = "who has successfully completed the account recovery process: collected"] + #[doc = "`threshold` or more vouches, waited `delay_period` blocks since initiation."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The lost account that you want to claim has been successfully recovered by"] + #[doc = " you."] pub fn claim_recovery( &self, account: types::claim_recovery::Account, @@ -19746,7 +21901,17 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::close_recovery`]."] + #[doc = "As the controller of a recoverable account, close an active recovery"] + #[doc = "process for your account."] + #[doc = ""] + #[doc = "Payment: By calling this function, the recoverable account will receive"] + #[doc = "the recovery deposit `RecoveryDeposit` placed by the rescuer."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a"] + #[doc = "recoverable account with an active recovery process for it."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `rescuer`: The account trying to rescue this recoverable account."] pub fn close_recovery( &self, rescuer: types::close_recovery::Rescuer, @@ -19763,7 +21928,17 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_recovery`]."] + #[doc = "Remove the recovery process for your account. Recovered accounts are still accessible."] + #[doc = ""] + #[doc = "NOTE: The user must make sure to call `close_recovery` on all active"] + #[doc = "recovery attempts before calling this function else it will fail."] + #[doc = ""] + #[doc = "Payment: By calling this function the recoverable account will unreserve"] + #[doc = "their recovery configuration deposit."] + #[doc = "(`ConfigDepositBase` + `FriendDepositFactor` * #_of_friends)"] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a"] + #[doc = "recoverable account (i.e. has a recovery configuration)."] pub fn remove_recovery(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Recovery", @@ -19777,7 +21952,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::cancel_recovered`]."] + #[doc = "Cancel the ability to use `as_recovered` for `account`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and registered to"] + #[doc = "be able to make calls on behalf of the recovered account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The recovered account you are able to call on-behalf-of."] pub fn cancel_recovered( &self, account: types::cancel_recovered::Account, @@ -20260,7 +22441,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::vest`]."] + #[doc = "Unlock any vested funds of the sender account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have funds still"] + #[doc = "locked under this pallet."] + #[doc = ""] + #[doc = "Emits either `VestingCompleted` or `VestingUpdated`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub struct Vest; impl ::subxt::blocks::StaticExtrinsic for Vest { const PALLET: &'static str = "Vesting"; @@ -20276,7 +22465,17 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::vest_other`]."] + #[doc = "Unlock any vested funds of a `target` account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `target`: The account whose vested funds should be unlocked. Must have funds still"] + #[doc = "locked under this pallet."] + #[doc = ""] + #[doc = "Emits either `VestingCompleted` or `VestingUpdated`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub struct VestOther { pub target: vest_other::Target, } @@ -20298,7 +22497,19 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::vested_transfer`]."] + #[doc = "Create a vested transfer."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `target`: The account receiving the vested funds."] + #[doc = "- `schedule`: The vesting schedule attached to the transfer."] + #[doc = ""] + #[doc = "Emits `VestingCreated`."] + #[doc = ""] + #[doc = "NOTE: This will unlock all schedules through the current block."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub struct VestedTransfer { pub target: vested_transfer::Target, pub schedule: vested_transfer::Schedule, @@ -20325,7 +22536,20 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_vested_transfer`]."] + #[doc = "Force a vested transfer."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "- `source`: The account whose funds should be transferred."] + #[doc = "- `target`: The account that should be transferred the vested funds."] + #[doc = "- `schedule`: The vesting schedule attached to the transfer."] + #[doc = ""] + #[doc = "Emits `VestingCreated`."] + #[doc = ""] + #[doc = "NOTE: This will unlock all schedules through the current block."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub struct ForceVestedTransfer { pub source: force_vested_transfer::Source, pub target: force_vested_transfer::Target, @@ -20354,7 +22578,27 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::merge_schedules`]."] + #[doc = "Merge two vesting schedules together, creating a new vesting schedule that unlocks over"] + #[doc = "the highest possible start and end blocks. If both schedules have already started the"] + #[doc = "current block will be used as the schedule start; with the caveat that if one schedule"] + #[doc = "is finished by the current block, the other will be treated as the new merged schedule,"] + #[doc = "unmodified."] + #[doc = ""] + #[doc = "NOTE: If `schedule1_index == schedule2_index` this is a no-op."] + #[doc = "NOTE: This will unlock all schedules through the current block prior to merging."] + #[doc = "NOTE: If both schedules have ended by the current block, no new schedule will be created"] + #[doc = "and both will be removed."] + #[doc = ""] + #[doc = "Merged schedule attributes:"] + #[doc = "- `starting_block`: `MAX(schedule1.starting_block, scheduled2.starting_block,"] + #[doc = " current_block)`."] + #[doc = "- `ending_block`: `MAX(schedule1.ending_block, schedule2.ending_block)`."] + #[doc = "- `locked`: `schedule1.locked_at(current_block) + schedule2.locked_at(current_block)`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `schedule1_index`: index of the first schedule to merge."] + #[doc = "- `schedule2_index`: index of the second schedule to merge."] pub struct MergeSchedules { pub schedule1_index: merge_schedules::Schedule1Index, pub schedule2_index: merge_schedules::Schedule2Index, @@ -20378,7 +22622,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_remove_vesting_schedule`]."] + #[doc = "Force remove a vesting schedule"] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "- `target`: An account that has a vesting schedule"] + #[doc = "- `schedule_index`: The vesting schedule index that should be removed"] pub struct ForceRemoveVestingSchedule { pub target: force_remove_vesting_schedule::Target, pub schedule_index: force_remove_vesting_schedule::ScheduleIndex, @@ -20395,7 +22644,15 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::vest`]."] + #[doc = "Unlock any vested funds of the sender account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have funds still"] + #[doc = "locked under this pallet."] + #[doc = ""] + #[doc = "Emits either `VestingCompleted` or `VestingUpdated`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn vest(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Vesting", @@ -20409,7 +22666,17 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::vest_other`]."] + #[doc = "Unlock any vested funds of a `target` account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `target`: The account whose vested funds should be unlocked. Must have funds still"] + #[doc = "locked under this pallet."] + #[doc = ""] + #[doc = "Emits either `VestingCompleted` or `VestingUpdated`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn vest_other( &self, target: types::vest_other::Target, @@ -20425,7 +22692,19 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::vested_transfer`]."] + #[doc = "Create a vested transfer."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `target`: The account receiving the vested funds."] + #[doc = "- `schedule`: The vesting schedule attached to the transfer."] + #[doc = ""] + #[doc = "Emits `VestingCreated`."] + #[doc = ""] + #[doc = "NOTE: This will unlock all schedules through the current block."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn vested_transfer( &self, target: types::vested_transfer::Target, @@ -20442,7 +22721,20 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_vested_transfer`]."] + #[doc = "Force a vested transfer."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "- `source`: The account whose funds should be transferred."] + #[doc = "- `target`: The account that should be transferred the vested funds."] + #[doc = "- `schedule`: The vesting schedule attached to the transfer."] + #[doc = ""] + #[doc = "Emits `VestingCreated`."] + #[doc = ""] + #[doc = "NOTE: This will unlock all schedules through the current block."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn force_vested_transfer( &self, source: types::force_vested_transfer::Source, @@ -20465,7 +22757,27 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::merge_schedules`]."] + #[doc = "Merge two vesting schedules together, creating a new vesting schedule that unlocks over"] + #[doc = "the highest possible start and end blocks. If both schedules have already started the"] + #[doc = "current block will be used as the schedule start; with the caveat that if one schedule"] + #[doc = "is finished by the current block, the other will be treated as the new merged schedule,"] + #[doc = "unmodified."] + #[doc = ""] + #[doc = "NOTE: If `schedule1_index == schedule2_index` this is a no-op."] + #[doc = "NOTE: This will unlock all schedules through the current block prior to merging."] + #[doc = "NOTE: If both schedules have ended by the current block, no new schedule will be created"] + #[doc = "and both will be removed."] + #[doc = ""] + #[doc = "Merged schedule attributes:"] + #[doc = "- `starting_block`: `MAX(schedule1.starting_block, scheduled2.starting_block,"] + #[doc = " current_block)`."] + #[doc = "- `ending_block`: `MAX(schedule1.ending_block, schedule2.ending_block)`."] + #[doc = "- `locked`: `schedule1.locked_at(current_block) + schedule2.locked_at(current_block)`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `schedule1_index`: index of the first schedule to merge."] + #[doc = "- `schedule2_index`: index of the second schedule to merge."] pub fn merge_schedules( &self, schedule1_index: types::merge_schedules::Schedule1Index, @@ -20485,7 +22797,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_remove_vesting_schedule`]."] + #[doc = "Force remove a vesting schedule"] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "- `target`: An account that has a vesting schedule"] + #[doc = "- `schedule_index`: The vesting schedule index that should be removed"] pub fn force_remove_vesting_schedule( &self, target: types::force_remove_vesting_schedule::Target, @@ -20710,7 +23027,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::schedule`]."] + #[doc = "Anonymously schedule a task."] pub struct Schedule { pub when: schedule::When, pub maybe_periodic: schedule::MaybePeriodic, @@ -20739,7 +23056,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::cancel`]."] + #[doc = "Cancel an anonymously scheduled task."] pub struct Cancel { pub when: cancel::When, pub index: cancel::Index, @@ -20763,7 +23080,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::schedule_named`]."] + #[doc = "Schedule a named task."] pub struct ScheduleNamed { pub id: schedule_named::Id, pub when: schedule_named::When, @@ -20794,7 +23111,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::cancel_named`]."] + #[doc = "Cancel a named scheduled task."] pub struct CancelNamed { pub id: cancel_named::Id, } @@ -20816,7 +23133,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::schedule_after`]."] + #[doc = "Anonymously schedule a task after a delay."] pub struct ScheduleAfter { pub after: schedule_after::After, pub maybe_periodic: schedule_after::MaybePeriodic, @@ -20845,7 +23162,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::schedule_named_after`]."] + #[doc = "Schedule a named task after a delay."] pub struct ScheduleNamedAfter { pub id: schedule_named_after::Id, pub after: schedule_named_after::After, @@ -20876,7 +23193,18 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_retry`]."] + #[doc = "Set a retry configuration for a task so that, in case its scheduled run fails, it will"] + #[doc = "be retried after `period` blocks, for a total amount of `retries` retries or until it"] + #[doc = "succeeds."] + #[doc = ""] + #[doc = "Tasks which need to be scheduled for a retry are still subject to weight metering and"] + #[doc = "agenda space, same as a regular task. If a periodic task fails, it will be scheduled"] + #[doc = "normally while the task is retrying."] + #[doc = ""] + #[doc = "Tasks scheduled as a result of a retry for a periodic task are unnamed, non-periodic"] + #[doc = "clones of the original task. Their retry configuration will be derived from the"] + #[doc = "original task's configuration, but will have a lower value for `remaining` than the"] + #[doc = "original `total_retries`."] pub struct SetRetry { pub task: set_retry::Task, pub retries: set_retry::Retries, @@ -20902,7 +23230,18 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_retry_named`]."] + #[doc = "Set a retry configuration for a named task so that, in case its scheduled run fails, it"] + #[doc = "will be retried after `period` blocks, for a total amount of `retries` retries or until"] + #[doc = "it succeeds."] + #[doc = ""] + #[doc = "Tasks which need to be scheduled for a retry are still subject to weight metering and"] + #[doc = "agenda space, same as a regular task. If a periodic task fails, it will be scheduled"] + #[doc = "normally while the task is retrying."] + #[doc = ""] + #[doc = "Tasks scheduled as a result of a retry for a periodic task are unnamed, non-periodic"] + #[doc = "clones of the original task. Their retry configuration will be derived from the"] + #[doc = "original task's configuration, but will have a lower value for `remaining` than the"] + #[doc = "original `total_retries`."] pub struct SetRetryNamed { pub id: set_retry_named::Id, pub retries: set_retry_named::Retries, @@ -20928,7 +23267,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::cancel_retry`]."] + #[doc = "Removes the retry configuration of a task."] pub struct CancelRetry { pub task: cancel_retry::Task, } @@ -20950,7 +23289,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::cancel_retry_named`]."] + #[doc = "Cancel the retry configuration of a named task."] pub struct CancelRetryNamed { pub id: cancel_retry_named::Id, } @@ -20965,7 +23304,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::schedule`]."] + #[doc = "Anonymously schedule a task."] pub fn schedule( &self, when: types::schedule::When, @@ -20983,13 +23322,14 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 138u8, 196u8, 26u8, 129u8, 131u8, 51u8, 78u8, 112u8, 92u8, 174u8, 12u8, - 239u8, 185u8, 165u8, 26u8, 20u8, 222u8, 255u8, 172u8, 151u8, 217u8, - 62u8, 14u8, 102u8, 128u8, 147u8, 143u8, 226u8, 72u8, 62u8, 155u8, 68u8, + 177u8, 175u8, 49u8, 206u8, 0u8, 101u8, 223u8, 105u8, 237u8, 222u8, + 54u8, 201u8, 142u8, 85u8, 208u8, 239u8, 149u8, 209u8, 97u8, 72u8, + 126u8, 225u8, 10u8, 235u8, 26u8, 223u8, 197u8, 153u8, 19u8, 254u8, + 251u8, 181u8, ], ) } - #[doc = "See [`Pallet::cancel`]."] + #[doc = "Cancel an anonymously scheduled task."] pub fn cancel( &self, when: types::cancel::When, @@ -21007,7 +23347,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::schedule_named`]."] + #[doc = "Schedule a named task."] pub fn schedule_named( &self, id: types::schedule_named::Id, @@ -21027,14 +23367,13 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 208u8, 81u8, 95u8, 195u8, 171u8, 238u8, 152u8, 17u8, 86u8, 72u8, 242u8, - 225u8, 129u8, 96u8, 255u8, 181u8, 233u8, 51u8, 174u8, 78u8, 111u8, - 251u8, 244u8, 84u8, 217u8, 223u8, 155u8, 119u8, 167u8, 221u8, 65u8, - 5u8, + 164u8, 136u8, 103u8, 178u8, 45u8, 181u8, 133u8, 195u8, 92u8, 93u8, + 198u8, 193u8, 65u8, 15u8, 156u8, 206u8, 69u8, 50u8, 50u8, 34u8, 150u8, + 94u8, 181u8, 111u8, 219u8, 127u8, 86u8, 122u8, 36u8, 186u8, 21u8, 35u8, ], ) } - #[doc = "See [`Pallet::cancel_named`]."] + #[doc = "Cancel a named scheduled task."] pub fn cancel_named( &self, id: types::cancel_named::Id, @@ -21050,7 +23389,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::schedule_after`]."] + #[doc = "Anonymously schedule a task after a delay."] pub fn schedule_after( &self, after: types::schedule_after::After, @@ -21068,14 +23407,14 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 217u8, 111u8, 46u8, 195u8, 219u8, 234u8, 12u8, 95u8, 253u8, 237u8, - 76u8, 172u8, 88u8, 168u8, 167u8, 165u8, 199u8, 170u8, 207u8, 233u8, - 239u8, 33u8, 251u8, 30u8, 242u8, 210u8, 130u8, 254u8, 129u8, 30u8, - 186u8, 40u8, + 236u8, 195u8, 150u8, 165u8, 194u8, 42u8, 187u8, 43u8, 80u8, 229u8, + 221u8, 146u8, 56u8, 125u8, 199u8, 212u8, 10u8, 2u8, 2u8, 207u8, 195u8, + 54u8, 38u8, 59u8, 193u8, 239u8, 195u8, 150u8, 161u8, 29u8, 113u8, + 225u8, ], ) } - #[doc = "See [`Pallet::schedule_named_after`]."] + #[doc = "Schedule a named task after a delay."] pub fn schedule_named_after( &self, id: types::schedule_named_after::Id, @@ -21095,13 +23434,25 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 79u8, 253u8, 17u8, 220u8, 97u8, 235u8, 221u8, 156u8, 35u8, 51u8, 19u8, - 230u8, 126u8, 42u8, 51u8, 92u8, 171u8, 168u8, 67u8, 13u8, 63u8, 185u8, - 58u8, 30u8, 7u8, 171u8, 53u8, 144u8, 156u8, 255u8, 237u8, 19u8, + 28u8, 81u8, 177u8, 155u8, 39u8, 10u8, 188u8, 144u8, 52u8, 208u8, 6u8, + 205u8, 122u8, 255u8, 38u8, 105u8, 171u8, 234u8, 58u8, 224u8, 86u8, + 188u8, 53u8, 177u8, 113u8, 155u8, 54u8, 237u8, 214u8, 10u8, 140u8, + 245u8, ], ) } - #[doc = "See [`Pallet::set_retry`]."] + #[doc = "Set a retry configuration for a task so that, in case its scheduled run fails, it will"] + #[doc = "be retried after `period` blocks, for a total amount of `retries` retries or until it"] + #[doc = "succeeds."] + #[doc = ""] + #[doc = "Tasks which need to be scheduled for a retry are still subject to weight metering and"] + #[doc = "agenda space, same as a regular task. If a periodic task fails, it will be scheduled"] + #[doc = "normally while the task is retrying."] + #[doc = ""] + #[doc = "Tasks scheduled as a result of a retry for a periodic task are unnamed, non-periodic"] + #[doc = "clones of the original task. Their retry configuration will be derived from the"] + #[doc = "original task's configuration, but will have a lower value for `remaining` than the"] + #[doc = "original `total_retries`."] pub fn set_retry( &self, task: types::set_retry::Task, @@ -21123,7 +23474,18 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_retry_named`]."] + #[doc = "Set a retry configuration for a named task so that, in case its scheduled run fails, it"] + #[doc = "will be retried after `period` blocks, for a total amount of `retries` retries or until"] + #[doc = "it succeeds."] + #[doc = ""] + #[doc = "Tasks which need to be scheduled for a retry are still subject to weight metering and"] + #[doc = "agenda space, same as a regular task. If a periodic task fails, it will be scheduled"] + #[doc = "normally while the task is retrying."] + #[doc = ""] + #[doc = "Tasks scheduled as a result of a retry for a periodic task are unnamed, non-periodic"] + #[doc = "clones of the original task. Their retry configuration will be derived from the"] + #[doc = "original task's configuration, but will have a lower value for `remaining` than the"] + #[doc = "original `total_retries`."] pub fn set_retry_named( &self, id: types::set_retry_named::Id, @@ -21146,7 +23508,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::cancel_retry`]."] + #[doc = "Removes the retry configuration of a task."] pub fn cancel_retry( &self, task: types::cancel_retry::Task, @@ -21163,7 +23525,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::cancel_retry_named`]."] + #[doc = "Cancel the retry configuration of a named task."] pub fn cancel_retry_named( &self, id: types::cancel_retry_named::Id, @@ -21708,7 +24070,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::proxy`]."] + #[doc = "Dispatch the given `call` from an account that the sender is authorised for through"] + #[doc = "`add_proxy`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `force_proxy_type`: Specify the exact proxy type to be used and checked for this call."] + #[doc = "- `call`: The call to be made by the `real` account."] pub struct Proxy { pub real: proxy::Real, pub force_proxy_type: proxy::ForceProxyType, @@ -21735,7 +24105,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::add_proxy`]."] + #[doc = "Register a proxy account for the sender that is able to make calls on its behalf."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `proxy`: The account that the `caller` would like to make a proxy."] + #[doc = "- `proxy_type`: The permissions allowed for this proxy account."] + #[doc = "- `delay`: The announcement period required of the initial proxy. Will generally be"] + #[doc = "zero."] pub struct AddProxy { pub delegate: add_proxy::Delegate, pub proxy_type: add_proxy::ProxyType, @@ -21762,7 +24140,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::remove_proxy`]."] + #[doc = "Unregister a proxy account for the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `proxy`: The account that the `caller` would like to remove as a proxy."] + #[doc = "- `proxy_type`: The permissions currently enabled for the removed proxy account."] pub struct RemoveProxy { pub delegate: remove_proxy::Delegate, pub proxy_type: remove_proxy::ProxyType, @@ -21789,7 +24173,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::remove_proxies`]."] + #[doc = "Unregister all proxy accounts for the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "WARNING: This may be called on accounts created by `pure`, however if done, then"] + #[doc = "the unreserved fees will be inaccessible. **All access to this account will be lost.**"] pub struct RemoveProxies; impl ::subxt::blocks::StaticExtrinsic for RemoveProxies { const PALLET: &'static str = "Proxy"; @@ -21805,7 +24194,24 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::create_pure`]."] + #[doc = "Spawn a fresh new account that is guaranteed to be otherwise inaccessible, and"] + #[doc = "initialize it with a proxy of `proxy_type` for `origin` sender."] + #[doc = ""] + #[doc = "Requires a `Signed` origin."] + #[doc = ""] + #[doc = "- `proxy_type`: The type of the proxy that the sender will be registered as over the"] + #[doc = "new account. This will almost always be the most permissive `ProxyType` possible to"] + #[doc = "allow for maximum flexibility."] + #[doc = "- `index`: A disambiguation index, in case this is called multiple times in the same"] + #[doc = "transaction (e.g. with `utility::batch`). Unless you're using `batch` you probably just"] + #[doc = "want to use `0`."] + #[doc = "- `delay`: The announcement period required of the initial proxy. Will generally be"] + #[doc = "zero."] + #[doc = ""] + #[doc = "Fails with `Duplicate` if this has already been called in this transaction, from the"] + #[doc = "same sender, with the same parameters."] + #[doc = ""] + #[doc = "Fails if there are insufficient funds to pay for deposit."] pub struct CreatePure { pub proxy_type: create_pure::ProxyType, pub delay: create_pure::Delay, @@ -21831,7 +24237,22 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::kill_pure`]."] + #[doc = "Removes a previously spawned pure proxy."] + #[doc = ""] + #[doc = "WARNING: **All access to this account will be lost.** Any funds held in it will be"] + #[doc = "inaccessible."] + #[doc = ""] + #[doc = "Requires a `Signed` origin, and the sender account must have been created by a call to"] + #[doc = "`pure` with corresponding parameters."] + #[doc = ""] + #[doc = "- `spawner`: The account that originally called `pure` to create this account."] + #[doc = "- `index`: The disambiguation index originally passed to `pure`. Probably `0`."] + #[doc = "- `proxy_type`: The proxy type originally passed to `pure`."] + #[doc = "- `height`: The height of the chain when the call to `pure` was processed."] + #[doc = "- `ext_index`: The extrinsic index in which the call to `pure` was processed."] + #[doc = ""] + #[doc = "Fails with `NoPermission` in case the caller is not a previously created pure"] + #[doc = "account whose `pure` call has corresponding parameters."] pub struct KillPure { pub spawner: kill_pure::Spawner, pub proxy_type: kill_pure::ProxyType, @@ -21864,7 +24285,21 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::announce`]."] + #[doc = "Publish the hash of a proxy-call that will be made in the future."] + #[doc = ""] + #[doc = "This must be called some number of blocks before the corresponding `proxy` is attempted"] + #[doc = "if the delay associated with the proxy relationship is greater than zero."] + #[doc = ""] + #[doc = "No more than `MaxPending` announcements may be made at any one time."] + #[doc = ""] + #[doc = "This will take a deposit of `AnnouncementDepositFactor` as well as"] + #[doc = "`AnnouncementDepositBase` if there are no other pending announcements."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a proxy of `real`."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `call_hash`: The hash of the call to be made by the `real` account."] pub struct Announce { pub real: announce::Real, pub call_hash: announce::CallHash, @@ -21888,7 +24323,16 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::remove_announcement`]."] + #[doc = "Remove a given announcement."] + #[doc = ""] + #[doc = "May be called by a proxy account to remove a call they previously announced and return"] + #[doc = "the deposit."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `call_hash`: The hash of the call to be made by the `real` account."] pub struct RemoveAnnouncement { pub real: remove_announcement::Real, pub call_hash: remove_announcement::CallHash, @@ -21912,7 +24356,16 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::reject_announcement`]."] + #[doc = "Remove the given announcement of a delegate."] + #[doc = ""] + #[doc = "May be called by a target (proxied) account to remove a call that one of their delegates"] + #[doc = "(`delegate`) has announced they want to execute. The deposit is returned."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `delegate`: The account that previously announced the call."] + #[doc = "- `call_hash`: The hash of the call to be made."] pub struct RejectAnnouncement { pub delegate: reject_announcement::Delegate, pub call_hash: reject_announcement::CallHash, @@ -21937,7 +24390,17 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::proxy_announced`]."] + #[doc = "Dispatch the given `call` from an account that the sender is authorized for through"] + #[doc = "`add_proxy`."] + #[doc = ""] + #[doc = "Removes any corresponding announcement(s)."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `force_proxy_type`: Specify the exact proxy type to be used and checked for this call."] + #[doc = "- `call`: The call to be made by the `real` account."] pub struct ProxyAnnounced { pub delegate: proxy_announced::Delegate, pub real: proxy_announced::Real, @@ -21960,7 +24423,15 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::proxy`]."] + #[doc = "Dispatch the given `call` from an account that the sender is authorised for through"] + #[doc = "`add_proxy`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `force_proxy_type`: Specify the exact proxy type to be used and checked for this call."] + #[doc = "- `call`: The call to be made by the `real` account."] pub fn proxy( &self, real: types::proxy::Real, @@ -21976,14 +24447,22 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 27u8, 41u8, 64u8, 205u8, 145u8, 228u8, 163u8, 100u8, 114u8, 12u8, - 176u8, 150u8, 113u8, 197u8, 148u8, 23u8, 28u8, 27u8, 246u8, 111u8, - 117u8, 252u8, 190u8, 69u8, 164u8, 213u8, 185u8, 65u8, 213u8, 172u8, - 183u8, 205u8, + 253u8, 236u8, 54u8, 144u8, 19u8, 103u8, 190u8, 174u8, 231u8, 154u8, + 133u8, 175u8, 56u8, 44u8, 172u8, 25u8, 73u8, 196u8, 76u8, 61u8, 12u8, + 48u8, 245u8, 85u8, 187u8, 15u8, 111u8, 121u8, 91u8, 157u8, 111u8, + 141u8, ], ) } - #[doc = "See [`Pallet::add_proxy`]."] + #[doc = "Register a proxy account for the sender that is able to make calls on its behalf."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `proxy`: The account that the `caller` would like to make a proxy."] + #[doc = "- `proxy_type`: The permissions allowed for this proxy account."] + #[doc = "- `delay`: The announcement period required of the initial proxy. Will generally be"] + #[doc = "zero."] pub fn add_proxy( &self, delegate: types::add_proxy::Delegate, @@ -22006,7 +24485,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_proxy`]."] + #[doc = "Unregister a proxy account for the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `proxy`: The account that the `caller` would like to remove as a proxy."] + #[doc = "- `proxy_type`: The permissions currently enabled for the removed proxy account."] pub fn remove_proxy( &self, delegate: types::remove_proxy::Delegate, @@ -22028,7 +24513,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_proxies`]."] + #[doc = "Unregister all proxy accounts for the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "WARNING: This may be called on accounts created by `pure`, however if done, then"] + #[doc = "the unreserved fees will be inaccessible. **All access to this account will be lost.**"] pub fn remove_proxies(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Proxy", @@ -22042,7 +24532,24 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::create_pure`]."] + #[doc = "Spawn a fresh new account that is guaranteed to be otherwise inaccessible, and"] + #[doc = "initialize it with a proxy of `proxy_type` for `origin` sender."] + #[doc = ""] + #[doc = "Requires a `Signed` origin."] + #[doc = ""] + #[doc = "- `proxy_type`: The type of the proxy that the sender will be registered as over the"] + #[doc = "new account. This will almost always be the most permissive `ProxyType` possible to"] + #[doc = "allow for maximum flexibility."] + #[doc = "- `index`: A disambiguation index, in case this is called multiple times in the same"] + #[doc = "transaction (e.g. with `utility::batch`). Unless you're using `batch` you probably just"] + #[doc = "want to use `0`."] + #[doc = "- `delay`: The announcement period required of the initial proxy. Will generally be"] + #[doc = "zero."] + #[doc = ""] + #[doc = "Fails with `Duplicate` if this has already been called in this transaction, from the"] + #[doc = "same sender, with the same parameters."] + #[doc = ""] + #[doc = "Fails if there are insufficient funds to pay for deposit."] pub fn create_pure( &self, proxy_type: types::create_pure::ProxyType, @@ -22064,7 +24571,22 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::kill_pure`]."] + #[doc = "Removes a previously spawned pure proxy."] + #[doc = ""] + #[doc = "WARNING: **All access to this account will be lost.** Any funds held in it will be"] + #[doc = "inaccessible."] + #[doc = ""] + #[doc = "Requires a `Signed` origin, and the sender account must have been created by a call to"] + #[doc = "`pure` with corresponding parameters."] + #[doc = ""] + #[doc = "- `spawner`: The account that originally called `pure` to create this account."] + #[doc = "- `index`: The disambiguation index originally passed to `pure`. Probably `0`."] + #[doc = "- `proxy_type`: The proxy type originally passed to `pure`."] + #[doc = "- `height`: The height of the chain when the call to `pure` was processed."] + #[doc = "- `ext_index`: The extrinsic index in which the call to `pure` was processed."] + #[doc = ""] + #[doc = "Fails with `NoPermission` in case the caller is not a previously created pure"] + #[doc = "account whose `pure` call has corresponding parameters."] pub fn kill_pure( &self, spawner: types::kill_pure::Spawner, @@ -22090,7 +24612,21 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::announce`]."] + #[doc = "Publish the hash of a proxy-call that will be made in the future."] + #[doc = ""] + #[doc = "This must be called some number of blocks before the corresponding `proxy` is attempted"] + #[doc = "if the delay associated with the proxy relationship is greater than zero."] + #[doc = ""] + #[doc = "No more than `MaxPending` announcements may be made at any one time."] + #[doc = ""] + #[doc = "This will take a deposit of `AnnouncementDepositFactor` as well as"] + #[doc = "`AnnouncementDepositBase` if there are no other pending announcements."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a proxy of `real`."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `call_hash`: The hash of the call to be made by the `real` account."] pub fn announce( &self, real: types::announce::Real, @@ -22108,7 +24644,16 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_announcement`]."] + #[doc = "Remove a given announcement."] + #[doc = ""] + #[doc = "May be called by a proxy account to remove a call they previously announced and return"] + #[doc = "the deposit."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `call_hash`: The hash of the call to be made by the `real` account."] pub fn remove_announcement( &self, real: types::remove_announcement::Real, @@ -22125,7 +24670,16 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::reject_announcement`]."] + #[doc = "Remove the given announcement of a delegate."] + #[doc = ""] + #[doc = "May be called by a target (proxied) account to remove a call that one of their delegates"] + #[doc = "(`delegate`) has announced they want to execute. The deposit is returned."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `delegate`: The account that previously announced the call."] + #[doc = "- `call_hash`: The hash of the call to be made."] pub fn reject_announcement( &self, delegate: types::reject_announcement::Delegate, @@ -22145,7 +24699,17 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::proxy_announced`]."] + #[doc = "Dispatch the given `call` from an account that the sender is authorized for through"] + #[doc = "`add_proxy`."] + #[doc = ""] + #[doc = "Removes any corresponding announcement(s)."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `force_proxy_type`: Specify the exact proxy type to be used and checked for this call."] + #[doc = "- `call`: The call to be made by the `real` account."] pub fn proxy_announced( &self, delegate: types::proxy_announced::Delegate, @@ -22163,9 +24727,9 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 81u8, 161u8, 1u8, 212u8, 29u8, 249u8, 101u8, 27u8, 174u8, 148u8, 164u8, - 13u8, 37u8, 206u8, 239u8, 219u8, 107u8, 255u8, 101u8, 108u8, 122u8, - 46u8, 19u8, 233u8, 82u8, 130u8, 11u8, 148u8, 40u8, 212u8, 214u8, 39u8, + 5u8, 32u8, 80u8, 204u8, 70u8, 82u8, 22u8, 142u8, 13u8, 189u8, 204u8, + 167u8, 157u8, 48u8, 49u8, 23u8, 27u8, 143u8, 159u8, 19u8, 22u8, 218u8, + 37u8, 32u8, 67u8, 24u8, 132u8, 157u8, 10u8, 176u8, 94u8, 69u8, ], ) } @@ -22566,7 +25130,18 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::as_multi_threshold_1`]."] + #[doc = "Immediately dispatch a multi-signature call using a single approval from the caller."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `other_signatories`: The accounts (other than the sender) who are part of the"] + #[doc = "multi-signature, but do not participate in the approval process."] + #[doc = "- `call`: The call to be executed."] + #[doc = ""] + #[doc = "Result is equivalent to the dispatched result."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "O(Z + C) where Z is the length of the call and C its execution weight."] pub struct AsMultiThreshold1 { pub other_signatories: as_multi_threshold1::OtherSignatories, pub call: ::std::boxed::Box, @@ -22590,7 +25165,45 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::as_multi`]."] + #[doc = "Register approval for a dispatch to be made from a deterministic composite account if"] + #[doc = "approved by a total of `threshold - 1` of `other_signatories`."] + #[doc = ""] + #[doc = "If there are enough, then dispatch the call."] + #[doc = ""] + #[doc = "Payment: `DepositBase` will be reserved if this is the first approval, plus"] + #[doc = "`threshold` times `DepositFactor`. It is returned once this dispatch happens or"] + #[doc = "is cancelled."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] + #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] + #[doc = "dispatch. May not be empty."] + #[doc = "- `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is"] + #[doc = "not the first approval, then it must be `Some`, with the timepoint (block number and"] + #[doc = "transaction index) of the first approval transaction."] + #[doc = "- `call`: The call to be executed."] + #[doc = ""] + #[doc = "NOTE: Unless this is the final approval, you will generally want to use"] + #[doc = "`approve_as_multi` instead, since it only requires a hash of the call."] + #[doc = ""] + #[doc = "Result is equivalent to the dispatched result if `threshold` is exactly `1`. Otherwise"] + #[doc = "on success, result is `Ok` and the result from the interior call, if it was executed,"] + #[doc = "may be found in the deposited `MultisigExecuted` event."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(S + Z + Call)`."] + #[doc = "- Up to one balance-reserve or unreserve operation."] + #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] + #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] + #[doc = "- One call encode & hash, both of complexity `O(Z)` where `Z` is tx-len."] + #[doc = "- One encode & hash, both of complexity `O(S)`."] + #[doc = "- Up to one binary search and insert (`O(logS + S)`)."] + #[doc = "- I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove."] + #[doc = "- One event."] + #[doc = "- The weight of the `call`."] + #[doc = "- Storage: inserts one item, value size bounded by `MaxSignatories`, with a deposit"] + #[doc = " taken for its lifetime of `DepositBase + threshold * DepositFactor`."] pub struct AsMulti { pub threshold: as_multi::Threshold, pub other_signatories: as_multi::OtherSignatories, @@ -22622,7 +25235,36 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::approve_as_multi`]."] + #[doc = "Register approval for a dispatch to be made from a deterministic composite account if"] + #[doc = "approved by a total of `threshold - 1` of `other_signatories`."] + #[doc = ""] + #[doc = "Payment: `DepositBase` will be reserved if this is the first approval, plus"] + #[doc = "`threshold` times `DepositFactor`. It is returned once this dispatch happens or"] + #[doc = "is cancelled."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] + #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] + #[doc = "dispatch. May not be empty."] + #[doc = "- `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is"] + #[doc = "not the first approval, then it must be `Some`, with the timepoint (block number and"] + #[doc = "transaction index) of the first approval transaction."] + #[doc = "- `call_hash`: The hash of the call to be executed."] + #[doc = ""] + #[doc = "NOTE: If this is the final approval, you will want to use `as_multi` instead."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(S)`."] + #[doc = "- Up to one balance-reserve or unreserve operation."] + #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] + #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] + #[doc = "- One encode & hash, both of complexity `O(S)`."] + #[doc = "- Up to one binary search and insert (`O(logS + S)`)."] + #[doc = "- I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove."] + #[doc = "- One event."] + #[doc = "- Storage: inserts one item, value size bounded by `MaxSignatories`, with a deposit"] + #[doc = " taken for its lifetime of `DepositBase + threshold * DepositFactor`."] pub struct ApproveAsMulti { pub threshold: approve_as_multi::Threshold, pub other_signatories: approve_as_multi::OtherSignatories, @@ -22654,7 +25296,27 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::cancel_as_multi`]."] + #[doc = "Cancel a pre-existing, on-going multisig transaction. Any deposit reserved previously"] + #[doc = "for this operation will be unreserved on success."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] + #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] + #[doc = "dispatch. May not be empty."] + #[doc = "- `timepoint`: The timepoint (block number and transaction index) of the first approval"] + #[doc = "transaction for this dispatch."] + #[doc = "- `call_hash`: The hash of the call to be executed."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(S)`."] + #[doc = "- Up to one balance-reserve or unreserve operation."] + #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] + #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] + #[doc = "- One encode & hash, both of complexity `O(S)`."] + #[doc = "- One event."] + #[doc = "- I/O: 1 read `O(S)`, one remove."] + #[doc = "- Storage: removes one item."] pub struct CancelAsMulti { pub threshold: cancel_as_multi::Threshold, pub other_signatories: cancel_as_multi::OtherSignatories, @@ -22676,7 +25338,18 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::as_multi_threshold_1`]."] + #[doc = "Immediately dispatch a multi-signature call using a single approval from the caller."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `other_signatories`: The accounts (other than the sender) who are part of the"] + #[doc = "multi-signature, but do not participate in the approval process."] + #[doc = "- `call`: The call to be executed."] + #[doc = ""] + #[doc = "Result is equivalent to the dispatched result."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "O(Z + C) where Z is the length of the call and C its execution weight."] pub fn as_multi_threshold_1( &self, other_signatories: types::as_multi_threshold1::OtherSignatories, @@ -22690,14 +25363,52 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 160u8, 32u8, 154u8, 37u8, 200u8, 55u8, 129u8, 224u8, 146u8, 248u8, - 74u8, 123u8, 141u8, 242u8, 178u8, 218u8, 203u8, 229u8, 3u8, 189u8, - 150u8, 28u8, 101u8, 126u8, 182u8, 233u8, 181u8, 254u8, 146u8, 180u8, - 124u8, 102u8, + 223u8, 197u8, 77u8, 59u8, 210u8, 4u8, 228u8, 221u8, 213u8, 150u8, + 108u8, 151u8, 213u8, 147u8, 174u8, 207u8, 142u8, 149u8, 68u8, 126u8, + 75u8, 188u8, 206u8, 13u8, 103u8, 43u8, 249u8, 8u8, 172u8, 151u8, 212u8, + 57u8, ], ) } - #[doc = "See [`Pallet::as_multi`]."] + #[doc = "Register approval for a dispatch to be made from a deterministic composite account if"] + #[doc = "approved by a total of `threshold - 1` of `other_signatories`."] + #[doc = ""] + #[doc = "If there are enough, then dispatch the call."] + #[doc = ""] + #[doc = "Payment: `DepositBase` will be reserved if this is the first approval, plus"] + #[doc = "`threshold` times `DepositFactor`. It is returned once this dispatch happens or"] + #[doc = "is cancelled."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] + #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] + #[doc = "dispatch. May not be empty."] + #[doc = "- `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is"] + #[doc = "not the first approval, then it must be `Some`, with the timepoint (block number and"] + #[doc = "transaction index) of the first approval transaction."] + #[doc = "- `call`: The call to be executed."] + #[doc = ""] + #[doc = "NOTE: Unless this is the final approval, you will generally want to use"] + #[doc = "`approve_as_multi` instead, since it only requires a hash of the call."] + #[doc = ""] + #[doc = "Result is equivalent to the dispatched result if `threshold` is exactly `1`. Otherwise"] + #[doc = "on success, result is `Ok` and the result from the interior call, if it was executed,"] + #[doc = "may be found in the deposited `MultisigExecuted` event."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(S + Z + Call)`."] + #[doc = "- Up to one balance-reserve or unreserve operation."] + #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] + #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] + #[doc = "- One call encode & hash, both of complexity `O(Z)` where `Z` is tx-len."] + #[doc = "- One encode & hash, both of complexity `O(S)`."] + #[doc = "- Up to one binary search and insert (`O(logS + S)`)."] + #[doc = "- I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove."] + #[doc = "- One event."] + #[doc = "- The weight of the `call`."] + #[doc = "- Storage: inserts one item, value size bounded by `MaxSignatories`, with a deposit"] + #[doc = " taken for its lifetime of `DepositBase + threshold * DepositFactor`."] pub fn as_multi( &self, threshold: types::as_multi::Threshold, @@ -22717,14 +25428,43 @@ pub mod api { max_weight, }, [ - 253u8, 142u8, 244u8, 88u8, 243u8, 78u8, 231u8, 191u8, 169u8, 215u8, - 44u8, 15u8, 85u8, 234u8, 100u8, 22u8, 80u8, 150u8, 80u8, 119u8, 5u8, - 183u8, 239u8, 148u8, 100u8, 219u8, 211u8, 155u8, 23u8, 228u8, 34u8, - 231u8, + 185u8, 170u8, 191u8, 214u8, 209u8, 18u8, 122u8, 101u8, 51u8, 109u8, + 11u8, 192u8, 57u8, 170u8, 232u8, 162u8, 225u8, 99u8, 91u8, 218u8, 60u8, + 85u8, 159u8, 103u8, 150u8, 185u8, 158u8, 203u8, 228u8, 218u8, 164u8, + 63u8, ], ) } - #[doc = "See [`Pallet::approve_as_multi`]."] + #[doc = "Register approval for a dispatch to be made from a deterministic composite account if"] + #[doc = "approved by a total of `threshold - 1` of `other_signatories`."] + #[doc = ""] + #[doc = "Payment: `DepositBase` will be reserved if this is the first approval, plus"] + #[doc = "`threshold` times `DepositFactor`. It is returned once this dispatch happens or"] + #[doc = "is cancelled."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] + #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] + #[doc = "dispatch. May not be empty."] + #[doc = "- `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is"] + #[doc = "not the first approval, then it must be `Some`, with the timepoint (block number and"] + #[doc = "transaction index) of the first approval transaction."] + #[doc = "- `call_hash`: The hash of the call to be executed."] + #[doc = ""] + #[doc = "NOTE: If this is the final approval, you will want to use `as_multi` instead."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(S)`."] + #[doc = "- Up to one balance-reserve or unreserve operation."] + #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] + #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] + #[doc = "- One encode & hash, both of complexity `O(S)`."] + #[doc = "- Up to one binary search and insert (`O(logS + S)`)."] + #[doc = "- I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove."] + #[doc = "- One event."] + #[doc = "- Storage: inserts one item, value size bounded by `MaxSignatories`, with a deposit"] + #[doc = " taken for its lifetime of `DepositBase + threshold * DepositFactor`."] pub fn approve_as_multi( &self, threshold: types::approve_as_multi::Threshold, @@ -22750,7 +25490,27 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::cancel_as_multi`]."] + #[doc = "Cancel a pre-existing, on-going multisig transaction. Any deposit reserved previously"] + #[doc = "for this operation will be unreserved on success."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] + #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] + #[doc = "dispatch. May not be empty."] + #[doc = "- `timepoint`: The timepoint (block number and transaction index) of the first approval"] + #[doc = "transaction for this dispatch."] + #[doc = "- `call_hash`: The hash of the call to be executed."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(S)`."] + #[doc = "- Up to one balance-reserve or unreserve operation."] + #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] + #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] + #[doc = "- One encode & hash, both of complexity `O(S)`."] + #[doc = "- One event."] + #[doc = "- I/O: 1 read `O(S)`, one remove."] + #[doc = "- Storage: removes one item."] pub fn cancel_as_multi( &self, threshold: types::cancel_as_multi::Threshold, @@ -23065,7 +25825,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::note_preimage`]."] + #[doc = "Register a preimage on-chain."] + #[doc = ""] + #[doc = "If the preimage was previously requested, no fees or deposits are taken for providing"] + #[doc = "the preimage. Otherwise, a deposit is taken proportional to the size of the preimage."] pub struct NotePreimage { pub bytes: note_preimage::Bytes, } @@ -23087,7 +25850,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::unnote_preimage`]."] + #[doc = "Clear an unrequested preimage from the runtime storage."] + #[doc = ""] + #[doc = "If `len` is provided, then it will be a much cheaper operation."] + #[doc = ""] + #[doc = "- `hash`: The hash of the preimage to be removed from the store."] + #[doc = "- `len`: The length of the preimage of `hash`."] pub struct UnnotePreimage { pub hash: unnote_preimage::Hash, } @@ -23109,7 +25877,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::request_preimage`]."] + #[doc = "Request a preimage be uploaded to the chain without paying any fees or deposits."] + #[doc = ""] + #[doc = "If the preimage requests has already been provided on-chain, we unreserve any deposit"] + #[doc = "a user may have paid, and take the control of the preimage out of their hands."] pub struct RequestPreimage { pub hash: request_preimage::Hash, } @@ -23131,7 +25902,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::unrequest_preimage`]."] + #[doc = "Clear a previously made request for a preimage."] + #[doc = ""] + #[doc = "NOTE: THIS MUST NOT BE CALLED ON `hash` MORE TIMES THAN `request_preimage`."] pub struct UnrequestPreimage { pub hash: unrequest_preimage::Hash, } @@ -23153,7 +25926,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::ensure_updated`]."] + #[doc = "Ensure that the a bulk of pre-images is upgraded."] + #[doc = ""] + #[doc = "The caller pays no fee if at least 90% of pre-images were successfully updated."] pub struct EnsureUpdated { pub hashes: ensure_updated::Hashes, } @@ -23168,7 +25943,10 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::note_preimage`]."] + #[doc = "Register a preimage on-chain."] + #[doc = ""] + #[doc = "If the preimage was previously requested, no fees or deposits are taken for providing"] + #[doc = "the preimage. Otherwise, a deposit is taken proportional to the size of the preimage."] pub fn note_preimage( &self, bytes: types::note_preimage::Bytes, @@ -23184,7 +25962,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::unnote_preimage`]."] + #[doc = "Clear an unrequested preimage from the runtime storage."] + #[doc = ""] + #[doc = "If `len` is provided, then it will be a much cheaper operation."] + #[doc = ""] + #[doc = "- `hash`: The hash of the preimage to be removed from the store."] + #[doc = "- `len`: The length of the preimage of `hash`."] pub fn unnote_preimage( &self, hash: types::unnote_preimage::Hash, @@ -23201,7 +25984,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::request_preimage`]."] + #[doc = "Request a preimage be uploaded to the chain without paying any fees or deposits."] + #[doc = ""] + #[doc = "If the preimage requests has already been provided on-chain, we unreserve any deposit"] + #[doc = "a user may have paid, and take the control of the preimage out of their hands."] pub fn request_preimage( &self, hash: types::request_preimage::Hash, @@ -23217,7 +26003,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::unrequest_preimage`]."] + #[doc = "Clear a previously made request for a preimage."] + #[doc = ""] + #[doc = "NOTE: THIS MUST NOT BE CALLED ON `hash` MORE TIMES THAN `request_preimage`."] pub fn unrequest_preimage( &self, hash: types::unrequest_preimage::Hash, @@ -23234,7 +26022,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::ensure_updated`]."] + #[doc = "Ensure that the a bulk of pre-images is upgraded."] + #[doc = ""] + #[doc = "The caller pays no fee if at least 90% of pre-images were successfully updated."] pub fn ensure_updated( &self, hashes: types::ensure_updated::Hashes, @@ -23545,7 +26335,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::create`]."] + #[doc = "Initialize a conversion rate to native balance for the given asset."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)"] pub struct Create { pub asset_kind: ::std::boxed::Box, pub rate: create::Rate, @@ -23570,7 +26363,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::update`]."] + #[doc = "Update the conversion rate to native balance for the given asset."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)"] pub struct Update { pub asset_kind: ::std::boxed::Box, pub rate: update::Rate, @@ -23595,7 +26391,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::remove`]."] + #[doc = "Remove an existing conversion rate to native balance for the given asset."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)"] pub struct Remove { pub asset_kind: ::std::boxed::Box, } @@ -23611,7 +26410,10 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::create`]."] + #[doc = "Initialize a conversion rate to native balance for the given asset."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)"] pub fn create( &self, asset_kind: types::create::AssetKind, @@ -23631,7 +26433,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::update`]."] + #[doc = "Update the conversion rate to native balance for the given asset."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)"] pub fn update( &self, asset_kind: types::update::AssetKind, @@ -23651,7 +26456,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove`]."] + #[doc = "Remove an existing conversion rate to native balance for the given asset."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)"] pub fn remove( &self, asset_kind: types::remove::AssetKind, @@ -23840,7 +26648,18 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::propose_bounty`]."] + #[doc = "Propose a new bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Payment: `TipReportDepositBase` will be reserved from the origin account, as well as"] + #[doc = "`DataDepositPerByte` for each byte in `reason`. It will be unreserved upon approval,"] + #[doc = "or slashed when rejected."] + #[doc = ""] + #[doc = "- `curator`: The curator account whom will manage this bounty."] + #[doc = "- `fee`: The curator fee."] + #[doc = "- `value`: The total payment amount of this bounty, curator fee included."] + #[doc = "- `description`: The description of this bounty."] pub struct ProposeBounty { #[codec(compact)] pub value: propose_bounty::Value, @@ -23865,7 +26684,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::approve_bounty`]."] + #[doc = "Approve a bounty proposal. At a later time, the bounty will be funded and become active"] + #[doc = "and the original deposit will be returned."] + #[doc = ""] + #[doc = "May only be called from `T::SpendOrigin`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub struct ApproveBounty { #[codec(compact)] pub bounty_id: approve_bounty::BountyId, @@ -23888,7 +26713,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::propose_curator`]."] + #[doc = "Propose a curator to a funded bounty."] + #[doc = ""] + #[doc = "May only be called from `T::SpendOrigin`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub struct ProposeCurator { #[codec(compact)] pub bounty_id: propose_curator::BountyId, @@ -23917,7 +26747,23 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::unassign_curator`]."] + #[doc = "Unassign curator from a bounty."] + #[doc = ""] + #[doc = "This function can only be called by the `RejectOrigin` a signed origin."] + #[doc = ""] + #[doc = "If this function is called by the `RejectOrigin`, we assume that the curator is"] + #[doc = "malicious or inactive. As a result, we will slash the curator when possible."] + #[doc = ""] + #[doc = "If the origin is the curator, we take this as a sign they are unable to do their job and"] + #[doc = "they willingly give up. We could slash them, but for now we allow them to recover their"] + #[doc = "deposit and exit without issue. (We may want to change this if it is abused.)"] + #[doc = ""] + #[doc = "Finally, the origin can be anyone if and only if the curator is \"inactive\". This allows"] + #[doc = "anyone in the community to call out that a curator is not doing their due diligence, and"] + #[doc = "we should pick a new curator. In this case the curator should also be slashed."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub struct UnassignCurator { #[codec(compact)] pub bounty_id: unassign_curator::BountyId, @@ -23940,7 +26786,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::accept_curator`]."] + #[doc = "Accept the curator role for a bounty."] + #[doc = "A deposit will be reserved from curator and refund upon successful payout."] + #[doc = ""] + #[doc = "May only be called from the curator."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub struct AcceptCurator { #[codec(compact)] pub bounty_id: accept_curator::BountyId, @@ -23963,7 +26815,16 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::award_bounty`]."] + #[doc = "Award bounty to a beneficiary account. The beneficiary will be able to claim the funds"] + #[doc = "after a delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of this bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to award."] + #[doc = "- `beneficiary`: The beneficiary account whom will receive the payout."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub struct AwardBounty { #[codec(compact)] pub bounty_id: award_bounty::BountyId, @@ -23989,7 +26850,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::claim_bounty`]."] + #[doc = "Claim the payout from an awarded bounty after payout delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the beneficiary of this bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to claim."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub struct ClaimBounty { #[codec(compact)] pub bounty_id: claim_bounty::BountyId, @@ -24012,7 +26880,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::close_bounty`]."] + #[doc = "Cancel a proposed or active bounty. All the funds will be sent to treasury and"] + #[doc = "the curator deposit will be unreserved if possible."] + #[doc = ""] + #[doc = "Only `T::RejectOrigin` is able to cancel a bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to cancel."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub struct CloseBounty { #[codec(compact)] pub bounty_id: close_bounty::BountyId, @@ -24035,7 +26911,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::extend_bounty_expiry`]."] + #[doc = "Extend the expiry time of an active bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of this bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to extend."] + #[doc = "- `remark`: additional information."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub struct ExtendBountyExpiry { #[codec(compact)] pub bounty_id: extend_bounty_expiry::BountyId, @@ -24053,7 +26937,18 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::propose_bounty`]."] + #[doc = "Propose a new bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Payment: `TipReportDepositBase` will be reserved from the origin account, as well as"] + #[doc = "`DataDepositPerByte` for each byte in `reason`. It will be unreserved upon approval,"] + #[doc = "or slashed when rejected."] + #[doc = ""] + #[doc = "- `curator`: The curator account whom will manage this bounty."] + #[doc = "- `fee`: The curator fee."] + #[doc = "- `value`: The total payment amount of this bounty, curator fee included."] + #[doc = "- `description`: The description of this bounty."] pub fn propose_bounty( &self, value: types::propose_bounty::Value, @@ -24070,7 +26965,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::approve_bounty`]."] + #[doc = "Approve a bounty proposal. At a later time, the bounty will be funded and become active"] + #[doc = "and the original deposit will be returned."] + #[doc = ""] + #[doc = "May only be called from `T::SpendOrigin`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn approve_bounty( &self, bounty_id: types::approve_bounty::BountyId, @@ -24087,7 +26988,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::propose_curator`]."] + #[doc = "Propose a curator to a funded bounty."] + #[doc = ""] + #[doc = "May only be called from `T::SpendOrigin`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn propose_curator( &self, bounty_id: types::propose_curator::BountyId, @@ -24109,7 +27015,23 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::unassign_curator`]."] + #[doc = "Unassign curator from a bounty."] + #[doc = ""] + #[doc = "This function can only be called by the `RejectOrigin` a signed origin."] + #[doc = ""] + #[doc = "If this function is called by the `RejectOrigin`, we assume that the curator is"] + #[doc = "malicious or inactive. As a result, we will slash the curator when possible."] + #[doc = ""] + #[doc = "If the origin is the curator, we take this as a sign they are unable to do their job and"] + #[doc = "they willingly give up. We could slash them, but for now we allow them to recover their"] + #[doc = "deposit and exit without issue. (We may want to change this if it is abused.)"] + #[doc = ""] + #[doc = "Finally, the origin can be anyone if and only if the curator is \"inactive\". This allows"] + #[doc = "anyone in the community to call out that a curator is not doing their due diligence, and"] + #[doc = "we should pick a new curator. In this case the curator should also be slashed."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn unassign_curator( &self, bounty_id: types::unassign_curator::BountyId, @@ -24126,7 +27048,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::accept_curator`]."] + #[doc = "Accept the curator role for a bounty."] + #[doc = "A deposit will be reserved from curator and refund upon successful payout."] + #[doc = ""] + #[doc = "May only be called from the curator."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn accept_curator( &self, bounty_id: types::accept_curator::BountyId, @@ -24142,7 +27070,16 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::award_bounty`]."] + #[doc = "Award bounty to a beneficiary account. The beneficiary will be able to claim the funds"] + #[doc = "after a delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of this bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to award."] + #[doc = "- `beneficiary`: The beneficiary account whom will receive the payout."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn award_bounty( &self, bounty_id: types::award_bounty::BountyId, @@ -24162,7 +27099,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::claim_bounty`]."] + #[doc = "Claim the payout from an awarded bounty after payout delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the beneficiary of this bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to claim."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn claim_bounty( &self, bounty_id: types::claim_bounty::BountyId, @@ -24179,7 +27123,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::close_bounty`]."] + #[doc = "Cancel a proposed or active bounty. All the funds will be sent to treasury and"] + #[doc = "the curator deposit will be unreserved if possible."] + #[doc = ""] + #[doc = "Only `T::RejectOrigin` is able to cancel a bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to cancel."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn close_bounty( &self, bounty_id: types::close_bounty::BountyId, @@ -24196,7 +27148,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::extend_bounty_expiry`]."] + #[doc = "Extend the expiry time of an active bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of this bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to extend."] + #[doc = "- `remark`: additional information."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn extend_bounty_expiry( &self, bounty_id: types::extend_bounty_expiry::BountyId, @@ -24816,7 +27776,25 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::add_child_bounty`]."] + #[doc = "Add a new child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of parent"] + #[doc = "bounty and the parent bounty must be in \"active\" state."] + #[doc = ""] + #[doc = "Child-bounty gets added successfully & fund gets transferred from"] + #[doc = "parent bounty to child-bounty account, if parent bounty has enough"] + #[doc = "funds, else the call fails."] + #[doc = ""] + #[doc = "Upper bound to maximum number of active child bounties that can be"] + #[doc = "added are managed via runtime trait config"] + #[doc = "[`Config::MaxActiveChildBountyCount`]."] + #[doc = ""] + #[doc = "If the call is success, the status of child-bounty is updated to"] + #[doc = "\"Added\"."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty for which child-bounty is being added."] + #[doc = "- `value`: Value for executing the proposal."] + #[doc = "- `description`: Text description for the child-bounty."] pub struct AddChildBounty { #[codec(compact)] pub parent_bounty_id: add_child_bounty::ParentBountyId, @@ -24844,7 +27822,21 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::propose_curator`]."] + #[doc = "Propose curator for funded child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be curator of parent bounty."] + #[doc = ""] + #[doc = "Parent bounty must be in active state, for this child-bounty call to"] + #[doc = "work."] + #[doc = ""] + #[doc = "Child-bounty must be in \"Added\" state, for processing the call. And"] + #[doc = "state of child-bounty is moved to \"CuratorProposed\" on successful"] + #[doc = "call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "- `curator`: Address of child-bounty curator."] + #[doc = "- `fee`: payment fee to child-bounty curator for execution."] pub struct ProposeCurator { #[codec(compact)] pub parent_bounty_id: propose_curator::ParentBountyId, @@ -24876,7 +27868,25 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::accept_curator`]."] + #[doc = "Accept the curator role for the child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of this"] + #[doc = "child-bounty."] + #[doc = ""] + #[doc = "A deposit will be reserved from the curator and refund upon"] + #[doc = "successful payout or cancellation."] + #[doc = ""] + #[doc = "Fee for curator is deducted from curator fee of parent bounty."] + #[doc = ""] + #[doc = "Parent bounty must be in active state, for this child-bounty call to"] + #[doc = "work."] + #[doc = ""] + #[doc = "Child-bounty must be in \"CuratorProposed\" state, for processing the"] + #[doc = "call. And state of child-bounty is moved to \"Active\" on successful"] + #[doc = "call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] pub struct AcceptCurator { #[codec(compact)] pub parent_bounty_id: accept_curator::ParentBountyId, @@ -24902,7 +27912,40 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::unassign_curator`]."] + #[doc = "Unassign curator from a child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call can be either `RejectOrigin`, or"] + #[doc = "the curator of the parent bounty, or any signed origin."] + #[doc = ""] + #[doc = "For the origin other than T::RejectOrigin and the child-bounty"] + #[doc = "curator, parent bounty must be in active state, for this call to"] + #[doc = "work. We allow child-bounty curator and T::RejectOrigin to execute"] + #[doc = "this call irrespective of the parent bounty state."] + #[doc = ""] + #[doc = "If this function is called by the `RejectOrigin` or the"] + #[doc = "parent bounty curator, we assume that the child-bounty curator is"] + #[doc = "malicious or inactive. As a result, child-bounty curator deposit is"] + #[doc = "slashed."] + #[doc = ""] + #[doc = "If the origin is the child-bounty curator, we take this as a sign"] + #[doc = "that they are unable to do their job, and are willingly giving up."] + #[doc = "We could slash the deposit, but for now we allow them to unreserve"] + #[doc = "their deposit and exit without issue. (We may want to change this if"] + #[doc = "it is abused.)"] + #[doc = ""] + #[doc = "Finally, the origin can be anyone iff the child-bounty curator is"] + #[doc = "\"inactive\". Expiry update due of parent bounty is used to estimate"] + #[doc = "inactive state of child-bounty curator."] + #[doc = ""] + #[doc = "This allows anyone in the community to call out that a child-bounty"] + #[doc = "curator is not doing their due diligence, and we should pick a new"] + #[doc = "one. In this case the child-bounty curator deposit is slashed."] + #[doc = ""] + #[doc = "State of child-bounty is moved to Added state on successful call"] + #[doc = "completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] pub struct UnassignCurator { #[codec(compact)] pub parent_bounty_id: unassign_curator::ParentBountyId, @@ -24928,7 +27971,23 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::award_child_bounty`]."] + #[doc = "Award child-bounty to a beneficiary."] + #[doc = ""] + #[doc = "The beneficiary will be able to claim the funds after a delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the parent curator or"] + #[doc = "curator of this child-bounty."] + #[doc = ""] + #[doc = "Parent bounty must be in active state, for this child-bounty call to"] + #[doc = "work."] + #[doc = ""] + #[doc = "Child-bounty must be in active state, for processing the call. And"] + #[doc = "state of child-bounty is moved to \"PendingPayout\" on successful call"] + #[doc = "completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "- `beneficiary`: Beneficiary account."] pub struct AwardChildBounty { #[codec(compact)] pub parent_bounty_id: award_child_bounty::ParentBountyId, @@ -24957,7 +28016,22 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::claim_child_bounty`]."] + #[doc = "Claim the payout from an awarded child-bounty after payout delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call may be any signed origin."] + #[doc = ""] + #[doc = "Call works independent of parent bounty state, No need for parent"] + #[doc = "bounty to be in active state."] + #[doc = ""] + #[doc = "The Beneficiary is paid out with agreed bounty value. Curator fee is"] + #[doc = "paid & curator deposit is unreserved."] + #[doc = ""] + #[doc = "Child-bounty must be in \"PendingPayout\" state, for processing the"] + #[doc = "call. And instance of child-bounty is removed from the state on"] + #[doc = "successful call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] pub struct ClaimChildBounty { #[codec(compact)] pub parent_bounty_id: claim_child_bounty::ParentBountyId, @@ -24983,7 +28057,28 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::close_child_bounty`]."] + #[doc = "Cancel a proposed or active child-bounty. Child-bounty account funds"] + #[doc = "are transferred to parent bounty account. The child-bounty curator"] + #[doc = "deposit may be unreserved if possible."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be either parent curator or"] + #[doc = "`T::RejectOrigin`."] + #[doc = ""] + #[doc = "If the state of child-bounty is `Active`, curator deposit is"] + #[doc = "unreserved."] + #[doc = ""] + #[doc = "If the state of child-bounty is `PendingPayout`, call fails &"] + #[doc = "returns `PendingPayout` error."] + #[doc = ""] + #[doc = "For the origin other than T::RejectOrigin, parent bounty must be in"] + #[doc = "active state, for this child-bounty call to work. For origin"] + #[doc = "T::RejectOrigin execution is forced."] + #[doc = ""] + #[doc = "Instance of child-bounty is removed from the state on successful"] + #[doc = "call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] pub struct CloseChildBounty { #[codec(compact)] pub parent_bounty_id: close_child_bounty::ParentBountyId, @@ -25002,7 +28097,25 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::add_child_bounty`]."] + #[doc = "Add a new child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of parent"] + #[doc = "bounty and the parent bounty must be in \"active\" state."] + #[doc = ""] + #[doc = "Child-bounty gets added successfully & fund gets transferred from"] + #[doc = "parent bounty to child-bounty account, if parent bounty has enough"] + #[doc = "funds, else the call fails."] + #[doc = ""] + #[doc = "Upper bound to maximum number of active child bounties that can be"] + #[doc = "added are managed via runtime trait config"] + #[doc = "[`Config::MaxActiveChildBountyCount`]."] + #[doc = ""] + #[doc = "If the call is success, the status of child-bounty is updated to"] + #[doc = "\"Added\"."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty for which child-bounty is being added."] + #[doc = "- `value`: Value for executing the proposal."] + #[doc = "- `description`: Text description for the child-bounty."] pub fn add_child_bounty( &self, parent_bounty_id: types::add_child_bounty::ParentBountyId, @@ -25025,7 +28138,21 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::propose_curator`]."] + #[doc = "Propose curator for funded child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be curator of parent bounty."] + #[doc = ""] + #[doc = "Parent bounty must be in active state, for this child-bounty call to"] + #[doc = "work."] + #[doc = ""] + #[doc = "Child-bounty must be in \"Added\" state, for processing the call. And"] + #[doc = "state of child-bounty is moved to \"CuratorProposed\" on successful"] + #[doc = "call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "- `curator`: Address of child-bounty curator."] + #[doc = "- `fee`: payment fee to child-bounty curator for execution."] pub fn propose_curator( &self, parent_bounty_id: types::propose_curator::ParentBountyId, @@ -25049,7 +28176,25 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::accept_curator`]."] + #[doc = "Accept the curator role for the child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of this"] + #[doc = "child-bounty."] + #[doc = ""] + #[doc = "A deposit will be reserved from the curator and refund upon"] + #[doc = "successful payout or cancellation."] + #[doc = ""] + #[doc = "Fee for curator is deducted from curator fee of parent bounty."] + #[doc = ""] + #[doc = "Parent bounty must be in active state, for this child-bounty call to"] + #[doc = "work."] + #[doc = ""] + #[doc = "Child-bounty must be in \"CuratorProposed\" state, for processing the"] + #[doc = "call. And state of child-bounty is moved to \"Active\" on successful"] + #[doc = "call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] pub fn accept_curator( &self, parent_bounty_id: types::accept_curator::ParentBountyId, @@ -25070,7 +28215,40 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::unassign_curator`]."] + #[doc = "Unassign curator from a child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call can be either `RejectOrigin`, or"] + #[doc = "the curator of the parent bounty, or any signed origin."] + #[doc = ""] + #[doc = "For the origin other than T::RejectOrigin and the child-bounty"] + #[doc = "curator, parent bounty must be in active state, for this call to"] + #[doc = "work. We allow child-bounty curator and T::RejectOrigin to execute"] + #[doc = "this call irrespective of the parent bounty state."] + #[doc = ""] + #[doc = "If this function is called by the `RejectOrigin` or the"] + #[doc = "parent bounty curator, we assume that the child-bounty curator is"] + #[doc = "malicious or inactive. As a result, child-bounty curator deposit is"] + #[doc = "slashed."] + #[doc = ""] + #[doc = "If the origin is the child-bounty curator, we take this as a sign"] + #[doc = "that they are unable to do their job, and are willingly giving up."] + #[doc = "We could slash the deposit, but for now we allow them to unreserve"] + #[doc = "their deposit and exit without issue. (We may want to change this if"] + #[doc = "it is abused.)"] + #[doc = ""] + #[doc = "Finally, the origin can be anyone iff the child-bounty curator is"] + #[doc = "\"inactive\". Expiry update due of parent bounty is used to estimate"] + #[doc = "inactive state of child-bounty curator."] + #[doc = ""] + #[doc = "This allows anyone in the community to call out that a child-bounty"] + #[doc = "curator is not doing their due diligence, and we should pick a new"] + #[doc = "one. In this case the child-bounty curator deposit is slashed."] + #[doc = ""] + #[doc = "State of child-bounty is moved to Added state on successful call"] + #[doc = "completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] pub fn unassign_curator( &self, parent_bounty_id: types::unassign_curator::ParentBountyId, @@ -25091,7 +28269,23 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::award_child_bounty`]."] + #[doc = "Award child-bounty to a beneficiary."] + #[doc = ""] + #[doc = "The beneficiary will be able to claim the funds after a delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the parent curator or"] + #[doc = "curator of this child-bounty."] + #[doc = ""] + #[doc = "Parent bounty must be in active state, for this child-bounty call to"] + #[doc = "work."] + #[doc = ""] + #[doc = "Child-bounty must be in active state, for processing the call. And"] + #[doc = "state of child-bounty is moved to \"PendingPayout\" on successful call"] + #[doc = "completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "- `beneficiary`: Beneficiary account."] pub fn award_child_bounty( &self, parent_bounty_id: types::award_child_bounty::ParentBountyId, @@ -25113,7 +28307,22 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::claim_child_bounty`]."] + #[doc = "Claim the payout from an awarded child-bounty after payout delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call may be any signed origin."] + #[doc = ""] + #[doc = "Call works independent of parent bounty state, No need for parent"] + #[doc = "bounty to be in active state."] + #[doc = ""] + #[doc = "The Beneficiary is paid out with agreed bounty value. Curator fee is"] + #[doc = "paid & curator deposit is unreserved."] + #[doc = ""] + #[doc = "Child-bounty must be in \"PendingPayout\" state, for processing the"] + #[doc = "call. And instance of child-bounty is removed from the state on"] + #[doc = "successful call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] pub fn claim_child_bounty( &self, parent_bounty_id: types::claim_child_bounty::ParentBountyId, @@ -25133,7 +28342,28 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::close_child_bounty`]."] + #[doc = "Cancel a proposed or active child-bounty. Child-bounty account funds"] + #[doc = "are transferred to parent bounty account. The child-bounty curator"] + #[doc = "deposit may be unreserved if possible."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be either parent curator or"] + #[doc = "`T::RejectOrigin`."] + #[doc = ""] + #[doc = "If the state of child-bounty is `Active`, curator deposit is"] + #[doc = "unreserved."] + #[doc = ""] + #[doc = "If the state of child-bounty is `PendingPayout`, call fails &"] + #[doc = "returns `PendingPayout` error."] + #[doc = ""] + #[doc = "For the origin other than T::RejectOrigin, parent bounty must be in"] + #[doc = "active state, for this child-bounty call to work. For origin"] + #[doc = "T::RejectOrigin execution is forced."] + #[doc = ""] + #[doc = "Instance of child-bounty is removed from the state on successful"] + #[doc = "call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] pub fn close_child_bounty( &self, parent_bounty_id: types::close_child_bounty::ParentBountyId, @@ -25594,7 +28824,17 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::place_bid`]."] + #[doc = "Place a bid."] + #[doc = ""] + #[doc = "Origin must be Signed, and account must have at least `amount` in free balance."] + #[doc = ""] + #[doc = "- `amount`: The amount of the bid; these funds will be reserved, and if/when"] + #[doc = " consolidated, removed. Must be at least `MinBid`."] + #[doc = "- `duration`: The number of periods before which the newly consolidated bid may be"] + #[doc = " thawed. Must be greater than 1 and no more than `QueueCount`."] + #[doc = ""] + #[doc = "Complexities:"] + #[doc = "- `Queues[duration].len()` (just take max)."] pub struct PlaceBid { #[codec(compact)] pub amount: place_bid::Amount, @@ -25619,7 +28859,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::retract_bid`]."] + #[doc = "Retract a previously placed bid."] + #[doc = ""] + #[doc = "Origin must be Signed, and the account should have previously issued a still-active bid"] + #[doc = "of `amount` for `duration`."] + #[doc = ""] + #[doc = "- `amount`: The amount of the previous bid."] + #[doc = "- `duration`: The duration of the previous bid."] pub struct RetractBid { #[codec(compact)] pub amount: retract_bid::Amount, @@ -25644,7 +28890,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::fund_deficit`]."] + #[doc = "Ensure we have sufficient funding for all potential payouts."] + #[doc = ""] + #[doc = "- `origin`: Must be accepted by `FundOrigin`."] pub struct FundDeficit; impl ::subxt::blocks::StaticExtrinsic for FundDeficit { const PALLET: &'static str = "Nis"; @@ -25660,7 +28908,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::thaw_private`]."] + #[doc = "Reduce or remove an outstanding receipt, placing the according proportion of funds into"] + #[doc = "the account of the owner."] + #[doc = ""] + #[doc = "- `origin`: Must be Signed and the account must be the owner of the receipt `index` as"] + #[doc = " well as any fungible counterpart."] + #[doc = "- `index`: The index of the receipt."] + #[doc = "- `portion`: If `Some`, then only the given portion of the receipt should be thawed. If"] + #[doc = " `None`, then all of it should be."] pub struct ThawPrivate { #[codec(compact)] pub index: thaw_private::Index, @@ -25687,7 +28942,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::thaw_communal`]."] + #[doc = "Reduce or remove an outstanding receipt, placing the according proportion of funds into"] + #[doc = "the account of the owner."] + #[doc = ""] + #[doc = "- `origin`: Must be Signed and the account must be the owner of the fungible counterpart"] + #[doc = " for receipt `index`."] + #[doc = "- `index`: The index of the receipt."] pub struct ThawCommunal { #[codec(compact)] pub index: thaw_communal::Index, @@ -25710,7 +28970,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::communify`]."] + #[doc = "Make a private receipt communal and create fungible counterparts for its owner."] pub struct Communify { #[codec(compact)] pub index: communify::Index, @@ -25733,7 +28993,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::privatize`]."] + #[doc = "Make a communal receipt private and burn fungible counterparts from its owner."] pub struct Privatize { #[codec(compact)] pub index: privatize::Index, @@ -25749,7 +29009,17 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::place_bid`]."] + #[doc = "Place a bid."] + #[doc = ""] + #[doc = "Origin must be Signed, and account must have at least `amount` in free balance."] + #[doc = ""] + #[doc = "- `amount`: The amount of the bid; these funds will be reserved, and if/when"] + #[doc = " consolidated, removed. Must be at least `MinBid`."] + #[doc = "- `duration`: The number of periods before which the newly consolidated bid may be"] + #[doc = " thawed. Must be greater than 1 and no more than `QueueCount`."] + #[doc = ""] + #[doc = "Complexities:"] + #[doc = "- `Queues[duration].len()` (just take max)."] pub fn place_bid( &self, amount: types::place_bid::Amount, @@ -25767,7 +29037,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::retract_bid`]."] + #[doc = "Retract a previously placed bid."] + #[doc = ""] + #[doc = "Origin must be Signed, and the account should have previously issued a still-active bid"] + #[doc = "of `amount` for `duration`."] + #[doc = ""] + #[doc = "- `amount`: The amount of the previous bid."] + #[doc = "- `duration`: The duration of the previous bid."] pub fn retract_bid( &self, amount: types::retract_bid::Amount, @@ -25784,7 +29060,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::fund_deficit`]."] + #[doc = "Ensure we have sufficient funding for all potential payouts."] + #[doc = ""] + #[doc = "- `origin`: Must be accepted by `FundOrigin`."] pub fn fund_deficit(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Nis", @@ -25798,7 +29076,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::thaw_private`]."] + #[doc = "Reduce or remove an outstanding receipt, placing the according proportion of funds into"] + #[doc = "the account of the owner."] + #[doc = ""] + #[doc = "- `origin`: Must be Signed and the account must be the owner of the receipt `index` as"] + #[doc = " well as any fungible counterpart."] + #[doc = "- `index`: The index of the receipt."] + #[doc = "- `portion`: If `Some`, then only the given portion of the receipt should be thawed. If"] + #[doc = " `None`, then all of it should be."] pub fn thaw_private( &self, index: types::thaw_private::Index, @@ -25818,7 +29103,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::thaw_communal`]."] + #[doc = "Reduce or remove an outstanding receipt, placing the according proportion of funds into"] + #[doc = "the account of the owner."] + #[doc = ""] + #[doc = "- `origin`: Must be Signed and the account must be the owner of the fungible counterpart"] + #[doc = " for receipt `index`."] + #[doc = "- `index`: The index of the receipt."] pub fn thaw_communal( &self, index: types::thaw_communal::Index, @@ -25835,7 +29125,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::communify`]."] + #[doc = "Make a private receipt communal and create fungible counterparts for its owner."] pub fn communify( &self, index: types::communify::Index, @@ -25852,7 +29142,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::privatize`]."] + #[doc = "Make a communal receipt private and burn fungible counterparts from its owner."] pub fn privatize( &self, index: types::privatize::Index, @@ -26436,7 +29726,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::transfer_allow_death`]."] + #[doc = "Transfer some liquid free balance to another account."] + #[doc = ""] + #[doc = "`transfer_allow_death` will set the `FreeBalance` of the sender and receiver."] + #[doc = "If the sender's account is below the existential deposit as a result"] + #[doc = "of the transfer, the account will be reaped."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be `Signed` by the transactor."] pub struct TransferAllowDeath { pub dest: transfer_allow_death::Dest, #[codec(compact)] @@ -26461,7 +29757,8 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_transfer`]."] + #[doc = "Exactly as `transfer_allow_death`, except the origin must be root and the source account"] + #[doc = "may be specified."] pub struct ForceTransfer { pub source: force_transfer::Source, pub dest: force_transfer::Dest, @@ -26488,7 +29785,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::transfer_keep_alive`]."] + #[doc = "Same as the [`transfer_allow_death`] call, but with a check that the transfer will not"] + #[doc = "kill the origin account."] + #[doc = ""] + #[doc = "99% of the time you want [`transfer_allow_death`] instead."] + #[doc = ""] + #[doc = "[`transfer_allow_death`]: struct.Pallet.html#method.transfer"] pub struct TransferKeepAlive { pub dest: transfer_keep_alive::Dest, #[codec(compact)] @@ -26513,7 +29815,21 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::transfer_all`]."] + #[doc = "Transfer the entire transferable balance from the caller account."] + #[doc = ""] + #[doc = "NOTE: This function only attempts to transfer _transferable_ balances. This means that"] + #[doc = "any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be"] + #[doc = "transferred by this function. To ensure that this function results in a killed account,"] + #[doc = "you might need to prepare the account by removing any reference counters, storage"] + #[doc = "deposits, etc..."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be Signed."] + #[doc = ""] + #[doc = "- `dest`: The recipient of the transfer."] + #[doc = "- `keep_alive`: A boolean to determine if the `transfer_all` operation should send all"] + #[doc = " of the funds the account has, causing the sender account to be killed (false), or"] + #[doc = " transfer everything except at least the existential deposit, which will guarantee to"] + #[doc = " keep the sender account alive (true)."] pub struct TransferAll { pub dest: transfer_all::Dest, pub keep_alive: transfer_all::KeepAlive, @@ -26537,7 +29853,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_unreserve`]."] + #[doc = "Unreserve some balance from a user by force."] + #[doc = ""] + #[doc = "Can only be called by ROOT."] pub struct ForceUnreserve { pub who: force_unreserve::Who, pub amount: force_unreserve::Amount, @@ -26561,7 +29879,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::upgrade_accounts`]."] + #[doc = "Upgrade a specified account."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed`."] + #[doc = "- `who`: The account to be upgraded."] + #[doc = ""] + #[doc = "This will waive the transaction fee if at least all but 10% of the accounts needed to"] + #[doc = "be upgraded. (We let some not have to be upgraded just in order to allow for the"] + #[doc = "possibililty of churn)."] pub struct UpgradeAccounts { pub who: upgrade_accounts::Who, } @@ -26583,7 +29908,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_set_balance`]."] + #[doc = "Set the regular balance of a given account."] + #[doc = ""] + #[doc = "The dispatch origin for this call is `root`."] pub struct ForceSetBalance { pub who: force_set_balance::Who, #[codec(compact)] @@ -26608,7 +29935,11 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_adjust_total_issuance`]."] + #[doc = "Adjust the total issuance in a saturating way."] + #[doc = ""] + #[doc = "Can only be called by root and always needs a positive `delta`."] + #[doc = ""] + #[doc = "# Example"] pub struct ForceAdjustTotalIssuance { pub direction: force_adjust_total_issuance::Direction, #[codec(compact)] @@ -26626,7 +29957,13 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::transfer_allow_death`]."] + #[doc = "Transfer some liquid free balance to another account."] + #[doc = ""] + #[doc = "`transfer_allow_death` will set the `FreeBalance` of the sender and receiver."] + #[doc = "If the sender's account is below the existential deposit as a result"] + #[doc = "of the transfer, the account will be reaped."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be `Signed` by the transactor."] pub fn transfer_allow_death( &self, dest: types::transfer_allow_death::Dest, @@ -26644,7 +29981,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_transfer`]."] + #[doc = "Exactly as `transfer_allow_death`, except the origin must be root and the source account"] + #[doc = "may be specified."] pub fn force_transfer( &self, source: types::force_transfer::Source, @@ -26666,7 +30004,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::transfer_keep_alive`]."] + #[doc = "Same as the [`transfer_allow_death`] call, but with a check that the transfer will not"] + #[doc = "kill the origin account."] + #[doc = ""] + #[doc = "99% of the time you want [`transfer_allow_death`] instead."] + #[doc = ""] + #[doc = "[`transfer_allow_death`]: struct.Pallet.html#method.transfer"] pub fn transfer_keep_alive( &self, dest: types::transfer_keep_alive::Dest, @@ -26683,7 +30026,21 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::transfer_all`]."] + #[doc = "Transfer the entire transferable balance from the caller account."] + #[doc = ""] + #[doc = "NOTE: This function only attempts to transfer _transferable_ balances. This means that"] + #[doc = "any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be"] + #[doc = "transferred by this function. To ensure that this function results in a killed account,"] + #[doc = "you might need to prepare the account by removing any reference counters, storage"] + #[doc = "deposits, etc..."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be Signed."] + #[doc = ""] + #[doc = "- `dest`: The recipient of the transfer."] + #[doc = "- `keep_alive`: A boolean to determine if the `transfer_all` operation should send all"] + #[doc = " of the funds the account has, causing the sender account to be killed (false), or"] + #[doc = " transfer everything except at least the existential deposit, which will guarantee to"] + #[doc = " keep the sender account alive (true)."] pub fn transfer_all( &self, dest: types::transfer_all::Dest, @@ -26700,7 +30057,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_unreserve`]."] + #[doc = "Unreserve some balance from a user by force."] + #[doc = ""] + #[doc = "Can only be called by ROOT."] pub fn force_unreserve( &self, who: types::force_unreserve::Who, @@ -26718,7 +30077,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::upgrade_accounts`]."] + #[doc = "Upgrade a specified account."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed`."] + #[doc = "- `who`: The account to be upgraded."] + #[doc = ""] + #[doc = "This will waive the transaction fee if at least all but 10% of the accounts needed to"] + #[doc = "be upgraded. (We let some not have to be upgraded just in order to allow for the"] + #[doc = "possibililty of churn)."] pub fn upgrade_accounts( &self, who: types::upgrade_accounts::Who, @@ -26734,7 +30100,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_set_balance`]."] + #[doc = "Set the regular balance of a given account."] + #[doc = ""] + #[doc = "The dispatch origin for this call is `root`."] pub fn force_set_balance( &self, who: types::force_set_balance::Who, @@ -26751,7 +30119,11 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_adjust_total_issuance`]."] + #[doc = "Adjust the total issuance in a saturating way."] + #[doc = ""] + #[doc = "Can only be called by root and always needs a positive `delta`."] + #[doc = ""] + #[doc = "# Example"] pub fn force_adjust_total_issuance( &self, direction: types::force_adjust_total_issuance::Direction, @@ -27783,7 +31155,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_validation_upgrade_cooldown`]."] + #[doc = "Set the validation upgrade cooldown."] pub struct SetValidationUpgradeCooldown { pub new: set_validation_upgrade_cooldown::New, } @@ -27805,7 +31177,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_validation_upgrade_delay`]."] + #[doc = "Set the validation upgrade delay."] pub struct SetValidationUpgradeDelay { pub new: set_validation_upgrade_delay::New, } @@ -27827,7 +31199,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_code_retention_period`]."] + #[doc = "Set the acceptance period for an included candidate."] pub struct SetCodeRetentionPeriod { pub new: set_code_retention_period::New, } @@ -27849,7 +31221,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_max_code_size`]."] + #[doc = "Set the max validation code size for incoming upgrades."] pub struct SetMaxCodeSize { pub new: set_max_code_size::New, } @@ -27871,7 +31243,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_max_pov_size`]."] + #[doc = "Set the max POV block size for incoming upgrades."] pub struct SetMaxPovSize { pub new: set_max_pov_size::New, } @@ -27893,7 +31265,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_max_head_data_size`]."] + #[doc = "Set the max head data size for paras."] pub struct SetMaxHeadDataSize { pub new: set_max_head_data_size::New, } @@ -27915,7 +31287,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_coretime_cores`]."] + #[doc = "Set the number of coretime execution cores."] + #[doc = ""] + #[doc = "Note that this configuration is managed by the coretime chain. Only manually change"] + #[doc = "this, if you really know what you are doing!"] pub struct SetCoretimeCores { pub new: set_coretime_cores::New, } @@ -27937,17 +31312,17 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_on_demand_retries`]."] - pub struct SetOnDemandRetries { - pub new: set_on_demand_retries::New, + #[doc = "Set the max number of times a claim may timeout on a core before it is abandoned"] + pub struct SetMaxAvailabilityTimeouts { + pub new: set_max_availability_timeouts::New, } - pub mod set_on_demand_retries { + pub mod set_max_availability_timeouts { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetOnDemandRetries { + impl ::subxt::blocks::StaticExtrinsic for SetMaxAvailabilityTimeouts { const PALLET: &'static str = "Configuration"; - const CALL: &'static str = "set_on_demand_retries"; + const CALL: &'static str = "set_max_availability_timeouts"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -27959,7 +31334,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_group_rotation_frequency`]."] + #[doc = "Set the parachain validator-group rotation frequency"] pub struct SetGroupRotationFrequency { pub new: set_group_rotation_frequency::New, } @@ -27981,7 +31356,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_paras_availability_period`]."] + #[doc = "Set the availability period for paras."] pub struct SetParasAvailabilityPeriod { pub new: set_paras_availability_period::New, } @@ -28003,7 +31378,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_scheduling_lookahead`]."] + #[doc = "Set the scheduling lookahead, in expected number of blocks at peak throughput."] pub struct SetSchedulingLookahead { pub new: set_scheduling_lookahead::New, } @@ -28025,7 +31400,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_max_validators_per_core`]."] + #[doc = "Set the maximum number of validators to assign to any core."] pub struct SetMaxValidatorsPerCore { pub new: set_max_validators_per_core::New, } @@ -28047,7 +31422,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_max_validators`]."] + #[doc = "Set the maximum number of validators to use in parachain consensus."] pub struct SetMaxValidators { pub new: set_max_validators::New, } @@ -28069,7 +31444,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_dispute_period`]."] + #[doc = "Set the dispute period, in number of sessions to keep for disputes."] pub struct SetDisputePeriod { pub new: set_dispute_period::New, } @@ -28091,7 +31466,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_dispute_post_conclusion_acceptance_period`]."] + #[doc = "Set the dispute post conclusion acceptance period."] pub struct SetDisputePostConclusionAcceptancePeriod { pub new: set_dispute_post_conclusion_acceptance_period::New, } @@ -28113,7 +31488,8 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_no_show_slots`]."] + #[doc = "Set the no show slots, in number of number of consensus slots."] + #[doc = "Must be at least 1."] pub struct SetNoShowSlots { pub new: set_no_show_slots::New, } @@ -28135,7 +31511,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_n_delay_tranches`]."] + #[doc = "Set the total number of delay tranches."] pub struct SetNDelayTranches { pub new: set_n_delay_tranches::New, } @@ -28157,7 +31533,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_zeroth_delay_tranche_width`]."] + #[doc = "Set the zeroth delay tranche width."] pub struct SetZerothDelayTrancheWidth { pub new: set_zeroth_delay_tranche_width::New, } @@ -28179,7 +31555,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_needed_approvals`]."] + #[doc = "Set the number of validators needed to approve a block."] pub struct SetNeededApprovals { pub new: set_needed_approvals::New, } @@ -28201,7 +31577,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_relay_vrf_modulo_samples`]."] + #[doc = "Set the number of samples to do of the `RelayVRFModulo` approval assignment criterion."] pub struct SetRelayVrfModuloSamples { pub new: set_relay_vrf_modulo_samples::New, } @@ -28223,7 +31599,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_max_upward_queue_count`]."] + #[doc = "Sets the maximum items that can present in a upward dispatch queue at once."] pub struct SetMaxUpwardQueueCount { pub new: set_max_upward_queue_count::New, } @@ -28245,7 +31621,8 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_max_upward_queue_size`]."] + #[doc = "Sets the maximum total size of items that can present in a upward dispatch queue at"] + #[doc = "once."] pub struct SetMaxUpwardQueueSize { pub new: set_max_upward_queue_size::New, } @@ -28267,7 +31644,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_max_downward_message_size`]."] + #[doc = "Set the critical downward message size."] pub struct SetMaxDownwardMessageSize { pub new: set_max_downward_message_size::New, } @@ -28289,7 +31666,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_max_upward_message_size`]."] + #[doc = "Sets the maximum size of an upward message that can be sent by a candidate."] pub struct SetMaxUpwardMessageSize { pub new: set_max_upward_message_size::New, } @@ -28311,7 +31688,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_max_upward_message_num_per_candidate`]."] + #[doc = "Sets the maximum number of messages that a candidate can contain."] pub struct SetMaxUpwardMessageNumPerCandidate { pub new: set_max_upward_message_num_per_candidate::New, } @@ -28333,7 +31710,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_hrmp_open_request_ttl`]."] + #[doc = "Sets the number of sessions after which an HRMP open channel request expires."] pub struct SetHrmpOpenRequestTtl { pub new: set_hrmp_open_request_ttl::New, } @@ -28355,7 +31732,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_hrmp_sender_deposit`]."] + #[doc = "Sets the amount of funds that the sender should provide for opening an HRMP channel."] pub struct SetHrmpSenderDeposit { pub new: set_hrmp_sender_deposit::New, } @@ -28377,7 +31754,8 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_hrmp_recipient_deposit`]."] + #[doc = "Sets the amount of funds that the recipient should provide for accepting opening an HRMP"] + #[doc = "channel."] pub struct SetHrmpRecipientDeposit { pub new: set_hrmp_recipient_deposit::New, } @@ -28399,7 +31777,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_hrmp_channel_max_capacity`]."] + #[doc = "Sets the maximum number of messages allowed in an HRMP channel at once."] pub struct SetHrmpChannelMaxCapacity { pub new: set_hrmp_channel_max_capacity::New, } @@ -28421,7 +31799,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_hrmp_channel_max_total_size`]."] + #[doc = "Sets the maximum total size of messages in bytes allowed in an HRMP channel at once."] pub struct SetHrmpChannelMaxTotalSize { pub new: set_hrmp_channel_max_total_size::New, } @@ -28443,7 +31821,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_hrmp_max_parachain_inbound_channels`]."] + #[doc = "Sets the maximum number of inbound HRMP channels a parachain is allowed to accept."] pub struct SetHrmpMaxParachainInboundChannels { pub new: set_hrmp_max_parachain_inbound_channels::New, } @@ -28465,7 +31843,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_hrmp_channel_max_message_size`]."] + #[doc = "Sets the maximum size of a message that could ever be put into an HRMP channel."] pub struct SetHrmpChannelMaxMessageSize { pub new: set_hrmp_channel_max_message_size::New, } @@ -28487,7 +31865,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_hrmp_max_parachain_outbound_channels`]."] + #[doc = "Sets the maximum number of outbound HRMP channels a parachain is allowed to open."] pub struct SetHrmpMaxParachainOutboundChannels { pub new: set_hrmp_max_parachain_outbound_channels::New, } @@ -28509,7 +31887,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_hrmp_max_message_num_per_candidate`]."] + #[doc = "Sets the maximum number of outbound HRMP messages can be sent by a candidate."] pub struct SetHrmpMaxMessageNumPerCandidate { pub new: set_hrmp_max_message_num_per_candidate::New, } @@ -28531,7 +31909,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_pvf_voting_ttl`]."] + #[doc = "Set the number of session changes after which a PVF pre-checking voting is rejected."] pub struct SetPvfVotingTtl { pub new: set_pvf_voting_ttl::New, } @@ -28553,7 +31931,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_minimum_validation_upgrade_delay`]."] + #[doc = "Sets the minimum delay between announcing the upgrade block for a parachain until the"] + #[doc = "upgrade taking place."] + #[doc = ""] + #[doc = "See the field documentation for information and constraints for the new value."] pub struct SetMinimumValidationUpgradeDelay { pub new: set_minimum_validation_upgrade_delay::New, } @@ -28575,7 +31956,8 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_bypass_consistency_check`]."] + #[doc = "Setting this to true will disable consistency checks for the configuration setters."] + #[doc = "Use with caution."] pub struct SetBypassConsistencyCheck { pub new: set_bypass_consistency_check::New, } @@ -28597,7 +31979,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_async_backing_params`]."] + #[doc = "Set the asynchronous backing parameters."] pub struct SetAsyncBackingParams { pub new: set_async_backing_params::New, } @@ -28620,7 +32002,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_executor_params`]."] + #[doc = "Set PVF executor parameters."] pub struct SetExecutorParams { pub new: set_executor_params::New, } @@ -28643,7 +32025,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_on_demand_base_fee`]."] + #[doc = "Set the on demand (parathreads) base fee."] pub struct SetOnDemandBaseFee { pub new: set_on_demand_base_fee::New, } @@ -28665,7 +32047,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_on_demand_fee_variability`]."] + #[doc = "Set the on demand (parathreads) fee variability."] pub struct SetOnDemandFeeVariability { pub new: set_on_demand_fee_variability::New, } @@ -28687,7 +32069,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_on_demand_queue_max_size`]."] + #[doc = "Set the on demand (parathreads) queue max size."] pub struct SetOnDemandQueueMaxSize { pub new: set_on_demand_queue_max_size::New, } @@ -28709,7 +32091,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_on_demand_target_queue_utilization`]."] + #[doc = "Set the on demand (parathreads) fee variability."] pub struct SetOnDemandTargetQueueUtilization { pub new: set_on_demand_target_queue_utilization::New, } @@ -28731,7 +32113,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_on_demand_ttl`]."] + #[doc = "Set the on demand (parathreads) ttl in the claimqueue."] pub struct SetOnDemandTtl { pub new: set_on_demand_ttl::New, } @@ -28753,7 +32135,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_minimum_backing_votes`]."] + #[doc = "Set the minimum backing votes threshold."] pub struct SetMinimumBackingVotes { pub new: set_minimum_backing_votes::New, } @@ -28775,7 +32157,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_node_feature`]."] + #[doc = "Set/Unset a node feature."] pub struct SetNodeFeature { pub index: set_node_feature::Index, pub value: set_node_feature::Value, @@ -28799,7 +32181,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_approval_voting_params`]."] + #[doc = "Set approval-voting-params."] pub struct SetApprovalVotingParams { pub new: set_approval_voting_params::New, } @@ -28812,10 +32194,34 @@ pub mod api { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_approval_voting_params"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Set scheduler-params."] + pub struct SetSchedulerParams { + pub new: set_scheduler_params::New, + } + pub mod set_scheduler_params { + use super::runtime_types; + pub type New = runtime_types::polkadot_primitives::vstaging::SchedulerParams< + ::core::primitive::u32, + >; + } + impl ::subxt::blocks::StaticExtrinsic for SetSchedulerParams { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_scheduler_params"; + } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::set_validation_upgrade_cooldown`]."] + #[doc = "Set the validation upgrade cooldown."] pub fn set_validation_upgrade_cooldown( &self, new: types::set_validation_upgrade_cooldown::New, @@ -28832,7 +32238,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_validation_upgrade_delay`]."] + #[doc = "Set the validation upgrade delay."] pub fn set_validation_upgrade_delay( &self, new: types::set_validation_upgrade_delay::New, @@ -28848,7 +32254,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_code_retention_period`]."] + #[doc = "Set the acceptance period for an included candidate."] pub fn set_code_retention_period( &self, new: types::set_code_retention_period::New, @@ -28865,7 +32271,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_code_size`]."] + #[doc = "Set the max validation code size for incoming upgrades."] pub fn set_max_code_size( &self, new: types::set_max_code_size::New, @@ -28882,7 +32288,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_pov_size`]."] + #[doc = "Set the max POV block size for incoming upgrades."] pub fn set_max_pov_size( &self, new: types::set_max_pov_size::New, @@ -28898,7 +32304,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_head_data_size`]."] + #[doc = "Set the max head data size for paras."] pub fn set_max_head_data_size( &self, new: types::set_max_head_data_size::New, @@ -28915,7 +32321,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_coretime_cores`]."] + #[doc = "Set the number of coretime execution cores."] + #[doc = ""] + #[doc = "Note that this configuration is managed by the coretime chain. Only manually change"] + #[doc = "this, if you really know what you are doing!"] pub fn set_coretime_cores( &self, new: types::set_coretime_cores::New, @@ -28931,24 +32340,23 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_on_demand_retries`]."] - pub fn set_on_demand_retries( + #[doc = "Set the max number of times a claim may timeout on a core before it is abandoned"] + pub fn set_max_availability_timeouts( &self, - new: types::set_on_demand_retries::New, - ) -> ::subxt::tx::Payload { + new: types::set_max_availability_timeouts::New, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Configuration", - "set_on_demand_retries", - types::SetOnDemandRetries { new }, + "set_max_availability_timeouts", + types::SetMaxAvailabilityTimeouts { new }, [ - 228u8, 78u8, 216u8, 66u8, 17u8, 51u8, 84u8, 14u8, 80u8, 67u8, 24u8, - 138u8, 177u8, 108u8, 203u8, 87u8, 240u8, 125u8, 111u8, 223u8, 216u8, - 212u8, 69u8, 236u8, 216u8, 178u8, 166u8, 145u8, 115u8, 47u8, 147u8, - 235u8, + 53u8, 141u8, 53u8, 9u8, 149u8, 145u8, 48u8, 165u8, 157u8, 2u8, 45u8, + 23u8, 128u8, 233u8, 27u8, 132u8, 189u8, 212u8, 45u8, 187u8, 2u8, 112u8, + 26u8, 88u8, 233u8, 84u8, 148u8, 73u8, 222u8, 208u8, 195u8, 153u8, ], ) } - #[doc = "See [`Pallet::set_group_rotation_frequency`]."] + #[doc = "Set the parachain validator-group rotation frequency"] pub fn set_group_rotation_frequency( &self, new: types::set_group_rotation_frequency::New, @@ -28964,7 +32372,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_paras_availability_period`]."] + #[doc = "Set the availability period for paras."] pub fn set_paras_availability_period( &self, new: types::set_paras_availability_period::New, @@ -28980,7 +32388,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_scheduling_lookahead`]."] + #[doc = "Set the scheduling lookahead, in expected number of blocks at peak throughput."] pub fn set_scheduling_lookahead( &self, new: types::set_scheduling_lookahead::New, @@ -28997,7 +32405,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_validators_per_core`]."] + #[doc = "Set the maximum number of validators to assign to any core."] pub fn set_max_validators_per_core( &self, new: types::set_max_validators_per_core::New, @@ -29014,7 +32422,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_validators`]."] + #[doc = "Set the maximum number of validators to use in parachain consensus."] pub fn set_max_validators( &self, new: types::set_max_validators::New, @@ -29031,7 +32439,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_dispute_period`]."] + #[doc = "Set the dispute period, in number of sessions to keep for disputes."] pub fn set_dispute_period( &self, new: types::set_dispute_period::New, @@ -29048,7 +32456,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_dispute_post_conclusion_acceptance_period`]."] + #[doc = "Set the dispute post conclusion acceptance period."] pub fn set_dispute_post_conclusion_acceptance_period( &self, new: types::set_dispute_post_conclusion_acceptance_period::New, @@ -29066,7 +32474,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_no_show_slots`]."] + #[doc = "Set the no show slots, in number of number of consensus slots."] + #[doc = "Must be at least 1."] pub fn set_no_show_slots( &self, new: types::set_no_show_slots::New, @@ -29082,7 +32491,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_n_delay_tranches`]."] + #[doc = "Set the total number of delay tranches."] pub fn set_n_delay_tranches( &self, new: types::set_n_delay_tranches::New, @@ -29099,7 +32508,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_zeroth_delay_tranche_width`]."] + #[doc = "Set the zeroth delay tranche width."] pub fn set_zeroth_delay_tranche_width( &self, new: types::set_zeroth_delay_tranche_width::New, @@ -29115,7 +32524,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_needed_approvals`]."] + #[doc = "Set the number of validators needed to approve a block."] pub fn set_needed_approvals( &self, new: types::set_needed_approvals::New, @@ -29131,7 +32540,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_relay_vrf_modulo_samples`]."] + #[doc = "Set the number of samples to do of the `RelayVRFModulo` approval assignment criterion."] pub fn set_relay_vrf_modulo_samples( &self, new: types::set_relay_vrf_modulo_samples::New, @@ -29148,7 +32557,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_upward_queue_count`]."] + #[doc = "Sets the maximum items that can present in a upward dispatch queue at once."] pub fn set_max_upward_queue_count( &self, new: types::set_max_upward_queue_count::New, @@ -29165,7 +32574,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_upward_queue_size`]."] + #[doc = "Sets the maximum total size of items that can present in a upward dispatch queue at"] + #[doc = "once."] pub fn set_max_upward_queue_size( &self, new: types::set_max_upward_queue_size::New, @@ -29182,7 +32592,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_downward_message_size`]."] + #[doc = "Set the critical downward message size."] pub fn set_max_downward_message_size( &self, new: types::set_max_downward_message_size::New, @@ -29198,7 +32608,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_upward_message_size`]."] + #[doc = "Sets the maximum size of an upward message that can be sent by a candidate."] pub fn set_max_upward_message_size( &self, new: types::set_max_upward_message_size::New, @@ -29215,7 +32625,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_upward_message_num_per_candidate`]."] + #[doc = "Sets the maximum number of messages that a candidate can contain."] pub fn set_max_upward_message_num_per_candidate( &self, new: types::set_max_upward_message_num_per_candidate::New, @@ -29232,7 +32642,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_open_request_ttl`]."] + #[doc = "Sets the number of sessions after which an HRMP open channel request expires."] pub fn set_hrmp_open_request_ttl( &self, new: types::set_hrmp_open_request_ttl::New, @@ -29248,7 +32658,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_sender_deposit`]."] + #[doc = "Sets the amount of funds that the sender should provide for opening an HRMP channel."] pub fn set_hrmp_sender_deposit( &self, new: types::set_hrmp_sender_deposit::New, @@ -29264,7 +32674,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_recipient_deposit`]."] + #[doc = "Sets the amount of funds that the recipient should provide for accepting opening an HRMP"] + #[doc = "channel."] pub fn set_hrmp_recipient_deposit( &self, new: types::set_hrmp_recipient_deposit::New, @@ -29281,7 +32692,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_channel_max_capacity`]."] + #[doc = "Sets the maximum number of messages allowed in an HRMP channel at once."] pub fn set_hrmp_channel_max_capacity( &self, new: types::set_hrmp_channel_max_capacity::New, @@ -29298,7 +32709,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_channel_max_total_size`]."] + #[doc = "Sets the maximum total size of messages in bytes allowed in an HRMP channel at once."] pub fn set_hrmp_channel_max_total_size( &self, new: types::set_hrmp_channel_max_total_size::New, @@ -29314,7 +32725,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_max_parachain_inbound_channels`]."] + #[doc = "Sets the maximum number of inbound HRMP channels a parachain is allowed to accept."] pub fn set_hrmp_max_parachain_inbound_channels( &self, new: types::set_hrmp_max_parachain_inbound_channels::New, @@ -29331,7 +32742,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_channel_max_message_size`]."] + #[doc = "Sets the maximum size of a message that could ever be put into an HRMP channel."] pub fn set_hrmp_channel_max_message_size( &self, new: types::set_hrmp_channel_max_message_size::New, @@ -29348,7 +32759,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_max_parachain_outbound_channels`]."] + #[doc = "Sets the maximum number of outbound HRMP channels a parachain is allowed to open."] pub fn set_hrmp_max_parachain_outbound_channels( &self, new: types::set_hrmp_max_parachain_outbound_channels::New, @@ -29365,7 +32776,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_max_message_num_per_candidate`]."] + #[doc = "Sets the maximum number of outbound HRMP messages can be sent by a candidate."] pub fn set_hrmp_max_message_num_per_candidate( &self, new: types::set_hrmp_max_message_num_per_candidate::New, @@ -29381,7 +32792,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_pvf_voting_ttl`]."] + #[doc = "Set the number of session changes after which a PVF pre-checking voting is rejected."] pub fn set_pvf_voting_ttl( &self, new: types::set_pvf_voting_ttl::New, @@ -29398,7 +32809,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_minimum_validation_upgrade_delay`]."] + #[doc = "Sets the minimum delay between announcing the upgrade block for a parachain until the"] + #[doc = "upgrade taking place."] + #[doc = ""] + #[doc = "See the field documentation for information and constraints for the new value."] pub fn set_minimum_validation_upgrade_delay( &self, new: types::set_minimum_validation_upgrade_delay::New, @@ -29415,7 +32829,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_bypass_consistency_check`]."] + #[doc = "Setting this to true will disable consistency checks for the configuration setters."] + #[doc = "Use with caution."] pub fn set_bypass_consistency_check( &self, new: types::set_bypass_consistency_check::New, @@ -29432,7 +32847,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_async_backing_params`]."] + #[doc = "Set the asynchronous backing parameters."] pub fn set_async_backing_params( &self, new: types::set_async_backing_params::New, @@ -29449,7 +32864,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_executor_params`]."] + #[doc = "Set PVF executor parameters."] pub fn set_executor_params( &self, new: types::set_executor_params::New, @@ -29465,7 +32880,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_on_demand_base_fee`]."] + #[doc = "Set the on demand (parathreads) base fee."] pub fn set_on_demand_base_fee( &self, new: types::set_on_demand_base_fee::New, @@ -29481,7 +32896,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_on_demand_fee_variability`]."] + #[doc = "Set the on demand (parathreads) fee variability."] pub fn set_on_demand_fee_variability( &self, new: types::set_on_demand_fee_variability::New, @@ -29498,7 +32913,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_on_demand_queue_max_size`]."] + #[doc = "Set the on demand (parathreads) queue max size."] pub fn set_on_demand_queue_max_size( &self, new: types::set_on_demand_queue_max_size::New, @@ -29514,7 +32929,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_on_demand_target_queue_utilization`]."] + #[doc = "Set the on demand (parathreads) fee variability."] pub fn set_on_demand_target_queue_utilization( &self, new: types::set_on_demand_target_queue_utilization::New, @@ -29532,7 +32947,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_on_demand_ttl`]."] + #[doc = "Set the on demand (parathreads) ttl in the claimqueue."] pub fn set_on_demand_ttl( &self, new: types::set_on_demand_ttl::New, @@ -29549,7 +32964,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_minimum_backing_votes`]."] + #[doc = "Set the minimum backing votes threshold."] pub fn set_minimum_backing_votes( &self, new: types::set_minimum_backing_votes::New, @@ -29565,7 +32980,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_node_feature`]."] + #[doc = "Set/Unset a node feature."] pub fn set_node_feature( &self, index: types::set_node_feature::Index, @@ -29582,7 +32997,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_approval_voting_params`]."] + #[doc = "Set approval-voting-params."] pub fn set_approval_voting_params( &self, new: types::set_approval_voting_params::New, @@ -29599,6 +33014,22 @@ pub mod api { ], ) } + #[doc = "Set scheduler-params."] + pub fn set_scheduler_params( + &self, + new: types::set_scheduler_params::New, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_scheduler_params", + types::SetSchedulerParams { new }, + [ + 191u8, 87u8, 235u8, 71u8, 143u8, 46u8, 2u8, 88u8, 111u8, 15u8, 251u8, + 230u8, 241u8, 172u8, 183u8, 110u8, 33u8, 26u8, 43u8, 119u8, 74u8, 62u8, + 200u8, 226u8, 83u8, 180u8, 123u8, 132u8, 171u8, 65u8, 30u8, 13u8, + ], + ) + } } } pub mod storage { @@ -29635,9 +33066,10 @@ pub mod api { "ActiveConfig", vec![], [ - 121u8, 69u8, 70u8, 58u8, 91u8, 124u8, 53u8, 11u8, 49u8, 82u8, 119u8, - 36u8, 116u8, 193u8, 238u8, 208u8, 187u8, 148u8, 200u8, 30u8, 174u8, - 195u8, 201u8, 181u8, 40u8, 93u8, 153u8, 220u8, 158u8, 24u8, 153u8, 5u8, + 139u8, 211u8, 123u8, 64u8, 213u8, 119u8, 27u8, 145u8, 140u8, 101u8, + 90u8, 64u8, 218u8, 130u8, 96u8, 66u8, 107u8, 131u8, 85u8, 4u8, 136u8, + 199u8, 248u8, 106u8, 206u8, 16u8, 205u8, 244u8, 67u8, 105u8, 20u8, + 22u8, ], ) } @@ -29662,9 +33094,9 @@ pub mod api { "PendingConfigs", vec![], [ - 29u8, 220u8, 218u8, 233u8, 222u8, 28u8, 203u8, 86u8, 0u8, 34u8, 78u8, - 157u8, 206u8, 57u8, 211u8, 206u8, 34u8, 22u8, 126u8, 92u8, 13u8, 71u8, - 156u8, 156u8, 121u8, 2u8, 30u8, 72u8, 37u8, 12u8, 88u8, 210u8, + 7u8, 170u8, 38u8, 177u8, 76u8, 75u8, 198u8, 192u8, 247u8, 137u8, 85u8, + 17u8, 74u8, 93u8, 170u8, 177u8, 198u8, 208u8, 183u8, 28u8, 178u8, 5u8, + 39u8, 246u8, 175u8, 78u8, 145u8, 37u8, 212u8, 20u8, 52u8, 110u8, ], ) } @@ -30147,7 +33579,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::enter`]."] + #[doc = "Enter the paras inherent. This will process bitfields and backed candidates."] pub struct Enter { pub data: enter::Data, } @@ -30164,7 +33596,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::enter`]."] + #[doc = "Enter the paras inherent. This will process bitfields and backed candidates."] pub fn enter( &self, data: types::enter::Data, @@ -30417,7 +33849,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_set_current_code`]."] + #[doc = "Set the storage for the parachain validation code immediately."] pub struct ForceSetCurrentCode { pub para: force_set_current_code::Para, pub new_code: force_set_current_code::NewCode, @@ -30442,7 +33874,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_set_current_head`]."] + #[doc = "Set the storage for the current parachain head data immediately."] pub struct ForceSetCurrentHead { pub para: force_set_current_head::Para, pub new_head: force_set_current_head::NewHead, @@ -30467,7 +33899,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_schedule_code_upgrade`]."] + #[doc = "Schedule an upgrade as if it was scheduled in the given relay parent block."] pub struct ForceScheduleCodeUpgrade { pub para: force_schedule_code_upgrade::Para, pub new_code: force_schedule_code_upgrade::NewCode, @@ -30494,7 +33926,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_note_new_head`]."] + #[doc = "Note a new block head for para within the context of the current block."] pub struct ForceNoteNewHead { pub para: force_note_new_head::Para, pub new_head: force_note_new_head::NewHead, @@ -30519,7 +33951,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_queue_action`]."] + #[doc = "Put a parachain directly into the next session's action queue."] + #[doc = "We can't queue it any sooner than this without going into the"] + #[doc = "initializer..."] pub struct ForceQueueAction { pub para: force_queue_action::Para, } @@ -30541,7 +33975,20 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::add_trusted_validation_code`]."] + #[doc = "Adds the validation code to the storage."] + #[doc = ""] + #[doc = "The code will not be added if it is already present. Additionally, if PVF pre-checking"] + #[doc = "is running for that code, it will be instantly accepted."] + #[doc = ""] + #[doc = "Otherwise, the code will be added into the storage. Note that the code will be added"] + #[doc = "into storage with reference count 0. This is to account the fact that there are no users"] + #[doc = "for this code yet. The caller will have to make sure that this code eventually gets"] + #[doc = "used by some parachain or removed from the storage to avoid storage leaks. For the"] + #[doc = "latter prefer to use the `poke_unused_validation_code` dispatchable to raw storage"] + #[doc = "manipulation."] + #[doc = ""] + #[doc = "This function is mainly meant to be used for upgrading parachains that do not follow"] + #[doc = "the go-ahead signal while the PVF pre-checking feature is enabled."] pub struct AddTrustedValidationCode { pub validation_code: add_trusted_validation_code::ValidationCode, } @@ -30564,7 +34011,11 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::poke_unused_validation_code`]."] + #[doc = "Remove the validation code from the storage iff the reference count is 0."] + #[doc = ""] + #[doc = "This is better than removing the storage directly, because it will not remove the code"] + #[doc = "that was suddenly got used by some parachain while this dispatchable was pending"] + #[doc = "dispatching."] pub struct PokeUnusedValidationCode { pub validation_code_hash: poke_unused_validation_code::ValidationCodeHash, } @@ -30586,7 +34037,8 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::include_pvf_check_statement`]."] + #[doc = "Includes a statement for a PVF pre-checking vote. Potentially, finalizes the vote and"] + #[doc = "enacts the results if that was the last vote before achieving the supermajority."] pub struct IncludePvfCheckStatement { pub stmt: include_pvf_check_statement::Stmt, pub signature: include_pvf_check_statement::Signature, @@ -30611,7 +34063,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_set_most_recent_context`]."] + #[doc = "Set the storage for the current parachain head data immediately."] pub struct ForceSetMostRecentContext { pub para: force_set_most_recent_context::Para, pub context: force_set_most_recent_context::Context, @@ -30628,7 +34080,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::force_set_current_code`]."] + #[doc = "Set the storage for the parachain validation code immediately."] pub fn force_set_current_code( &self, para: types::force_set_current_code::Para, @@ -30646,7 +34098,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_set_current_head`]."] + #[doc = "Set the storage for the current parachain head data immediately."] pub fn force_set_current_head( &self, para: types::force_set_current_head::Para, @@ -30664,7 +34116,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_schedule_code_upgrade`]."] + #[doc = "Schedule an upgrade as if it was scheduled in the given relay parent block."] pub fn force_schedule_code_upgrade( &self, para: types::force_schedule_code_upgrade::Para, @@ -30687,7 +34139,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_note_new_head`]."] + #[doc = "Note a new block head for para within the context of the current block."] pub fn force_note_new_head( &self, para: types::force_note_new_head::Para, @@ -30704,7 +34156,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_queue_action`]."] + #[doc = "Put a parachain directly into the next session's action queue."] + #[doc = "We can't queue it any sooner than this without going into the"] + #[doc = "initializer..."] pub fn force_queue_action( &self, para: types::force_queue_action::Para, @@ -30721,7 +34175,20 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::add_trusted_validation_code`]."] + #[doc = "Adds the validation code to the storage."] + #[doc = ""] + #[doc = "The code will not be added if it is already present. Additionally, if PVF pre-checking"] + #[doc = "is running for that code, it will be instantly accepted."] + #[doc = ""] + #[doc = "Otherwise, the code will be added into the storage. Note that the code will be added"] + #[doc = "into storage with reference count 0. This is to account the fact that there are no users"] + #[doc = "for this code yet. The caller will have to make sure that this code eventually gets"] + #[doc = "used by some parachain or removed from the storage to avoid storage leaks. For the"] + #[doc = "latter prefer to use the `poke_unused_validation_code` dispatchable to raw storage"] + #[doc = "manipulation."] + #[doc = ""] + #[doc = "This function is mainly meant to be used for upgrading parachains that do not follow"] + #[doc = "the go-ahead signal while the PVF pre-checking feature is enabled."] pub fn add_trusted_validation_code( &self, validation_code: types::add_trusted_validation_code::ValidationCode, @@ -30738,7 +34205,11 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::poke_unused_validation_code`]."] + #[doc = "Remove the validation code from the storage iff the reference count is 0."] + #[doc = ""] + #[doc = "This is better than removing the storage directly, because it will not remove the code"] + #[doc = "that was suddenly got used by some parachain while this dispatchable was pending"] + #[doc = "dispatching."] pub fn poke_unused_validation_code( &self, validation_code_hash: types::poke_unused_validation_code::ValidationCodeHash, @@ -30756,7 +34227,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::include_pvf_check_statement`]."] + #[doc = "Includes a statement for a PVF pre-checking vote. Potentially, finalizes the vote and"] + #[doc = "enacts the results if that was the last vote before achieving the supermajority."] pub fn include_pvf_check_statement( &self, stmt: types::include_pvf_check_statement::Stmt, @@ -30774,7 +34246,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_set_most_recent_context`]."] + #[doc = "Set the storage for the current parachain head data immediately."] pub fn force_set_most_recent_context( &self, para: types::force_set_most_recent_context::Para, @@ -32059,7 +35531,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_approve`]."] + #[doc = "Issue a signal to the consensus engine to forcibly act as though all parachain"] + #[doc = "blocks in all relay chain blocks up to and including the given number in the current"] + #[doc = "chain are valid and should be finalized."] pub struct ForceApprove { pub up_to: force_approve::UpTo, } @@ -32074,7 +35548,9 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::force_approve`]."] + #[doc = "Issue a signal to the consensus engine to forcibly act as though all parachain"] + #[doc = "blocks in all relay chain blocks up to and including the given number in the current"] + #[doc = "chain are valid and should be finalized."] pub fn force_approve( &self, up_to: types::force_approve::UpTo, @@ -32371,7 +35847,16 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::hrmp_init_open_channel`]."] + #[doc = "Initiate opening a channel from a parachain to a given recipient with given channel"] + #[doc = "parameters."] + #[doc = ""] + #[doc = "- `proposed_max_capacity` - specifies how many messages can be in the channel at once."] + #[doc = "- `proposed_max_message_size` - specifies the maximum size of the messages."] + #[doc = ""] + #[doc = "These numbers are a subject to the relay-chain configuration limits."] + #[doc = ""] + #[doc = "The channel can be opened only after the recipient confirms it and only on a session"] + #[doc = "change."] pub struct HrmpInitOpenChannel { pub recipient: hrmp_init_open_channel::Recipient, pub proposed_max_capacity: hrmp_init_open_channel::ProposedMaxCapacity, @@ -32398,7 +35883,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::hrmp_accept_open_channel`]."] + #[doc = "Accept a pending open channel request from the given sender."] + #[doc = ""] + #[doc = "The channel will be opened only on the next session boundary."] pub struct HrmpAcceptOpenChannel { pub sender: hrmp_accept_open_channel::Sender, } @@ -32420,7 +35907,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::hrmp_close_channel`]."] + #[doc = "Initiate unilateral closing of a channel. The origin must be either the sender or the"] + #[doc = "recipient in the channel being closed."] + #[doc = ""] + #[doc = "The closure can only happen on a session change."] pub struct HrmpCloseChannel { pub channel_id: hrmp_close_channel::ChannelId, } @@ -32443,7 +35933,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_clean_hrmp`]."] + #[doc = "This extrinsic triggers the cleanup of all the HRMP storage items that a para may have."] + #[doc = "Normally this happens once per session, but this allows you to trigger the cleanup"] + #[doc = "immediately for a specific parachain."] + #[doc = ""] + #[doc = "Number of inbound and outbound channels for `para` must be provided as witness data."] + #[doc = ""] + #[doc = "Origin must be the `ChannelManager`."] pub struct ForceCleanHrmp { pub para: force_clean_hrmp::Para, pub num_inbound: force_clean_hrmp::NumInbound, @@ -32469,7 +35965,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_process_hrmp_open`]."] + #[doc = "Force process HRMP open channel requests."] + #[doc = ""] + #[doc = "If there are pending HRMP open channel requests, you can use this function to process"] + #[doc = "all of those requests immediately."] + #[doc = ""] + #[doc = "Total number of opening channels must be provided as witness data."] + #[doc = ""] + #[doc = "Origin must be the `ChannelManager`."] pub struct ForceProcessHrmpOpen { pub channels: force_process_hrmp_open::Channels, } @@ -32491,7 +35994,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_process_hrmp_close`]."] + #[doc = "Force process HRMP close channel requests."] + #[doc = ""] + #[doc = "If there are pending HRMP close channel requests, you can use this function to process"] + #[doc = "all of those requests immediately."] + #[doc = ""] + #[doc = "Total number of closing channels must be provided as witness data."] + #[doc = ""] + #[doc = "Origin must be the `ChannelManager`."] pub struct ForceProcessHrmpClose { pub channels: force_process_hrmp_close::Channels, } @@ -32513,7 +36023,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::hrmp_cancel_open_request`]."] + #[doc = "This cancels a pending open channel request. It can be canceled by either of the sender"] + #[doc = "or the recipient for that request. The origin must be either of those."] + #[doc = ""] + #[doc = "The cancellation happens immediately. It is not possible to cancel the request if it is"] + #[doc = "already accepted."] + #[doc = ""] + #[doc = "Total number of open requests (i.e. `HrmpOpenChannelRequestsList`) must be provided as"] + #[doc = "witness data."] pub struct HrmpCancelOpenRequest { pub channel_id: hrmp_cancel_open_request::ChannelId, pub open_requests: hrmp_cancel_open_request::OpenRequests, @@ -32538,7 +36055,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_open_hrmp_channel`]."] + #[doc = "Open a channel from a `sender` to a `recipient` `ParaId`. Although opened by governance,"] + #[doc = "the `max_capacity` and `max_message_size` are still subject to the Relay Chain's"] + #[doc = "configured limits."] + #[doc = ""] + #[doc = "Expected use is when one (and only one) of the `ParaId`s involved in the channel is"] + #[doc = "governed by the system, e.g. a system parachain."] + #[doc = ""] + #[doc = "Origin must be the `ChannelManager`."] pub struct ForceOpenHrmpChannel { pub sender: force_open_hrmp_channel::Sender, pub recipient: force_open_hrmp_channel::Recipient, @@ -32567,7 +36091,18 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::establish_system_channel`]."] + #[doc = "Establish an HRMP channel between two system chains. If the channel does not already"] + #[doc = "exist, the transaction fees will be refunded to the caller. The system does not take"] + #[doc = "deposits for channels between system chains, and automatically sets the message number"] + #[doc = "and size limits to the maximum allowed by the network's configuration."] + #[doc = ""] + #[doc = "Arguments:"] + #[doc = ""] + #[doc = "- `sender`: A system chain, `ParaId`."] + #[doc = "- `recipient`: A system chain, `ParaId`."] + #[doc = ""] + #[doc = "Any signed origin can call this function, but _both_ inputs MUST be system chains. If"] + #[doc = "the channel does not exist yet, there is no fee."] pub struct EstablishSystemChannel { pub sender: establish_system_channel::Sender, pub recipient: establish_system_channel::Recipient, @@ -32592,7 +36127,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::poke_channel_deposits`]."] + #[doc = "Update the deposits held for an HRMP channel to the latest `Configuration`. Channels"] + #[doc = "with system chains do not require a deposit."] + #[doc = ""] + #[doc = "Arguments:"] + #[doc = ""] + #[doc = "- `sender`: A chain, `ParaId`."] + #[doc = "- `recipient`: A chain, `ParaId`."] + #[doc = ""] + #[doc = "Any signed origin can call this function."] pub struct PokeChannelDeposits { pub sender: poke_channel_deposits::Sender, pub recipient: poke_channel_deposits::Recipient, @@ -32610,7 +36153,16 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::hrmp_init_open_channel`]."] + #[doc = "Initiate opening a channel from a parachain to a given recipient with given channel"] + #[doc = "parameters."] + #[doc = ""] + #[doc = "- `proposed_max_capacity` - specifies how many messages can be in the channel at once."] + #[doc = "- `proposed_max_message_size` - specifies the maximum size of the messages."] + #[doc = ""] + #[doc = "These numbers are a subject to the relay-chain configuration limits."] + #[doc = ""] + #[doc = "The channel can be opened only after the recipient confirms it and only on a session"] + #[doc = "change."] pub fn hrmp_init_open_channel( &self, recipient: types::hrmp_init_open_channel::Recipient, @@ -32633,7 +36185,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::hrmp_accept_open_channel`]."] + #[doc = "Accept a pending open channel request from the given sender."] + #[doc = ""] + #[doc = "The channel will be opened only on the next session boundary."] pub fn hrmp_accept_open_channel( &self, sender: types::hrmp_accept_open_channel::Sender, @@ -32649,7 +36203,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::hrmp_close_channel`]."] + #[doc = "Initiate unilateral closing of a channel. The origin must be either the sender or the"] + #[doc = "recipient in the channel being closed."] + #[doc = ""] + #[doc = "The closure can only happen on a session change."] pub fn hrmp_close_channel( &self, channel_id: types::hrmp_close_channel::ChannelId, @@ -32666,7 +36223,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_clean_hrmp`]."] + #[doc = "This extrinsic triggers the cleanup of all the HRMP storage items that a para may have."] + #[doc = "Normally this happens once per session, but this allows you to trigger the cleanup"] + #[doc = "immediately for a specific parachain."] + #[doc = ""] + #[doc = "Number of inbound and outbound channels for `para` must be provided as witness data."] + #[doc = ""] + #[doc = "Origin must be the `ChannelManager`."] pub fn force_clean_hrmp( &self, para: types::force_clean_hrmp::Para, @@ -32688,7 +36251,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_process_hrmp_open`]."] + #[doc = "Force process HRMP open channel requests."] + #[doc = ""] + #[doc = "If there are pending HRMP open channel requests, you can use this function to process"] + #[doc = "all of those requests immediately."] + #[doc = ""] + #[doc = "Total number of opening channels must be provided as witness data."] + #[doc = ""] + #[doc = "Origin must be the `ChannelManager`."] pub fn force_process_hrmp_open( &self, channels: types::force_process_hrmp_open::Channels, @@ -32705,7 +36275,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_process_hrmp_close`]."] + #[doc = "Force process HRMP close channel requests."] + #[doc = ""] + #[doc = "If there are pending HRMP close channel requests, you can use this function to process"] + #[doc = "all of those requests immediately."] + #[doc = ""] + #[doc = "Total number of closing channels must be provided as witness data."] + #[doc = ""] + #[doc = "Origin must be the `ChannelManager`."] pub fn force_process_hrmp_close( &self, channels: types::force_process_hrmp_close::Channels, @@ -32722,7 +36299,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::hrmp_cancel_open_request`]."] + #[doc = "This cancels a pending open channel request. It can be canceled by either of the sender"] + #[doc = "or the recipient for that request. The origin must be either of those."] + #[doc = ""] + #[doc = "The cancellation happens immediately. It is not possible to cancel the request if it is"] + #[doc = "already accepted."] + #[doc = ""] + #[doc = "Total number of open requests (i.e. `HrmpOpenChannelRequestsList`) must be provided as"] + #[doc = "witness data."] pub fn hrmp_cancel_open_request( &self, channel_id: types::hrmp_cancel_open_request::ChannelId, @@ -32742,7 +36326,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_open_hrmp_channel`]."] + #[doc = "Open a channel from a `sender` to a `recipient` `ParaId`. Although opened by governance,"] + #[doc = "the `max_capacity` and `max_message_size` are still subject to the Relay Chain's"] + #[doc = "configured limits."] + #[doc = ""] + #[doc = "Expected use is when one (and only one) of the `ParaId`s involved in the channel is"] + #[doc = "governed by the system, e.g. a system parachain."] + #[doc = ""] + #[doc = "Origin must be the `ChannelManager`."] pub fn force_open_hrmp_channel( &self, sender: types::force_open_hrmp_channel::Sender, @@ -32766,7 +36357,18 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::establish_system_channel`]."] + #[doc = "Establish an HRMP channel between two system chains. If the channel does not already"] + #[doc = "exist, the transaction fees will be refunded to the caller. The system does not take"] + #[doc = "deposits for channels between system chains, and automatically sets the message number"] + #[doc = "and size limits to the maximum allowed by the network's configuration."] + #[doc = ""] + #[doc = "Arguments:"] + #[doc = ""] + #[doc = "- `sender`: A system chain, `ParaId`."] + #[doc = "- `recipient`: A system chain, `ParaId`."] + #[doc = ""] + #[doc = "Any signed origin can call this function, but _both_ inputs MUST be system chains. If"] + #[doc = "the channel does not exist yet, there is no fee."] pub fn establish_system_channel( &self, sender: types::establish_system_channel::Sender, @@ -32783,7 +36385,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::poke_channel_deposits`]."] + #[doc = "Update the deposits held for an HRMP channel to the latest `Configuration`. Channels"] + #[doc = "with system chains do not require a deposit."] + #[doc = ""] + #[doc = "Arguments:"] + #[doc = ""] + #[doc = "- `sender`: A chain, `ParaId`."] + #[doc = "- `recipient`: A chain, `ParaId`."] + #[doc = ""] + #[doc = "Any signed origin can call this function."] pub fn poke_channel_deposits( &self, sender: types::poke_channel_deposits::Sender, @@ -33908,7 +37518,6 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_unfreeze`]."] pub struct ForceUnfreeze; impl ::subxt::blocks::StaticExtrinsic for ForceUnfreeze { const PALLET: &'static str = "ParasDisputes"; @@ -33917,7 +37526,6 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::force_unfreeze`]."] pub fn force_unfreeze(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "ParasDisputes", @@ -34350,7 +37958,6 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::report_dispute_lost_unsigned`]."] pub struct ReportDisputeLostUnsigned { pub dispute_proof: ::std::boxed::Box, @@ -34369,7 +37976,6 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::report_dispute_lost_unsigned`]."] pub fn report_dispute_lost_unsigned( &self, dispute_proof: types::report_dispute_lost_unsigned::DisputeProof, @@ -34556,7 +38162,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::reap_page`]."] + #[doc = "Remove a page which has no more messages remaining to be processed or is stale."] pub struct ReapPage { pub message_origin: reap_page::MessageOrigin, pub page_index: reap_page::PageIndex, @@ -34580,7 +38186,19 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::execute_overweight`]."] + #[doc = "Execute an overweight message."] + #[doc = ""] + #[doc = "Temporary processing errors will be propagated whereas permanent errors are treated"] + #[doc = "as success condition."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed`."] + #[doc = "- `message_origin`: The origin from which the message to be executed arrived."] + #[doc = "- `page`: The page in the queue in which the message to be executed is sitting."] + #[doc = "- `index`: The index into the queue of the message to be executed."] + #[doc = "- `weight_limit`: The maximum amount of weight allowed to be consumed in the execution"] + #[doc = " of the message."] + #[doc = ""] + #[doc = "Benchmark complexity considerations: O(index + weight_limit)."] pub struct ExecuteOverweight { pub message_origin: execute_overweight::MessageOrigin, pub page: execute_overweight::Page, @@ -34601,7 +38219,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::reap_page`]."] + #[doc = "Remove a page which has no more messages remaining to be processed or is stale."] pub fn reap_page( &self, message_origin: types::reap_page::MessageOrigin, @@ -34621,7 +38239,19 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::execute_overweight`]."] + #[doc = "Execute an overweight message."] + #[doc = ""] + #[doc = "Temporary processing errors will be propagated whereas permanent errors are treated"] + #[doc = "as success condition."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed`."] + #[doc = "- `message_origin`: The origin from which the message to be executed arrived."] + #[doc = "- `page`: The page in the queue in which the message to be executed is sitting."] + #[doc = "- `index`: The index into the queue of the message to be executed."] + #[doc = "- `weight_limit`: The maximum amount of weight allowed to be consumed in the execution"] + #[doc = " of the message."] + #[doc = ""] + #[doc = "Benchmark complexity considerations: O(index + weight_limit)."] pub fn execute_overweight( &self, message_origin: types::execute_overweight::MessageOrigin, @@ -35016,7 +38646,22 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::place_order_allow_death`]."] + #[doc = "Create a single on demand core order."] + #[doc = "Will use the spot price for the current block and will reap the account if needed."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: The sender of the call, funds will be withdrawn from this account."] + #[doc = "- `max_amount`: The maximum balance to withdraw from the origin to place an order."] + #[doc = "- `para_id`: A `ParaId` the origin wants to provide blockspace for."] + #[doc = ""] + #[doc = "Errors:"] + #[doc = "- `InsufficientBalance`: from the Currency implementation"] + #[doc = "- `InvalidParaId`"] + #[doc = "- `QueueFull`"] + #[doc = "- `SpotPriceHigherThanMaxAmount`"] + #[doc = ""] + #[doc = "Events:"] + #[doc = "- `SpotOrderPlaced`"] pub struct PlaceOrderAllowDeath { pub max_amount: place_order_allow_death::MaxAmount, pub para_id: place_order_allow_death::ParaId, @@ -35040,7 +38685,22 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::place_order_keep_alive`]."] + #[doc = "Same as the [`place_order_allow_death`](Self::place_order_allow_death) call , but with a"] + #[doc = "check that placing the order will not reap the account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: The sender of the call, funds will be withdrawn from this account."] + #[doc = "- `max_amount`: The maximum balance to withdraw from the origin to place an order."] + #[doc = "- `para_id`: A `ParaId` the origin wants to provide blockspace for."] + #[doc = ""] + #[doc = "Errors:"] + #[doc = "- `InsufficientBalance`: from the Currency implementation"] + #[doc = "- `InvalidParaId`"] + #[doc = "- `QueueFull`"] + #[doc = "- `SpotPriceHigherThanMaxAmount`"] + #[doc = ""] + #[doc = "Events:"] + #[doc = "- `SpotOrderPlaced`"] pub struct PlaceOrderKeepAlive { pub max_amount: place_order_keep_alive::MaxAmount, pub para_id: place_order_keep_alive::ParaId, @@ -35057,7 +38717,22 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::place_order_allow_death`]."] + #[doc = "Create a single on demand core order."] + #[doc = "Will use the spot price for the current block and will reap the account if needed."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: The sender of the call, funds will be withdrawn from this account."] + #[doc = "- `max_amount`: The maximum balance to withdraw from the origin to place an order."] + #[doc = "- `para_id`: A `ParaId` the origin wants to provide blockspace for."] + #[doc = ""] + #[doc = "Errors:"] + #[doc = "- `InsufficientBalance`: from the Currency implementation"] + #[doc = "- `InvalidParaId`"] + #[doc = "- `QueueFull`"] + #[doc = "- `SpotPriceHigherThanMaxAmount`"] + #[doc = ""] + #[doc = "Events:"] + #[doc = "- `SpotOrderPlaced`"] pub fn place_order_allow_death( &self, max_amount: types::place_order_allow_death::MaxAmount, @@ -35078,7 +38753,22 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::place_order_keep_alive`]."] + #[doc = "Same as the [`place_order_allow_death`](Self::place_order_allow_death) call , but with a"] + #[doc = "check that placing the order will not reap the account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: The sender of the call, funds will be withdrawn from this account."] + #[doc = "- `max_amount`: The maximum balance to withdraw from the origin to place an order."] + #[doc = "- `para_id`: A `ParaId` the origin wants to provide blockspace for."] + #[doc = ""] + #[doc = "Errors:"] + #[doc = "- `InsufficientBalance`: from the Currency implementation"] + #[doc = "- `InvalidParaId`"] + #[doc = "- `QueueFull`"] + #[doc = "- `SpotPriceHigherThanMaxAmount`"] + #[doc = ""] + #[doc = "Events:"] + #[doc = "- `SpotOrderPlaced`"] pub fn place_order_keep_alive( &self, max_amount: types::place_order_keep_alive::MaxAmount, @@ -35291,10 +38981,6 @@ pub mod api { } } } - pub mod parachains_assignment_provider { - use super::root_mod; - use super::runtime_types; - } pub mod coretime_assignment_provider { use super::root_mod; use super::runtime_types; @@ -35479,7 +39165,26 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::register`]."] + #[doc = "Register head data and validation code for a reserved Para Id."] + #[doc = ""] + #[doc = "## Arguments"] + #[doc = "- `origin`: Must be called by a `Signed` origin."] + #[doc = "- `id`: The para ID. Must be owned/managed by the `origin` signing account."] + #[doc = "- `genesis_head`: The genesis head data of the parachain/thread."] + #[doc = "- `validation_code`: The initial validation code of the parachain/thread."] + #[doc = ""] + #[doc = "## Deposits/Fees"] + #[doc = "The account with the originating signature must reserve a deposit."] + #[doc = ""] + #[doc = "The deposit is required to cover the costs associated with storing the genesis head"] + #[doc = "data and the validation code."] + #[doc = "This accounts for the potential to store validation code of a size up to the"] + #[doc = "`max_code_size`, as defined in the configuration pallet"] + #[doc = ""] + #[doc = "Anything already reserved previously for this para ID is accounted for."] + #[doc = ""] + #[doc = "## Events"] + #[doc = "The `Registered` event is emitted in case of success."] pub struct Register { pub id: register::Id, pub genesis_head: register::GenesisHead, @@ -35507,7 +39212,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_register`]."] + #[doc = "Force the registration of a Para Id on the relay chain."] + #[doc = ""] + #[doc = "This function must be called by a Root origin."] + #[doc = ""] + #[doc = "The deposit taken can be specified for this registration. Any `ParaId`"] + #[doc = "can be registered, including sub-1000 IDs which are System Parachains."] pub struct ForceRegister { pub who: force_register::Who, pub deposit: force_register::Deposit, @@ -35539,7 +39249,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::deregister`]."] + #[doc = "Deregister a Para Id, freeing all data and returning any deposit."] + #[doc = ""] + #[doc = "The caller must be Root, the `para` owner, or the `para` itself. The para must be an"] + #[doc = "on-demand parachain."] pub struct Deregister { pub id: deregister::Id, } @@ -35561,7 +39274,18 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::swap`]."] + #[doc = "Swap a lease holding parachain with another parachain, either on-demand or lease"] + #[doc = "holding."] + #[doc = ""] + #[doc = "The origin must be Root, the `para` owner, or the `para` itself."] + #[doc = ""] + #[doc = "The swap will happen only if there is already an opposite swap pending. If there is not,"] + #[doc = "the swap will be stored in the pending swaps map, ready for a later confirmatory swap."] + #[doc = ""] + #[doc = "The `ParaId`s remain mapped to the same head data and code so external code can rely on"] + #[doc = "`ParaId` to be a long-term identifier of a notional \"parachain\". However, their"] + #[doc = "scheduling info (i.e. whether they're an on-demand parachain or lease holding"] + #[doc = "parachain), auction information and the auction deposit are switched."] pub struct Swap { pub id: swap::Id, pub other: swap::Other, @@ -35585,7 +39309,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::remove_lock`]."] + #[doc = "Remove a manager lock from a para. This will allow the manager of a"] + #[doc = "previously locked para to deregister or swap a para without using governance."] + #[doc = ""] + #[doc = "Can only be called by the Root origin or the parachain."] pub struct RemoveLock { pub para: remove_lock::Para, } @@ -35607,7 +39334,23 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::reserve`]."] + #[doc = "Reserve a Para Id on the relay chain."] + #[doc = ""] + #[doc = "This function will reserve a new Para Id to be owned/managed by the origin account."] + #[doc = "The origin account is able to register head data and validation code using `register` to"] + #[doc = "create an on-demand parachain. Using the Slots pallet, an on-demand parachain can then"] + #[doc = "be upgraded to a lease holding parachain."] + #[doc = ""] + #[doc = "## Arguments"] + #[doc = "- `origin`: Must be called by a `Signed` origin. Becomes the manager/owner of the new"] + #[doc = " para ID."] + #[doc = ""] + #[doc = "## Deposits/Fees"] + #[doc = "The origin must reserve a deposit of `ParaDeposit` for the registration."] + #[doc = ""] + #[doc = "## Events"] + #[doc = "The `Reserved` event is emitted in case of success, which provides the ID reserved for"] + #[doc = "use."] pub struct Reserve; impl ::subxt::blocks::StaticExtrinsic for Reserve { const PALLET: &'static str = "Registrar"; @@ -35623,7 +39366,11 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::add_lock`]."] + #[doc = "Add a manager lock from a para. This will prevent the manager of a"] + #[doc = "para to deregister or swap a para."] + #[doc = ""] + #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] + #[doc = "unlocked."] pub struct AddLock { pub para: add_lock::Para, } @@ -35645,7 +39392,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::schedule_code_upgrade`]."] + #[doc = "Schedule a parachain upgrade."] + #[doc = ""] + #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] + #[doc = "unlocked."] pub struct ScheduleCodeUpgrade { pub para: schedule_code_upgrade::Para, pub new_code: schedule_code_upgrade::NewCode, @@ -35670,7 +39420,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_current_head`]."] + #[doc = "Set the parachain's current head."] + #[doc = ""] + #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] + #[doc = "unlocked."] pub struct SetCurrentHead { pub para: set_current_head::Para, pub new_head: set_current_head::NewHead, @@ -35688,7 +39441,26 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::register`]."] + #[doc = "Register head data and validation code for a reserved Para Id."] + #[doc = ""] + #[doc = "## Arguments"] + #[doc = "- `origin`: Must be called by a `Signed` origin."] + #[doc = "- `id`: The para ID. Must be owned/managed by the `origin` signing account."] + #[doc = "- `genesis_head`: The genesis head data of the parachain/thread."] + #[doc = "- `validation_code`: The initial validation code of the parachain/thread."] + #[doc = ""] + #[doc = "## Deposits/Fees"] + #[doc = "The account with the originating signature must reserve a deposit."] + #[doc = ""] + #[doc = "The deposit is required to cover the costs associated with storing the genesis head"] + #[doc = "data and the validation code."] + #[doc = "This accounts for the potential to store validation code of a size up to the"] + #[doc = "`max_code_size`, as defined in the configuration pallet"] + #[doc = ""] + #[doc = "Anything already reserved previously for this para ID is accounted for."] + #[doc = ""] + #[doc = "## Events"] + #[doc = "The `Registered` event is emitted in case of success."] pub fn register( &self, id: types::register::Id, @@ -35710,7 +39482,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_register`]."] + #[doc = "Force the registration of a Para Id on the relay chain."] + #[doc = ""] + #[doc = "This function must be called by a Root origin."] + #[doc = ""] + #[doc = "The deposit taken can be specified for this registration. Any `ParaId`"] + #[doc = "can be registered, including sub-1000 IDs which are System Parachains."] pub fn force_register( &self, who: types::force_register::Who, @@ -35737,7 +39514,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::deregister`]."] + #[doc = "Deregister a Para Id, freeing all data and returning any deposit."] + #[doc = ""] + #[doc = "The caller must be Root, the `para` owner, or the `para` itself. The para must be an"] + #[doc = "on-demand parachain."] pub fn deregister( &self, id: types::deregister::Id, @@ -35753,7 +39533,18 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::swap`]."] + #[doc = "Swap a lease holding parachain with another parachain, either on-demand or lease"] + #[doc = "holding."] + #[doc = ""] + #[doc = "The origin must be Root, the `para` owner, or the `para` itself."] + #[doc = ""] + #[doc = "The swap will happen only if there is already an opposite swap pending. If there is not,"] + #[doc = "the swap will be stored in the pending swaps map, ready for a later confirmatory swap."] + #[doc = ""] + #[doc = "The `ParaId`s remain mapped to the same head data and code so external code can rely on"] + #[doc = "`ParaId` to be a long-term identifier of a notional \"parachain\". However, their"] + #[doc = "scheduling info (i.e. whether they're an on-demand parachain or lease holding"] + #[doc = "parachain), auction information and the auction deposit are switched."] pub fn swap( &self, id: types::swap::Id, @@ -35771,7 +39562,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_lock`]."] + #[doc = "Remove a manager lock from a para. This will allow the manager of a"] + #[doc = "previously locked para to deregister or swap a para without using governance."] + #[doc = ""] + #[doc = "Can only be called by the Root origin or the parachain."] pub fn remove_lock( &self, para: types::remove_lock::Para, @@ -35787,7 +39581,23 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::reserve`]."] + #[doc = "Reserve a Para Id on the relay chain."] + #[doc = ""] + #[doc = "This function will reserve a new Para Id to be owned/managed by the origin account."] + #[doc = "The origin account is able to register head data and validation code using `register` to"] + #[doc = "create an on-demand parachain. Using the Slots pallet, an on-demand parachain can then"] + #[doc = "be upgraded to a lease holding parachain."] + #[doc = ""] + #[doc = "## Arguments"] + #[doc = "- `origin`: Must be called by a `Signed` origin. Becomes the manager/owner of the new"] + #[doc = " para ID."] + #[doc = ""] + #[doc = "## Deposits/Fees"] + #[doc = "The origin must reserve a deposit of `ParaDeposit` for the registration."] + #[doc = ""] + #[doc = "## Events"] + #[doc = "The `Reserved` event is emitted in case of success, which provides the ID reserved for"] + #[doc = "use."] pub fn reserve(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Registrar", @@ -35800,7 +39610,11 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::add_lock`]."] + #[doc = "Add a manager lock from a para. This will prevent the manager of a"] + #[doc = "para to deregister or swap a para."] + #[doc = ""] + #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] + #[doc = "unlocked."] pub fn add_lock( &self, para: types::add_lock::Para, @@ -35816,7 +39630,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::schedule_code_upgrade`]."] + #[doc = "Schedule a parachain upgrade."] + #[doc = ""] + #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] + #[doc = "unlocked."] pub fn schedule_code_upgrade( &self, para: types::schedule_code_upgrade::Para, @@ -35834,7 +39651,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_current_head`]."] + #[doc = "Set the parachain's current head."] + #[doc = ""] + #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] + #[doc = "unlocked."] pub fn set_current_head( &self, para: types::set_current_head::Para, @@ -36155,7 +39975,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_lease`]."] + #[doc = "Just a connect into the `lease_out` call, in case Root wants to force some lease to"] + #[doc = "happen independently of any other on-chain mechanism to use it."] + #[doc = ""] + #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] pub struct ForceLease { pub para: force_lease::Para, pub leaser: force_lease::Leaser, @@ -36185,7 +40008,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::clear_all_leases`]."] + #[doc = "Clear all leases for a Para Id, refunding any deposits back to the original owners."] + #[doc = ""] + #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] pub struct ClearAllLeases { pub para: clear_all_leases::Para, } @@ -36207,7 +40032,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::trigger_onboard`]."] + #[doc = "Try to onboard a parachain that has a lease for the current lease period."] + #[doc = ""] + #[doc = "This function can be useful if there was some state issue with a para that should"] + #[doc = "have onboarded, but was unable to. As long as they have a lease period, we can"] + #[doc = "let them onboard from here."] + #[doc = ""] + #[doc = "Origin must be signed, but can be called by anyone."] pub struct TriggerOnboard { pub para: trigger_onboard::Para, } @@ -36222,7 +40053,10 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::force_lease`]."] + #[doc = "Just a connect into the `lease_out` call, in case Root wants to force some lease to"] + #[doc = "happen independently of any other on-chain mechanism to use it."] + #[doc = ""] + #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] pub fn force_lease( &self, para: types::force_lease::Para, @@ -36249,7 +40083,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::clear_all_leases`]."] + #[doc = "Clear all leases for a Para Id, refunding any deposits back to the original owners."] + #[doc = ""] + #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] pub fn clear_all_leases( &self, para: types::clear_all_leases::Para, @@ -36265,7 +40101,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::trigger_onboard`]."] + #[doc = "Try to onboard a parachain that has a lease for the current lease period."] + #[doc = ""] + #[doc = "This function can be useful if there was some state issue with a para that should"] + #[doc = "have onboarded, but was unable to. As long as they have a lease period, we can"] + #[doc = "let them onboard from here."] + #[doc = ""] + #[doc = "Origin must be signed, but can be called by anyone."] pub fn trigger_onboard( &self, para: types::trigger_onboard::Para, @@ -36496,7 +40338,11 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::new_auction`]."] + #[doc = "Create a new auction."] + #[doc = ""] + #[doc = "This can only happen when there isn't already an auction in progress and may only be"] + #[doc = "called by the root origin. Accepts the `duration` of this auction and the"] + #[doc = "`lease_period_index` of the initial lease period of the four that are to be auctioned."] pub struct NewAuction { #[codec(compact)] pub duration: new_auction::Duration, @@ -36522,7 +40368,22 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::bid`]."] + #[doc = "Make a new bid from an account (including a parachain account) for deploying a new"] + #[doc = "parachain."] + #[doc = ""] + #[doc = "Multiple simultaneous bids from the same bidder are allowed only as long as all active"] + #[doc = "bids overlap each other (i.e. are mutually exclusive). Bids cannot be redacted."] + #[doc = ""] + #[doc = "- `sub` is the sub-bidder ID, allowing for multiple competing bids to be made by (and"] + #[doc = "funded by) the same account."] + #[doc = "- `auction_index` is the index of the auction to bid on. Should just be the present"] + #[doc = "value of `AuctionCounter`."] + #[doc = "- `first_slot` is the first lease period index of the range to bid on. This is the"] + #[doc = "absolute lease period index value, not an auction-specific offset."] + #[doc = "- `last_slot` is the last lease period index of the range to bid on. This is the"] + #[doc = "absolute lease period index value, not an auction-specific offset."] + #[doc = "- `amount` is the amount to bid to be held as deposit for the parachain should the"] + #[doc = "bid win. This amount is held throughout the range."] pub struct Bid { #[codec(compact)] pub para: bid::Para, @@ -36557,7 +40418,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::cancel_auction`]."] + #[doc = "Cancel an in-progress auction."] + #[doc = ""] + #[doc = "Can only be called by Root origin."] pub struct CancelAuction; impl ::subxt::blocks::StaticExtrinsic for CancelAuction { const PALLET: &'static str = "Auctions"; @@ -36566,7 +40429,11 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::new_auction`]."] + #[doc = "Create a new auction."] + #[doc = ""] + #[doc = "This can only happen when there isn't already an auction in progress and may only be"] + #[doc = "called by the root origin. Accepts the `duration` of this auction and the"] + #[doc = "`lease_period_index` of the initial lease period of the four that are to be auctioned."] pub fn new_auction( &self, duration: types::new_auction::Duration, @@ -36587,7 +40454,22 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::bid`]."] + #[doc = "Make a new bid from an account (including a parachain account) for deploying a new"] + #[doc = "parachain."] + #[doc = ""] + #[doc = "Multiple simultaneous bids from the same bidder are allowed only as long as all active"] + #[doc = "bids overlap each other (i.e. are mutually exclusive). Bids cannot be redacted."] + #[doc = ""] + #[doc = "- `sub` is the sub-bidder ID, allowing for multiple competing bids to be made by (and"] + #[doc = "funded by) the same account."] + #[doc = "- `auction_index` is the index of the auction to bid on. Should just be the present"] + #[doc = "value of `AuctionCounter`."] + #[doc = "- `first_slot` is the first lease period index of the range to bid on. This is the"] + #[doc = "absolute lease period index value, not an auction-specific offset."] + #[doc = "- `last_slot` is the last lease period index of the range to bid on. This is the"] + #[doc = "absolute lease period index value, not an auction-specific offset."] + #[doc = "- `amount` is the amount to bid to be held as deposit for the parachain should the"] + #[doc = "bid win. This amount is held throughout the range."] pub fn bid( &self, para: types::bid::Para, @@ -36613,7 +40495,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::cancel_auction`]."] + #[doc = "Cancel an in-progress auction."] + #[doc = ""] + #[doc = "Can only be called by Root origin."] pub fn cancel_auction(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Auctions", @@ -37105,7 +40989,11 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::create`]."] + #[doc = "Create a new crowdloaning campaign for a parachain slot with the given lease period"] + #[doc = "range."] + #[doc = ""] + #[doc = "This applies a lock to your parachain configuration, ensuring that it cannot be changed"] + #[doc = "by the parachain manager."] pub struct Create { #[codec(compact)] pub index: create::Index, @@ -37143,7 +41031,8 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::contribute`]."] + #[doc = "Contribute to a crowd sale. This will transfer some balance over to fund a parachain"] + #[doc = "slot. It will be withdrawable when the crowdloan has ended and the funds are unused."] pub struct Contribute { #[codec(compact)] pub index: contribute::Index, @@ -37172,7 +41061,23 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::withdraw`]."] + #[doc = "Withdraw full balance of a specific contributor."] + #[doc = ""] + #[doc = "Origin must be signed, but can come from anyone."] + #[doc = ""] + #[doc = "The fund must be either in, or ready for, retirement. For a fund to be *in* retirement,"] + #[doc = "then the retirement flag must be set. For a fund to be ready for retirement, then:"] + #[doc = "- it must not already be in retirement;"] + #[doc = "- the amount of raised funds must be bigger than the _free_ balance of the account;"] + #[doc = "- and either:"] + #[doc = " - the block number must be at least `end`; or"] + #[doc = " - the current lease period must be greater than the fund's `last_period`."] + #[doc = ""] + #[doc = "In this case, the fund's retirement flag is set and its `end` is reset to the current"] + #[doc = "block number."] + #[doc = ""] + #[doc = "- `who`: The account whose contribution should be withdrawn."] + #[doc = "- `index`: The parachain to whose crowdloan the contribution was made."] pub struct Withdraw { pub who: withdraw::Who, #[codec(compact)] @@ -37197,7 +41102,11 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::refund`]."] + #[doc = "Automatically refund contributors of an ended crowdloan."] + #[doc = "Due to weight restrictions, this function may need to be called multiple"] + #[doc = "times to fully refund all users. We will refund `RemoveKeysLimit` users at a time."] + #[doc = ""] + #[doc = "Origin must be signed, but can come from anyone."] pub struct Refund { #[codec(compact)] pub index: refund::Index, @@ -37220,7 +41129,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::dissolve`]."] + #[doc = "Remove a fund after the retirement period has ended and all funds have been returned."] pub struct Dissolve { #[codec(compact)] pub index: dissolve::Index, @@ -37243,7 +41152,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::edit`]."] + #[doc = "Edit the configuration for an in-progress crowdloan."] + #[doc = ""] + #[doc = "Can only be called by Root origin."] pub struct Edit { #[codec(compact)] pub index: edit::Index, @@ -37281,7 +41192,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::add_memo`]."] + #[doc = "Add an optional memo to an existing crowdloan contribution."] + #[doc = ""] + #[doc = "Origin must be Signed, and the user must have contributed to the crowdloan."] pub struct AddMemo { pub index: add_memo::Index, pub memo: add_memo::Memo, @@ -37305,7 +41218,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::poke`]."] + #[doc = "Poke the fund into `NewRaise`"] + #[doc = ""] + #[doc = "Origin must be Signed, and the fund has non-zero raise."] pub struct Poke { pub index: poke::Index, } @@ -37327,7 +41242,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::contribute_all`]."] + #[doc = "Contribute your entire balance to a crowd sale. This will transfer the entire balance of"] + #[doc = "a user over to fund a parachain slot. It will be withdrawable when the crowdloan has"] + #[doc = "ended and the funds are unused."] pub struct ContributeAll { #[codec(compact)] pub index: contribute_all::Index, @@ -37346,7 +41263,11 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::create`]."] + #[doc = "Create a new crowdloaning campaign for a parachain slot with the given lease period"] + #[doc = "range."] + #[doc = ""] + #[doc = "This applies a lock to your parachain configuration, ensuring that it cannot be changed"] + #[doc = "by the parachain manager."] pub fn create( &self, index: types::create::Index, @@ -37374,7 +41295,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::contribute`]."] + #[doc = "Contribute to a crowd sale. This will transfer some balance over to fund a parachain"] + #[doc = "slot. It will be withdrawable when the crowdloan has ended and the funds are unused."] pub fn contribute( &self, index: types::contribute::Index, @@ -37397,7 +41319,23 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::withdraw`]."] + #[doc = "Withdraw full balance of a specific contributor."] + #[doc = ""] + #[doc = "Origin must be signed, but can come from anyone."] + #[doc = ""] + #[doc = "The fund must be either in, or ready for, retirement. For a fund to be *in* retirement,"] + #[doc = "then the retirement flag must be set. For a fund to be ready for retirement, then:"] + #[doc = "- it must not already be in retirement;"] + #[doc = "- the amount of raised funds must be bigger than the _free_ balance of the account;"] + #[doc = "- and either:"] + #[doc = " - the block number must be at least `end`; or"] + #[doc = " - the current lease period must be greater than the fund's `last_period`."] + #[doc = ""] + #[doc = "In this case, the fund's retirement flag is set and its `end` is reset to the current"] + #[doc = "block number."] + #[doc = ""] + #[doc = "- `who`: The account whose contribution should be withdrawn."] + #[doc = "- `index`: The parachain to whose crowdloan the contribution was made."] pub fn withdraw( &self, who: types::withdraw::Who, @@ -37414,7 +41352,11 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::refund`]."] + #[doc = "Automatically refund contributors of an ended crowdloan."] + #[doc = "Due to weight restrictions, this function may need to be called multiple"] + #[doc = "times to fully refund all users. We will refund `RemoveKeysLimit` users at a time."] + #[doc = ""] + #[doc = "Origin must be signed, but can come from anyone."] pub fn refund( &self, index: types::refund::Index, @@ -37431,7 +41373,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::dissolve`]."] + #[doc = "Remove a fund after the retirement period has ended and all funds have been returned."] pub fn dissolve( &self, index: types::dissolve::Index, @@ -37448,7 +41390,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::edit`]."] + #[doc = "Edit the configuration for an in-progress crowdloan."] + #[doc = ""] + #[doc = "Can only be called by Root origin."] pub fn edit( &self, index: types::edit::Index, @@ -37477,7 +41421,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::add_memo`]."] + #[doc = "Add an optional memo to an existing crowdloan contribution."] + #[doc = ""] + #[doc = "Origin must be Signed, and the user must have contributed to the crowdloan."] pub fn add_memo( &self, index: types::add_memo::Index, @@ -37495,7 +41441,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::poke`]."] + #[doc = "Poke the fund into `NewRaise`"] + #[doc = ""] + #[doc = "Origin must be Signed, and the fund has non-zero raise."] pub fn poke(&self, index: types::poke::Index) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Crowdloan", @@ -37509,7 +41457,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::contribute_all`]."] + #[doc = "Contribute your entire balance to a crowd sale. This will transfer the entire balance of"] + #[doc = "a user over to fund a parachain slot. It will be withdrawable when the crowdloan has"] + #[doc = "ended and the funds are unused."] pub fn contribute_all( &self, index: types::contribute_all::Index, @@ -37991,7 +41941,6 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::request_core_count`]."] pub struct RequestCoreCount { pub count: request_core_count::Count, } @@ -38013,7 +41962,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::assign_core`]."] + #[doc = "Receive instructions from the `ExternalBrokerOrigin`, detailing how a specific core is"] + #[doc = "to be used."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "-`origin`: The `ExternalBrokerOrigin`, assumed to be the Broker system parachain."] + #[doc = "-`core`: The core that should be scheduled."] + #[doc = "-`begin`: The starting blockheight of the instruction."] + #[doc = "-`assignment`: How the blockspace should be utilised."] + #[doc = "-`end_hint`: An optional hint as to when this particular set of instructions will end."] pub struct AssignCore { pub core: assign_core::Core, pub begin: assign_core::Begin, @@ -38037,7 +41994,6 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::request_core_count`]."] pub fn request_core_count( &self, count: types::request_core_count::Count, @@ -38054,7 +42010,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::assign_core`]."] + #[doc = "Receive instructions from the `ExternalBrokerOrigin`, detailing how a specific core is"] + #[doc = "to be used."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "-`origin`: The `ExternalBrokerOrigin`, assumed to be the Broker system parachain."] + #[doc = "-`core`: The core that should be scheduled."] + #[doc = "-`begin`: The starting blockheight of the instruction."] + #[doc = "-`assignment`: How the blockspace should be utilised."] + #[doc = "-`end_hint`: An optional hint as to when this particular set of instructions will end."] pub fn assign_core( &self, core: types::assign_core::Core, @@ -38172,7 +42136,6 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::send`]."] pub struct Send { pub dest: ::std::boxed::Box, pub message: ::std::boxed::Box, @@ -38196,7 +42159,24 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::teleport_assets`]."] + #[doc = "Teleport some assets from the local chain to some destination chain."] + #[doc = ""] + #[doc = "**This function is deprecated: Use `limited_teleport_assets` instead.**"] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,"] + #[doc = "with all fees taken as needed from the asset."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` chain."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] pub struct TeleportAssets { pub dest: ::std::boxed::Box, pub beneficiary: ::std::boxed::Box, @@ -38224,7 +42204,36 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::reserve_transfer_assets`]."] + #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] + #[doc = "destination or remote reserve."] + #[doc = ""] + #[doc = "`assets` must have same reserve location and may not be teleportable to `dest`."] + #[doc = " - `assets` have local reserve: transfer assets to sovereign account of destination"] + #[doc = " chain and forward a notification XCM to `dest` to mint and deposit reserve-based"] + #[doc = " assets to `beneficiary`."] + #[doc = " - `assets` have destination reserve: burn local assets and forward a notification to"] + #[doc = " `dest` chain to withdraw the reserve assets from this chain's sovereign account and"] + #[doc = " deposit them to `beneficiary`."] + #[doc = " - `assets` have remote reserve: burn local assets, forward XCM to reserve chain to move"] + #[doc = " reserves from this chain's SA to `dest` chain's SA, and forward another XCM to `dest`"] + #[doc = " to mint and deposit reserve-based assets to `beneficiary`."] + #[doc = ""] + #[doc = "**This function is deprecated: Use `limited_reserve_transfer_assets` instead.**"] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,"] + #[doc = "with all fees taken as needed from the asset."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` (and possibly reserve) chains."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] pub struct ReserveTransferAssets { pub dest: ::std::boxed::Box, pub beneficiary: ::std::boxed::Box, @@ -38252,7 +42261,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::execute`]."] + #[doc = "Execute an XCM message from a local, signed, origin."] + #[doc = ""] + #[doc = "An event is deposited indicating whether `msg` could be executed completely or only"] + #[doc = "partially."] + #[doc = ""] + #[doc = "No more than `max_weight` will be used in its attempted execution. If this is less than"] + #[doc = "the maximum amount of weight that the message could take to be executed, then no"] + #[doc = "execution attempt will be made."] pub struct Execute { pub message: ::std::boxed::Box, pub max_weight: execute::MaxWeight, @@ -38276,7 +42292,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_xcm_version`]."] + #[doc = "Extoll that a particular destination can be communicated with through a particular"] + #[doc = "version of XCM."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `location`: The destination that is being described."] + #[doc = "- `xcm_version`: The latest version of XCM that `location` supports."] pub struct ForceXcmVersion { pub location: ::std::boxed::Box, pub version: force_xcm_version::Version, @@ -38300,7 +42321,11 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_default_xcm_version`]."] + #[doc = "Set a safe XCM version (the version that XCM should be encoded with if the most recent"] + #[doc = "version a destination can accept is unknown)."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `maybe_xcm_version`: The default XCM encoding version, or `None` to disable."] pub struct ForceDefaultXcmVersion { pub maybe_xcm_version: force_default_xcm_version::MaybeXcmVersion, } @@ -38322,7 +42347,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_subscribe_version_notify`]."] + #[doc = "Ask a location to notify us regarding their XCM version and any changes to it."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `location`: The location to which we should subscribe for XCM version notifications."] pub struct ForceSubscribeVersionNotify { pub location: ::std::boxed::Box, } @@ -38344,7 +42372,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_unsubscribe_version_notify`]."] + #[doc = "Require that a particular destination should no longer notify us regarding any XCM"] + #[doc = "version changes."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `location`: The location to which we are currently subscribed for XCM version"] + #[doc = " notifications which we no longer desire."] pub struct ForceUnsubscribeVersionNotify { pub location: ::std::boxed::Box, } @@ -38366,7 +42399,36 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::limited_reserve_transfer_assets`]."] + #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] + #[doc = "destination or remote reserve."] + #[doc = ""] + #[doc = "`assets` must have same reserve location and may not be teleportable to `dest`."] + #[doc = " - `assets` have local reserve: transfer assets to sovereign account of destination"] + #[doc = " chain and forward a notification XCM to `dest` to mint and deposit reserve-based"] + #[doc = " assets to `beneficiary`."] + #[doc = " - `assets` have destination reserve: burn local assets and forward a notification to"] + #[doc = " `dest` chain to withdraw the reserve assets from this chain's sovereign account and"] + #[doc = " deposit them to `beneficiary`."] + #[doc = " - `assets` have remote reserve: burn local assets, forward XCM to reserve chain to move"] + #[doc = " reserves from this chain's SA to `dest` chain's SA, and forward another XCM to `dest`"] + #[doc = " to mint and deposit reserve-based assets to `beneficiary`."] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight"] + #[doc = "is needed than `weight_limit`, then the operation will fail and the assets send may be"] + #[doc = "at risk."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` (and possibly reserve) chains."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] + #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] pub struct LimitedReserveTransferAssets { pub dest: ::std::boxed::Box, pub beneficiary: @@ -38397,7 +42459,24 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::limited_teleport_assets`]."] + #[doc = "Teleport some assets from the local chain to some destination chain."] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight"] + #[doc = "is needed than `weight_limit`, then the operation will fail and the assets send may be"] + #[doc = "at risk."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` chain."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] + #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] pub struct LimitedTeleportAssets { pub dest: ::std::boxed::Box, pub beneficiary: ::std::boxed::Box, @@ -38427,7 +42506,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_suspension`]."] + #[doc = "Set or unset the global suspension state of the XCM executor."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `suspended`: `true` to suspend, `false` to resume."] pub struct ForceSuspension { pub suspended: force_suspension::Suspended, } @@ -38449,7 +42531,39 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::transfer_assets`]."] + #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] + #[doc = "destination or remote reserve, or through teleports."] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item` (hence referred to as `fees`), up to enough to pay for"] + #[doc = "`weight_limit` of weight. If more weight is needed than `weight_limit`, then the"] + #[doc = "operation will fail and the assets sent may be at risk."] + #[doc = ""] + #[doc = "`assets` (excluding `fees`) must have same reserve location or otherwise be teleportable"] + #[doc = "to `dest`, no limitations imposed on `fees`."] + #[doc = " - for local reserve: transfer assets to sovereign account of destination chain and"] + #[doc = " forward a notification XCM to `dest` to mint and deposit reserve-based assets to"] + #[doc = " `beneficiary`."] + #[doc = " - for destination reserve: burn local assets and forward a notification to `dest` chain"] + #[doc = " to withdraw the reserve assets from this chain's sovereign account and deposit them"] + #[doc = " to `beneficiary`."] + #[doc = " - for remote reserve: burn local assets, forward XCM to reserve chain to move reserves"] + #[doc = " from this chain's SA to `dest` chain's SA, and forward another XCM to `dest` to mint"] + #[doc = " and deposit reserve-based assets to `beneficiary`."] + #[doc = " - for teleports: burn local assets and forward XCM to `dest` chain to mint/teleport"] + #[doc = " assets and deposit them to `beneficiary`."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `X2(Parent,"] + #[doc = " Parachain(..))` to send from parachain to parachain, or `X1(Parachain(..))` to send"] + #[doc = " from relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` (and possibly reserve) chains."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] + #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] pub struct TransferAssets { pub dest: ::std::boxed::Box, pub beneficiary: ::std::boxed::Box, @@ -38469,10 +42583,38 @@ pub mod api { const PALLET: &'static str = "XcmPallet"; const CALL: &'static str = "transfer_assets"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Claims assets trapped on this pallet because of leftover assets during XCM execution."] + #[doc = ""] + #[doc = "- `origin`: Anyone can call this extrinsic."] + #[doc = "- `assets`: The exact assets that were trapped. Use the version to specify what version"] + #[doc = "was the latest when they were trapped."] + #[doc = "- `beneficiary`: The location/account where the claimed assets will be deposited."] + pub struct ClaimAssets { + pub assets: ::std::boxed::Box, + pub beneficiary: ::std::boxed::Box, + } + pub mod claim_assets { + use super::runtime_types; + pub type Assets = runtime_types::xcm::VersionedAssets; + pub type Beneficiary = runtime_types::xcm::VersionedLocation; + } + impl ::subxt::blocks::StaticExtrinsic for ClaimAssets { + const PALLET: &'static str = "XcmPallet"; + const CALL: &'static str = "claim_assets"; + } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::send`]."] pub fn send( &self, dest: types::send::Dest, @@ -38493,7 +42635,24 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::teleport_assets`]."] + #[doc = "Teleport some assets from the local chain to some destination chain."] + #[doc = ""] + #[doc = "**This function is deprecated: Use `limited_teleport_assets` instead.**"] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,"] + #[doc = "with all fees taken as needed from the asset."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` chain."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] pub fn teleport_assets( &self, dest: types::teleport_assets::Dest, @@ -38517,7 +42676,36 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::reserve_transfer_assets`]."] + #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] + #[doc = "destination or remote reserve."] + #[doc = ""] + #[doc = "`assets` must have same reserve location and may not be teleportable to `dest`."] + #[doc = " - `assets` have local reserve: transfer assets to sovereign account of destination"] + #[doc = " chain and forward a notification XCM to `dest` to mint and deposit reserve-based"] + #[doc = " assets to `beneficiary`."] + #[doc = " - `assets` have destination reserve: burn local assets and forward a notification to"] + #[doc = " `dest` chain to withdraw the reserve assets from this chain's sovereign account and"] + #[doc = " deposit them to `beneficiary`."] + #[doc = " - `assets` have remote reserve: burn local assets, forward XCM to reserve chain to move"] + #[doc = " reserves from this chain's SA to `dest` chain's SA, and forward another XCM to `dest`"] + #[doc = " to mint and deposit reserve-based assets to `beneficiary`."] + #[doc = ""] + #[doc = "**This function is deprecated: Use `limited_reserve_transfer_assets` instead.**"] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,"] + #[doc = "with all fees taken as needed from the asset."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` (and possibly reserve) chains."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] pub fn reserve_transfer_assets( &self, dest: types::reserve_transfer_assets::Dest, @@ -38542,7 +42730,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::execute`]."] + #[doc = "Execute an XCM message from a local, signed, origin."] + #[doc = ""] + #[doc = "An event is deposited indicating whether `msg` could be executed completely or only"] + #[doc = "partially."] + #[doc = ""] + #[doc = "No more than `max_weight` will be used in its attempted execution. If this is less than"] + #[doc = "the maximum amount of weight that the message could take to be executed, then no"] + #[doc = "execution attempt will be made."] pub fn execute( &self, message: types::execute::Message, @@ -38563,7 +42758,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_xcm_version`]."] + #[doc = "Extoll that a particular destination can be communicated with through a particular"] + #[doc = "version of XCM."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `location`: The destination that is being described."] + #[doc = "- `xcm_version`: The latest version of XCM that `location` supports."] pub fn force_xcm_version( &self, location: types::force_xcm_version::Location, @@ -38583,7 +42783,11 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_default_xcm_version`]."] + #[doc = "Set a safe XCM version (the version that XCM should be encoded with if the most recent"] + #[doc = "version a destination can accept is unknown)."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `maybe_xcm_version`: The default XCM encoding version, or `None` to disable."] pub fn force_default_xcm_version( &self, maybe_xcm_version: types::force_default_xcm_version::MaybeXcmVersion, @@ -38600,7 +42804,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_subscribe_version_notify`]."] + #[doc = "Ask a location to notify us regarding their XCM version and any changes to it."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `location`: The location to which we should subscribe for XCM version notifications."] pub fn force_subscribe_version_notify( &self, location: types::force_subscribe_version_notify::Location, @@ -38618,7 +42825,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_unsubscribe_version_notify`]."] + #[doc = "Require that a particular destination should no longer notify us regarding any XCM"] + #[doc = "version changes."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `location`: The location to which we are currently subscribed for XCM version"] + #[doc = " notifications which we no longer desire."] pub fn force_unsubscribe_version_notify( &self, location: types::force_unsubscribe_version_notify::Location, @@ -38636,7 +42848,36 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::limited_reserve_transfer_assets`]."] + #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] + #[doc = "destination or remote reserve."] + #[doc = ""] + #[doc = "`assets` must have same reserve location and may not be teleportable to `dest`."] + #[doc = " - `assets` have local reserve: transfer assets to sovereign account of destination"] + #[doc = " chain and forward a notification XCM to `dest` to mint and deposit reserve-based"] + #[doc = " assets to `beneficiary`."] + #[doc = " - `assets` have destination reserve: burn local assets and forward a notification to"] + #[doc = " `dest` chain to withdraw the reserve assets from this chain's sovereign account and"] + #[doc = " deposit them to `beneficiary`."] + #[doc = " - `assets` have remote reserve: burn local assets, forward XCM to reserve chain to move"] + #[doc = " reserves from this chain's SA to `dest` chain's SA, and forward another XCM to `dest`"] + #[doc = " to mint and deposit reserve-based assets to `beneficiary`."] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight"] + #[doc = "is needed than `weight_limit`, then the operation will fail and the assets send may be"] + #[doc = "at risk."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` (and possibly reserve) chains."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] + #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] pub fn limited_reserve_transfer_assets( &self, dest: types::limited_reserve_transfer_assets::Dest, @@ -38663,7 +42904,24 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::limited_teleport_assets`]."] + #[doc = "Teleport some assets from the local chain to some destination chain."] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight"] + #[doc = "is needed than `weight_limit`, then the operation will fail and the assets send may be"] + #[doc = "at risk."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` chain."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] + #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] pub fn limited_teleport_assets( &self, dest: types::limited_teleport_assets::Dest, @@ -38689,7 +42947,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_suspension`]."] + #[doc = "Set or unset the global suspension state of the XCM executor."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `suspended`: `true` to suspend, `false` to resume."] pub fn force_suspension( &self, suspended: types::force_suspension::Suspended, @@ -38705,7 +42966,39 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::transfer_assets`]."] + #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] + #[doc = "destination or remote reserve, or through teleports."] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item` (hence referred to as `fees`), up to enough to pay for"] + #[doc = "`weight_limit` of weight. If more weight is needed than `weight_limit`, then the"] + #[doc = "operation will fail and the assets sent may be at risk."] + #[doc = ""] + #[doc = "`assets` (excluding `fees`) must have same reserve location or otherwise be teleportable"] + #[doc = "to `dest`, no limitations imposed on `fees`."] + #[doc = " - for local reserve: transfer assets to sovereign account of destination chain and"] + #[doc = " forward a notification XCM to `dest` to mint and deposit reserve-based assets to"] + #[doc = " `beneficiary`."] + #[doc = " - for destination reserve: burn local assets and forward a notification to `dest` chain"] + #[doc = " to withdraw the reserve assets from this chain's sovereign account and deposit them"] + #[doc = " to `beneficiary`."] + #[doc = " - for remote reserve: burn local assets, forward XCM to reserve chain to move reserves"] + #[doc = " from this chain's SA to `dest` chain's SA, and forward another XCM to `dest` to mint"] + #[doc = " and deposit reserve-based assets to `beneficiary`."] + #[doc = " - for teleports: burn local assets and forward XCM to `dest` chain to mint/teleport"] + #[doc = " assets and deposit them to `beneficiary`."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `X2(Parent,"] + #[doc = " Parachain(..))` to send from parachain to parachain, or `X1(Parachain(..))` to send"] + #[doc = " from relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` (and possibly reserve) chains."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] + #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] pub fn transfer_assets( &self, dest: types::transfer_assets::Dest, @@ -38732,6 +43025,32 @@ pub mod api { ], ) } + #[doc = "Claims assets trapped on this pallet because of leftover assets during XCM execution."] + #[doc = ""] + #[doc = "- `origin`: Anyone can call this extrinsic."] + #[doc = "- `assets`: The exact assets that were trapped. Use the version to specify what version"] + #[doc = "was the latest when they were trapped."] + #[doc = "- `beneficiary`: The location/account where the claimed assets will be deposited."] + pub fn claim_assets( + &self, + assets: types::claim_assets::Assets, + beneficiary: types::claim_assets::Beneficiary, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "XcmPallet", + "claim_assets", + types::ClaimAssets { + assets: ::std::boxed::Box::new(assets), + beneficiary: ::std::boxed::Box::new(beneficiary), + }, + [ + 155u8, 23u8, 166u8, 172u8, 251u8, 171u8, 136u8, 240u8, 253u8, 51u8, + 164u8, 43u8, 141u8, 23u8, 189u8, 177u8, 33u8, 32u8, 212u8, 56u8, 174u8, + 165u8, 129u8, 7u8, 49u8, 217u8, 213u8, 214u8, 250u8, 91u8, 200u8, + 195u8, + ], + ) + } } } #[doc = "The `Event` enum of this pallet"] @@ -40068,7 +44387,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::report_equivocation`]."] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] pub struct ReportEquivocation { pub equivocation_proof: ::std::boxed::Box, @@ -40098,7 +44420,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] + #[doc = ""] + #[doc = "This extrinsic must be called unsigned and it is expected that only"] + #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] + #[doc = "if the block author is defined it will be defined as the equivocation"] + #[doc = "reporter."] pub struct ReportEquivocationUnsigned { pub equivocation_proof: ::std::boxed::Box, @@ -40128,7 +44458,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_new_genesis`]."] + #[doc = "Reset BEEFY consensus by setting a new BEEFY genesis at `delay_in_blocks` blocks in the"] + #[doc = "future."] + #[doc = ""] + #[doc = "Note: `delay_in_blocks` has to be at least 1."] pub struct SetNewGenesis { pub delay_in_blocks: set_new_genesis::DelayInBlocks, } @@ -40143,7 +44476,10 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::report_equivocation`]."] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] pub fn report_equivocation( &self, equivocation_proof: types::report_equivocation::EquivocationProof, @@ -40164,7 +44500,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] + #[doc = ""] + #[doc = "This extrinsic must be called unsigned and it is expected that only"] + #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] + #[doc = "if the block author is defined it will be defined as the equivocation"] + #[doc = "reporter."] pub fn report_equivocation_unsigned( &self, equivocation_proof: types::report_equivocation_unsigned::EquivocationProof, @@ -40185,7 +44529,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_new_genesis`]."] + #[doc = "Reset BEEFY consensus by setting a new BEEFY genesis at `delay_in_blocks` blocks in the"] + #[doc = "future."] + #[doc = ""] + #[doc = "Note: `delay_in_blocks` has to be at least 1."] pub fn set_new_genesis( &self, delay_in_blocks: types::set_new_genesis::DelayInBlocks, @@ -40658,7 +45005,8 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::reap_identity`]."] + #[doc = "Reap the `IdentityInfo` of `who` from the Identity pallet of `T`, unreserving any"] + #[doc = "deposits held and removing storage items associated with `who`."] pub struct ReapIdentity { pub who: reap_identity::Who, } @@ -40680,7 +45028,8 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::poke_deposit`]."] + #[doc = "Update the deposit of `who`. Meant to be called by the system with an XCM `Transact`"] + #[doc = "Instruction."] pub struct PokeDeposit { pub who: poke_deposit::Who, } @@ -40695,7 +45044,8 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::reap_identity`]."] + #[doc = "Reap the `IdentityInfo` of `who` from the Identity pallet of `T`, unreserving any"] + #[doc = "deposits held and removing storage items associated with `who`."] pub fn reap_identity( &self, who: types::reap_identity::Who, @@ -40712,7 +45062,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::poke_deposit`]."] + #[doc = "Update the deposit of `who`. Meant to be called by the system with an XCM `Transact`"] + #[doc = "Instruction."] pub fn poke_deposit( &self, who: types::poke_deposit::Who, @@ -40809,7 +45160,11 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::sudo_schedule_para_initialize`]."] + #[doc = "Schedule a para to be initialized at the start of the next session."] + #[doc = ""] + #[doc = "This should only be used for TESTING and not on PRODUCTION chains. It automatically"] + #[doc = "assigns Coretime to the chain and increases the number of cores. Thus, there is no"] + #[doc = "running coretime chain required."] pub struct SudoScheduleParaInitialize { pub id: sudo_schedule_para_initialize::Id, pub genesis: sudo_schedule_para_initialize::Genesis, @@ -40834,7 +45189,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::sudo_schedule_para_cleanup`]."] + #[doc = "Schedule a para to be cleaned up at the start of the next session."] pub struct SudoScheduleParaCleanup { pub id: sudo_schedule_para_cleanup::Id, } @@ -40856,7 +45211,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::sudo_schedule_parathread_upgrade`]."] + #[doc = "Upgrade a parathread (on-demand parachain) to a lease holding parachain"] pub struct SudoScheduleParathreadUpgrade { pub id: sudo_schedule_parathread_upgrade::Id, } @@ -40878,7 +45233,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::sudo_schedule_parachain_downgrade`]."] + #[doc = "Downgrade a lease holding parachain to an on-demand parachain"] pub struct SudoScheduleParachainDowngrade { pub id: sudo_schedule_parachain_downgrade::Id, } @@ -40900,7 +45255,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::sudo_queue_downward_xcm`]."] + #[doc = "Send a downward XCM to the given para."] + #[doc = ""] + #[doc = "The given parachain should exist and the payload should not exceed the preconfigured"] + #[doc = "size `config.max_downward_message_size`."] pub struct SudoQueueDownwardXcm { pub id: sudo_queue_downward_xcm::Id, pub xcm: ::std::boxed::Box, @@ -40924,7 +45282,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::sudo_establish_hrmp_channel`]."] + #[doc = "Forcefully establish a channel from the sender to the recipient."] + #[doc = ""] + #[doc = "This is equivalent to sending an `Hrmp::hrmp_init_open_channel` extrinsic followed by"] + #[doc = "`Hrmp::hrmp_accept_open_channel`."] pub struct SudoEstablishHrmpChannel { pub sender: sudo_establish_hrmp_channel::Sender, pub recipient: sudo_establish_hrmp_channel::Recipient, @@ -40946,7 +45307,11 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::sudo_schedule_para_initialize`]."] + #[doc = "Schedule a para to be initialized at the start of the next session."] + #[doc = ""] + #[doc = "This should only be used for TESTING and not on PRODUCTION chains. It automatically"] + #[doc = "assigns Coretime to the chain and increases the number of cores. Thus, there is no"] + #[doc = "running coretime chain required."] pub fn sudo_schedule_para_initialize( &self, id: types::sudo_schedule_para_initialize::Id, @@ -40963,7 +45328,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::sudo_schedule_para_cleanup`]."] + #[doc = "Schedule a para to be cleaned up at the start of the next session."] pub fn sudo_schedule_para_cleanup( &self, id: types::sudo_schedule_para_cleanup::Id, @@ -40979,7 +45344,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::sudo_schedule_parathread_upgrade`]."] + #[doc = "Upgrade a parathread (on-demand parachain) to a lease holding parachain"] pub fn sudo_schedule_parathread_upgrade( &self, id: types::sudo_schedule_parathread_upgrade::Id, @@ -40996,7 +45361,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::sudo_schedule_parachain_downgrade`]."] + #[doc = "Downgrade a lease holding parachain to an on-demand parachain"] pub fn sudo_schedule_parachain_downgrade( &self, id: types::sudo_schedule_parachain_downgrade::Id, @@ -41013,7 +45378,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::sudo_queue_downward_xcm`]."] + #[doc = "Send a downward XCM to the given para."] + #[doc = ""] + #[doc = "The given parachain should exist and the payload should not exceed the preconfigured"] + #[doc = "size `config.max_downward_message_size`."] pub fn sudo_queue_downward_xcm( &self, id: types::sudo_queue_downward_xcm::Id, @@ -41033,7 +45401,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::sudo_establish_hrmp_channel`]."] + #[doc = "Forcefully establish a channel from the sender to the recipient."] + #[doc = ""] + #[doc = "This is equivalent to sending an `Hrmp::hrmp_init_open_channel` extrinsic followed by"] + #[doc = "`Hrmp::hrmp_accept_open_channel`."] pub fn sudo_establish_hrmp_channel( &self, sender: types::sudo_establish_hrmp_channel::Sender, @@ -41083,7 +45454,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::assign_perm_parachain_slot`]."] + #[doc = "Assign a permanent parachain slot and immediately create a lease for it."] pub struct AssignPermParachainSlot { pub id: assign_perm_parachain_slot::Id, } @@ -41105,7 +45476,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::assign_temp_parachain_slot`]."] + #[doc = "Assign a temporary parachain slot. The function tries to create a lease for it"] + #[doc = "immediately if `SlotLeasePeriodStart::Current` is specified, and if the number"] + #[doc = "of currently active temporary slots is below `MaxTemporarySlotPerLeasePeriod`."] pub struct AssignTempParachainSlot { pub id: assign_temp_parachain_slot::Id, pub lease_period_start: assign_temp_parachain_slot::LeasePeriodStart, @@ -41129,7 +45502,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::unassign_parachain_slot`]."] + #[doc = "Unassign a permanent or temporary parachain slot"] pub struct UnassignParachainSlot { pub id: unassign_parachain_slot::Id, } @@ -41151,7 +45524,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_max_permanent_slots`]."] + #[doc = "Sets the storage value [`MaxPermanentSlots`]."] pub struct SetMaxPermanentSlots { pub slots: set_max_permanent_slots::Slots, } @@ -41173,7 +45546,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_max_temporary_slots`]."] + #[doc = "Sets the storage value [`MaxTemporarySlots`]."] pub struct SetMaxTemporarySlots { pub slots: set_max_temporary_slots::Slots, } @@ -41188,7 +45561,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::assign_perm_parachain_slot`]."] + #[doc = "Assign a permanent parachain slot and immediately create a lease for it."] pub fn assign_perm_parachain_slot( &self, id: types::assign_perm_parachain_slot::Id, @@ -41204,7 +45577,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::assign_temp_parachain_slot`]."] + #[doc = "Assign a temporary parachain slot. The function tries to create a lease for it"] + #[doc = "immediately if `SlotLeasePeriodStart::Current` is specified, and if the number"] + #[doc = "of currently active temporary slots is below `MaxTemporarySlotPerLeasePeriod`."] pub fn assign_temp_parachain_slot( &self, id: types::assign_temp_parachain_slot::Id, @@ -41225,7 +45600,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::unassign_parachain_slot`]."] + #[doc = "Unassign a permanent or temporary parachain slot"] pub fn unassign_parachain_slot( &self, id: types::unassign_parachain_slot::Id, @@ -41242,7 +45617,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_permanent_slots`]."] + #[doc = "Sets the storage value [`MaxPermanentSlots`]."] pub fn set_max_permanent_slots( &self, slots: types::set_max_permanent_slots::Slots, @@ -41258,7 +45633,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_temporary_slots`]."] + #[doc = "Sets the storage value [`MaxTemporarySlots`]."] pub fn set_max_temporary_slots( &self, slots: types::set_max_temporary_slots::Slots, @@ -41680,7 +46055,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::register_validators`]."] + #[doc = "Add new validators to the set."] + #[doc = ""] + #[doc = "The new validators will be active from current session + 2."] pub struct RegisterValidators { pub validators: register_validators::Validators, } @@ -41702,7 +46079,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::deregister_validators`]."] + #[doc = "Remove validators from the set."] + #[doc = ""] + #[doc = "The removed validators will be deactivated from current session + 2."] pub struct DeregisterValidators { pub validators: deregister_validators::Validators, } @@ -41717,7 +46096,9 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::register_validators`]."] + #[doc = "Add new validators to the set."] + #[doc = ""] + #[doc = "The new validators will be active from current session + 2."] pub fn register_validators( &self, validators: types::register_validators::Validators, @@ -41734,7 +46115,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::deregister_validators`]."] + #[doc = "Remove validators from the set."] + #[doc = ""] + #[doc = "The removed validators will be deactivated from current session + 2."] pub fn deregister_validators( &self, validators: types::deregister_validators::Validators, @@ -41882,7 +46265,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::control_auto_migration`]."] + #[doc = "Control the automatic migration."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be [`Config::ControlOrigin`]."] pub struct ControlAutoMigration { pub maybe_config: control_auto_migration::MaybeConfig, } @@ -41906,7 +46291,27 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::continue_migrate`]."] + #[doc = "Continue the migration for the given `limits`."] + #[doc = ""] + #[doc = "The dispatch origin of this call can be any signed account."] + #[doc = ""] + #[doc = "This transaction has NO MONETARY INCENTIVES. calling it will not reward anyone. Albeit,"] + #[doc = "Upon successful execution, the transaction fee is returned."] + #[doc = ""] + #[doc = "The (potentially over-estimated) of the byte length of all the data read must be"] + #[doc = "provided for up-front fee-payment and weighing. In essence, the caller is guaranteeing"] + #[doc = "that executing the current `MigrationTask` with the given `limits` will not exceed"] + #[doc = "`real_size_upper` bytes of read data."] + #[doc = ""] + #[doc = "The `witness_task` is merely a helper to prevent the caller from being slashed or"] + #[doc = "generally trigger a migration that they do not intend. This parameter is just a message"] + #[doc = "from caller, saying that they believed `witness_task` was the last state of the"] + #[doc = "migration, and they only wish for their transaction to do anything, if this assumption"] + #[doc = "holds. In case `witness_task` does not match, the transaction fails."] + #[doc = ""] + #[doc = "Based on the documentation of [`MigrationTask::migrate_until_exhaustion`], the"] + #[doc = "recommended way of doing this is to pass a `limit` that only bounds `count`, as the"] + #[doc = "`size` limit can always be overwritten."] pub struct ContinueMigrate { pub limits: continue_migrate::Limits, pub real_size_upper: continue_migrate::RealSizeUpper, @@ -41934,7 +46339,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::migrate_custom_top`]."] + #[doc = "Migrate the list of top keys by iterating each of them one by one."] + #[doc = ""] + #[doc = "This does not affect the global migration process tracker ([`MigrationProcess`]), and"] + #[doc = "should only be used in case any keys are leftover due to a bug."] pub struct MigrateCustomTop { pub keys: migrate_custom_top::Keys, pub witness_size: migrate_custom_top::WitnessSize, @@ -41958,7 +46366,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::migrate_custom_child`]."] + #[doc = "Migrate the list of child keys by iterating each of them one by one."] + #[doc = ""] + #[doc = "All of the given child keys must be present under one `child_root`."] + #[doc = ""] + #[doc = "This does not affect the global migration process tracker ([`MigrationProcess`]), and"] + #[doc = "should only be used in case any keys are leftover due to a bug."] pub struct MigrateCustomChild { pub root: migrate_custom_child::Root, pub child_keys: migrate_custom_child::ChildKeys, @@ -41984,7 +46397,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_signed_max_limits`]."] + #[doc = "Set the maximum limit of the signed migration."] pub struct SetSignedMaxLimits { pub limits: set_signed_max_limits::Limits, } @@ -42007,7 +46420,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::force_set_progress`]."] + #[doc = "Forcefully set the progress the running migration."] + #[doc = ""] + #[doc = "This is only useful in one case: the next key to migrate is too big to be migrated with"] + #[doc = "a signed account, in a parachain context, and we simply want to skip it. A reasonable"] + #[doc = "example of this would be `:code:`, which is both very expensive to migrate, and commonly"] + #[doc = "used, so probably it is already migrated."] + #[doc = ""] + #[doc = "In case you mess things up, you can also, in principle, use this to reset the migration"] + #[doc = "process."] pub struct ForceSetProgress { pub progress_top: force_set_progress::ProgressTop, pub progress_child: force_set_progress::ProgressChild, @@ -42026,7 +46447,9 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::control_auto_migration`]."] + #[doc = "Control the automatic migration."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be [`Config::ControlOrigin`]."] pub fn control_auto_migration( &self, maybe_config: types::control_auto_migration::MaybeConfig, @@ -42042,7 +46465,27 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::continue_migrate`]."] + #[doc = "Continue the migration for the given `limits`."] + #[doc = ""] + #[doc = "The dispatch origin of this call can be any signed account."] + #[doc = ""] + #[doc = "This transaction has NO MONETARY INCENTIVES. calling it will not reward anyone. Albeit,"] + #[doc = "Upon successful execution, the transaction fee is returned."] + #[doc = ""] + #[doc = "The (potentially over-estimated) of the byte length of all the data read must be"] + #[doc = "provided for up-front fee-payment and weighing. In essence, the caller is guaranteeing"] + #[doc = "that executing the current `MigrationTask` with the given `limits` will not exceed"] + #[doc = "`real_size_upper` bytes of read data."] + #[doc = ""] + #[doc = "The `witness_task` is merely a helper to prevent the caller from being slashed or"] + #[doc = "generally trigger a migration that they do not intend. This parameter is just a message"] + #[doc = "from caller, saying that they believed `witness_task` was the last state of the"] + #[doc = "migration, and they only wish for their transaction to do anything, if this assumption"] + #[doc = "holds. In case `witness_task` does not match, the transaction fails."] + #[doc = ""] + #[doc = "Based on the documentation of [`MigrationTask::migrate_until_exhaustion`], the"] + #[doc = "recommended way of doing this is to pass a `limit` that only bounds `count`, as the"] + #[doc = "`size` limit can always be overwritten."] pub fn continue_migrate( &self, limits: types::continue_migrate::Limits, @@ -42065,7 +46508,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::migrate_custom_top`]."] + #[doc = "Migrate the list of top keys by iterating each of them one by one."] + #[doc = ""] + #[doc = "This does not affect the global migration process tracker ([`MigrationProcess`]), and"] + #[doc = "should only be used in case any keys are leftover due to a bug."] pub fn migrate_custom_top( &self, keys: types::migrate_custom_top::Keys, @@ -42082,7 +46528,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::migrate_custom_child`]."] + #[doc = "Migrate the list of child keys by iterating each of them one by one."] + #[doc = ""] + #[doc = "All of the given child keys must be present under one `child_root`."] + #[doc = ""] + #[doc = "This does not affect the global migration process tracker ([`MigrationProcess`]), and"] + #[doc = "should only be used in case any keys are leftover due to a bug."] pub fn migrate_custom_child( &self, root: types::migrate_custom_child::Root, @@ -42104,7 +46555,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_signed_max_limits`]."] + #[doc = "Set the maximum limit of the signed migration."] pub fn set_signed_max_limits( &self, limits: types::set_signed_max_limits::Limits, @@ -42120,7 +46571,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_set_progress`]."] + #[doc = "Forcefully set the progress the running migration."] + #[doc = ""] + #[doc = "This is only useful in one case: the next key to migrate is too big to be migrated with"] + #[doc = "a signed account, in a parachain context, and we simply want to skip it. A reasonable"] + #[doc = "example of this would be `:code:`, which is both very expensive to migrate, and commonly"] + #[doc = "used, so probably it is already migrated."] + #[doc = ""] + #[doc = "In case you mess things up, you can also, in principle, use this to reset the migration"] + #[doc = "process."] pub fn force_set_progress( &self, progress_top: types::force_set_progress::ProgressTop, @@ -42395,7 +46854,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See `Pallet::fill_block`."] + #[doc = "A dispatch that will fill the block weight up to the given ratio."] pub struct FillBlock { pub ratio: fill_block::Ratio, } @@ -42417,7 +46876,6 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See `Pallet::trigger_defensive`."] pub struct TriggerDefensive; impl ::subxt::blocks::StaticExtrinsic for TriggerDefensive { const PALLET: &'static str = "RootTesting"; @@ -42426,7 +46884,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See `Pallet::fill_block`."] + #[doc = "A dispatch that will fill the block weight up to the given ratio."] pub fn fill_block( &self, ratio: types::fill_block::Ratio, @@ -42442,7 +46900,6 @@ pub mod api { ], ) } - #[doc = "See `Pallet::trigger_defensive`."] pub fn trigger_defensive(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "RootTesting", @@ -42503,7 +46960,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::sudo`]."] + #[doc = "Authenticates the sudo key and dispatches a function call with `Root` origin."] pub struct Sudo { pub call: ::std::boxed::Box, } @@ -42525,7 +46982,11 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::sudo_unchecked_weight`]."] + #[doc = "Authenticates the sudo key and dispatches a function call with `Root` origin."] + #[doc = "This function does not check the weight of the call, and instead allows the"] + #[doc = "Sudo user to specify the weight of the call."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] pub struct SudoUncheckedWeight { pub call: ::std::boxed::Box, pub weight: sudo_unchecked_weight::Weight, @@ -42549,7 +47010,8 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::set_key`]."] + #[doc = "Authenticates the current sudo key and sets the given AccountId (`new`) as the new sudo"] + #[doc = "key."] pub struct SetKey { pub new: set_key::New, } @@ -42571,7 +47033,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::sudo_as`]."] + #[doc = "Authenticates the sudo key and dispatches a function call with `Signed` origin from"] + #[doc = "a given account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] pub struct SudoAs { pub who: sudo_as::Who, pub call: ::std::boxed::Box, @@ -42595,7 +47060,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "See [`Pallet::remove_key`]."] + #[doc = "Permanently removes the sudo key."] + #[doc = ""] + #[doc = "**This cannot be un-done.**"] pub struct RemoveKey; impl ::subxt::blocks::StaticExtrinsic for RemoveKey { const PALLET: &'static str = "Sudo"; @@ -42604,7 +47071,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::sudo`]."] + #[doc = "Authenticates the sudo key and dispatches a function call with `Root` origin."] pub fn sudo(&self, call: types::sudo::Call) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Sudo", @@ -42613,14 +47080,18 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 129u8, 167u8, 214u8, 9u8, 176u8, 203u8, 82u8, 70u8, 118u8, 155u8, - 220u8, 184u8, 74u8, 62u8, 231u8, 49u8, 151u8, 73u8, 97u8, 9u8, 254u8, - 88u8, 44u8, 197u8, 205u8, 60u8, 182u8, 226u8, 195u8, 245u8, 253u8, - 241u8, + 182u8, 237u8, 136u8, 248u8, 26u8, 98u8, 159u8, 249u8, 13u8, 148u8, + 154u8, 119u8, 136u8, 199u8, 18u8, 226u8, 185u8, 128u8, 7u8, 47u8, + 253u8, 37u8, 106u8, 90u8, 143u8, 110u8, 108u8, 93u8, 246u8, 222u8, + 212u8, 108u8, ], ) } - #[doc = "See [`Pallet::sudo_unchecked_weight`]."] + #[doc = "Authenticates the sudo key and dispatches a function call with `Root` origin."] + #[doc = "This function does not check the weight of the call, and instead allows the"] + #[doc = "Sudo user to specify the weight of the call."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] pub fn sudo_unchecked_weight( &self, call: types::sudo_unchecked_weight::Call, @@ -42634,13 +47105,14 @@ pub mod api { weight, }, [ - 29u8, 141u8, 94u8, 132u8, 67u8, 244u8, 164u8, 193u8, 22u8, 27u8, 211u8, - 2u8, 138u8, 11u8, 60u8, 46u8, 32u8, 62u8, 190u8, 74u8, 153u8, 171u8, - 78u8, 200u8, 16u8, 60u8, 158u8, 114u8, 139u8, 232u8, 52u8, 40u8, + 114u8, 10u8, 181u8, 185u8, 46u8, 86u8, 44u8, 238u8, 76u8, 203u8, 182u8, + 103u8, 147u8, 81u8, 36u8, 237u8, 70u8, 139u8, 182u8, 117u8, 204u8, 0u8, + 146u8, 132u8, 251u8, 162u8, 65u8, 192u8, 61u8, 0u8, 43u8, 94u8, ], ) } - #[doc = "See [`Pallet::set_key`]."] + #[doc = "Authenticates the current sudo key and sets the given AccountId (`new`) as the new sudo"] + #[doc = "key."] pub fn set_key( &self, new: types::set_key::New, @@ -42656,7 +47128,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::sudo_as`]."] + #[doc = "Authenticates the sudo key and dispatches a function call with `Signed` origin from"] + #[doc = "a given account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] pub fn sudo_as( &self, who: types::sudo_as::Who, @@ -42670,13 +47145,15 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 173u8, 60u8, 217u8, 75u8, 249u8, 36u8, 21u8, 151u8, 225u8, 59u8, 148u8, - 137u8, 185u8, 252u8, 116u8, 231u8, 19u8, 27u8, 240u8, 9u8, 177u8, 20u8, - 216u8, 90u8, 87u8, 7u8, 78u8, 173u8, 57u8, 221u8, 223u8, 42u8, + 74u8, 180u8, 112u8, 113u8, 184u8, 0u8, 87u8, 59u8, 130u8, 8u8, 222u8, + 55u8, 165u8, 38u8, 147u8, 196u8, 218u8, 10u8, 219u8, 217u8, 103u8, + 150u8, 112u8, 190u8, 59u8, 170u8, 24u8, 84u8, 84u8, 50u8, 33u8, 62u8, ], ) } - #[doc = "See [`Pallet::remove_key`]."] + #[doc = "Permanently removes the sudo key."] + #[doc = ""] + #[doc = "**This cannot be un-done.**"] pub fn remove_key(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Sudo", @@ -43299,25 +47776,30 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::remark`]."] + #[doc = "Make some on-chain remark."] + #[doc = ""] + #[doc = "Can be executed by every `origin`."] remark { remark: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 1)] - #[doc = "See [`Pallet::set_heap_pages`]."] + #[doc = "Set the number of pages in the WebAssembly environment's heap."] set_heap_pages { pages: ::core::primitive::u64 }, #[codec(index = 2)] - #[doc = "See [`Pallet::set_code`]."] + #[doc = "Set the new runtime code."] set_code { code: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 3)] - #[doc = "See [`Pallet::set_code_without_checks`]."] + #[doc = "Set the new runtime code without doing any checks of the given `code`."] + #[doc = ""] + #[doc = "Note that runtime upgrades will not run if this is called with a not-increasing spec"] + #[doc = "version!"] set_code_without_checks { code: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 4)] - #[doc = "See [`Pallet::set_storage`]."] + #[doc = "Set some items of storage."] set_storage { items: ::std::vec::Vec<( ::std::vec::Vec<::core::primitive::u8>, @@ -43325,29 +47807,50 @@ pub mod api { )>, }, #[codec(index = 5)] - #[doc = "See [`Pallet::kill_storage`]."] + #[doc = "Kill some items from storage."] kill_storage { keys: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, }, #[codec(index = 6)] - #[doc = "See [`Pallet::kill_prefix`]."] + #[doc = "Kill all storage items with a key that starts with the given prefix."] + #[doc = ""] + #[doc = "**NOTE:** We rely on the Root origin to provide us the number of subkeys under"] + #[doc = "the prefix we are removing to accurately calculate the weight of this function."] kill_prefix { prefix: ::std::vec::Vec<::core::primitive::u8>, subkeys: ::core::primitive::u32, }, #[codec(index = 7)] - #[doc = "See [`Pallet::remark_with_event`]."] + #[doc = "Make some on-chain remark and emit event."] remark_with_event { remark: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 9)] - #[doc = "See [`Pallet::authorize_upgrade`]."] + #[doc = "Authorize an upgrade to a given `code_hash` for the runtime. The runtime can be supplied"] + #[doc = "later."] + #[doc = ""] + #[doc = "This call requires Root origin."] authorize_upgrade { code_hash: ::subxt::utils::H256 }, #[codec(index = 10)] - #[doc = "See [`Pallet::authorize_upgrade_without_checks`]."] + #[doc = "Authorize an upgrade to a given `code_hash` for the runtime. The runtime can be supplied"] + #[doc = "later."] + #[doc = ""] + #[doc = "WARNING: This authorizes an upgrade that will take place without any safety checks, for"] + #[doc = "example that the spec name remains the same and that the version number increases. Not"] + #[doc = "recommended for normal use. Use `authorize_upgrade` instead."] + #[doc = ""] + #[doc = "This call requires Root origin."] authorize_upgrade_without_checks { code_hash: ::subxt::utils::H256 }, #[codec(index = 11)] - #[doc = "See [`Pallet::apply_authorized_upgrade`]."] + #[doc = "Provide the preimage (runtime binary) `code` for an upgrade that has been authorized."] + #[doc = ""] + #[doc = "If the authorization required a version check, this call will ensure the spec name"] + #[doc = "remains unchanged and that the spec version has increased."] + #[doc = ""] + #[doc = "Depending on the runtime's `OnSetCode` configuration, this function may directly apply"] + #[doc = "the new `code` in the same block or attempt to schedule the upgrade."] + #[doc = ""] + #[doc = "All origins are allowed."] apply_authorized_upgrade { code: ::std::vec::Vec<::core::primitive::u8>, }, @@ -43387,9 +47890,12 @@ pub mod api { #[doc = "The origin filter prevent the call to be dispatched."] CallFiltered, #[codec(index = 6)] + #[doc = "A multi-block migration is ongoing and prevents the current code from being replaced."] + MultiBlockMigrationsOngoing, + #[codec(index = 7)] #[doc = "No upgrade authorized."] NothingAuthorized, - #[codec(index = 7)] + #[codec(index = 8)] #[doc = "The submitted code is not authorized."] Unauthorized, } @@ -43540,7 +48046,10 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::create`]."] + #[doc = "Initialize a conversion rate to native balance for the given asset."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)"] create { asset_kind: ::std::boxed::Box< runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, @@ -43548,7 +48057,10 @@ pub mod api { rate: runtime_types::sp_arithmetic::fixed_point::FixedU128, }, #[codec(index = 1)] - #[doc = "See [`Pallet::update`]."] + #[doc = "Update the conversion rate to native balance for the given asset."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)"] update { asset_kind: ::std::boxed::Box< runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, @@ -43556,7 +48068,10 @@ pub mod api { rate: runtime_types::sp_arithmetic::fixed_point::FixedU128, }, #[codec(index = 2)] - #[doc = "See [`Pallet::remove`]."] + #[doc = "Remove an existing conversion rate to native balance for the given asset."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)"] remove { asset_kind: ::std::boxed::Box< runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, @@ -43635,7 +48150,10 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::report_equivocation`]."] + #[doc = "Report authority equivocation/misbehavior. This method will verify"] + #[doc = "the equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence will"] + #[doc = "be reported."] report_equivocation { equivocation_proof: ::std::boxed::Box< runtime_types::sp_consensus_slots::EquivocationProof< @@ -43648,7 +48166,14 @@ pub mod api { key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 1)] - #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + #[doc = "Report authority equivocation/misbehavior. This method will verify"] + #[doc = "the equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence will"] + #[doc = "be reported."] + #[doc = "This extrinsic must be called unsigned and it is expected that only"] + #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] + #[doc = "if the block author is defined it will be defined as the equivocation"] + #[doc = "reporter."] report_equivocation_unsigned { equivocation_proof: ::std::boxed::Box< runtime_types::sp_consensus_slots::EquivocationProof< @@ -43661,7 +48186,10 @@ pub mod api { key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 2)] - #[doc = "See [`Pallet::plan_config_change`]."] + #[doc = "Plan an epoch config change. The epoch config change is recorded and will be enacted on"] + #[doc = "the next call to `enact_epoch_change`. The config will be activated one epoch after."] + #[doc = "Multiple calls to this method will replace any existing planned config change that had"] + #[doc = "not been enacted yet."] plan_config_change { config: runtime_types::sp_consensus_babe::digests::NextConfigDescriptor, }, @@ -43710,14 +48238,21 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::transfer_allow_death`]."] + #[doc = "Transfer some liquid free balance to another account."] + #[doc = ""] + #[doc = "`transfer_allow_death` will set the `FreeBalance` of the sender and receiver."] + #[doc = "If the sender's account is below the existential deposit as a result"] + #[doc = "of the transfer, the account will be reaped."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be `Signed` by the transactor."] transfer_allow_death { dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, #[codec(compact)] value: ::core::primitive::u128, }, #[codec(index = 2)] - #[doc = "See [`Pallet::force_transfer`]."] + #[doc = "Exactly as `transfer_allow_death`, except the origin must be root and the source account"] + #[doc = "may be specified."] force_transfer { source: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -43725,38 +48260,72 @@ pub mod api { value: ::core::primitive::u128, }, #[codec(index = 3)] - #[doc = "See [`Pallet::transfer_keep_alive`]."] + #[doc = "Same as the [`transfer_allow_death`] call, but with a check that the transfer will not"] + #[doc = "kill the origin account."] + #[doc = ""] + #[doc = "99% of the time you want [`transfer_allow_death`] instead."] + #[doc = ""] + #[doc = "[`transfer_allow_death`]: struct.Pallet.html#method.transfer"] transfer_keep_alive { dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, #[codec(compact)] value: ::core::primitive::u128, }, #[codec(index = 4)] - #[doc = "See [`Pallet::transfer_all`]."] + #[doc = "Transfer the entire transferable balance from the caller account."] + #[doc = ""] + #[doc = "NOTE: This function only attempts to transfer _transferable_ balances. This means that"] + #[doc = "any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be"] + #[doc = "transferred by this function. To ensure that this function results in a killed account,"] + #[doc = "you might need to prepare the account by removing any reference counters, storage"] + #[doc = "deposits, etc..."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be Signed."] + #[doc = ""] + #[doc = "- `dest`: The recipient of the transfer."] + #[doc = "- `keep_alive`: A boolean to determine if the `transfer_all` operation should send all"] + #[doc = " of the funds the account has, causing the sender account to be killed (false), or"] + #[doc = " transfer everything except at least the existential deposit, which will guarantee to"] + #[doc = " keep the sender account alive (true)."] transfer_all { dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, keep_alive: ::core::primitive::bool, }, #[codec(index = 5)] - #[doc = "See [`Pallet::force_unreserve`]."] + #[doc = "Unreserve some balance from a user by force."] + #[doc = ""] + #[doc = "Can only be called by ROOT."] force_unreserve { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, amount: ::core::primitive::u128, }, #[codec(index = 6)] - #[doc = "See [`Pallet::upgrade_accounts`]."] + #[doc = "Upgrade a specified account."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed`."] + #[doc = "- `who`: The account to be upgraded."] + #[doc = ""] + #[doc = "This will waive the transaction fee if at least all but 10% of the accounts needed to"] + #[doc = "be upgraded. (We let some not have to be upgraded just in order to allow for the"] + #[doc = "possibililty of churn)."] upgrade_accounts { who: ::std::vec::Vec<::subxt::utils::AccountId32>, }, #[codec(index = 8)] - #[doc = "See [`Pallet::force_set_balance`]."] + #[doc = "Set the regular balance of a given account."] + #[doc = ""] + #[doc = "The dispatch origin for this call is `root`."] force_set_balance { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, #[codec(compact)] new_free: ::core::primitive::u128, }, #[codec(index = 9)] - #[doc = "See [`Pallet::force_adjust_total_issuance`]."] + #[doc = "Adjust the total issuance in a saturating way."] + #[doc = ""] + #[doc = "Can only be called by root and always needs a positive `delta`."] + #[doc = ""] + #[doc = "# Example"] force_adjust_total_issuance { direction: runtime_types::pallet_balances::types::AdjustmentDirection, #[codec(compact)] @@ -43776,14 +48345,21 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call2 { #[codec(index = 0)] - #[doc = "See [`Pallet::transfer_allow_death`]."] + #[doc = "Transfer some liquid free balance to another account."] + #[doc = ""] + #[doc = "`transfer_allow_death` will set the `FreeBalance` of the sender and receiver."] + #[doc = "If the sender's account is below the existential deposit as a result"] + #[doc = "of the transfer, the account will be reaped."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be `Signed` by the transactor."] transfer_allow_death { dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, #[codec(compact)] value: ::core::primitive::u128, }, #[codec(index = 2)] - #[doc = "See [`Pallet::force_transfer`]."] + #[doc = "Exactly as `transfer_allow_death`, except the origin must be root and the source account"] + #[doc = "may be specified."] force_transfer { source: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -43791,38 +48367,72 @@ pub mod api { value: ::core::primitive::u128, }, #[codec(index = 3)] - #[doc = "See [`Pallet::transfer_keep_alive`]."] + #[doc = "Same as the [`transfer_allow_death`] call, but with a check that the transfer will not"] + #[doc = "kill the origin account."] + #[doc = ""] + #[doc = "99% of the time you want [`transfer_allow_death`] instead."] + #[doc = ""] + #[doc = "[`transfer_allow_death`]: struct.Pallet.html#method.transfer"] transfer_keep_alive { dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, #[codec(compact)] value: ::core::primitive::u128, }, #[codec(index = 4)] - #[doc = "See [`Pallet::transfer_all`]."] + #[doc = "Transfer the entire transferable balance from the caller account."] + #[doc = ""] + #[doc = "NOTE: This function only attempts to transfer _transferable_ balances. This means that"] + #[doc = "any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be"] + #[doc = "transferred by this function. To ensure that this function results in a killed account,"] + #[doc = "you might need to prepare the account by removing any reference counters, storage"] + #[doc = "deposits, etc..."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be Signed."] + #[doc = ""] + #[doc = "- `dest`: The recipient of the transfer."] + #[doc = "- `keep_alive`: A boolean to determine if the `transfer_all` operation should send all"] + #[doc = " of the funds the account has, causing the sender account to be killed (false), or"] + #[doc = " transfer everything except at least the existential deposit, which will guarantee to"] + #[doc = " keep the sender account alive (true)."] transfer_all { dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, keep_alive: ::core::primitive::bool, }, #[codec(index = 5)] - #[doc = "See [`Pallet::force_unreserve`]."] + #[doc = "Unreserve some balance from a user by force."] + #[doc = ""] + #[doc = "Can only be called by ROOT."] force_unreserve { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, amount: ::core::primitive::u128, }, #[codec(index = 6)] - #[doc = "See [`Pallet::upgrade_accounts`]."] + #[doc = "Upgrade a specified account."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed`."] + #[doc = "- `who`: The account to be upgraded."] + #[doc = ""] + #[doc = "This will waive the transaction fee if at least all but 10% of the accounts needed to"] + #[doc = "be upgraded. (We let some not have to be upgraded just in order to allow for the"] + #[doc = "possibililty of churn)."] upgrade_accounts { who: ::std::vec::Vec<::subxt::utils::AccountId32>, }, #[codec(index = 8)] - #[doc = "See [`Pallet::force_set_balance`]."] + #[doc = "Set the regular balance of a given account."] + #[doc = ""] + #[doc = "The dispatch origin for this call is `root`."] force_set_balance { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, #[codec(compact)] new_free: ::core::primitive::u128, }, #[codec(index = 9)] - #[doc = "See [`Pallet::force_adjust_total_issuance`]."] + #[doc = "Adjust the total issuance in a saturating way."] + #[doc = ""] + #[doc = "Can only be called by root and always needs a positive `delta`."] + #[doc = ""] + #[doc = "# Example"] force_adjust_total_issuance { direction: runtime_types::pallet_balances::types::AdjustmentDirection, #[codec(compact)] @@ -44338,7 +48948,10 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::report_equivocation`]."] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] report_equivocation { equivocation_proof: ::std::boxed::Box< runtime_types::sp_consensus_beefy::EquivocationProof< @@ -44350,7 +48963,15 @@ pub mod api { key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 1)] - #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] + #[doc = ""] + #[doc = "This extrinsic must be called unsigned and it is expected that only"] + #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] + #[doc = "if the block author is defined it will be defined as the equivocation"] + #[doc = "reporter."] report_equivocation_unsigned { equivocation_proof: ::std::boxed::Box< runtime_types::sp_consensus_beefy::EquivocationProof< @@ -44362,7 +48983,10 @@ pub mod api { key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 2)] - #[doc = "See [`Pallet::set_new_genesis`]."] + #[doc = "Reset BEEFY consensus by setting a new BEEFY genesis at `delay_in_blocks` blocks in the"] + #[doc = "future."] + #[doc = ""] + #[doc = "Note: `delay_in_blocks` has to be at least 1."] set_new_genesis { delay_in_blocks: ::core::primitive::u32, }, @@ -44411,20 +49035,42 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::propose_bounty`]."] + #[doc = "Propose a new bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Payment: `TipReportDepositBase` will be reserved from the origin account, as well as"] + #[doc = "`DataDepositPerByte` for each byte in `reason`. It will be unreserved upon approval,"] + #[doc = "or slashed when rejected."] + #[doc = ""] + #[doc = "- `curator`: The curator account whom will manage this bounty."] + #[doc = "- `fee`: The curator fee."] + #[doc = "- `value`: The total payment amount of this bounty, curator fee included."] + #[doc = "- `description`: The description of this bounty."] propose_bounty { #[codec(compact)] value: ::core::primitive::u128, description: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 1)] - #[doc = "See [`Pallet::approve_bounty`]."] + #[doc = "Approve a bounty proposal. At a later time, the bounty will be funded and become active"] + #[doc = "and the original deposit will be returned."] + #[doc = ""] + #[doc = "May only be called from `T::SpendOrigin`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] approve_bounty { #[codec(compact)] bounty_id: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "See [`Pallet::propose_curator`]."] + #[doc = "Propose a curator to a funded bounty."] + #[doc = ""] + #[doc = "May only be called from `T::SpendOrigin`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] propose_curator { #[codec(compact)] bounty_id: ::core::primitive::u32, @@ -44433,38 +49079,92 @@ pub mod api { fee: ::core::primitive::u128, }, #[codec(index = 3)] - #[doc = "See [`Pallet::unassign_curator`]."] + #[doc = "Unassign curator from a bounty."] + #[doc = ""] + #[doc = "This function can only be called by the `RejectOrigin` a signed origin."] + #[doc = ""] + #[doc = "If this function is called by the `RejectOrigin`, we assume that the curator is"] + #[doc = "malicious or inactive. As a result, we will slash the curator when possible."] + #[doc = ""] + #[doc = "If the origin is the curator, we take this as a sign they are unable to do their job and"] + #[doc = "they willingly give up. We could slash them, but for now we allow them to recover their"] + #[doc = "deposit and exit without issue. (We may want to change this if it is abused.)"] + #[doc = ""] + #[doc = "Finally, the origin can be anyone if and only if the curator is \"inactive\". This allows"] + #[doc = "anyone in the community to call out that a curator is not doing their due diligence, and"] + #[doc = "we should pick a new curator. In this case the curator should also be slashed."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] unassign_curator { #[codec(compact)] bounty_id: ::core::primitive::u32, }, #[codec(index = 4)] - #[doc = "See [`Pallet::accept_curator`]."] + #[doc = "Accept the curator role for a bounty."] + #[doc = "A deposit will be reserved from curator and refund upon successful payout."] + #[doc = ""] + #[doc = "May only be called from the curator."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] accept_curator { #[codec(compact)] bounty_id: ::core::primitive::u32, }, #[codec(index = 5)] - #[doc = "See [`Pallet::award_bounty`]."] + #[doc = "Award bounty to a beneficiary account. The beneficiary will be able to claim the funds"] + #[doc = "after a delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of this bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to award."] + #[doc = "- `beneficiary`: The beneficiary account whom will receive the payout."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] award_bounty { #[codec(compact)] bounty_id: ::core::primitive::u32, beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 6)] - #[doc = "See [`Pallet::claim_bounty`]."] + #[doc = "Claim the payout from an awarded bounty after payout delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the beneficiary of this bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to claim."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] claim_bounty { #[codec(compact)] bounty_id: ::core::primitive::u32, }, #[codec(index = 7)] - #[doc = "See [`Pallet::close_bounty`]."] + #[doc = "Cancel a proposed or active bounty. All the funds will be sent to treasury and"] + #[doc = "the curator deposit will be unreserved if possible."] + #[doc = ""] + #[doc = "Only `T::RejectOrigin` is able to cancel a bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to cancel."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] close_bounty { #[codec(compact)] bounty_id: ::core::primitive::u32, }, #[codec(index = 8)] - #[doc = "See [`Pallet::extend_bounty_expiry`]."] + #[doc = "Extend the expiry time of an active bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of this bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to extend."] + #[doc = "- `remark`: additional information."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] extend_bounty_expiry { #[codec(compact)] bounty_id: ::core::primitive::u32, @@ -44669,7 +49369,25 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::add_child_bounty`]."] + #[doc = "Add a new child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of parent"] + #[doc = "bounty and the parent bounty must be in \"active\" state."] + #[doc = ""] + #[doc = "Child-bounty gets added successfully & fund gets transferred from"] + #[doc = "parent bounty to child-bounty account, if parent bounty has enough"] + #[doc = "funds, else the call fails."] + #[doc = ""] + #[doc = "Upper bound to maximum number of active child bounties that can be"] + #[doc = "added are managed via runtime trait config"] + #[doc = "[`Config::MaxActiveChildBountyCount`]."] + #[doc = ""] + #[doc = "If the call is success, the status of child-bounty is updated to"] + #[doc = "\"Added\"."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty for which child-bounty is being added."] + #[doc = "- `value`: Value for executing the proposal."] + #[doc = "- `description`: Text description for the child-bounty."] add_child_bounty { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, @@ -44678,7 +49396,21 @@ pub mod api { description: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 1)] - #[doc = "See [`Pallet::propose_curator`]."] + #[doc = "Propose curator for funded child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be curator of parent bounty."] + #[doc = ""] + #[doc = "Parent bounty must be in active state, for this child-bounty call to"] + #[doc = "work."] + #[doc = ""] + #[doc = "Child-bounty must be in \"Added\" state, for processing the call. And"] + #[doc = "state of child-bounty is moved to \"CuratorProposed\" on successful"] + #[doc = "call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "- `curator`: Address of child-bounty curator."] + #[doc = "- `fee`: payment fee to child-bounty curator for execution."] propose_curator { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, @@ -44689,7 +49421,25 @@ pub mod api { fee: ::core::primitive::u128, }, #[codec(index = 2)] - #[doc = "See [`Pallet::accept_curator`]."] + #[doc = "Accept the curator role for the child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of this"] + #[doc = "child-bounty."] + #[doc = ""] + #[doc = "A deposit will be reserved from the curator and refund upon"] + #[doc = "successful payout or cancellation."] + #[doc = ""] + #[doc = "Fee for curator is deducted from curator fee of parent bounty."] + #[doc = ""] + #[doc = "Parent bounty must be in active state, for this child-bounty call to"] + #[doc = "work."] + #[doc = ""] + #[doc = "Child-bounty must be in \"CuratorProposed\" state, for processing the"] + #[doc = "call. And state of child-bounty is moved to \"Active\" on successful"] + #[doc = "call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] accept_curator { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, @@ -44697,7 +49447,40 @@ pub mod api { child_bounty_id: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "See [`Pallet::unassign_curator`]."] + #[doc = "Unassign curator from a child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call can be either `RejectOrigin`, or"] + #[doc = "the curator of the parent bounty, or any signed origin."] + #[doc = ""] + #[doc = "For the origin other than T::RejectOrigin and the child-bounty"] + #[doc = "curator, parent bounty must be in active state, for this call to"] + #[doc = "work. We allow child-bounty curator and T::RejectOrigin to execute"] + #[doc = "this call irrespective of the parent bounty state."] + #[doc = ""] + #[doc = "If this function is called by the `RejectOrigin` or the"] + #[doc = "parent bounty curator, we assume that the child-bounty curator is"] + #[doc = "malicious or inactive. As a result, child-bounty curator deposit is"] + #[doc = "slashed."] + #[doc = ""] + #[doc = "If the origin is the child-bounty curator, we take this as a sign"] + #[doc = "that they are unable to do their job, and are willingly giving up."] + #[doc = "We could slash the deposit, but for now we allow them to unreserve"] + #[doc = "their deposit and exit without issue. (We may want to change this if"] + #[doc = "it is abused.)"] + #[doc = ""] + #[doc = "Finally, the origin can be anyone iff the child-bounty curator is"] + #[doc = "\"inactive\". Expiry update due of parent bounty is used to estimate"] + #[doc = "inactive state of child-bounty curator."] + #[doc = ""] + #[doc = "This allows anyone in the community to call out that a child-bounty"] + #[doc = "curator is not doing their due diligence, and we should pick a new"] + #[doc = "one. In this case the child-bounty curator deposit is slashed."] + #[doc = ""] + #[doc = "State of child-bounty is moved to Added state on successful call"] + #[doc = "completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] unassign_curator { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, @@ -44705,7 +49488,23 @@ pub mod api { child_bounty_id: ::core::primitive::u32, }, #[codec(index = 4)] - #[doc = "See [`Pallet::award_child_bounty`]."] + #[doc = "Award child-bounty to a beneficiary."] + #[doc = ""] + #[doc = "The beneficiary will be able to claim the funds after a delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the parent curator or"] + #[doc = "curator of this child-bounty."] + #[doc = ""] + #[doc = "Parent bounty must be in active state, for this child-bounty call to"] + #[doc = "work."] + #[doc = ""] + #[doc = "Child-bounty must be in active state, for processing the call. And"] + #[doc = "state of child-bounty is moved to \"PendingPayout\" on successful call"] + #[doc = "completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "- `beneficiary`: Beneficiary account."] award_child_bounty { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, @@ -44714,7 +49513,22 @@ pub mod api { beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 5)] - #[doc = "See [`Pallet::claim_child_bounty`]."] + #[doc = "Claim the payout from an awarded child-bounty after payout delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call may be any signed origin."] + #[doc = ""] + #[doc = "Call works independent of parent bounty state, No need for parent"] + #[doc = "bounty to be in active state."] + #[doc = ""] + #[doc = "The Beneficiary is paid out with agreed bounty value. Curator fee is"] + #[doc = "paid & curator deposit is unreserved."] + #[doc = ""] + #[doc = "Child-bounty must be in \"PendingPayout\" state, for processing the"] + #[doc = "call. And instance of child-bounty is removed from the state on"] + #[doc = "successful call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] claim_child_bounty { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, @@ -44722,7 +49536,28 @@ pub mod api { child_bounty_id: ::core::primitive::u32, }, #[codec(index = 6)] - #[doc = "See [`Pallet::close_child_bounty`]."] + #[doc = "Cancel a proposed or active child-bounty. Child-bounty account funds"] + #[doc = "are transferred to parent bounty account. The child-bounty curator"] + #[doc = "deposit may be unreserved if possible."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be either parent curator or"] + #[doc = "`T::RejectOrigin`."] + #[doc = ""] + #[doc = "If the state of child-bounty is `Active`, curator deposit is"] + #[doc = "unreserved."] + #[doc = ""] + #[doc = "If the state of child-bounty is `PendingPayout`, call fails &"] + #[doc = "returns `PendingPayout` error."] + #[doc = ""] + #[doc = "For the origin other than T::RejectOrigin, parent bounty must be in"] + #[doc = "active state, for this child-bounty call to work. For origin"] + #[doc = "T::RejectOrigin execution is forced."] + #[doc = ""] + #[doc = "Instance of child-bounty is removed from the state on successful"] + #[doc = "call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] close_child_bounty { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, @@ -44881,7 +49716,15 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::vote`]."] + #[doc = "Vote in a poll. If `vote.is_aye()`, the vote is to enact the proposal;"] + #[doc = "otherwise it is a vote to keep the status quo."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_."] + #[doc = ""] + #[doc = "- `poll_index`: The index of the poll to vote for."] + #[doc = "- `vote`: The vote configuration."] + #[doc = ""] + #[doc = "Weight: `O(R)` where R is the number of polls the voter has voted on."] vote { #[codec(compact)] poll_index: ::core::primitive::u32, @@ -44890,7 +49733,29 @@ pub mod api { >, }, #[codec(index = 1)] - #[doc = "See [`Pallet::delegate`]."] + #[doc = "Delegate the voting power (with some given conviction) of the sending account for a"] + #[doc = "particular class of polls."] + #[doc = ""] + #[doc = "The balance delegated is locked for as long as it's delegated, and thereafter for the"] + #[doc = "time appropriate for the conviction's lock period."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_, and the signing account must either:"] + #[doc = " - be delegating already; or"] + #[doc = " - have no voting activity (if there is, then it will need to be removed through"] + #[doc = " `remove_vote`)."] + #[doc = ""] + #[doc = "- `to`: The account whose voting the `target` account's voting power will follow."] + #[doc = "- `class`: The class of polls to delegate. To delegate multiple classes, multiple calls"] + #[doc = " to this function are required."] + #[doc = "- `conviction`: The conviction that will be attached to the delegated votes. When the"] + #[doc = " account is undelegated, the funds will be locked for the corresponding period."] + #[doc = "- `balance`: The amount of the account's balance to be used in delegating. This must not"] + #[doc = " be more than the account's current balance."] + #[doc = ""] + #[doc = "Emits `Delegated`."] + #[doc = ""] + #[doc = "Weight: `O(R)` where R is the number of polls the voter delegating to has"] + #[doc = " voted on. Weight is initially charged as if maximum votes, but is refunded later."] delegate { class: ::core::primitive::u16, to: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -44898,22 +49763,86 @@ pub mod api { balance: ::core::primitive::u128, }, #[codec(index = 2)] - #[doc = "See [`Pallet::undelegate`]."] + #[doc = "Undelegate the voting power of the sending account for a particular class of polls."] + #[doc = ""] + #[doc = "Tokens may be unlocked following once an amount of time consistent with the lock period"] + #[doc = "of the conviction with which the delegation was issued has passed."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_ and the signing account must be"] + #[doc = "currently delegating."] + #[doc = ""] + #[doc = "- `class`: The class of polls to remove the delegation from."] + #[doc = ""] + #[doc = "Emits `Undelegated`."] + #[doc = ""] + #[doc = "Weight: `O(R)` where R is the number of polls the voter delegating to has"] + #[doc = " voted on. Weight is initially charged as if maximum votes, but is refunded later."] undelegate { class: ::core::primitive::u16 }, #[codec(index = 3)] - #[doc = "See [`Pallet::unlock`]."] + #[doc = "Remove the lock caused by prior voting/delegating which has expired within a particular"] + #[doc = "class."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_."] + #[doc = ""] + #[doc = "- `class`: The class of polls to unlock."] + #[doc = "- `target`: The account to remove the lock on."] + #[doc = ""] + #[doc = "Weight: `O(R)` with R number of vote of target."] unlock { class: ::core::primitive::u16, target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 4)] - #[doc = "See [`Pallet::remove_vote`]."] + #[doc = "Remove a vote for a poll."] + #[doc = ""] + #[doc = "If:"] + #[doc = "- the poll was cancelled, or"] + #[doc = "- the poll is ongoing, or"] + #[doc = "- the poll has ended such that"] + #[doc = " - the vote of the account was in opposition to the result; or"] + #[doc = " - there was no conviction to the account's vote; or"] + #[doc = " - the account made a split vote"] + #[doc = "...then the vote is removed cleanly and a following call to `unlock` may result in more"] + #[doc = "funds being available."] + #[doc = ""] + #[doc = "If, however, the poll has ended and:"] + #[doc = "- it finished corresponding to the vote of the account, and"] + #[doc = "- the account made a standard vote with conviction, and"] + #[doc = "- the lock period of the conviction is not over"] + #[doc = "...then the lock will be aggregated into the overall account's lock, which may involve"] + #[doc = "*overlocking* (where the two locks are combined into a single lock that is the maximum"] + #[doc = "of both the amount locked and the time is it locked for)."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_, and the signer must have a vote"] + #[doc = "registered for poll `index`."] + #[doc = ""] + #[doc = "- `index`: The index of poll of the vote to be removed."] + #[doc = "- `class`: Optional parameter, if given it indicates the class of the poll. For polls"] + #[doc = " which have finished or are cancelled, this must be `Some`."] + #[doc = ""] + #[doc = "Weight: `O(R + log R)` where R is the number of polls that `target` has voted on."] + #[doc = " Weight is calculated for the maximum number of vote."] remove_vote { class: ::core::option::Option<::core::primitive::u16>, index: ::core::primitive::u32, }, #[codec(index = 5)] - #[doc = "See [`Pallet::remove_other_vote`]."] + #[doc = "Remove a vote for a poll."] + #[doc = ""] + #[doc = "If the `target` is equal to the signer, then this function is exactly equivalent to"] + #[doc = "`remove_vote`. If not equal to the signer, then the vote must have expired,"] + #[doc = "either because the poll was cancelled, because the voter lost the poll or"] + #[doc = "because the conviction period is over."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_."] + #[doc = ""] + #[doc = "- `target`: The account of the vote to be removed; this account must have voted for poll"] + #[doc = " `index`."] + #[doc = "- `index`: The index of poll of the vote to be removed."] + #[doc = "- `class`: The class of the poll."] + #[doc = ""] + #[doc = "Weight: `O(R + log R)` where R is the number of polls that `target` has voted on."] + #[doc = " Weight is calculated for the maximum number of vote."] remove_other_vote { target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, class: ::core::primitive::u16, @@ -45145,7 +50074,10 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::report_equivocation`]."] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] report_equivocation { equivocation_proof: ::std::boxed::Box< runtime_types::sp_consensus_grandpa::EquivocationProof< @@ -45156,7 +50088,15 @@ pub mod api { key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 1)] - #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] + #[doc = ""] + #[doc = "This extrinsic must be called unsigned and it is expected that only"] + #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] + #[doc = "if the block author is defined it will be defined as the equivocation"] + #[doc = "reporter."] report_equivocation_unsigned { equivocation_proof: ::std::boxed::Box< runtime_types::sp_consensus_grandpa::EquivocationProof< @@ -45167,7 +50107,18 @@ pub mod api { key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 2)] - #[doc = "See [`Pallet::note_stalled`]."] + #[doc = "Note that the current authority set of the GRANDPA finality gadget has stalled."] + #[doc = ""] + #[doc = "This will trigger a forced authority set change at the beginning of the next session, to"] + #[doc = "be enacted `delay` blocks after that. The `delay` should be high enough to safely assume"] + #[doc = "that the block signalling the forced change will not be re-orged e.g. 1000 blocks."] + #[doc = "The block production rate (which may be slowed down because of finality lagging) should"] + #[doc = "be taken into account when choosing the `delay`. The GRANDPA voters based on the new"] + #[doc = "authority will start voting on top of `best_finalized_block_number` for new finalized"] + #[doc = "blocks. `best_finalized_block_number` should be the highest of the latest finalized"] + #[doc = "block of all validators of the new authority set."] + #[doc = ""] + #[doc = "Only callable by root."] note_stalled { delay: ::core::primitive::u32, best_finalized_block_number: ::core::primitive::u32, @@ -45322,18 +50273,41 @@ pub mod api { #[doc = "Identity pallet declaration."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::add_registrar`]."] + #[doc = "Add a registrar to the system."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be `T::RegistrarOrigin`."] + #[doc = ""] + #[doc = "- `account`: the account of the registrar."] + #[doc = ""] + #[doc = "Emits `RegistrarAdded` if successful."] add_registrar { account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 1)] - #[doc = "See [`Pallet::set_identity`]."] + #[doc = "Set an account's identity information and reserve the appropriate deposit."] + #[doc = ""] + #[doc = "If the account already has identity information, the deposit is taken as part payment"] + #[doc = "for the new deposit."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `info`: The identity information."] + #[doc = ""] + #[doc = "Emits `IdentitySet` if successful."] set_identity { info: ::std::boxed::Box, }, #[codec(index = 2)] - #[doc = "See [`Pallet::set_subs`]."] + #[doc = "Set the sub-accounts of the sender."] + #[doc = ""] + #[doc = "Payment: Any aggregate balance reserved by previous `set_subs` calls will be returned"] + #[doc = "and an amount `SubAccountDeposit` will be reserved for each item in `subs`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "identity."] + #[doc = ""] + #[doc = "- `subs`: The identity's (new) sub-accounts."] set_subs { subs: ::std::vec::Vec<( ::subxt::utils::AccountId32, @@ -45341,10 +50315,32 @@ pub mod api { )>, }, #[codec(index = 3)] - #[doc = "See [`Pallet::clear_identity`]."] + #[doc = "Clear an account's identity info and all sub-accounts and return all deposits."] + #[doc = ""] + #[doc = "Payment: All reserved balances on the account are returned."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "identity."] + #[doc = ""] + #[doc = "Emits `IdentityCleared` if successful."] clear_identity, #[codec(index = 4)] - #[doc = "See [`Pallet::request_judgement`]."] + #[doc = "Request a judgement from a registrar."] + #[doc = ""] + #[doc = "Payment: At most `max_fee` will be reserved for payment to the registrar if judgement"] + #[doc = "given."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a"] + #[doc = "registered identity."] + #[doc = ""] + #[doc = "- `reg_index`: The index of the registrar whose judgement is requested."] + #[doc = "- `max_fee`: The maximum fee that may be paid. This should just be auto-populated as:"] + #[doc = ""] + #[doc = "```nocompile"] + #[doc = "Self::registrars().get(reg_index).unwrap().fee"] + #[doc = "```"] + #[doc = ""] + #[doc = "Emits `JudgementRequested` if successful."] request_judgement { #[codec(compact)] reg_index: ::core::primitive::u32, @@ -45352,10 +50348,25 @@ pub mod api { max_fee: ::core::primitive::u128, }, #[codec(index = 5)] - #[doc = "See [`Pallet::cancel_request`]."] + #[doc = "Cancel a previous request."] + #[doc = ""] + #[doc = "Payment: A previously reserved deposit is returned on success."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a"] + #[doc = "registered identity."] + #[doc = ""] + #[doc = "- `reg_index`: The index of the registrar whose judgement is no longer requested."] + #[doc = ""] + #[doc = "Emits `JudgementUnrequested` if successful."] cancel_request { reg_index: ::core::primitive::u32 }, #[codec(index = 6)] - #[doc = "See [`Pallet::set_fee`]."] + #[doc = "Set the fee required for a judgement to be requested from a registrar."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `index`."] + #[doc = ""] + #[doc = "- `index`: the index of the registrar whose fee is to be set."] + #[doc = "- `fee`: the new fee."] set_fee { #[codec(compact)] index: ::core::primitive::u32, @@ -45363,21 +50374,47 @@ pub mod api { fee: ::core::primitive::u128, }, #[codec(index = 7)] - #[doc = "See [`Pallet::set_account_id`]."] + #[doc = "Change the account associated with a registrar."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `index`."] + #[doc = ""] + #[doc = "- `index`: the index of the registrar whose fee is to be set."] + #[doc = "- `new`: the new account ID."] set_account_id { #[codec(compact)] index: ::core::primitive::u32, new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 8)] - #[doc = "See [`Pallet::set_fields`]."] + #[doc = "Set the field information for a registrar."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `index`."] + #[doc = ""] + #[doc = "- `index`: the index of the registrar whose fee is to be set."] + #[doc = "- `fields`: the fields that the registrar concerns themselves with."] set_fields { #[codec(compact)] index: ::core::primitive::u32, fields: ::core::primitive::u64, }, #[codec(index = 9)] - #[doc = "See [`Pallet::provide_judgement`]."] + #[doc = "Provide a judgement for an account's identity."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `reg_index`."] + #[doc = ""] + #[doc = "- `reg_index`: the index of the registrar whose judgement is being made."] + #[doc = "- `target`: the account whose identity the judgement is upon. This must be an account"] + #[doc = " with a registered identity."] + #[doc = "- `judgement`: the judgement of the registrar of index `reg_index` about `target`."] + #[doc = "- `identity`: The hash of the [`IdentityInformationProvider`] for that the judgement is"] + #[doc = " provided."] + #[doc = ""] + #[doc = "Note: Judgements do not apply to a username."] + #[doc = ""] + #[doc = "Emits `JudgementGiven` if successful."] provide_judgement { #[codec(compact)] reg_index: ::core::primitive::u32, @@ -45388,44 +50425,90 @@ pub mod api { identity: ::subxt::utils::H256, }, #[codec(index = 10)] - #[doc = "See [`Pallet::kill_identity`]."] + #[doc = "Remove an account's identity and sub-account information and slash the deposits."] + #[doc = ""] + #[doc = "Payment: Reserved balances from `set_subs` and `set_identity` are slashed and handled by"] + #[doc = "`Slash`. Verification request deposits are not returned; they should be cancelled"] + #[doc = "manually using `cancel_request`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] + #[doc = ""] + #[doc = "- `target`: the account whose identity the judgement is upon. This must be an account"] + #[doc = " with a registered identity."] + #[doc = ""] + #[doc = "Emits `IdentityKilled` if successful."] kill_identity { target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 11)] - #[doc = "See [`Pallet::add_sub`]."] + #[doc = "Add the given account to the sender's subs."] + #[doc = ""] + #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] + #[doc = "to the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "sub identity of `sub`."] add_sub { sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, data: runtime_types::pallet_identity::types::Data, }, #[codec(index = 12)] - #[doc = "See [`Pallet::rename_sub`]."] + #[doc = "Alter the associated name of the given sub-account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "sub identity of `sub`."] rename_sub { sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, data: runtime_types::pallet_identity::types::Data, }, #[codec(index = 13)] - #[doc = "See [`Pallet::remove_sub`]."] + #[doc = "Remove the given account from the sender's subs."] + #[doc = ""] + #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] + #[doc = "to the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "sub identity of `sub`."] remove_sub { sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 14)] - #[doc = "See [`Pallet::quit_sub`]."] + #[doc = "Remove the sender as a sub-account."] + #[doc = ""] + #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] + #[doc = "to the sender (*not* the original depositor)."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "super-identity."] + #[doc = ""] + #[doc = "NOTE: This should not normally be used, but is provided in the case that the non-"] + #[doc = "controller of an account is maliciously registered as a sub-account."] quit_sub, #[codec(index = 15)] - #[doc = "See [`Pallet::add_username_authority`]."] + #[doc = "Add an `AccountId` with permission to grant usernames with a given `suffix` appended."] + #[doc = ""] + #[doc = "The authority can grant up to `allocation` usernames. To top up their allocation, they"] + #[doc = "should just issue (or request via governance) a new `add_username_authority` call."] add_username_authority { authority: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, suffix: ::std::vec::Vec<::core::primitive::u8>, allocation: ::core::primitive::u32, }, #[codec(index = 16)] - #[doc = "See [`Pallet::remove_username_authority`]."] + #[doc = "Remove `authority` from the username authorities."] remove_username_authority { authority: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 17)] - #[doc = "See [`Pallet::set_username_for`]."] + #[doc = "Set the username for `who`. Must be called by a username authority."] + #[doc = ""] + #[doc = "The authority must have an `allocation`. Users can either pre-sign their usernames or"] + #[doc = "accept them later."] + #[doc = ""] + #[doc = "Usernames must:"] + #[doc = " - Only contain lowercase ASCII characters or digits."] + #[doc = " - When combined with the suffix of the issuing authority be _less than_ the"] + #[doc = " `MaxUsernameLength`."] set_username_for { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, username: ::std::vec::Vec<::core::primitive::u8>, @@ -45433,28 +50516,32 @@ pub mod api { ::core::option::Option, }, #[codec(index = 18)] - #[doc = "See [`Pallet::accept_username`]."] + #[doc = "Accept a given username that an `authority` granted. The call must include the full"] + #[doc = "username, as in `username.suffix`."] accept_username { username: runtime_types::bounded_collections::bounded_vec::BoundedVec< ::core::primitive::u8, >, }, #[codec(index = 19)] - #[doc = "See [`Pallet::remove_expired_approval`]."] + #[doc = "Remove an expired username approval. The username was approved by an authority but never"] + #[doc = "accepted by the user and must now be beyond its expiration. The call must include the"] + #[doc = "full username, as in `username.suffix`."] remove_expired_approval { username: runtime_types::bounded_collections::bounded_vec::BoundedVec< ::core::primitive::u8, >, }, #[codec(index = 20)] - #[doc = "See [`Pallet::set_primary_username`]."] + #[doc = "Set a given username as the primary. The username should include the suffix."] set_primary_username { username: runtime_types::bounded_collections::bounded_vec::BoundedVec< ::core::primitive::u8, >, }, #[codec(index = 21)] - #[doc = "See [`Pallet::remove_dangling_username`]."] + #[doc = "Remove a username that corresponds to an account with no identity. Exists when a user"] + #[doc = "gets a username but then calls `clear_identity`."] remove_dangling_username { username: runtime_types::bounded_collections::bounded_vec::BoundedVec< ::core::primitive::u8, @@ -45855,26 +50942,82 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::claim`]."] + #[doc = "Assign an previously unassigned index."] + #[doc = ""] + #[doc = "Payment: `Deposit` is reserved from the sender account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `index`: the index to be claimed. This must not be in use."] + #[doc = ""] + #[doc = "Emits `IndexAssigned` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] claim { index: ::core::primitive::u32 }, #[codec(index = 1)] - #[doc = "See [`Pallet::transfer`]."] + #[doc = "Assign an index already owned by the sender to another account. The balance reservation"] + #[doc = "is effectively transferred to the new account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `index`: the index to be re-assigned. This must be owned by the sender."] + #[doc = "- `new`: the new owner of the index. This function is a no-op if it is equal to sender."] + #[doc = ""] + #[doc = "Emits `IndexAssigned` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] transfer { new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, index: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "See [`Pallet::free`]."] + #[doc = "Free up an index owned by the sender."] + #[doc = ""] + #[doc = "Payment: Any previous deposit placed for the index is unreserved in the sender account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must own the index."] + #[doc = ""] + #[doc = "- `index`: the index to be freed. This must be owned by the sender."] + #[doc = ""] + #[doc = "Emits `IndexFreed` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] free { index: ::core::primitive::u32 }, #[codec(index = 3)] - #[doc = "See [`Pallet::force_transfer`]."] + #[doc = "Force an index to an account. This doesn't require a deposit. If the index is already"] + #[doc = "held, then any deposit is reimbursed to its current owner."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "- `index`: the index to be (re-)assigned."] + #[doc = "- `new`: the new owner of the index. This function is a no-op if it is equal to sender."] + #[doc = "- `freeze`: if set to `true`, will freeze the index so it cannot be transferred."] + #[doc = ""] + #[doc = "Emits `IndexAssigned` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] force_transfer { new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, index: ::core::primitive::u32, freeze: ::core::primitive::bool, }, #[codec(index = 4)] - #[doc = "See [`Pallet::freeze`]."] + #[doc = "Freeze an index so it will always point to the sender account. This consumes the"] + #[doc = "deposit."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the signing account must have a"] + #[doc = "non-frozen account `index`."] + #[doc = ""] + #[doc = "- `index`: the index to be frozen in place."] + #[doc = ""] + #[doc = "Emits `IndexFrozen` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] freeze { index: ::core::primitive::u32 }, } #[derive( @@ -45951,7 +51094,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "See [`Pallet::reap_page`]."] reap_page { message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page_index : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "See [`Pallet::execute_overweight`]."] execute_overweight { message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page : :: core :: primitive :: u32 , index : :: core :: primitive :: u32 , weight_limit : runtime_types :: sp_weights :: weight_v2 :: Weight , } , } + # [codec (index = 0)] # [doc = "Remove a page which has no more messages remaining to be processed or is stale."] reap_page { message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page_index : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "Execute an overweight message."] # [doc = ""] # [doc = "Temporary processing errors will be propagated whereas permanent errors are treated"] # [doc = "as success condition."] # [doc = ""] # [doc = "- `origin`: Must be `Signed`."] # [doc = "- `message_origin`: The origin from which the message to be executed arrived."] # [doc = "- `page`: The page in the queue in which the message to be executed is sitting."] # [doc = "- `index`: The index into the queue of the message to be executed."] # [doc = "- `weight_limit`: The maximum amount of weight allowed to be consumed in the execution"] # [doc = " of the message."] # [doc = ""] # [doc = "Benchmark complexity considerations: O(index + weight_limit)."] execute_overweight { message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page : :: core :: primitive :: u32 , index : :: core :: primitive :: u32 , weight_limit : runtime_types :: sp_weights :: weight_v2 :: Weight , } , } #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -46083,13 +51226,62 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::as_multi_threshold_1`]."] + #[doc = "Immediately dispatch a multi-signature call using a single approval from the caller."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `other_signatories`: The accounts (other than the sender) who are part of the"] + #[doc = "multi-signature, but do not participate in the approval process."] + #[doc = "- `call`: The call to be executed."] + #[doc = ""] + #[doc = "Result is equivalent to the dispatched result."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "O(Z + C) where Z is the length of the call and C its execution weight."] as_multi_threshold_1 { other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, call: ::std::boxed::Box, }, #[codec(index = 1)] - #[doc = "See [`Pallet::as_multi`]."] + #[doc = "Register approval for a dispatch to be made from a deterministic composite account if"] + #[doc = "approved by a total of `threshold - 1` of `other_signatories`."] + #[doc = ""] + #[doc = "If there are enough, then dispatch the call."] + #[doc = ""] + #[doc = "Payment: `DepositBase` will be reserved if this is the first approval, plus"] + #[doc = "`threshold` times `DepositFactor`. It is returned once this dispatch happens or"] + #[doc = "is cancelled."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] + #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] + #[doc = "dispatch. May not be empty."] + #[doc = "- `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is"] + #[doc = "not the first approval, then it must be `Some`, with the timepoint (block number and"] + #[doc = "transaction index) of the first approval transaction."] + #[doc = "- `call`: The call to be executed."] + #[doc = ""] + #[doc = "NOTE: Unless this is the final approval, you will generally want to use"] + #[doc = "`approve_as_multi` instead, since it only requires a hash of the call."] + #[doc = ""] + #[doc = "Result is equivalent to the dispatched result if `threshold` is exactly `1`. Otherwise"] + #[doc = "on success, result is `Ok` and the result from the interior call, if it was executed,"] + #[doc = "may be found in the deposited `MultisigExecuted` event."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(S + Z + Call)`."] + #[doc = "- Up to one balance-reserve or unreserve operation."] + #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] + #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] + #[doc = "- One call encode & hash, both of complexity `O(Z)` where `Z` is tx-len."] + #[doc = "- One encode & hash, both of complexity `O(S)`."] + #[doc = "- Up to one binary search and insert (`O(logS + S)`)."] + #[doc = "- I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove."] + #[doc = "- One event."] + #[doc = "- The weight of the `call`."] + #[doc = "- Storage: inserts one item, value size bounded by `MaxSignatories`, with a deposit"] + #[doc = " taken for its lifetime of `DepositBase + threshold * DepositFactor`."] as_multi { threshold: ::core::primitive::u16, other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, @@ -46100,7 +51292,36 @@ pub mod api { max_weight: runtime_types::sp_weights::weight_v2::Weight, }, #[codec(index = 2)] - #[doc = "See [`Pallet::approve_as_multi`]."] + #[doc = "Register approval for a dispatch to be made from a deterministic composite account if"] + #[doc = "approved by a total of `threshold - 1` of `other_signatories`."] + #[doc = ""] + #[doc = "Payment: `DepositBase` will be reserved if this is the first approval, plus"] + #[doc = "`threshold` times `DepositFactor`. It is returned once this dispatch happens or"] + #[doc = "is cancelled."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] + #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] + #[doc = "dispatch. May not be empty."] + #[doc = "- `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is"] + #[doc = "not the first approval, then it must be `Some`, with the timepoint (block number and"] + #[doc = "transaction index) of the first approval transaction."] + #[doc = "- `call_hash`: The hash of the call to be executed."] + #[doc = ""] + #[doc = "NOTE: If this is the final approval, you will want to use `as_multi` instead."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(S)`."] + #[doc = "- Up to one balance-reserve or unreserve operation."] + #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] + #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] + #[doc = "- One encode & hash, both of complexity `O(S)`."] + #[doc = "- Up to one binary search and insert (`O(logS + S)`)."] + #[doc = "- I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove."] + #[doc = "- One event."] + #[doc = "- Storage: inserts one item, value size bounded by `MaxSignatories`, with a deposit"] + #[doc = " taken for its lifetime of `DepositBase + threshold * DepositFactor`."] approve_as_multi { threshold: ::core::primitive::u16, other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, @@ -46111,7 +51332,27 @@ pub mod api { max_weight: runtime_types::sp_weights::weight_v2::Weight, }, #[codec(index = 3)] - #[doc = "See [`Pallet::cancel_as_multi`]."] + #[doc = "Cancel a pre-existing, on-going multisig transaction. Any deposit reserved previously"] + #[doc = "for this operation will be unreserved on success."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] + #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] + #[doc = "dispatch. May not be empty."] + #[doc = "- `timepoint`: The timepoint (block number and transaction index) of the first approval"] + #[doc = "transaction for this dispatch."] + #[doc = "- `call_hash`: The hash of the call to be executed."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(S)`."] + #[doc = "- Up to one balance-reserve or unreserve operation."] + #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] + #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] + #[doc = "- One encode & hash, both of complexity `O(S)`."] + #[doc = "- One event."] + #[doc = "- I/O: 1 read `O(S)`, one remove."] + #[doc = "- Storage: removes one item."] cancel_as_multi { threshold: ::core::primitive::u16, other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, @@ -46287,24 +51528,49 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::place_bid`]."] + #[doc = "Place a bid."] + #[doc = ""] + #[doc = "Origin must be Signed, and account must have at least `amount` in free balance."] + #[doc = ""] + #[doc = "- `amount`: The amount of the bid; these funds will be reserved, and if/when"] + #[doc = " consolidated, removed. Must be at least `MinBid`."] + #[doc = "- `duration`: The number of periods before which the newly consolidated bid may be"] + #[doc = " thawed. Must be greater than 1 and no more than `QueueCount`."] + #[doc = ""] + #[doc = "Complexities:"] + #[doc = "- `Queues[duration].len()` (just take max)."] place_bid { #[codec(compact)] amount: ::core::primitive::u128, duration: ::core::primitive::u32, }, #[codec(index = 1)] - #[doc = "See [`Pallet::retract_bid`]."] + #[doc = "Retract a previously placed bid."] + #[doc = ""] + #[doc = "Origin must be Signed, and the account should have previously issued a still-active bid"] + #[doc = "of `amount` for `duration`."] + #[doc = ""] + #[doc = "- `amount`: The amount of the previous bid."] + #[doc = "- `duration`: The duration of the previous bid."] retract_bid { #[codec(compact)] amount: ::core::primitive::u128, duration: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "See [`Pallet::fund_deficit`]."] + #[doc = "Ensure we have sufficient funding for all potential payouts."] + #[doc = ""] + #[doc = "- `origin`: Must be accepted by `FundOrigin`."] fund_deficit, #[codec(index = 3)] - #[doc = "See [`Pallet::thaw_private`]."] + #[doc = "Reduce or remove an outstanding receipt, placing the according proportion of funds into"] + #[doc = "the account of the owner."] + #[doc = ""] + #[doc = "- `origin`: Must be Signed and the account must be the owner of the receipt `index` as"] + #[doc = " well as any fungible counterpart."] + #[doc = "- `index`: The index of the receipt."] + #[doc = "- `portion`: If `Some`, then only the given portion of the receipt should be thawed. If"] + #[doc = " `None`, then all of it should be."] thaw_private { #[codec(compact)] index: ::core::primitive::u32, @@ -46313,19 +51579,24 @@ pub mod api { >, }, #[codec(index = 4)] - #[doc = "See [`Pallet::thaw_communal`]."] + #[doc = "Reduce or remove an outstanding receipt, placing the according proportion of funds into"] + #[doc = "the account of the owner."] + #[doc = ""] + #[doc = "- `origin`: Must be Signed and the account must be the owner of the fungible counterpart"] + #[doc = " for receipt `index`."] + #[doc = "- `index`: The index of the receipt."] thaw_communal { #[codec(compact)] index: ::core::primitive::u32, }, #[codec(index = 5)] - #[doc = "See [`Pallet::communify`]."] + #[doc = "Make a private receipt communal and create fungible counterparts for its owner."] communify { #[codec(compact)] index: ::core::primitive::u32, }, #[codec(index = 6)] - #[doc = "See [`Pallet::privatize`]."] + #[doc = "Make a communal receipt private and burn fungible counterparts from its owner."] privatize { #[codec(compact)] index: ::core::primitive::u32, @@ -46544,21 +51815,36 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::note_preimage`]."] + #[doc = "Register a preimage on-chain."] + #[doc = ""] + #[doc = "If the preimage was previously requested, no fees or deposits are taken for providing"] + #[doc = "the preimage. Otherwise, a deposit is taken proportional to the size of the preimage."] note_preimage { bytes: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 1)] - #[doc = "See [`Pallet::unnote_preimage`]."] + #[doc = "Clear an unrequested preimage from the runtime storage."] + #[doc = ""] + #[doc = "If `len` is provided, then it will be a much cheaper operation."] + #[doc = ""] + #[doc = "- `hash`: The hash of the preimage to be removed from the store."] + #[doc = "- `len`: The length of the preimage of `hash`."] unnote_preimage { hash: ::subxt::utils::H256 }, #[codec(index = 2)] - #[doc = "See [`Pallet::request_preimage`]."] + #[doc = "Request a preimage be uploaded to the chain without paying any fees or deposits."] + #[doc = ""] + #[doc = "If the preimage requests has already been provided on-chain, we unreserve any deposit"] + #[doc = "a user may have paid, and take the control of the preimage out of their hands."] request_preimage { hash: ::subxt::utils::H256 }, #[codec(index = 3)] - #[doc = "See [`Pallet::unrequest_preimage`]."] + #[doc = "Clear a previously made request for a preimage."] + #[doc = ""] + #[doc = "NOTE: THIS MUST NOT BE CALLED ON `hash` MORE TIMES THAN `request_preimage`."] unrequest_preimage { hash: ::subxt::utils::H256 }, #[codec(index = 4)] - #[doc = "See [`Pallet::ensure_updated`]."] + #[doc = "Ensure that the a bulk of pre-images is upgraded."] + #[doc = ""] + #[doc = "The caller pays no fee if at least 90% of pre-images were successfully updated."] ensure_updated { hashes: ::std::vec::Vec<::subxt::utils::H256>, }, @@ -46701,7 +51987,15 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::proxy`]."] + #[doc = "Dispatch the given `call` from an account that the sender is authorised for through"] + #[doc = "`add_proxy`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `force_proxy_type`: Specify the exact proxy type to be used and checked for this call."] + #[doc = "- `call`: The call to be made by the `real` account."] proxy { real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, force_proxy_type: @@ -46709,31 +52003,82 @@ pub mod api { call: ::std::boxed::Box, }, #[codec(index = 1)] - #[doc = "See [`Pallet::add_proxy`]."] + #[doc = "Register a proxy account for the sender that is able to make calls on its behalf."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `proxy`: The account that the `caller` would like to make a proxy."] + #[doc = "- `proxy_type`: The permissions allowed for this proxy account."] + #[doc = "- `delay`: The announcement period required of the initial proxy. Will generally be"] + #[doc = "zero."] add_proxy { delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, proxy_type: runtime_types::rococo_runtime::ProxyType, delay: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "See [`Pallet::remove_proxy`]."] + #[doc = "Unregister a proxy account for the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `proxy`: The account that the `caller` would like to remove as a proxy."] + #[doc = "- `proxy_type`: The permissions currently enabled for the removed proxy account."] remove_proxy { delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, proxy_type: runtime_types::rococo_runtime::ProxyType, delay: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "See [`Pallet::remove_proxies`]."] + #[doc = "Unregister all proxy accounts for the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "WARNING: This may be called on accounts created by `pure`, however if done, then"] + #[doc = "the unreserved fees will be inaccessible. **All access to this account will be lost.**"] remove_proxies, #[codec(index = 4)] - #[doc = "See [`Pallet::create_pure`]."] + #[doc = "Spawn a fresh new account that is guaranteed to be otherwise inaccessible, and"] + #[doc = "initialize it with a proxy of `proxy_type` for `origin` sender."] + #[doc = ""] + #[doc = "Requires a `Signed` origin."] + #[doc = ""] + #[doc = "- `proxy_type`: The type of the proxy that the sender will be registered as over the"] + #[doc = "new account. This will almost always be the most permissive `ProxyType` possible to"] + #[doc = "allow for maximum flexibility."] + #[doc = "- `index`: A disambiguation index, in case this is called multiple times in the same"] + #[doc = "transaction (e.g. with `utility::batch`). Unless you're using `batch` you probably just"] + #[doc = "want to use `0`."] + #[doc = "- `delay`: The announcement period required of the initial proxy. Will generally be"] + #[doc = "zero."] + #[doc = ""] + #[doc = "Fails with `Duplicate` if this has already been called in this transaction, from the"] + #[doc = "same sender, with the same parameters."] + #[doc = ""] + #[doc = "Fails if there are insufficient funds to pay for deposit."] create_pure { proxy_type: runtime_types::rococo_runtime::ProxyType, delay: ::core::primitive::u32, index: ::core::primitive::u16, }, #[codec(index = 5)] - #[doc = "See [`Pallet::kill_pure`]."] + #[doc = "Removes a previously spawned pure proxy."] + #[doc = ""] + #[doc = "WARNING: **All access to this account will be lost.** Any funds held in it will be"] + #[doc = "inaccessible."] + #[doc = ""] + #[doc = "Requires a `Signed` origin, and the sender account must have been created by a call to"] + #[doc = "`pure` with corresponding parameters."] + #[doc = ""] + #[doc = "- `spawner`: The account that originally called `pure` to create this account."] + #[doc = "- `index`: The disambiguation index originally passed to `pure`. Probably `0`."] + #[doc = "- `proxy_type`: The proxy type originally passed to `pure`."] + #[doc = "- `height`: The height of the chain when the call to `pure` was processed."] + #[doc = "- `ext_index`: The extrinsic index in which the call to `pure` was processed."] + #[doc = ""] + #[doc = "Fails with `NoPermission` in case the caller is not a previously created pure"] + #[doc = "account whose `pure` call has corresponding parameters."] kill_pure { spawner: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, proxy_type: runtime_types::rococo_runtime::ProxyType, @@ -46744,25 +52089,67 @@ pub mod api { ext_index: ::core::primitive::u32, }, #[codec(index = 6)] - #[doc = "See [`Pallet::announce`]."] + #[doc = "Publish the hash of a proxy-call that will be made in the future."] + #[doc = ""] + #[doc = "This must be called some number of blocks before the corresponding `proxy` is attempted"] + #[doc = "if the delay associated with the proxy relationship is greater than zero."] + #[doc = ""] + #[doc = "No more than `MaxPending` announcements may be made at any one time."] + #[doc = ""] + #[doc = "This will take a deposit of `AnnouncementDepositFactor` as well as"] + #[doc = "`AnnouncementDepositBase` if there are no other pending announcements."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a proxy of `real`."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `call_hash`: The hash of the call to be made by the `real` account."] announce { real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, call_hash: ::subxt::utils::H256, }, #[codec(index = 7)] - #[doc = "See [`Pallet::remove_announcement`]."] + #[doc = "Remove a given announcement."] + #[doc = ""] + #[doc = "May be called by a proxy account to remove a call they previously announced and return"] + #[doc = "the deposit."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `call_hash`: The hash of the call to be made by the `real` account."] remove_announcement { real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, call_hash: ::subxt::utils::H256, }, #[codec(index = 8)] - #[doc = "See [`Pallet::reject_announcement`]."] + #[doc = "Remove the given announcement of a delegate."] + #[doc = ""] + #[doc = "May be called by a target (proxied) account to remove a call that one of their delegates"] + #[doc = "(`delegate`) has announced they want to execute. The deposit is returned."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `delegate`: The account that previously announced the call."] + #[doc = "- `call_hash`: The hash of the call to be made."] reject_announcement { delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, call_hash: ::subxt::utils::H256, }, #[codec(index = 9)] - #[doc = "See [`Pallet::proxy_announced`]."] + #[doc = "Dispatch the given `call` from an account that the sender is authorized for through"] + #[doc = "`add_proxy`."] + #[doc = ""] + #[doc = "Removes any corresponding announcement(s)."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `force_proxy_type`: Specify the exact proxy type to be used and checked for this call."] + #[doc = "- `call`: The call to be made by the `real` account."] proxy_announced { delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -46908,40 +52295,85 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::add_member`]."] + #[doc = "Introduce a new member."] + #[doc = ""] + #[doc = "- `origin`: Must be the `AddOrigin`."] + #[doc = "- `who`: Account of non-member which will become a member."] + #[doc = ""] + #[doc = "Weight: `O(1)`"] add_member { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 1)] - #[doc = "See [`Pallet::promote_member`]."] + #[doc = "Increment the rank of an existing member by one."] + #[doc = ""] + #[doc = "- `origin`: Must be the `PromoteOrigin`."] + #[doc = "- `who`: Account of existing member."] + #[doc = ""] + #[doc = "Weight: `O(1)`"] promote_member { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 2)] - #[doc = "See [`Pallet::demote_member`]."] + #[doc = "Decrement the rank of an existing member by one. If the member is already at rank zero,"] + #[doc = "then they are removed entirely."] + #[doc = ""] + #[doc = "- `origin`: Must be the `DemoteOrigin`."] + #[doc = "- `who`: Account of existing member of rank greater than zero."] + #[doc = ""] + #[doc = "Weight: `O(1)`, less if the member's index is highest in its rank."] demote_member { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 3)] - #[doc = "See [`Pallet::remove_member`]."] + #[doc = "Remove the member entirely."] + #[doc = ""] + #[doc = "- `origin`: Must be the `RemoveOrigin`."] + #[doc = "- `who`: Account of existing member of rank greater than zero."] + #[doc = "- `min_rank`: The rank of the member or greater."] + #[doc = ""] + #[doc = "Weight: `O(min_rank)`."] remove_member { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, min_rank: ::core::primitive::u16, }, #[codec(index = 4)] - #[doc = "See [`Pallet::vote`]."] + #[doc = "Add an aye or nay vote for the sender to the given proposal."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed` by a member account."] + #[doc = "- `poll`: Index of a poll which is ongoing."] + #[doc = "- `aye`: `true` if the vote is to approve the proposal, `false` otherwise."] + #[doc = ""] + #[doc = "Transaction fees are be waived if the member is voting on any particular proposal"] + #[doc = "for the first time and the call is successful. Subsequent vote changes will charge a"] + #[doc = "fee."] + #[doc = ""] + #[doc = "Weight: `O(1)`, less if there was no previous vote on the poll by the member."] vote { poll: ::core::primitive::u32, aye: ::core::primitive::bool, }, #[codec(index = 5)] - #[doc = "See [`Pallet::cleanup_poll`]."] + #[doc = "Remove votes from the given poll. It must have ended."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed` by any account."] + #[doc = "- `poll_index`: Index of a poll which is completed and for which votes continue to"] + #[doc = " exist."] + #[doc = "- `max`: Maximum number of vote items from remove in this call."] + #[doc = ""] + #[doc = "Transaction fees are waived if the operation is successful."] + #[doc = ""] + #[doc = "Weight `O(max)` (less if there are fewer items to remove than `max`)."] cleanup_poll { poll_index: ::core::primitive::u32, max: ::core::primitive::u32, }, #[codec(index = 6)] - #[doc = "See [`Pallet::exchange_member`]."] + #[doc = "Exchanges a member with a new account and the same existing rank."] + #[doc = ""] + #[doc = "- `origin`: Must be the `ExchangeOrigin`."] + #[doc = "- `who`: Account of existing member of rank greater than zero to be exchanged."] + #[doc = "- `new_who`: New Account of existing member of rank greater than zero to exchanged to."] exchange_member { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, new_who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -47097,50 +52529,134 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::as_recovered`]."] + #[doc = "Send a call through a recovered account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and registered to"] + #[doc = "be able to make calls on behalf of the recovered account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The recovered account you want to make a call on-behalf-of."] + #[doc = "- `call`: The call you want to make with the recovered account."] as_recovered { account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, call: ::std::boxed::Box, }, #[codec(index = 1)] - #[doc = "See [`Pallet::set_recovered`]."] + #[doc = "Allow ROOT to bypass the recovery process and set an a rescuer account"] + #[doc = "for a lost account directly."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _ROOT_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `lost`: The \"lost account\" to be recovered."] + #[doc = "- `rescuer`: The \"rescuer account\" which can call as the lost account."] set_recovered { lost: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, rescuer: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 2)] - #[doc = "See [`Pallet::create_recovery`]."] + #[doc = "Create a recovery configuration for your account. This makes your account recoverable."] + #[doc = ""] + #[doc = "Payment: `ConfigDepositBase` + `FriendDepositFactor` * #_of_friends balance"] + #[doc = "will be reserved for storing the recovery configuration. This deposit is returned"] + #[doc = "in full when the user calls `remove_recovery`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `friends`: A list of friends you trust to vouch for recovery attempts. Should be"] + #[doc = " ordered and contain no duplicate values."] + #[doc = "- `threshold`: The number of friends that must vouch for a recovery attempt before the"] + #[doc = " account can be recovered. Should be less than or equal to the length of the list of"] + #[doc = " friends."] + #[doc = "- `delay_period`: The number of blocks after a recovery attempt is initialized that"] + #[doc = " needs to pass before the account can be recovered."] create_recovery { friends: ::std::vec::Vec<::subxt::utils::AccountId32>, threshold: ::core::primitive::u16, delay_period: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "See [`Pallet::initiate_recovery`]."] + #[doc = "Initiate the process for recovering a recoverable account."] + #[doc = ""] + #[doc = "Payment: `RecoveryDeposit` balance will be reserved for initiating the"] + #[doc = "recovery process. This deposit will always be repatriated to the account"] + #[doc = "trying to be recovered. See `close_recovery`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The lost account that you want to recover. This account needs to be"] + #[doc = " recoverable (i.e. have a recovery configuration)."] initiate_recovery { account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 4)] - #[doc = "See [`Pallet::vouch_recovery`]."] + #[doc = "Allow a \"friend\" of a recoverable account to vouch for an active recovery"] + #[doc = "process for that account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a \"friend\""] + #[doc = "for the recoverable account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `lost`: The lost account that you want to recover."] + #[doc = "- `rescuer`: The account trying to rescue the lost account that you want to vouch for."] + #[doc = ""] + #[doc = "The combination of these two parameters must point to an active recovery"] + #[doc = "process."] vouch_recovery { lost: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, rescuer: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 5)] - #[doc = "See [`Pallet::claim_recovery`]."] + #[doc = "Allow a successful rescuer to claim their recovered account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a \"rescuer\""] + #[doc = "who has successfully completed the account recovery process: collected"] + #[doc = "`threshold` or more vouches, waited `delay_period` blocks since initiation."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The lost account that you want to claim has been successfully recovered by"] + #[doc = " you."] claim_recovery { account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 6)] - #[doc = "See [`Pallet::close_recovery`]."] + #[doc = "As the controller of a recoverable account, close an active recovery"] + #[doc = "process for your account."] + #[doc = ""] + #[doc = "Payment: By calling this function, the recoverable account will receive"] + #[doc = "the recovery deposit `RecoveryDeposit` placed by the rescuer."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a"] + #[doc = "recoverable account with an active recovery process for it."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `rescuer`: The account trying to rescue this recoverable account."] close_recovery { rescuer: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 7)] - #[doc = "See [`Pallet::remove_recovery`]."] + #[doc = "Remove the recovery process for your account. Recovered accounts are still accessible."] + #[doc = ""] + #[doc = "NOTE: The user must make sure to call `close_recovery` on all active"] + #[doc = "recovery attempts before calling this function else it will fail."] + #[doc = ""] + #[doc = "Payment: By calling this function the recoverable account will unreserve"] + #[doc = "their recovery configuration deposit."] + #[doc = "(`ConfigDepositBase` + `FriendDepositFactor` * #_of_friends)"] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a"] + #[doc = "recoverable account (i.e. has a recovery configuration)."] remove_recovery, #[codec(index = 8)] - #[doc = "See [`Pallet::cancel_recovered`]."] + #[doc = "Cancel the ability to use `as_recovered` for `account`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and registered to"] + #[doc = "be able to make calls on behalf of the recovered account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The recovered account you are able to call on-behalf-of."] cancel_recovered { account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, @@ -47304,7 +52820,15 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::submit`]."] + #[doc = "Propose a referendum on a privileged action."] + #[doc = ""] + #[doc = "- `origin`: must be `SubmitOrigin` and the account must have `SubmissionDeposit` funds"] + #[doc = " available."] + #[doc = "- `proposal_origin`: The origin from which the proposal should be executed."] + #[doc = "- `proposal`: The proposal."] + #[doc = "- `enactment_moment`: The moment that the proposal should be enacted."] + #[doc = ""] + #[doc = "Emits `Submitted`."] submit { proposal_origin: ::std::boxed::Box, @@ -47318,28 +52842,74 @@ pub mod api { >, }, #[codec(index = 1)] - #[doc = "See [`Pallet::place_decision_deposit`]."] + #[doc = "Post the Decision Deposit for a referendum."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` and the account must have funds available for the"] + #[doc = " referendum's track's Decision Deposit."] + #[doc = "- `index`: The index of the submitted referendum whose Decision Deposit is yet to be"] + #[doc = " posted."] + #[doc = ""] + #[doc = "Emits `DecisionDepositPlaced`."] place_decision_deposit { index: ::core::primitive::u32 }, #[codec(index = 2)] - #[doc = "See [`Pallet::refund_decision_deposit`]."] + #[doc = "Refund the Decision Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Decision Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `DecisionDepositRefunded`."] refund_decision_deposit { index: ::core::primitive::u32 }, #[codec(index = 3)] - #[doc = "See [`Pallet::cancel`]."] + #[doc = "Cancel an ongoing referendum."] + #[doc = ""] + #[doc = "- `origin`: must be the `CancelOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Cancelled`."] cancel { index: ::core::primitive::u32 }, #[codec(index = 4)] - #[doc = "See [`Pallet::kill`]."] + #[doc = "Cancel an ongoing referendum and slash the deposits."] + #[doc = ""] + #[doc = "- `origin`: must be the `KillOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Killed` and `DepositSlashed`."] kill { index: ::core::primitive::u32 }, #[codec(index = 5)] - #[doc = "See [`Pallet::nudge_referendum`]."] + #[doc = "Advance a referendum onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `index`: the referendum to be advanced."] nudge_referendum { index: ::core::primitive::u32 }, #[codec(index = 6)] - #[doc = "See [`Pallet::one_fewer_deciding`]."] + #[doc = "Advance a track onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `track`: the track to be advanced."] + #[doc = ""] + #[doc = "Action item for when there is now one fewer referendum in the deciding phase and the"] + #[doc = "`DecidingCount` is not yet updated. This means that we should either:"] + #[doc = "- begin deciding another referendum (and leave `DecidingCount` alone); or"] + #[doc = "- decrement `DecidingCount`."] one_fewer_deciding { track: ::core::primitive::u16 }, #[codec(index = 7)] - #[doc = "See [`Pallet::refund_submission_deposit`]."] + #[doc = "Refund the Submission Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Submission Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `SubmissionDepositRefunded`."] refund_submission_deposit { index: ::core::primitive::u32 }, #[codec(index = 8)] - #[doc = "See [`Pallet::set_metadata`]."] + #[doc = "Set or clear metadata of a referendum."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: Must be `Signed` by a creator of a referendum or by anyone to clear a"] + #[doc = " metadata of a finished referendum."] + #[doc = "- `index`: The index of a referendum to set or clear metadata for."] + #[doc = "- `maybe_hash`: The hash of an on-chain stored preimage. `None` to clear a metadata."] set_metadata { index: ::core::primitive::u32, maybe_hash: ::core::option::Option<::subxt::utils::H256>, @@ -47358,7 +52928,15 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call2 { #[codec(index = 0)] - #[doc = "See [`Pallet::submit`]."] + #[doc = "Propose a referendum on a privileged action."] + #[doc = ""] + #[doc = "- `origin`: must be `SubmitOrigin` and the account must have `SubmissionDeposit` funds"] + #[doc = " available."] + #[doc = "- `proposal_origin`: The origin from which the proposal should be executed."] + #[doc = "- `proposal`: The proposal."] + #[doc = "- `enactment_moment`: The moment that the proposal should be enacted."] + #[doc = ""] + #[doc = "Emits `Submitted`."] submit { proposal_origin: ::std::boxed::Box, @@ -47372,28 +52950,74 @@ pub mod api { >, }, #[codec(index = 1)] - #[doc = "See [`Pallet::place_decision_deposit`]."] + #[doc = "Post the Decision Deposit for a referendum."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` and the account must have funds available for the"] + #[doc = " referendum's track's Decision Deposit."] + #[doc = "- `index`: The index of the submitted referendum whose Decision Deposit is yet to be"] + #[doc = " posted."] + #[doc = ""] + #[doc = "Emits `DecisionDepositPlaced`."] place_decision_deposit { index: ::core::primitive::u32 }, #[codec(index = 2)] - #[doc = "See [`Pallet::refund_decision_deposit`]."] + #[doc = "Refund the Decision Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Decision Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `DecisionDepositRefunded`."] refund_decision_deposit { index: ::core::primitive::u32 }, #[codec(index = 3)] - #[doc = "See [`Pallet::cancel`]."] + #[doc = "Cancel an ongoing referendum."] + #[doc = ""] + #[doc = "- `origin`: must be the `CancelOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Cancelled`."] cancel { index: ::core::primitive::u32 }, #[codec(index = 4)] - #[doc = "See [`Pallet::kill`]."] + #[doc = "Cancel an ongoing referendum and slash the deposits."] + #[doc = ""] + #[doc = "- `origin`: must be the `KillOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Killed` and `DepositSlashed`."] kill { index: ::core::primitive::u32 }, #[codec(index = 5)] - #[doc = "See [`Pallet::nudge_referendum`]."] + #[doc = "Advance a referendum onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `index`: the referendum to be advanced."] nudge_referendum { index: ::core::primitive::u32 }, #[codec(index = 6)] - #[doc = "See [`Pallet::one_fewer_deciding`]."] + #[doc = "Advance a track onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `track`: the track to be advanced."] + #[doc = ""] + #[doc = "Action item for when there is now one fewer referendum in the deciding phase and the"] + #[doc = "`DecidingCount` is not yet updated. This means that we should either:"] + #[doc = "- begin deciding another referendum (and leave `DecidingCount` alone); or"] + #[doc = "- decrement `DecidingCount`."] one_fewer_deciding { track: ::core::primitive::u16 }, #[codec(index = 7)] - #[doc = "See [`Pallet::refund_submission_deposit`]."] + #[doc = "Refund the Submission Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Submission Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `SubmissionDepositRefunded`."] refund_submission_deposit { index: ::core::primitive::u32 }, #[codec(index = 8)] - #[doc = "See [`Pallet::set_metadata`]."] + #[doc = "Set or clear metadata of a referendum."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: Must be `Signed` by a creator of a referendum or by anyone to clear a"] + #[doc = " metadata of a finished referendum."] + #[doc = "- `index`: The index of a referendum to set or clear metadata for."] + #[doc = "- `maybe_hash`: The hash of an on-chain stored preimage. `None` to clear a metadata."] set_metadata { index: ::core::primitive::u32, maybe_hash: ::core::option::Option<::subxt::utils::H256>, @@ -47931,12 +53555,11 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See `Pallet::fill_block`."] + #[doc = "A dispatch that will fill the block weight up to the given ratio."] fill_block { ratio: runtime_types::sp_arithmetic::per_things::Perbill, }, #[codec(index = 1)] - #[doc = "See `Pallet::trigger_defensive`."] trigger_defensive, } #[derive( @@ -47974,7 +53597,7 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::schedule`]."] + #[doc = "Anonymously schedule a task."] schedule { when: ::core::primitive::u32, maybe_periodic: ::core::option::Option<( @@ -47985,13 +53608,13 @@ pub mod api { call: ::std::boxed::Box, }, #[codec(index = 1)] - #[doc = "See [`Pallet::cancel`]."] + #[doc = "Cancel an anonymously scheduled task."] cancel { when: ::core::primitive::u32, index: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "See [`Pallet::schedule_named`]."] + #[doc = "Schedule a named task."] schedule_named { id: [::core::primitive::u8; 32usize], when: ::core::primitive::u32, @@ -48003,12 +53626,12 @@ pub mod api { call: ::std::boxed::Box, }, #[codec(index = 3)] - #[doc = "See [`Pallet::cancel_named`]."] + #[doc = "Cancel a named scheduled task."] cancel_named { id: [::core::primitive::u8; 32usize], }, #[codec(index = 4)] - #[doc = "See [`Pallet::schedule_after`]."] + #[doc = "Anonymously schedule a task after a delay."] schedule_after { after: ::core::primitive::u32, maybe_periodic: ::core::option::Option<( @@ -48019,7 +53642,7 @@ pub mod api { call: ::std::boxed::Box, }, #[codec(index = 5)] - #[doc = "See [`Pallet::schedule_named_after`]."] + #[doc = "Schedule a named task after a delay."] schedule_named_after { id: [::core::primitive::u8; 32usize], after: ::core::primitive::u32, @@ -48031,26 +53654,48 @@ pub mod api { call: ::std::boxed::Box, }, #[codec(index = 6)] - #[doc = "See [`Pallet::set_retry`]."] + #[doc = "Set a retry configuration for a task so that, in case its scheduled run fails, it will"] + #[doc = "be retried after `period` blocks, for a total amount of `retries` retries or until it"] + #[doc = "succeeds."] + #[doc = ""] + #[doc = "Tasks which need to be scheduled for a retry are still subject to weight metering and"] + #[doc = "agenda space, same as a regular task. If a periodic task fails, it will be scheduled"] + #[doc = "normally while the task is retrying."] + #[doc = ""] + #[doc = "Tasks scheduled as a result of a retry for a periodic task are unnamed, non-periodic"] + #[doc = "clones of the original task. Their retry configuration will be derived from the"] + #[doc = "original task's configuration, but will have a lower value for `remaining` than the"] + #[doc = "original `total_retries`."] set_retry { task: (::core::primitive::u32, ::core::primitive::u32), retries: ::core::primitive::u8, period: ::core::primitive::u32, }, #[codec(index = 7)] - #[doc = "See [`Pallet::set_retry_named`]."] + #[doc = "Set a retry configuration for a named task so that, in case its scheduled run fails, it"] + #[doc = "will be retried after `period` blocks, for a total amount of `retries` retries or until"] + #[doc = "it succeeds."] + #[doc = ""] + #[doc = "Tasks which need to be scheduled for a retry are still subject to weight metering and"] + #[doc = "agenda space, same as a regular task. If a periodic task fails, it will be scheduled"] + #[doc = "normally while the task is retrying."] + #[doc = ""] + #[doc = "Tasks scheduled as a result of a retry for a periodic task are unnamed, non-periodic"] + #[doc = "clones of the original task. Their retry configuration will be derived from the"] + #[doc = "original task's configuration, but will have a lower value for `remaining` than the"] + #[doc = "original `total_retries`."] set_retry_named { id: [::core::primitive::u8; 32usize], retries: ::core::primitive::u8, period: ::core::primitive::u32, }, #[codec(index = 8)] - #[doc = "See [`Pallet::cancel_retry`]."] + #[doc = "Removes the retry configuration of a task."] cancel_retry { task: (::core::primitive::u32, ::core::primitive::u32), }, #[codec(index = 9)] - #[doc = "See [`Pallet::cancel_retry_named`]."] + #[doc = "Cancel the retry configuration of a named task."] cancel_retry_named { id: [::core::primitive::u8; 32usize], }, @@ -48208,13 +53853,32 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::set_keys`]."] + #[doc = "Sets the session key(s) of the function caller to `keys`."] + #[doc = "Allows an account to set its session key prior to becoming a validator."] + #[doc = "This doesn't take effect until the next session."] + #[doc = ""] + #[doc = "The dispatch origin of this function must be signed."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`. Actual cost depends on the number of length of `T::Keys::key_ids()` which is"] + #[doc = " fixed."] set_keys { keys: runtime_types::rococo_runtime::SessionKeys, proof: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 1)] - #[doc = "See [`Pallet::purge_keys`]."] + #[doc = "Removes any session key(s) of the function caller."] + #[doc = ""] + #[doc = "This doesn't take effect until the next session."] + #[doc = ""] + #[doc = "The dispatch origin of this function must be Signed and the account must be either be"] + #[doc = "convertible to a validator ID using the chain's typical addressing system (this usually"] + #[doc = "means being a controller account) or directly convertible into a validator ID (which"] + #[doc = "usually means being a stash account)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)` in number of key types. Actual cost depends on the number of length of"] + #[doc = " `T::Keys::key_ids()` which is fixed."] purge_keys, } #[derive( @@ -48283,38 +53947,113 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::bid`]."] + #[doc = "A user outside of the society can make a bid for entry."] + #[doc = ""] + #[doc = "Payment: The group's Candidate Deposit will be reserved for making a bid. It is returned"] + #[doc = "when the bid becomes a member, or if the bid calls `unbid`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `value`: A one time payment the bid would like to receive when joining the society."] bid { value: ::core::primitive::u128 }, #[codec(index = 1)] - #[doc = "See [`Pallet::unbid`]."] + #[doc = "A bidder can remove their bid for entry into society."] + #[doc = "By doing so, they will have their candidate deposit returned or"] + #[doc = "they will unvouch their voucher."] + #[doc = ""] + #[doc = "Payment: The bid deposit is unreserved if the user made a bid."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a bidder."] unbid, #[codec(index = 2)] - #[doc = "See [`Pallet::vouch`]."] + #[doc = "As a member, vouch for someone to join society by placing a bid on their behalf."] + #[doc = ""] + #[doc = "There is no deposit required to vouch for a new bid, but a member can only vouch for"] + #[doc = "one bid at a time. If the bid becomes a suspended candidate and ultimately rejected by"] + #[doc = "the suspension judgement origin, the member will be banned from vouching again."] + #[doc = ""] + #[doc = "As a vouching member, you can claim a tip if the candidate is accepted. This tip will"] + #[doc = "be paid as a portion of the reward the member will receive for joining the society."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `who`: The user who you would like to vouch for."] + #[doc = "- `value`: The total reward to be paid between you and the candidate if they become"] + #[doc = "a member in the society."] + #[doc = "- `tip`: Your cut of the total `value` payout when the candidate is inducted into"] + #[doc = "the society. Tips larger than `value` will be saturated upon payout."] vouch { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, value: ::core::primitive::u128, tip: ::core::primitive::u128, }, #[codec(index = 3)] - #[doc = "See [`Pallet::unvouch`]."] + #[doc = "As a vouching member, unvouch a bid. This only works while vouched user is"] + #[doc = "only a bidder (and not a candidate)."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a vouching member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `pos`: Position in the `Bids` vector of the bid who should be unvouched."] unvouch, #[codec(index = 4)] - #[doc = "See [`Pallet::vote`]."] + #[doc = "As a member, vote on a candidate."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `candidate`: The candidate that the member would like to bid on."] + #[doc = "- `approve`: A boolean which says if the candidate should be approved (`true`) or"] + #[doc = " rejected (`false`)."] vote { candidate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, approve: ::core::primitive::bool, }, #[codec(index = 5)] - #[doc = "See [`Pallet::defender_vote`]."] + #[doc = "As a member, vote on the defender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `approve`: A boolean which says if the candidate should be"] + #[doc = "approved (`true`) or rejected (`false`)."] defender_vote { approve: ::core::primitive::bool }, #[codec(index = 6)] - #[doc = "See [`Pallet::payout`]."] + #[doc = "Transfer the first matured payout for the sender and remove it from the records."] + #[doc = ""] + #[doc = "NOTE: This extrinsic needs to be called multiple times to claim multiple matured"] + #[doc = "payouts."] + #[doc = ""] + #[doc = "Payment: The member will receive a payment equal to their first matured"] + #[doc = "payout to their free balance."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member with"] + #[doc = "payouts remaining."] payout, #[codec(index = 7)] - #[doc = "See [`Pallet::waive_repay`]."] + #[doc = "Repay the payment previously given to the member with the signed origin, remove any"] + #[doc = "pending payments, and elevate them from rank 0 to rank 1."] waive_repay { amount: ::core::primitive::u128 }, #[codec(index = 8)] - #[doc = "See [`Pallet::found_society`]."] + #[doc = "Found the society."] + #[doc = ""] + #[doc = "This is done as a discrete action in order to allow for the"] + #[doc = "pallet to be included into a running chain and can only be done once."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be from the _FounderSetOrigin_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `founder` - The first member and head of the newly founded society."] + #[doc = "- `max_members` - The initial max number of members for the society."] + #[doc = "- `max_intake` - The maximum number of candidates per intake period."] + #[doc = "- `max_strikes`: The maximum number of strikes a member may get before they become"] + #[doc = " suspended and may only be reinstated by the founder."] + #[doc = "- `candidate_deposit`: The deposit required to make a bid for membership of the group."] + #[doc = "- `rules` - The rules of this society concerning membership."] + #[doc = ""] + #[doc = "Complexity: O(1)"] found_society { founder: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, max_members: ::core::primitive::u32, @@ -48324,16 +54063,44 @@ pub mod api { rules: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 9)] - #[doc = "See [`Pallet::dissolve`]."] + #[doc = "Dissolve the society and remove all members."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be Signed, and the signing account must be both"] + #[doc = "the `Founder` and the `Head`. This implies that it may only be done when there is one"] + #[doc = "member."] dissolve, #[codec(index = 10)] - #[doc = "See [`Pallet::judge_suspended_member`]."] + #[doc = "Allow suspension judgement origin to make judgement on a suspended member."] + #[doc = ""] + #[doc = "If a suspended member is forgiven, we simply add them back as a member, not affecting"] + #[doc = "any of the existing storage items for that member."] + #[doc = ""] + #[doc = "If a suspended member is rejected, remove all associated storage items, including"] + #[doc = "their payouts, and remove any vouched bids they currently have."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be Signed from the Founder."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `who` - The suspended member to be judged."] + #[doc = "- `forgive` - A boolean representing whether the suspension judgement origin forgives"] + #[doc = " (`true`) or rejects (`false`) a suspended member."] judge_suspended_member { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, forgive: ::core::primitive::bool, }, #[codec(index = 11)] - #[doc = "See [`Pallet::set_parameters`]."] + #[doc = "Change the maximum number of members in society and the maximum number of new candidates"] + #[doc = "in a single intake period."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be Signed by the Founder."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `max_members` - The maximum number of members for the society. This must be no less"] + #[doc = " than the current number of members."] + #[doc = "- `max_intake` - The maximum number of candidates per intake period."] + #[doc = "- `max_strikes`: The maximum number of strikes a member may get before they become"] + #[doc = " suspended and may only be reinstated by the founder."] + #[doc = "- `candidate_deposit`: The deposit required to make a bid for membership of the group."] set_parameters { max_members: ::core::primitive::u32, max_intake: ::core::primitive::u32, @@ -48341,37 +54108,55 @@ pub mod api { candidate_deposit: ::core::primitive::u128, }, #[codec(index = 12)] - #[doc = "See [`Pallet::punish_skeptic`]."] + #[doc = "Punish the skeptic with a strike if they did not vote on a candidate. Callable by the"] + #[doc = "candidate."] punish_skeptic, #[codec(index = 13)] - #[doc = "See [`Pallet::claim_membership`]."] + #[doc = "Transform an approved candidate into a member. Callable only by the"] + #[doc = "the candidate, and only after the period for voting has ended."] claim_membership, #[codec(index = 14)] - #[doc = "See [`Pallet::bestow_membership`]."] + #[doc = "Transform an approved candidate into a member. Callable only by the Signed origin of the"] + #[doc = "Founder, only after the period for voting has ended and only when the candidate is not"] + #[doc = "clearly rejected."] bestow_membership { candidate: ::subxt::utils::AccountId32, }, #[codec(index = 15)] - #[doc = "See [`Pallet::kick_candidate`]."] + #[doc = "Remove the candidate's application from the society. Callable only by the Signed origin"] + #[doc = "of the Founder, only after the period for voting has ended, and only when they do not"] + #[doc = "have a clear approval."] + #[doc = ""] + #[doc = "Any bid deposit is lost and voucher is banned."] kick_candidate { candidate: ::subxt::utils::AccountId32, }, #[codec(index = 16)] - #[doc = "See [`Pallet::resign_candidacy`]."] + #[doc = "Remove the candidate's application from the society. Callable only by the candidate."] + #[doc = ""] + #[doc = "Any bid deposit is lost and voucher is banned."] resign_candidacy, #[codec(index = 17)] - #[doc = "See [`Pallet::drop_candidate`]."] + #[doc = "Remove a `candidate`'s failed application from the society. Callable by any"] + #[doc = "signed origin but only at the end of the subsequent round and only for"] + #[doc = "a candidate with more rejections than approvals."] + #[doc = ""] + #[doc = "The bid deposit is lost and the voucher is banned."] drop_candidate { candidate: ::subxt::utils::AccountId32, }, #[codec(index = 18)] - #[doc = "See [`Pallet::cleanup_candidacy`]."] + #[doc = "Remove up to `max` stale votes for the given `candidate`."] + #[doc = ""] + #[doc = "May be called by any Signed origin, but only after the candidate's candidacy is ended."] cleanup_candidacy { candidate: ::subxt::utils::AccountId32, max: ::core::primitive::u32, }, #[codec(index = 19)] - #[doc = "See [`Pallet::cleanup_challenge`]."] + #[doc = "Remove up to `max` stale votes for the defender in the given `challenge_round`."] + #[doc = ""] + #[doc = "May be called by any Signed origin, but only after the challenge round is ended."] cleanup_challenge { challenge_round: ::core::primitive::u32, max: ::core::primitive::u32, @@ -48762,14 +54547,36 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::control_auto_migration`]."] + #[doc = "Control the automatic migration."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be [`Config::ControlOrigin`]."] control_auto_migration { maybe_config: ::core::option::Option< runtime_types::pallet_state_trie_migration::pallet::MigrationLimits, >, }, #[codec(index = 1)] - #[doc = "See [`Pallet::continue_migrate`]."] + #[doc = "Continue the migration for the given `limits`."] + #[doc = ""] + #[doc = "The dispatch origin of this call can be any signed account."] + #[doc = ""] + #[doc = "This transaction has NO MONETARY INCENTIVES. calling it will not reward anyone. Albeit,"] + #[doc = "Upon successful execution, the transaction fee is returned."] + #[doc = ""] + #[doc = "The (potentially over-estimated) of the byte length of all the data read must be"] + #[doc = "provided for up-front fee-payment and weighing. In essence, the caller is guaranteeing"] + #[doc = "that executing the current `MigrationTask` with the given `limits` will not exceed"] + #[doc = "`real_size_upper` bytes of read data."] + #[doc = ""] + #[doc = "The `witness_task` is merely a helper to prevent the caller from being slashed or"] + #[doc = "generally trigger a migration that they do not intend. This parameter is just a message"] + #[doc = "from caller, saying that they believed `witness_task` was the last state of the"] + #[doc = "migration, and they only wish for their transaction to do anything, if this assumption"] + #[doc = "holds. In case `witness_task` does not match, the transaction fails."] + #[doc = ""] + #[doc = "Based on the documentation of [`MigrationTask::migrate_until_exhaustion`], the"] + #[doc = "recommended way of doing this is to pass a `limit` that only bounds `count`, as the"] + #[doc = "`size` limit can always be overwritten."] continue_migrate { limits: runtime_types::pallet_state_trie_migration::pallet::MigrationLimits, real_size_upper: ::core::primitive::u32, @@ -48777,25 +54584,41 @@ pub mod api { runtime_types::pallet_state_trie_migration::pallet::MigrationTask, }, #[codec(index = 2)] - #[doc = "See [`Pallet::migrate_custom_top`]."] + #[doc = "Migrate the list of top keys by iterating each of them one by one."] + #[doc = ""] + #[doc = "This does not affect the global migration process tracker ([`MigrationProcess`]), and"] + #[doc = "should only be used in case any keys are leftover due to a bug."] migrate_custom_top { keys: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, witness_size: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "See [`Pallet::migrate_custom_child`]."] + #[doc = "Migrate the list of child keys by iterating each of them one by one."] + #[doc = ""] + #[doc = "All of the given child keys must be present under one `child_root`."] + #[doc = ""] + #[doc = "This does not affect the global migration process tracker ([`MigrationProcess`]), and"] + #[doc = "should only be used in case any keys are leftover due to a bug."] migrate_custom_child { root: ::std::vec::Vec<::core::primitive::u8>, child_keys: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, total_size: ::core::primitive::u32, }, #[codec(index = 4)] - #[doc = "See [`Pallet::set_signed_max_limits`]."] + #[doc = "Set the maximum limit of the signed migration."] set_signed_max_limits { limits: runtime_types::pallet_state_trie_migration::pallet::MigrationLimits, }, #[codec(index = 5)] - #[doc = "See [`Pallet::force_set_progress`]."] + #[doc = "Forcefully set the progress the running migration."] + #[doc = ""] + #[doc = "This is only useful in one case: the next key to migrate is too big to be migrated with"] + #[doc = "a signed account, in a parachain context, and we simply want to skip it. A reasonable"] + #[doc = "example of this would be `:code:`, which is both very expensive to migrate, and commonly"] + #[doc = "used, so probably it is already migrated."] + #[doc = ""] + #[doc = "In case you mess things up, you can also, in principle, use this to reset the migration"] + #[doc = "process."] force_set_progress { progress_top: runtime_types::pallet_state_trie_migration::pallet::Progress, progress_child: @@ -48978,29 +54801,39 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::sudo`]."] + #[doc = "Authenticates the sudo key and dispatches a function call with `Root` origin."] sudo { call: ::std::boxed::Box, }, #[codec(index = 1)] - #[doc = "See [`Pallet::sudo_unchecked_weight`]."] + #[doc = "Authenticates the sudo key and dispatches a function call with `Root` origin."] + #[doc = "This function does not check the weight of the call, and instead allows the"] + #[doc = "Sudo user to specify the weight of the call."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] sudo_unchecked_weight { call: ::std::boxed::Box, weight: runtime_types::sp_weights::weight_v2::Weight, }, #[codec(index = 2)] - #[doc = "See [`Pallet::set_key`]."] + #[doc = "Authenticates the current sudo key and sets the given AccountId (`new`) as the new sudo"] + #[doc = "key."] set_key { new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 3)] - #[doc = "See [`Pallet::sudo_as`]."] + #[doc = "Authenticates the sudo key and dispatches a function call with `Signed` origin from"] + #[doc = "a given account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] sudo_as { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, call: ::std::boxed::Box, }, #[codec(index = 4)] - #[doc = "See [`Pallet::remove_key`]."] + #[doc = "Permanently removes the sudo key."] + #[doc = ""] + #[doc = "**This cannot be un-done.**"] remove_key, } #[derive( @@ -49072,7 +54905,25 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::set`]."] + #[doc = "Set the current time."] + #[doc = ""] + #[doc = "This call should be invoked exactly once per block. It will panic at the finalization"] + #[doc = "phase, if this call hasn't been invoked by that time."] + #[doc = ""] + #[doc = "The timestamp should be greater than the previous one by the amount specified by"] + #[doc = "[`Config::MinimumPeriod`]."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _None_."] + #[doc = ""] + #[doc = "This dispatch class is _Mandatory_ to ensure it gets executed in the block. Be aware"] + #[doc = "that changing the complexity of this call could result exhausting the resources in a"] + #[doc = "block to execute any other calls."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)` (Note that implementations of `OnTimestampSet` must also be `O(1)`)"] + #[doc = "- 1 storage read and 1 storage mutation (codec `O(1)` because of `DidUpdate::take` in"] + #[doc = " `on_finalize`)"] + #[doc = "- 1 event handler `on_timestamp_set`. Must be `O(1)`."] set { #[codec(compact)] now: ::core::primitive::u64, @@ -49200,39 +55051,145 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::propose_spend`]."] + #[doc = "Put forward a suggestion for spending."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be signed."] + #[doc = ""] + #[doc = "## Details"] + #[doc = "A deposit proportional to the value is reserved and slashed if the proposal is rejected."] + #[doc = "It is returned once the proposal is awarded."] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = "- O(1)"] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::Proposed`] if successful."] propose_spend { #[codec(compact)] value: ::core::primitive::u128, beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 1)] - #[doc = "See [`Pallet::reject_proposal`]."] + #[doc = "Reject a proposed spend."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::RejectOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = "The original deposit will be slashed."] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = "- O(1)"] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::Rejected`] if successful."] reject_proposal { #[codec(compact)] proposal_id: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "See [`Pallet::approve_proposal`]."] + #[doc = "Approve a proposal."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::ApproveOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "At a later time, the proposal will be allocated to the beneficiary and the original"] + #[doc = "deposit will be returned."] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = " - O(1)."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "No events are emitted from this dispatch."] approve_proposal { #[codec(compact)] proposal_id: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "See [`Pallet::spend_local`]."] + #[doc = "Propose and approve a spend of treasury funds."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::SpendOrigin`] with the `Success` value being at least `amount`."] + #[doc = ""] + #[doc = "### Details"] + #[doc = "NOTE: For record-keeping purposes, the proposer is deemed to be equivalent to the"] + #[doc = "beneficiary."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `amount`: The amount to be transferred from the treasury to the `beneficiary`."] + #[doc = "- `beneficiary`: The destination account for the transfer."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::SpendApproved`] if successful."] spend_local { #[codec(compact)] amount: ::core::primitive::u128, beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 4)] - #[doc = "See [`Pallet::remove_approval`]."] + #[doc = "Force a previously approved proposal to be removed from the approval queue."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::RejectOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "The original deposit will no longer be returned."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `proposal_id`: The index of a proposal"] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = "- O(A) where `A` is the number of approvals"] + #[doc = ""] + #[doc = "### Errors"] + #[doc = "- [`Error::ProposalNotApproved`]: The `proposal_id` supplied was not found in the"] + #[doc = " approval queue, i.e., the proposal has not been approved. This could also mean the"] + #[doc = " proposal does not exist altogether, thus there is no way it would have been approved"] + #[doc = " in the first place."] remove_approval { #[codec(compact)] proposal_id: ::core::primitive::u32, }, #[codec(index = 5)] - #[doc = "See [`Pallet::spend`]."] + #[doc = "Propose and approve a spend of treasury funds."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::SpendOrigin`] with the `Success` value being at least"] + #[doc = "`amount` of `asset_kind` in the native asset. The amount of `asset_kind` is converted"] + #[doc = "for assertion using the [`Config::BalanceConverter`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "Create an approved spend for transferring a specific `amount` of `asset_kind` to a"] + #[doc = "designated beneficiary. The spend must be claimed using the `payout` dispatchable within"] + #[doc = "the [`Config::PayoutPeriod`]."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `asset_kind`: An indicator of the specific asset class to be spent."] + #[doc = "- `amount`: The amount to be transferred from the treasury to the `beneficiary`."] + #[doc = "- `beneficiary`: The beneficiary of the spend."] + #[doc = "- `valid_from`: The block number from which the spend can be claimed. It can refer to"] + #[doc = " the past if the resulting spend has not yet expired according to the"] + #[doc = " [`Config::PayoutPeriod`]. If `None`, the spend can be claimed immediately after"] + #[doc = " approval."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::AssetSpendApproved`] if successful."] spend { asset_kind: ::std::boxed::Box< runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, @@ -49243,13 +55200,64 @@ pub mod api { valid_from: ::core::option::Option<::core::primitive::u32>, }, #[codec(index = 6)] - #[doc = "See [`Pallet::payout`]."] + #[doc = "Claim a spend."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be signed."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "Spends must be claimed within some temporal bounds. A spend may be claimed within one"] + #[doc = "[`Config::PayoutPeriod`] from the `valid_from` block."] + #[doc = "In case of a payout failure, the spend status must be updated with the `check_status`"] + #[doc = "dispatchable before retrying with the current function."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `index`: The spend index."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::Paid`] if successful."] payout { index: ::core::primitive::u32 }, #[codec(index = 7)] - #[doc = "See [`Pallet::check_status`]."] + #[doc = "Check the status of the spend and remove it from the storage if processed."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be signed."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "The status check is a prerequisite for retrying a failed payout."] + #[doc = "If a spend has either succeeded or expired, it is removed from the storage by this"] + #[doc = "function. In such instances, transaction fees are refunded."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `index`: The spend index."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::PaymentFailed`] if the spend payout has failed."] + #[doc = "Emits [`Event::SpendProcessed`] if the spend payout has succeed."] check_status { index: ::core::primitive::u32 }, #[codec(index = 8)] - #[doc = "See [`Pallet::void_spend`]."] + #[doc = "Void previously approved spend."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::RejectOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "A spend void is only possible if the payout has not been attempted yet."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `index`: The spend index."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::AssetSpendVoided`] if successful."] void_spend { index: ::core::primitive::u32 }, } #[derive( @@ -49465,34 +55473,97 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::batch`]."] + #[doc = "Send a batch of dispatch calls."] + #[doc = ""] + #[doc = "May be called from any origin except `None`."] + #[doc = ""] + #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] + #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] + #[doc = ""] + #[doc = "If origin is root then the calls are dispatched without checking origin filter. (This"] + #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(C) where C is the number of calls to be batched."] + #[doc = ""] + #[doc = "This will return `Ok` in all circumstances. To determine the success of the batch, an"] + #[doc = "event is deposited. If a call failed and the batch was interrupted, then the"] + #[doc = "`BatchInterrupted` event is deposited, along with the number of successful calls made"] + #[doc = "and the error of the failed call. If all were successful, then the `BatchCompleted`"] + #[doc = "event is deposited."] batch { calls: ::std::vec::Vec, }, #[codec(index = 1)] - #[doc = "See [`Pallet::as_derivative`]."] + #[doc = "Send a call through an indexed pseudonym of the sender."] + #[doc = ""] + #[doc = "Filter from origin are passed along. The call will be dispatched with an origin which"] + #[doc = "use the same filter as the origin of this call."] + #[doc = ""] + #[doc = "NOTE: If you need to ensure that any account-based filtering is not honored (i.e."] + #[doc = "because you expect `proxy` to have been used prior in the call stack and you do not want"] + #[doc = "the call restrictions to apply to any sub-accounts), then use `as_multi_threshold_1`"] + #[doc = "in the Multisig pallet instead."] + #[doc = ""] + #[doc = "NOTE: Prior to version *12, this was called `as_limited_sub`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] as_derivative { index: ::core::primitive::u16, call: ::std::boxed::Box, }, #[codec(index = 2)] - #[doc = "See [`Pallet::batch_all`]."] + #[doc = "Send a batch of dispatch calls and atomically execute them."] + #[doc = "The whole transaction will rollback and fail if any of the calls failed."] + #[doc = ""] + #[doc = "May be called from any origin except `None`."] + #[doc = ""] + #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] + #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] + #[doc = ""] + #[doc = "If origin is root then the calls are dispatched without checking origin filter. (This"] + #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(C) where C is the number of calls to be batched."] batch_all { calls: ::std::vec::Vec, }, #[codec(index = 3)] - #[doc = "See [`Pallet::dispatch_as`]."] + #[doc = "Dispatches a function call with a provided origin."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] dispatch_as { as_origin: ::std::boxed::Box, call: ::std::boxed::Box, }, #[codec(index = 4)] - #[doc = "See [`Pallet::force_batch`]."] + #[doc = "Send a batch of dispatch calls."] + #[doc = "Unlike `batch`, it allows errors and won't interrupt."] + #[doc = ""] + #[doc = "May be called from any origin except `None`."] + #[doc = ""] + #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] + #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] + #[doc = ""] + #[doc = "If origin is root then the calls are dispatch without checking origin filter. (This"] + #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(C) where C is the number of calls to be batched."] force_batch { calls: ::std::vec::Vec, }, #[codec(index = 5)] - #[doc = "See [`Pallet::with_weight`]."] + #[doc = "Dispatch a function call with a specified weight."] + #[doc = ""] + #[doc = "This function does not check the weight of the call, and instead allows the"] + #[doc = "Root origin to specify the weight of the call."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] with_weight { call: ::std::boxed::Box, weight: runtime_types::sp_weights::weight_v2::Weight, @@ -49573,15 +55644,45 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::vest`]."] + #[doc = "Unlock any vested funds of the sender account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have funds still"] + #[doc = "locked under this pallet."] + #[doc = ""] + #[doc = "Emits either `VestingCompleted` or `VestingUpdated`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] vest, #[codec(index = 1)] - #[doc = "See [`Pallet::vest_other`]."] + #[doc = "Unlock any vested funds of a `target` account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `target`: The account whose vested funds should be unlocked. Must have funds still"] + #[doc = "locked under this pallet."] + #[doc = ""] + #[doc = "Emits either `VestingCompleted` or `VestingUpdated`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] vest_other { target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 2)] - #[doc = "See [`Pallet::vested_transfer`]."] + #[doc = "Create a vested transfer."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `target`: The account receiving the vested funds."] + #[doc = "- `schedule`: The vesting schedule attached to the transfer."] + #[doc = ""] + #[doc = "Emits `VestingCreated`."] + #[doc = ""] + #[doc = "NOTE: This will unlock all schedules through the current block."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] vested_transfer { target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, schedule: runtime_types::pallet_vesting::vesting_info::VestingInfo< @@ -49590,7 +55691,20 @@ pub mod api { >, }, #[codec(index = 3)] - #[doc = "See [`Pallet::force_vested_transfer`]."] + #[doc = "Force a vested transfer."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "- `source`: The account whose funds should be transferred."] + #[doc = "- `target`: The account that should be transferred the vested funds."] + #[doc = "- `schedule`: The vesting schedule attached to the transfer."] + #[doc = ""] + #[doc = "Emits `VestingCreated`."] + #[doc = ""] + #[doc = "NOTE: This will unlock all schedules through the current block."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] force_vested_transfer { source: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -49600,13 +55714,38 @@ pub mod api { >, }, #[codec(index = 4)] - #[doc = "See [`Pallet::merge_schedules`]."] + #[doc = "Merge two vesting schedules together, creating a new vesting schedule that unlocks over"] + #[doc = "the highest possible start and end blocks. If both schedules have already started the"] + #[doc = "current block will be used as the schedule start; with the caveat that if one schedule"] + #[doc = "is finished by the current block, the other will be treated as the new merged schedule,"] + #[doc = "unmodified."] + #[doc = ""] + #[doc = "NOTE: If `schedule1_index == schedule2_index` this is a no-op."] + #[doc = "NOTE: This will unlock all schedules through the current block prior to merging."] + #[doc = "NOTE: If both schedules have ended by the current block, no new schedule will be created"] + #[doc = "and both will be removed."] + #[doc = ""] + #[doc = "Merged schedule attributes:"] + #[doc = "- `starting_block`: `MAX(schedule1.starting_block, scheduled2.starting_block,"] + #[doc = " current_block)`."] + #[doc = "- `ending_block`: `MAX(schedule1.ending_block, schedule2.ending_block)`."] + #[doc = "- `locked`: `schedule1.locked_at(current_block) + schedule2.locked_at(current_block)`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `schedule1_index`: index of the first schedule to merge."] + #[doc = "- `schedule2_index`: index of the second schedule to merge."] merge_schedules { schedule1_index: ::core::primitive::u32, schedule2_index: ::core::primitive::u32, }, #[codec(index = 5)] - #[doc = "See [`Pallet::force_remove_vesting_schedule`]."] + #[doc = "Force remove a vesting schedule"] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "- `target`: An account that has a vesting schedule"] + #[doc = "- `schedule_index`: The vesting schedule index that should be removed"] force_remove_vesting_schedule { target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, schedule_index: ::core::primitive::u32, @@ -49719,20 +55858,16 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::whitelist_call`]."] whitelist_call { call_hash: ::subxt::utils::H256 }, #[codec(index = 1)] - #[doc = "See [`Pallet::remove_whitelisted_call`]."] remove_whitelisted_call { call_hash: ::subxt::utils::H256 }, #[codec(index = 2)] - #[doc = "See [`Pallet::dispatch_whitelisted_call`]."] dispatch_whitelisted_call { call_hash: ::subxt::utils::H256, call_encoded_len: ::core::primitive::u32, call_weight_witness: runtime_types::sp_weights::weight_v2::Weight, }, #[codec(index = 3)] - #[doc = "See [`Pallet::dispatch_whitelisted_call_with_preimage`]."] dispatch_whitelisted_call_with_preimage { call: ::std::boxed::Box, }, @@ -49811,13 +55946,29 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::send`]."] send { dest: ::std::boxed::Box, message: ::std::boxed::Box, }, #[codec(index = 1)] - #[doc = "See [`Pallet::teleport_assets`]."] + #[doc = "Teleport some assets from the local chain to some destination chain."] + #[doc = ""] + #[doc = "**This function is deprecated: Use `limited_teleport_assets` instead.**"] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,"] + #[doc = "with all fees taken as needed from the asset."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` chain."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] teleport_assets { dest: ::std::boxed::Box, beneficiary: ::std::boxed::Box, @@ -49825,7 +55976,36 @@ pub mod api { fee_asset_item: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "See [`Pallet::reserve_transfer_assets`]."] + #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] + #[doc = "destination or remote reserve."] + #[doc = ""] + #[doc = "`assets` must have same reserve location and may not be teleportable to `dest`."] + #[doc = " - `assets` have local reserve: transfer assets to sovereign account of destination"] + #[doc = " chain and forward a notification XCM to `dest` to mint and deposit reserve-based"] + #[doc = " assets to `beneficiary`."] + #[doc = " - `assets` have destination reserve: burn local assets and forward a notification to"] + #[doc = " `dest` chain to withdraw the reserve assets from this chain's sovereign account and"] + #[doc = " deposit them to `beneficiary`."] + #[doc = " - `assets` have remote reserve: burn local assets, forward XCM to reserve chain to move"] + #[doc = " reserves from this chain's SA to `dest` chain's SA, and forward another XCM to `dest`"] + #[doc = " to mint and deposit reserve-based assets to `beneficiary`."] + #[doc = ""] + #[doc = "**This function is deprecated: Use `limited_reserve_transfer_assets` instead.**"] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,"] + #[doc = "with all fees taken as needed from the asset."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` (and possibly reserve) chains."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] reserve_transfer_assets { dest: ::std::boxed::Box, beneficiary: ::std::boxed::Box, @@ -49833,35 +56013,88 @@ pub mod api { fee_asset_item: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "See [`Pallet::execute`]."] + #[doc = "Execute an XCM message from a local, signed, origin."] + #[doc = ""] + #[doc = "An event is deposited indicating whether `msg` could be executed completely or only"] + #[doc = "partially."] + #[doc = ""] + #[doc = "No more than `max_weight` will be used in its attempted execution. If this is less than"] + #[doc = "the maximum amount of weight that the message could take to be executed, then no"] + #[doc = "execution attempt will be made."] execute { message: ::std::boxed::Box, max_weight: runtime_types::sp_weights::weight_v2::Weight, }, #[codec(index = 4)] - #[doc = "See [`Pallet::force_xcm_version`]."] + #[doc = "Extoll that a particular destination can be communicated with through a particular"] + #[doc = "version of XCM."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `location`: The destination that is being described."] + #[doc = "- `xcm_version`: The latest version of XCM that `location` supports."] force_xcm_version { location: ::std::boxed::Box, version: ::core::primitive::u32, }, #[codec(index = 5)] - #[doc = "See [`Pallet::force_default_xcm_version`]."] + #[doc = "Set a safe XCM version (the version that XCM should be encoded with if the most recent"] + #[doc = "version a destination can accept is unknown)."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `maybe_xcm_version`: The default XCM encoding version, or `None` to disable."] force_default_xcm_version { maybe_xcm_version: ::core::option::Option<::core::primitive::u32>, }, #[codec(index = 6)] - #[doc = "See [`Pallet::force_subscribe_version_notify`]."] + #[doc = "Ask a location to notify us regarding their XCM version and any changes to it."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `location`: The location to which we should subscribe for XCM version notifications."] force_subscribe_version_notify { location: ::std::boxed::Box, }, #[codec(index = 7)] - #[doc = "See [`Pallet::force_unsubscribe_version_notify`]."] + #[doc = "Require that a particular destination should no longer notify us regarding any XCM"] + #[doc = "version changes."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `location`: The location to which we are currently subscribed for XCM version"] + #[doc = " notifications which we no longer desire."] force_unsubscribe_version_notify { location: ::std::boxed::Box, }, #[codec(index = 8)] - #[doc = "See [`Pallet::limited_reserve_transfer_assets`]."] + #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] + #[doc = "destination or remote reserve."] + #[doc = ""] + #[doc = "`assets` must have same reserve location and may not be teleportable to `dest`."] + #[doc = " - `assets` have local reserve: transfer assets to sovereign account of destination"] + #[doc = " chain and forward a notification XCM to `dest` to mint and deposit reserve-based"] + #[doc = " assets to `beneficiary`."] + #[doc = " - `assets` have destination reserve: burn local assets and forward a notification to"] + #[doc = " `dest` chain to withdraw the reserve assets from this chain's sovereign account and"] + #[doc = " deposit them to `beneficiary`."] + #[doc = " - `assets` have remote reserve: burn local assets, forward XCM to reserve chain to move"] + #[doc = " reserves from this chain's SA to `dest` chain's SA, and forward another XCM to `dest`"] + #[doc = " to mint and deposit reserve-based assets to `beneficiary`."] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight"] + #[doc = "is needed than `weight_limit`, then the operation will fail and the assets send may be"] + #[doc = "at risk."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` (and possibly reserve) chains."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] + #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] limited_reserve_transfer_assets { dest: ::std::boxed::Box, beneficiary: ::std::boxed::Box, @@ -49870,7 +56103,24 @@ pub mod api { weight_limit: runtime_types::xcm::v3::WeightLimit, }, #[codec(index = 9)] - #[doc = "See [`Pallet::limited_teleport_assets`]."] + #[doc = "Teleport some assets from the local chain to some destination chain."] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight"] + #[doc = "is needed than `weight_limit`, then the operation will fail and the assets send may be"] + #[doc = "at risk."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` chain."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] + #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] limited_teleport_assets { dest: ::std::boxed::Box, beneficiary: ::std::boxed::Box, @@ -49879,10 +56129,45 @@ pub mod api { weight_limit: runtime_types::xcm::v3::WeightLimit, }, #[codec(index = 10)] - #[doc = "See [`Pallet::force_suspension`]."] + #[doc = "Set or unset the global suspension state of the XCM executor."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `suspended`: `true` to suspend, `false` to resume."] force_suspension { suspended: ::core::primitive::bool }, #[codec(index = 11)] - #[doc = "See [`Pallet::transfer_assets`]."] + #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] + #[doc = "destination or remote reserve, or through teleports."] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item` (hence referred to as `fees`), up to enough to pay for"] + #[doc = "`weight_limit` of weight. If more weight is needed than `weight_limit`, then the"] + #[doc = "operation will fail and the assets sent may be at risk."] + #[doc = ""] + #[doc = "`assets` (excluding `fees`) must have same reserve location or otherwise be teleportable"] + #[doc = "to `dest`, no limitations imposed on `fees`."] + #[doc = " - for local reserve: transfer assets to sovereign account of destination chain and"] + #[doc = " forward a notification XCM to `dest` to mint and deposit reserve-based assets to"] + #[doc = " `beneficiary`."] + #[doc = " - for destination reserve: burn local assets and forward a notification to `dest` chain"] + #[doc = " to withdraw the reserve assets from this chain's sovereign account and deposit them"] + #[doc = " to `beneficiary`."] + #[doc = " - for remote reserve: burn local assets, forward XCM to reserve chain to move reserves"] + #[doc = " from this chain's SA to `dest` chain's SA, and forward another XCM to `dest` to mint"] + #[doc = " and deposit reserve-based assets to `beneficiary`."] + #[doc = " - for teleports: burn local assets and forward XCM to `dest` chain to mint/teleport"] + #[doc = " assets and deposit them to `beneficiary`."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `X2(Parent,"] + #[doc = " Parachain(..))` to send from parachain to parachain, or `X1(Parachain(..))` to send"] + #[doc = " from relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` (and possibly reserve) chains."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] + #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] transfer_assets { dest: ::std::boxed::Box, beneficiary: ::std::boxed::Box, @@ -49890,6 +56175,17 @@ pub mod api { fee_asset_item: ::core::primitive::u32, weight_limit: runtime_types::xcm::v3::WeightLimit, }, + #[codec(index = 12)] + #[doc = "Claims assets trapped on this pallet because of leftover assets during XCM execution."] + #[doc = ""] + #[doc = "- `origin`: Anyone can call this extrinsic."] + #[doc = "- `assets`: The exact assets that were trapped. Use the version to specify what version"] + #[doc = "was the latest when they were trapped."] + #[doc = "- `beneficiary`: The location/account where the claimed assets will be deposited."] + claim_assets { + assets: ::std::boxed::Box, + beneficiary: ::std::boxed::Box, + }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -51290,6 +57586,31 @@ pub mod api { pub struct ApprovalVotingParams { pub max_approval_coalesce_count: ::core::primitive::u32, } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SchedulerParams<_0> { + pub group_rotation_frequency: _0, + pub paras_availability_period: _0, + pub max_validators_per_core: ::core::option::Option<_0>, + pub lookahead: ::core::primitive::u32, + pub num_cores: ::core::primitive::u32, + pub max_availability_timeouts: ::core::primitive::u32, + pub on_demand_queue_max_size: ::core::primitive::u32, + pub on_demand_target_queue_utilization: + runtime_types::sp_arithmetic::per_things::Perbill, + pub on_demand_fee_variability: + runtime_types::sp_arithmetic::per_things::Perbill, + pub on_demand_base_fee: ::core::primitive::u128, + pub ttl: _0, + } } } pub mod polkadot_runtime_common { @@ -51310,7 +57631,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "See [`Pallet::assign_perm_parachain_slot`]."] assign_perm_parachain_slot { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 1)] # [doc = "See [`Pallet::assign_temp_parachain_slot`]."] assign_temp_parachain_slot { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , lease_period_start : runtime_types :: polkadot_runtime_common :: assigned_slots :: SlotLeasePeriodStart , } , # [codec (index = 2)] # [doc = "See [`Pallet::unassign_parachain_slot`]."] unassign_parachain_slot { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 3)] # [doc = "See [`Pallet::set_max_permanent_slots`]."] set_max_permanent_slots { slots : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "See [`Pallet::set_max_temporary_slots`]."] set_max_temporary_slots { slots : :: core :: primitive :: u32 , } , } + # [codec (index = 0)] # [doc = "Assign a permanent parachain slot and immediately create a lease for it."] assign_perm_parachain_slot { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 1)] # [doc = "Assign a temporary parachain slot. The function tries to create a lease for it"] # [doc = "immediately if `SlotLeasePeriodStart::Current` is specified, and if the number"] # [doc = "of currently active temporary slots is below `MaxTemporarySlotPerLeasePeriod`."] assign_temp_parachain_slot { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , lease_period_start : runtime_types :: polkadot_runtime_common :: assigned_slots :: SlotLeasePeriodStart , } , # [codec (index = 2)] # [doc = "Unassign a permanent or temporary parachain slot"] unassign_parachain_slot { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 3)] # [doc = "Sets the storage value [`MaxPermanentSlots`]."] set_max_permanent_slots { slots : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "Sets the storage value [`MaxTemporarySlots`]."] set_max_temporary_slots { slots : :: core :: primitive :: u32 , } , } #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -51432,7 +57753,11 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::new_auction`]."] + #[doc = "Create a new auction."] + #[doc = ""] + #[doc = "This can only happen when there isn't already an auction in progress and may only be"] + #[doc = "called by the root origin. Accepts the `duration` of this auction and the"] + #[doc = "`lease_period_index` of the initial lease period of the four that are to be auctioned."] new_auction { #[codec(compact)] duration: ::core::primitive::u32, @@ -51440,7 +57765,22 @@ pub mod api { lease_period_index: ::core::primitive::u32, }, #[codec(index = 1)] - #[doc = "See [`Pallet::bid`]."] + #[doc = "Make a new bid from an account (including a parachain account) for deploying a new"] + #[doc = "parachain."] + #[doc = ""] + #[doc = "Multiple simultaneous bids from the same bidder are allowed only as long as all active"] + #[doc = "bids overlap each other (i.e. are mutually exclusive). Bids cannot be redacted."] + #[doc = ""] + #[doc = "- `sub` is the sub-bidder ID, allowing for multiple competing bids to be made by (and"] + #[doc = "funded by) the same account."] + #[doc = "- `auction_index` is the index of the auction to bid on. Should just be the present"] + #[doc = "value of `AuctionCounter`."] + #[doc = "- `first_slot` is the first lease period index of the range to bid on. This is the"] + #[doc = "absolute lease period index value, not an auction-specific offset."] + #[doc = "- `last_slot` is the last lease period index of the range to bid on. This is the"] + #[doc = "absolute lease period index value, not an auction-specific offset."] + #[doc = "- `amount` is the amount to bid to be held as deposit for the parachain should the"] + #[doc = "bid win. This amount is held throughout the range."] bid { #[codec(compact)] para: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -51454,7 +57794,9 @@ pub mod api { amount: ::core::primitive::u128, }, #[codec(index = 2)] - #[doc = "See [`Pallet::cancel_auction`]."] + #[doc = "Cancel an in-progress auction."] + #[doc = ""] + #[doc = "Can only be called by Root origin."] cancel_auction, } #[derive( @@ -51574,14 +57916,51 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::claim`]."] + #[doc = "Make a claim to collect your DOTs."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _None_."] + #[doc = ""] + #[doc = "Unsigned Validation:"] + #[doc = "A call to claim is deemed valid if the signature provided matches"] + #[doc = "the expected signed message of:"] + #[doc = ""] + #[doc = "> Ethereum Signed Message:"] + #[doc = "> (configured prefix string)(address)"] + #[doc = ""] + #[doc = "and `address` matches the `dest` account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `dest`: The destination account to payout the claim."] + #[doc = "- `ethereum_signature`: The signature of an ethereum signed message matching the format"] + #[doc = " described above."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "Weight includes logic to validate unsigned `claim` call."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] claim { dest: ::subxt::utils::AccountId32, ethereum_signature: runtime_types::polkadot_runtime_common::claims::EcdsaSignature, }, #[codec(index = 1)] - #[doc = "See [`Pallet::mint_claim`]."] + #[doc = "Mint a new claim to collect DOTs."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `who`: The Ethereum address allowed to collect this claim."] + #[doc = "- `value`: The number of DOTs that will be claimed."] + #[doc = "- `vesting_schedule`: An optional vesting schedule for these DOTs."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "We assume worst case that both vesting and statement is being inserted."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] mint_claim { who: runtime_types::polkadot_runtime_common::claims::EthereumAddress, value: ::core::primitive::u128, @@ -51595,7 +57974,33 @@ pub mod api { >, }, #[codec(index = 2)] - #[doc = "See [`Pallet::claim_attest`]."] + #[doc = "Make a claim to collect your DOTs by signing a statement."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _None_."] + #[doc = ""] + #[doc = "Unsigned Validation:"] + #[doc = "A call to `claim_attest` is deemed valid if the signature provided matches"] + #[doc = "the expected signed message of:"] + #[doc = ""] + #[doc = "> Ethereum Signed Message:"] + #[doc = "> (configured prefix string)(address)(statement)"] + #[doc = ""] + #[doc = "and `address` matches the `dest` account; the `statement` must match that which is"] + #[doc = "expected according to your purchase arrangement."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `dest`: The destination account to payout the claim."] + #[doc = "- `ethereum_signature`: The signature of an ethereum signed message matching the format"] + #[doc = " described above."] + #[doc = "- `statement`: The identity of the statement which is being attested to in the"] + #[doc = " signature."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "Weight includes logic to validate unsigned `claim_attest` call."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] claim_attest { dest: ::subxt::utils::AccountId32, ethereum_signature: @@ -51603,12 +58008,29 @@ pub mod api { statement: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 3)] - #[doc = "See [`Pallet::attest`]."] + #[doc = "Attest to a statement, needed to finalize the claims process."] + #[doc = ""] + #[doc = "WARNING: Insecure unless your chain includes `PrevalidateAttests` as a"] + #[doc = "`SignedExtension`."] + #[doc = ""] + #[doc = "Unsigned Validation:"] + #[doc = "A call to attest is deemed valid if the sender has a `Preclaim` registered"] + #[doc = "and provides a `statement` which is expected for the account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `statement`: The identity of the statement which is being attested to in the"] + #[doc = " signature."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "Weight includes logic to do pre-validation on `attest` call."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] attest { statement: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 4)] - #[doc = "See [`Pallet::move_claim`]."] move_claim { old: runtime_types::polkadot_runtime_common::claims::EthereumAddress, new: runtime_types::polkadot_runtime_common::claims::EthereumAddress, @@ -51725,7 +58147,11 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::create`]."] + #[doc = "Create a new crowdloaning campaign for a parachain slot with the given lease period"] + #[doc = "range."] + #[doc = ""] + #[doc = "This applies a lock to your parachain configuration, ensuring that it cannot be changed"] + #[doc = "by the parachain manager."] create { #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -51741,7 +58167,8 @@ pub mod api { ::core::option::Option, }, #[codec(index = 1)] - #[doc = "See [`Pallet::contribute`]."] + #[doc = "Contribute to a crowd sale. This will transfer some balance over to fund a parachain"] + #[doc = "slot. It will be withdrawable when the crowdloan has ended and the funds are unused."] contribute { #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -51751,26 +58178,48 @@ pub mod api { ::core::option::Option, }, #[codec(index = 2)] - #[doc = "See [`Pallet::withdraw`]."] + #[doc = "Withdraw full balance of a specific contributor."] + #[doc = ""] + #[doc = "Origin must be signed, but can come from anyone."] + #[doc = ""] + #[doc = "The fund must be either in, or ready for, retirement. For a fund to be *in* retirement,"] + #[doc = "then the retirement flag must be set. For a fund to be ready for retirement, then:"] + #[doc = "- it must not already be in retirement;"] + #[doc = "- the amount of raised funds must be bigger than the _free_ balance of the account;"] + #[doc = "- and either:"] + #[doc = " - the block number must be at least `end`; or"] + #[doc = " - the current lease period must be greater than the fund's `last_period`."] + #[doc = ""] + #[doc = "In this case, the fund's retirement flag is set and its `end` is reset to the current"] + #[doc = "block number."] + #[doc = ""] + #[doc = "- `who`: The account whose contribution should be withdrawn."] + #[doc = "- `index`: The parachain to whose crowdloan the contribution was made."] withdraw { who: ::subxt::utils::AccountId32, #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 3)] - #[doc = "See [`Pallet::refund`]."] + #[doc = "Automatically refund contributors of an ended crowdloan."] + #[doc = "Due to weight restrictions, this function may need to be called multiple"] + #[doc = "times to fully refund all users. We will refund `RemoveKeysLimit` users at a time."] + #[doc = ""] + #[doc = "Origin must be signed, but can come from anyone."] refund { #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 4)] - #[doc = "See [`Pallet::dissolve`]."] + #[doc = "Remove a fund after the retirement period has ended and all funds have been returned."] dissolve { #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 5)] - #[doc = "See [`Pallet::edit`]."] + #[doc = "Edit the configuration for an in-progress crowdloan."] + #[doc = ""] + #[doc = "Can only be called by Root origin."] edit { #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -51786,18 +58235,24 @@ pub mod api { ::core::option::Option, }, #[codec(index = 6)] - #[doc = "See [`Pallet::add_memo`]."] + #[doc = "Add an optional memo to an existing crowdloan contribution."] + #[doc = ""] + #[doc = "Origin must be Signed, and the user must have contributed to the crowdloan."] add_memo { index: runtime_types::polkadot_parachain_primitives::primitives::Id, memo: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 7)] - #[doc = "See [`Pallet::poke`]."] + #[doc = "Poke the fund into `NewRaise`"] + #[doc = ""] + #[doc = "Origin must be Signed, and the fund has non-zero raise."] poke { index: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 8)] - #[doc = "See [`Pallet::contribute_all`]."] + #[doc = "Contribute your entire balance to a crowd sale. This will transfer the entire balance of"] + #[doc = "a user over to fund a parachain slot. It will be withdrawable when the crowdloan has"] + #[doc = "ended and the funds are unused."] contribute_all { #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -52024,10 +58479,12 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::reap_identity`]."] + #[doc = "Reap the `IdentityInfo` of `who` from the Identity pallet of `T`, unreserving any"] + #[doc = "deposits held and removing storage items associated with `who`."] reap_identity { who: ::subxt::utils::AccountId32 }, #[codec(index = 1)] - #[doc = "See [`Pallet::poke_deposit`]."] + #[doc = "Update the deposit of `who`. Meant to be called by the system with an XCM `Transact`"] + #[doc = "Instruction."] poke_deposit { who: ::subxt::utils::AccountId32 }, } #[derive( @@ -52097,7 +58554,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "See [`Pallet::register`]."] register { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , genesis_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 1)] # [doc = "See [`Pallet::force_register`]."] force_register { who : :: subxt :: utils :: AccountId32 , deposit : :: core :: primitive :: u128 , id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , genesis_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 2)] # [doc = "See [`Pallet::deregister`]."] deregister { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 3)] # [doc = "See [`Pallet::swap`]."] swap { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , other : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 4)] # [doc = "See [`Pallet::remove_lock`]."] remove_lock { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 5)] # [doc = "See [`Pallet::reserve`]."] reserve , # [codec (index = 6)] # [doc = "See [`Pallet::add_lock`]."] add_lock { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 7)] # [doc = "See [`Pallet::schedule_code_upgrade`]."] schedule_code_upgrade { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 8)] # [doc = "See [`Pallet::set_current_head`]."] set_current_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , } + # [codec (index = 0)] # [doc = "Register head data and validation code for a reserved Para Id."] # [doc = ""] # [doc = "## Arguments"] # [doc = "- `origin`: Must be called by a `Signed` origin."] # [doc = "- `id`: The para ID. Must be owned/managed by the `origin` signing account."] # [doc = "- `genesis_head`: The genesis head data of the parachain/thread."] # [doc = "- `validation_code`: The initial validation code of the parachain/thread."] # [doc = ""] # [doc = "## Deposits/Fees"] # [doc = "The account with the originating signature must reserve a deposit."] # [doc = ""] # [doc = "The deposit is required to cover the costs associated with storing the genesis head"] # [doc = "data and the validation code."] # [doc = "This accounts for the potential to store validation code of a size up to the"] # [doc = "`max_code_size`, as defined in the configuration pallet"] # [doc = ""] # [doc = "Anything already reserved previously for this para ID is accounted for."] # [doc = ""] # [doc = "## Events"] # [doc = "The `Registered` event is emitted in case of success."] register { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , genesis_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 1)] # [doc = "Force the registration of a Para Id on the relay chain."] # [doc = ""] # [doc = "This function must be called by a Root origin."] # [doc = ""] # [doc = "The deposit taken can be specified for this registration. Any `ParaId`"] # [doc = "can be registered, including sub-1000 IDs which are System Parachains."] force_register { who : :: subxt :: utils :: AccountId32 , deposit : :: core :: primitive :: u128 , id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , genesis_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 2)] # [doc = "Deregister a Para Id, freeing all data and returning any deposit."] # [doc = ""] # [doc = "The caller must be Root, the `para` owner, or the `para` itself. The para must be an"] # [doc = "on-demand parachain."] deregister { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 3)] # [doc = "Swap a lease holding parachain with another parachain, either on-demand or lease"] # [doc = "holding."] # [doc = ""] # [doc = "The origin must be Root, the `para` owner, or the `para` itself."] # [doc = ""] # [doc = "The swap will happen only if there is already an opposite swap pending. If there is not,"] # [doc = "the swap will be stored in the pending swaps map, ready for a later confirmatory swap."] # [doc = ""] # [doc = "The `ParaId`s remain mapped to the same head data and code so external code can rely on"] # [doc = "`ParaId` to be a long-term identifier of a notional \"parachain\". However, their"] # [doc = "scheduling info (i.e. whether they're an on-demand parachain or lease holding"] # [doc = "parachain), auction information and the auction deposit are switched."] swap { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , other : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 4)] # [doc = "Remove a manager lock from a para. This will allow the manager of a"] # [doc = "previously locked para to deregister or swap a para without using governance."] # [doc = ""] # [doc = "Can only be called by the Root origin or the parachain."] remove_lock { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 5)] # [doc = "Reserve a Para Id on the relay chain."] # [doc = ""] # [doc = "This function will reserve a new Para Id to be owned/managed by the origin account."] # [doc = "The origin account is able to register head data and validation code using `register` to"] # [doc = "create an on-demand parachain. Using the Slots pallet, an on-demand parachain can then"] # [doc = "be upgraded to a lease holding parachain."] # [doc = ""] # [doc = "## Arguments"] # [doc = "- `origin`: Must be called by a `Signed` origin. Becomes the manager/owner of the new"] # [doc = " para ID."] # [doc = ""] # [doc = "## Deposits/Fees"] # [doc = "The origin must reserve a deposit of `ParaDeposit` for the registration."] # [doc = ""] # [doc = "## Events"] # [doc = "The `Reserved` event is emitted in case of success, which provides the ID reserved for"] # [doc = "use."] reserve , # [codec (index = 6)] # [doc = "Add a manager lock from a para. This will prevent the manager of a"] # [doc = "para to deregister or swap a para."] # [doc = ""] # [doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] # [doc = "unlocked."] add_lock { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 7)] # [doc = "Schedule a parachain upgrade."] # [doc = ""] # [doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] # [doc = "unlocked."] schedule_code_upgrade { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 8)] # [doc = "Set the parachain's current head."] # [doc = ""] # [doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] # [doc = "unlocked."] set_current_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , } #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -52221,35 +58678,45 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::sudo_schedule_para_initialize`]."] + #[doc = "Schedule a para to be initialized at the start of the next session."] + #[doc = ""] + #[doc = "This should only be used for TESTING and not on PRODUCTION chains. It automatically"] + #[doc = "assigns Coretime to the chain and increases the number of cores. Thus, there is no"] + #[doc = "running coretime chain required."] sudo_schedule_para_initialize { id: runtime_types::polkadot_parachain_primitives::primitives::Id, genesis: runtime_types::polkadot_runtime_parachains::paras::ParaGenesisArgs, }, #[codec(index = 1)] - #[doc = "See [`Pallet::sudo_schedule_para_cleanup`]."] + #[doc = "Schedule a para to be cleaned up at the start of the next session."] sudo_schedule_para_cleanup { id: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 2)] - #[doc = "See [`Pallet::sudo_schedule_parathread_upgrade`]."] + #[doc = "Upgrade a parathread (on-demand parachain) to a lease holding parachain"] sudo_schedule_parathread_upgrade { id: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 3)] - #[doc = "See [`Pallet::sudo_schedule_parachain_downgrade`]."] + #[doc = "Downgrade a lease holding parachain to an on-demand parachain"] sudo_schedule_parachain_downgrade { id: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 4)] - #[doc = "See [`Pallet::sudo_queue_downward_xcm`]."] + #[doc = "Send a downward XCM to the given para."] + #[doc = ""] + #[doc = "The given parachain should exist and the payload should not exceed the preconfigured"] + #[doc = "size `config.max_downward_message_size`."] sudo_queue_downward_xcm { id: runtime_types::polkadot_parachain_primitives::primitives::Id, xcm: ::std::boxed::Box, }, #[codec(index = 5)] - #[doc = "See [`Pallet::sudo_establish_hrmp_channel`]."] + #[doc = "Forcefully establish a channel from the sender to the recipient."] + #[doc = ""] + #[doc = "This is equivalent to sending an `Hrmp::hrmp_init_open_channel` extrinsic followed by"] + #[doc = "`Hrmp::hrmp_accept_open_channel`."] sudo_establish_hrmp_channel { sender: runtime_types::polkadot_parachain_primitives::primitives::Id, recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -52317,7 +58784,10 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::force_lease`]."] + #[doc = "Just a connect into the `lease_out` call, in case Root wants to force some lease to"] + #[doc = "happen independently of any other on-chain mechanism to use it."] + #[doc = ""] + #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] force_lease { para: runtime_types::polkadot_parachain_primitives::primitives::Id, leaser: ::subxt::utils::AccountId32, @@ -52326,12 +58796,20 @@ pub mod api { period_count: ::core::primitive::u32, }, #[codec(index = 1)] - #[doc = "See [`Pallet::clear_all_leases`]."] + #[doc = "Clear all leases for a Para Id, refunding any deposits back to the original owners."] + #[doc = ""] + #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] clear_all_leases { para: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 2)] - #[doc = "See [`Pallet::trigger_onboard`]."] + #[doc = "Try to onboard a parachain that has a lease for the current lease period."] + #[doc = ""] + #[doc = "This function can be useful if there was some state issue with a para that should"] + #[doc = "have onboarded, but was unable to. As long as they have a lease period, we can"] + #[doc = "let them onboard from here."] + #[doc = ""] + #[doc = "Origin must be signed, but can be called by anyone."] trigger_onboard { para: runtime_types::polkadot_parachain_primitives::primitives::Id, }, @@ -52526,13 +59004,43 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::place_order_allow_death`]."] + #[doc = "Create a single on demand core order."] + #[doc = "Will use the spot price for the current block and will reap the account if needed."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: The sender of the call, funds will be withdrawn from this account."] + #[doc = "- `max_amount`: The maximum balance to withdraw from the origin to place an order."] + #[doc = "- `para_id`: A `ParaId` the origin wants to provide blockspace for."] + #[doc = ""] + #[doc = "Errors:"] + #[doc = "- `InsufficientBalance`: from the Currency implementation"] + #[doc = "- `InvalidParaId`"] + #[doc = "- `QueueFull`"] + #[doc = "- `SpotPriceHigherThanMaxAmount`"] + #[doc = ""] + #[doc = "Events:"] + #[doc = "- `SpotOrderPlaced`"] place_order_allow_death { max_amount: ::core::primitive::u128, para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 1)] - #[doc = "See [`Pallet::place_order_keep_alive`]."] + #[doc = "Same as the [`place_order_allow_death`](Self::place_order_allow_death) call , but with a"] + #[doc = "check that placing the order will not reap the account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: The sender of the call, funds will be withdrawn from this account."] + #[doc = "- `max_amount`: The maximum balance to withdraw from the origin to place an order."] + #[doc = "- `para_id`: A `ParaId` the origin wants to provide blockspace for."] + #[doc = ""] + #[doc = "Errors:"] + #[doc = "- `InsufficientBalance`: from the Currency implementation"] + #[doc = "- `InvalidParaId`"] + #[doc = "- `QueueFull`"] + #[doc = "- `SpotPriceHigherThanMaxAmount`"] + #[doc = ""] + #[doc = "Events:"] + #[doc = "- `SpotOrderPlaced`"] place_order_keep_alive { max_amount: ::core::primitive::u128, para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -52631,7 +59139,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "See [`Pallet::set_validation_upgrade_cooldown`]."] set_validation_upgrade_cooldown { new : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "See [`Pallet::set_validation_upgrade_delay`]."] set_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 2)] # [doc = "See [`Pallet::set_code_retention_period`]."] set_code_retention_period { new : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "See [`Pallet::set_max_code_size`]."] set_max_code_size { new : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "See [`Pallet::set_max_pov_size`]."] set_max_pov_size { new : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "See [`Pallet::set_max_head_data_size`]."] set_max_head_data_size { new : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "See [`Pallet::set_coretime_cores`]."] set_coretime_cores { new : :: core :: primitive :: u32 , } , # [codec (index = 7)] # [doc = "See [`Pallet::set_on_demand_retries`]."] set_on_demand_retries { new : :: core :: primitive :: u32 , } , # [codec (index = 8)] # [doc = "See [`Pallet::set_group_rotation_frequency`]."] set_group_rotation_frequency { new : :: core :: primitive :: u32 , } , # [codec (index = 9)] # [doc = "See [`Pallet::set_paras_availability_period`]."] set_paras_availability_period { new : :: core :: primitive :: u32 , } , # [codec (index = 11)] # [doc = "See [`Pallet::set_scheduling_lookahead`]."] set_scheduling_lookahead { new : :: core :: primitive :: u32 , } , # [codec (index = 12)] # [doc = "See [`Pallet::set_max_validators_per_core`]."] set_max_validators_per_core { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 13)] # [doc = "See [`Pallet::set_max_validators`]."] set_max_validators { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 14)] # [doc = "See [`Pallet::set_dispute_period`]."] set_dispute_period { new : :: core :: primitive :: u32 , } , # [codec (index = 15)] # [doc = "See [`Pallet::set_dispute_post_conclusion_acceptance_period`]."] set_dispute_post_conclusion_acceptance_period { new : :: core :: primitive :: u32 , } , # [codec (index = 18)] # [doc = "See [`Pallet::set_no_show_slots`]."] set_no_show_slots { new : :: core :: primitive :: u32 , } , # [codec (index = 19)] # [doc = "See [`Pallet::set_n_delay_tranches`]."] set_n_delay_tranches { new : :: core :: primitive :: u32 , } , # [codec (index = 20)] # [doc = "See [`Pallet::set_zeroth_delay_tranche_width`]."] set_zeroth_delay_tranche_width { new : :: core :: primitive :: u32 , } , # [codec (index = 21)] # [doc = "See [`Pallet::set_needed_approvals`]."] set_needed_approvals { new : :: core :: primitive :: u32 , } , # [codec (index = 22)] # [doc = "See [`Pallet::set_relay_vrf_modulo_samples`]."] set_relay_vrf_modulo_samples { new : :: core :: primitive :: u32 , } , # [codec (index = 23)] # [doc = "See [`Pallet::set_max_upward_queue_count`]."] set_max_upward_queue_count { new : :: core :: primitive :: u32 , } , # [codec (index = 24)] # [doc = "See [`Pallet::set_max_upward_queue_size`]."] set_max_upward_queue_size { new : :: core :: primitive :: u32 , } , # [codec (index = 25)] # [doc = "See [`Pallet::set_max_downward_message_size`]."] set_max_downward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 27)] # [doc = "See [`Pallet::set_max_upward_message_size`]."] set_max_upward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 28)] # [doc = "See [`Pallet::set_max_upward_message_num_per_candidate`]."] set_max_upward_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 29)] # [doc = "See [`Pallet::set_hrmp_open_request_ttl`]."] set_hrmp_open_request_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 30)] # [doc = "See [`Pallet::set_hrmp_sender_deposit`]."] set_hrmp_sender_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 31)] # [doc = "See [`Pallet::set_hrmp_recipient_deposit`]."] set_hrmp_recipient_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 32)] # [doc = "See [`Pallet::set_hrmp_channel_max_capacity`]."] set_hrmp_channel_max_capacity { new : :: core :: primitive :: u32 , } , # [codec (index = 33)] # [doc = "See [`Pallet::set_hrmp_channel_max_total_size`]."] set_hrmp_channel_max_total_size { new : :: core :: primitive :: u32 , } , # [codec (index = 34)] # [doc = "See [`Pallet::set_hrmp_max_parachain_inbound_channels`]."] set_hrmp_max_parachain_inbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 36)] # [doc = "See [`Pallet::set_hrmp_channel_max_message_size`]."] set_hrmp_channel_max_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 37)] # [doc = "See [`Pallet::set_hrmp_max_parachain_outbound_channels`]."] set_hrmp_max_parachain_outbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 39)] # [doc = "See [`Pallet::set_hrmp_max_message_num_per_candidate`]."] set_hrmp_max_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 42)] # [doc = "See [`Pallet::set_pvf_voting_ttl`]."] set_pvf_voting_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 43)] # [doc = "See [`Pallet::set_minimum_validation_upgrade_delay`]."] set_minimum_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 44)] # [doc = "See [`Pallet::set_bypass_consistency_check`]."] set_bypass_consistency_check { new : :: core :: primitive :: bool , } , # [codec (index = 45)] # [doc = "See [`Pallet::set_async_backing_params`]."] set_async_backing_params { new : runtime_types :: polkadot_primitives :: v6 :: async_backing :: AsyncBackingParams , } , # [codec (index = 46)] # [doc = "See [`Pallet::set_executor_params`]."] set_executor_params { new : runtime_types :: polkadot_primitives :: v6 :: executor_params :: ExecutorParams , } , # [codec (index = 47)] # [doc = "See [`Pallet::set_on_demand_base_fee`]."] set_on_demand_base_fee { new : :: core :: primitive :: u128 , } , # [codec (index = 48)] # [doc = "See [`Pallet::set_on_demand_fee_variability`]."] set_on_demand_fee_variability { new : runtime_types :: sp_arithmetic :: per_things :: Perbill , } , # [codec (index = 49)] # [doc = "See [`Pallet::set_on_demand_queue_max_size`]."] set_on_demand_queue_max_size { new : :: core :: primitive :: u32 , } , # [codec (index = 50)] # [doc = "See [`Pallet::set_on_demand_target_queue_utilization`]."] set_on_demand_target_queue_utilization { new : runtime_types :: sp_arithmetic :: per_things :: Perbill , } , # [codec (index = 51)] # [doc = "See [`Pallet::set_on_demand_ttl`]."] set_on_demand_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 52)] # [doc = "See [`Pallet::set_minimum_backing_votes`]."] set_minimum_backing_votes { new : :: core :: primitive :: u32 , } , # [codec (index = 53)] # [doc = "See [`Pallet::set_node_feature`]."] set_node_feature { index : :: core :: primitive :: u8 , value : :: core :: primitive :: bool , } , # [codec (index = 54)] # [doc = "See [`Pallet::set_approval_voting_params`]."] set_approval_voting_params { new : runtime_types :: polkadot_primitives :: vstaging :: ApprovalVotingParams , } , } + # [codec (index = 0)] # [doc = "Set the validation upgrade cooldown."] set_validation_upgrade_cooldown { new : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "Set the validation upgrade delay."] set_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 2)] # [doc = "Set the acceptance period for an included candidate."] set_code_retention_period { new : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "Set the max validation code size for incoming upgrades."] set_max_code_size { new : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "Set the max POV block size for incoming upgrades."] set_max_pov_size { new : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "Set the max head data size for paras."] set_max_head_data_size { new : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "Set the number of coretime execution cores."] # [doc = ""] # [doc = "Note that this configuration is managed by the coretime chain. Only manually change"] # [doc = "this, if you really know what you are doing!"] set_coretime_cores { new : :: core :: primitive :: u32 , } , # [codec (index = 7)] # [doc = "Set the max number of times a claim may timeout on a core before it is abandoned"] set_max_availability_timeouts { new : :: core :: primitive :: u32 , } , # [codec (index = 8)] # [doc = "Set the parachain validator-group rotation frequency"] set_group_rotation_frequency { new : :: core :: primitive :: u32 , } , # [codec (index = 9)] # [doc = "Set the availability period for paras."] set_paras_availability_period { new : :: core :: primitive :: u32 , } , # [codec (index = 11)] # [doc = "Set the scheduling lookahead, in expected number of blocks at peak throughput."] set_scheduling_lookahead { new : :: core :: primitive :: u32 , } , # [codec (index = 12)] # [doc = "Set the maximum number of validators to assign to any core."] set_max_validators_per_core { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 13)] # [doc = "Set the maximum number of validators to use in parachain consensus."] set_max_validators { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 14)] # [doc = "Set the dispute period, in number of sessions to keep for disputes."] set_dispute_period { new : :: core :: primitive :: u32 , } , # [codec (index = 15)] # [doc = "Set the dispute post conclusion acceptance period."] set_dispute_post_conclusion_acceptance_period { new : :: core :: primitive :: u32 , } , # [codec (index = 18)] # [doc = "Set the no show slots, in number of number of consensus slots."] # [doc = "Must be at least 1."] set_no_show_slots { new : :: core :: primitive :: u32 , } , # [codec (index = 19)] # [doc = "Set the total number of delay tranches."] set_n_delay_tranches { new : :: core :: primitive :: u32 , } , # [codec (index = 20)] # [doc = "Set the zeroth delay tranche width."] set_zeroth_delay_tranche_width { new : :: core :: primitive :: u32 , } , # [codec (index = 21)] # [doc = "Set the number of validators needed to approve a block."] set_needed_approvals { new : :: core :: primitive :: u32 , } , # [codec (index = 22)] # [doc = "Set the number of samples to do of the `RelayVRFModulo` approval assignment criterion."] set_relay_vrf_modulo_samples { new : :: core :: primitive :: u32 , } , # [codec (index = 23)] # [doc = "Sets the maximum items that can present in a upward dispatch queue at once."] set_max_upward_queue_count { new : :: core :: primitive :: u32 , } , # [codec (index = 24)] # [doc = "Sets the maximum total size of items that can present in a upward dispatch queue at"] # [doc = "once."] set_max_upward_queue_size { new : :: core :: primitive :: u32 , } , # [codec (index = 25)] # [doc = "Set the critical downward message size."] set_max_downward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 27)] # [doc = "Sets the maximum size of an upward message that can be sent by a candidate."] set_max_upward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 28)] # [doc = "Sets the maximum number of messages that a candidate can contain."] set_max_upward_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 29)] # [doc = "Sets the number of sessions after which an HRMP open channel request expires."] set_hrmp_open_request_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 30)] # [doc = "Sets the amount of funds that the sender should provide for opening an HRMP channel."] set_hrmp_sender_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 31)] # [doc = "Sets the amount of funds that the recipient should provide for accepting opening an HRMP"] # [doc = "channel."] set_hrmp_recipient_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 32)] # [doc = "Sets the maximum number of messages allowed in an HRMP channel at once."] set_hrmp_channel_max_capacity { new : :: core :: primitive :: u32 , } , # [codec (index = 33)] # [doc = "Sets the maximum total size of messages in bytes allowed in an HRMP channel at once."] set_hrmp_channel_max_total_size { new : :: core :: primitive :: u32 , } , # [codec (index = 34)] # [doc = "Sets the maximum number of inbound HRMP channels a parachain is allowed to accept."] set_hrmp_max_parachain_inbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 36)] # [doc = "Sets the maximum size of a message that could ever be put into an HRMP channel."] set_hrmp_channel_max_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 37)] # [doc = "Sets the maximum number of outbound HRMP channels a parachain is allowed to open."] set_hrmp_max_parachain_outbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 39)] # [doc = "Sets the maximum number of outbound HRMP messages can be sent by a candidate."] set_hrmp_max_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 42)] # [doc = "Set the number of session changes after which a PVF pre-checking voting is rejected."] set_pvf_voting_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 43)] # [doc = "Sets the minimum delay between announcing the upgrade block for a parachain until the"] # [doc = "upgrade taking place."] # [doc = ""] # [doc = "See the field documentation for information and constraints for the new value."] set_minimum_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 44)] # [doc = "Setting this to true will disable consistency checks for the configuration setters."] # [doc = "Use with caution."] set_bypass_consistency_check { new : :: core :: primitive :: bool , } , # [codec (index = 45)] # [doc = "Set the asynchronous backing parameters."] set_async_backing_params { new : runtime_types :: polkadot_primitives :: v6 :: async_backing :: AsyncBackingParams , } , # [codec (index = 46)] # [doc = "Set PVF executor parameters."] set_executor_params { new : runtime_types :: polkadot_primitives :: v6 :: executor_params :: ExecutorParams , } , # [codec (index = 47)] # [doc = "Set the on demand (parathreads) base fee."] set_on_demand_base_fee { new : :: core :: primitive :: u128 , } , # [codec (index = 48)] # [doc = "Set the on demand (parathreads) fee variability."] set_on_demand_fee_variability { new : runtime_types :: sp_arithmetic :: per_things :: Perbill , } , # [codec (index = 49)] # [doc = "Set the on demand (parathreads) queue max size."] set_on_demand_queue_max_size { new : :: core :: primitive :: u32 , } , # [codec (index = 50)] # [doc = "Set the on demand (parathreads) fee variability."] set_on_demand_target_queue_utilization { new : runtime_types :: sp_arithmetic :: per_things :: Perbill , } , # [codec (index = 51)] # [doc = "Set the on demand (parathreads) ttl in the claimqueue."] set_on_demand_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 52)] # [doc = "Set the minimum backing votes threshold."] set_minimum_backing_votes { new : :: core :: primitive :: u32 , } , # [codec (index = 53)] # [doc = "Set/Unset a node feature."] set_node_feature { index : :: core :: primitive :: u8 , value : :: core :: primitive :: bool , } , # [codec (index = 54)] # [doc = "Set approval-voting-params."] set_approval_voting_params { new : runtime_types :: polkadot_primitives :: vstaging :: ApprovalVotingParams , } , # [codec (index = 55)] # [doc = "Set scheduler-params."] set_scheduler_params { new : runtime_types :: polkadot_primitives :: vstaging :: SchedulerParams < :: core :: primitive :: u32 > , } , } #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -52683,19 +59191,6 @@ pub mod api { pub executor_params: runtime_types::polkadot_primitives::v6::executor_params::ExecutorParams, pub code_retention_period: _0, - pub coretime_cores: ::core::primitive::u32, - pub on_demand_retries: ::core::primitive::u32, - pub on_demand_queue_max_size: ::core::primitive::u32, - pub on_demand_target_queue_utilization: - runtime_types::sp_arithmetic::per_things::Perbill, - pub on_demand_fee_variability: - runtime_types::sp_arithmetic::per_things::Perbill, - pub on_demand_base_fee: ::core::primitive::u128, - pub on_demand_ttl: _0, - pub group_rotation_frequency: _0, - pub paras_availability_period: _0, - pub scheduling_lookahead: ::core::primitive::u32, - pub max_validators_per_core: ::core::option::Option<_0>, pub max_validators: ::core::option::Option<_0>, pub dispute_period: ::core::primitive::u32, pub dispute_post_conclusion_acceptance_period: _0, @@ -52713,6 +59208,8 @@ pub mod api { >, pub approval_voting_params: runtime_types::polkadot_primitives::vstaging::ApprovalVotingParams, + pub scheduler_params: + runtime_types::polkadot_primitives::vstaging::SchedulerParams<_0>, } } pub mod coretime { @@ -52731,7 +59228,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 1)] # [doc = "See [`Pallet::request_core_count`]."] request_core_count { count : :: core :: primitive :: u16 , } , # [codec (index = 4)] # [doc = "See [`Pallet::assign_core`]."] assign_core { core : :: core :: primitive :: u16 , begin : :: core :: primitive :: u32 , assignment : :: std :: vec :: Vec < (runtime_types :: pallet_broker :: coretime_interface :: CoreAssignment , runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: PartsOf57600 ,) > , end_hint : :: core :: option :: Option < :: core :: primitive :: u32 > , } , } + # [codec (index = 1)] request_core_count { count : :: core :: primitive :: u16 , } , # [codec (index = 4)] # [doc = "Receive instructions from the `ExternalBrokerOrigin`, detailing how a specific core is"] # [doc = "to be used."] # [doc = ""] # [doc = "Parameters:"] # [doc = "-`origin`: The `ExternalBrokerOrigin`, assumed to be the Broker system parachain."] # [doc = "-`core`: The core that should be scheduled."] # [doc = "-`begin`: The starting blockheight of the instruction."] # [doc = "-`assignment`: How the blockspace should be utilised."] # [doc = "-`end_hint`: An optional hint as to when this particular set of instructions will end."] assign_core { core : :: core :: primitive :: u16 , begin : :: core :: primitive :: u32 , assignment : :: std :: vec :: Vec < (runtime_types :: pallet_broker :: coretime_interface :: CoreAssignment , runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: PartsOf57600 ,) > , end_hint : :: core :: option :: Option < :: core :: primitive :: u32 > , } , } #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -52788,7 +59285,6 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::force_unfreeze`]."] force_unfreeze, } #[derive( @@ -52881,7 +59377,6 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::report_dispute_lost_unsigned`]."] report_dispute_lost_unsigned { dispute_proof: ::std::boxed::Box< runtime_types::polkadot_primitives::v6::slashing::DisputeProof, @@ -52972,7 +59467,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "See [`Pallet::hrmp_init_open_channel`]."] hrmp_init_open_channel { recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , proposed_max_capacity : :: core :: primitive :: u32 , proposed_max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "See [`Pallet::hrmp_accept_open_channel`]."] hrmp_accept_open_channel { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 2)] # [doc = "See [`Pallet::hrmp_close_channel`]."] hrmp_close_channel { channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , } , # [codec (index = 3)] # [doc = "See [`Pallet::force_clean_hrmp`]."] force_clean_hrmp { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , num_inbound : :: core :: primitive :: u32 , num_outbound : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "See [`Pallet::force_process_hrmp_open`]."] force_process_hrmp_open { channels : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "See [`Pallet::force_process_hrmp_close`]."] force_process_hrmp_close { channels : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "See [`Pallet::hrmp_cancel_open_request`]."] hrmp_cancel_open_request { channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , open_requests : :: core :: primitive :: u32 , } , # [codec (index = 7)] # [doc = "See [`Pallet::force_open_hrmp_channel`]."] force_open_hrmp_channel { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , max_capacity : :: core :: primitive :: u32 , max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 8)] # [doc = "See [`Pallet::establish_system_channel`]."] establish_system_channel { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 9)] # [doc = "See [`Pallet::poke_channel_deposits`]."] poke_channel_deposits { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , } + # [codec (index = 0)] # [doc = "Initiate opening a channel from a parachain to a given recipient with given channel"] # [doc = "parameters."] # [doc = ""] # [doc = "- `proposed_max_capacity` - specifies how many messages can be in the channel at once."] # [doc = "- `proposed_max_message_size` - specifies the maximum size of the messages."] # [doc = ""] # [doc = "These numbers are a subject to the relay-chain configuration limits."] # [doc = ""] # [doc = "The channel can be opened only after the recipient confirms it and only on a session"] # [doc = "change."] hrmp_init_open_channel { recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , proposed_max_capacity : :: core :: primitive :: u32 , proposed_max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "Accept a pending open channel request from the given sender."] # [doc = ""] # [doc = "The channel will be opened only on the next session boundary."] hrmp_accept_open_channel { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 2)] # [doc = "Initiate unilateral closing of a channel. The origin must be either the sender or the"] # [doc = "recipient in the channel being closed."] # [doc = ""] # [doc = "The closure can only happen on a session change."] hrmp_close_channel { channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , } , # [codec (index = 3)] # [doc = "This extrinsic triggers the cleanup of all the HRMP storage items that a para may have."] # [doc = "Normally this happens once per session, but this allows you to trigger the cleanup"] # [doc = "immediately for a specific parachain."] # [doc = ""] # [doc = "Number of inbound and outbound channels for `para` must be provided as witness data."] # [doc = ""] # [doc = "Origin must be the `ChannelManager`."] force_clean_hrmp { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , num_inbound : :: core :: primitive :: u32 , num_outbound : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "Force process HRMP open channel requests."] # [doc = ""] # [doc = "If there are pending HRMP open channel requests, you can use this function to process"] # [doc = "all of those requests immediately."] # [doc = ""] # [doc = "Total number of opening channels must be provided as witness data."] # [doc = ""] # [doc = "Origin must be the `ChannelManager`."] force_process_hrmp_open { channels : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "Force process HRMP close channel requests."] # [doc = ""] # [doc = "If there are pending HRMP close channel requests, you can use this function to process"] # [doc = "all of those requests immediately."] # [doc = ""] # [doc = "Total number of closing channels must be provided as witness data."] # [doc = ""] # [doc = "Origin must be the `ChannelManager`."] force_process_hrmp_close { channels : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "This cancels a pending open channel request. It can be canceled by either of the sender"] # [doc = "or the recipient for that request. The origin must be either of those."] # [doc = ""] # [doc = "The cancellation happens immediately. It is not possible to cancel the request if it is"] # [doc = "already accepted."] # [doc = ""] # [doc = "Total number of open requests (i.e. `HrmpOpenChannelRequestsList`) must be provided as"] # [doc = "witness data."] hrmp_cancel_open_request { channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , open_requests : :: core :: primitive :: u32 , } , # [codec (index = 7)] # [doc = "Open a channel from a `sender` to a `recipient` `ParaId`. Although opened by governance,"] # [doc = "the `max_capacity` and `max_message_size` are still subject to the Relay Chain's"] # [doc = "configured limits."] # [doc = ""] # [doc = "Expected use is when one (and only one) of the `ParaId`s involved in the channel is"] # [doc = "governed by the system, e.g. a system parachain."] # [doc = ""] # [doc = "Origin must be the `ChannelManager`."] force_open_hrmp_channel { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , max_capacity : :: core :: primitive :: u32 , max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 8)] # [doc = "Establish an HRMP channel between two system chains. If the channel does not already"] # [doc = "exist, the transaction fees will be refunded to the caller. The system does not take"] # [doc = "deposits for channels between system chains, and automatically sets the message number"] # [doc = "and size limits to the maximum allowed by the network's configuration."] # [doc = ""] # [doc = "Arguments:"] # [doc = ""] # [doc = "- `sender`: A system chain, `ParaId`."] # [doc = "- `recipient`: A system chain, `ParaId`."] # [doc = ""] # [doc = "Any signed origin can call this function, but _both_ inputs MUST be system chains. If"] # [doc = "the channel does not exist yet, there is no fee."] establish_system_channel { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 9)] # [doc = "Update the deposits held for an HRMP channel to the latest `Configuration`. Channels"] # [doc = "with system chains do not require a deposit."] # [doc = ""] # [doc = "Arguments:"] # [doc = ""] # [doc = "- `sender`: A chain, `ParaId`."] # [doc = "- `recipient`: A chain, `ParaId`."] # [doc = ""] # [doc = "Any signed origin can call this function."] poke_channel_deposits { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , } #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -53355,7 +59850,9 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::force_approve`]."] + #[doc = "Issue a signal to the consensus engine to forcibly act as though all parachain"] + #[doc = "blocks in all relay chain blocks up to and including the given number in the current"] + #[doc = "chain are valid and should be finalized."] force_approve { up_to: ::core::primitive::u32 }, } } @@ -53415,7 +59912,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "See [`Pallet::force_set_current_code`]."] force_set_current_code { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 1)] # [doc = "See [`Pallet::force_set_current_head`]."] force_set_current_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , # [codec (index = 2)] # [doc = "See [`Pallet::force_schedule_code_upgrade`]."] force_schedule_code_upgrade { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , relay_parent_number : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "See [`Pallet::force_note_new_head`]."] force_note_new_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , # [codec (index = 4)] # [doc = "See [`Pallet::force_queue_action`]."] force_queue_action { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 5)] # [doc = "See [`Pallet::add_trusted_validation_code`]."] add_trusted_validation_code { validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 6)] # [doc = "See [`Pallet::poke_unused_validation_code`]."] poke_unused_validation_code { validation_code_hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , } , # [codec (index = 7)] # [doc = "See [`Pallet::include_pvf_check_statement`]."] include_pvf_check_statement { stmt : runtime_types :: polkadot_primitives :: v6 :: PvfCheckStatement , signature : runtime_types :: polkadot_primitives :: v6 :: validator_app :: Signature , } , # [codec (index = 8)] # [doc = "See [`Pallet::force_set_most_recent_context`]."] force_set_most_recent_context { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , context : :: core :: primitive :: u32 , } , } + # [codec (index = 0)] # [doc = "Set the storage for the parachain validation code immediately."] force_set_current_code { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 1)] # [doc = "Set the storage for the current parachain head data immediately."] force_set_current_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , # [codec (index = 2)] # [doc = "Schedule an upgrade as if it was scheduled in the given relay parent block."] force_schedule_code_upgrade { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , relay_parent_number : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "Note a new block head for para within the context of the current block."] force_note_new_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , # [codec (index = 4)] # [doc = "Put a parachain directly into the next session's action queue."] # [doc = "We can't queue it any sooner than this without going into the"] # [doc = "initializer..."] force_queue_action { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 5)] # [doc = "Adds the validation code to the storage."] # [doc = ""] # [doc = "The code will not be added if it is already present. Additionally, if PVF pre-checking"] # [doc = "is running for that code, it will be instantly accepted."] # [doc = ""] # [doc = "Otherwise, the code will be added into the storage. Note that the code will be added"] # [doc = "into storage with reference count 0. This is to account the fact that there are no users"] # [doc = "for this code yet. The caller will have to make sure that this code eventually gets"] # [doc = "used by some parachain or removed from the storage to avoid storage leaks. For the"] # [doc = "latter prefer to use the `poke_unused_validation_code` dispatchable to raw storage"] # [doc = "manipulation."] # [doc = ""] # [doc = "This function is mainly meant to be used for upgrading parachains that do not follow"] # [doc = "the go-ahead signal while the PVF pre-checking feature is enabled."] add_trusted_validation_code { validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 6)] # [doc = "Remove the validation code from the storage iff the reference count is 0."] # [doc = ""] # [doc = "This is better than removing the storage directly, because it will not remove the code"] # [doc = "that was suddenly got used by some parachain while this dispatchable was pending"] # [doc = "dispatching."] poke_unused_validation_code { validation_code_hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , } , # [codec (index = 7)] # [doc = "Includes a statement for a PVF pre-checking vote. Potentially, finalizes the vote and"] # [doc = "enacts the results if that was the last vote before achieving the supermajority."] include_pvf_check_statement { stmt : runtime_types :: polkadot_primitives :: v6 :: PvfCheckStatement , signature : runtime_types :: polkadot_primitives :: v6 :: validator_app :: Signature , } , # [codec (index = 8)] # [doc = "Set the storage for the current parachain head data immediately."] force_set_most_recent_context { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , context : :: core :: primitive :: u32 , } , } #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -53634,7 +60131,7 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::enter`]."] + #[doc = "Enter the paras inherent. This will process bitfields and backed candidates."] enter { data: runtime_types::polkadot_primitives::v6::InherentData< runtime_types::sp_runtime::generic::header::Header< @@ -53864,12 +60361,16 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::register_validators`]."] + #[doc = "Add new validators to the set."] + #[doc = ""] + #[doc = "The new validators will be active from current session + 2."] register_validators { validators: ::std::vec::Vec<::subxt::utils::AccountId32>, }, #[codec(index = 1)] - #[doc = "See [`Pallet::deregister_validators`]."] + #[doc = "Remove validators from the set."] + #[doc = ""] + #[doc = "The removed validators will be deactivated from current session + 2."] deregister_validators { validators: ::std::vec::Vec<::subxt::utils::AccountId32>, }, @@ -55911,6 +62412,22 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum ExtrinsicInclusionMode { + #[codec(index = 0)] + AllExtrinsics, + #[codec(index = 1)] + OnlyInherents, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct ModuleError { pub index: ::core::primitive::u8, pub error: [::core::primitive::u8; 4usize], From 55e87c86bad145571e5697996ca31615a138a501 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Mar 2024 09:27:05 +0100 Subject: [PATCH 38/66] build(deps): bump mio from 0.8.10 to 0.8.11 (#1465) Bumps [mio](https://github.com/tokio-rs/mio) from 0.8.10 to 0.8.11. - [Release notes](https://github.com/tokio-rs/mio/releases) - [Changelog](https://github.com/tokio-rs/mio/blob/master/CHANGELOG.md) - [Commits](https://github.com/tokio-rs/mio/compare/v0.8.10...v0.8.11) --- updated-dependencies: - dependency-name: mio dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 502183c315..19dcfb3645 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2632,9 +2632,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "wasi", From a2ee7503658d206623639fd39109f35fffb729d0 Mon Sep 17 00:00:00 2001 From: Tadeo Hepperle <62739623+tadeohepperle@users.noreply.github.com> Date: Wed, 6 Mar 2024 14:04:51 +0100 Subject: [PATCH 39/66] Typed Storage Keys (#1419) * first iteration on storage multi keys * decoding values from concat style hashers * move util functions and remove comments * change codegen for storage keys and fix examples * trait bounds don't match scale value... * fix trait bounds and examples * reconstruct storage keys in iterations * build(deps): bump js-sys from 0.3.67 to 0.3.68 (#1428) Bumps [js-sys](https://github.com/rustwasm/wasm-bindgen) from 0.3.67 to 0.3.68. - [Release notes](https://github.com/rustwasm/wasm-bindgen/releases) - [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/rustwasm/wasm-bindgen/commits) --- updated-dependencies: - dependency-name: js-sys dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump clap from 4.4.18 to 4.5.0 (#1427) Bumps [clap](https://github.com/clap-rs/clap) from 4.4.18 to 4.5.0. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/v4.4.18...clap_complete-v4.5.0) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump either from 1.9.0 to 1.10.0 (#1425) Bumps [either](https://github.com/rayon-rs/either) from 1.9.0 to 1.10.0. - [Commits](https://github.com/rayon-rs/either/compare/1.9.0...1.10.0) --- updated-dependencies: - dependency-name: either dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump thiserror from 1.0.56 to 1.0.57 (#1424) Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.56 to 1.0.57. - [Release notes](https://github.com/dtolnay/thiserror/releases) - [Commits](https://github.com/dtolnay/thiserror/compare/1.0.56...1.0.57) --- updated-dependencies: - dependency-name: thiserror dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump jsonrpsee from 0.21.0 to 0.22.0 (#1426) * build(deps): bump jsonrpsee from 0.21.0 to 0.22.0 Bumps [jsonrpsee](https://github.com/paritytech/jsonrpsee) from 0.21.0 to 0.22.0. - [Release notes](https://github.com/paritytech/jsonrpsee/releases) - [Changelog](https://github.com/paritytech/jsonrpsee/blob/master/CHANGELOG.md) - [Commits](https://github.com/paritytech/jsonrpsee/compare/v0.21.0...v0.22.0) --- updated-dependencies: - dependency-name: jsonrpsee dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Update Cargo.lock --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: James Wilson Co-authored-by: Niklas Adolfsson * subxt: Derive `std::cmp` traits for subxt payloads and addresses (#1429) * subxt/tx: Derive std::cmp traits Signed-off-by: Alexandru Vasile * subxt/runtime_api: Derive std::cmp traits Signed-off-by: Alexandru Vasile * subxt/constants: Derive std::cmp traits Signed-off-by: Alexandru Vasile * subxt/custom_values: Derive std::cmp traits Signed-off-by: Alexandru Vasile * subxt/storage: Derive std::cmp traits Signed-off-by: Alexandru Vasile * subxt: Fix non_canonical_partial_ord_impl clippy introduced in 1.73 Signed-off-by: Alexandru Vasile * subxt: Add comment wrt derivative issue that triggers clippy warning Signed-off-by: Alexandru Vasile * Update subxt/src/backend/mod.rs * Update subxt/src/constants/constant_address.rs --------- Signed-off-by: Alexandru Vasile Co-authored-by: Niklas Adolfsson * fix clippy * add integration tests * fix doc tests * change hashing logic for hashers=1 * refactor * clippy and fmt * regenerate polkadot file which got changed by the automatic PR * nested design for storage keys * refactor codegen * codegen adjustments * fix storage hasher codegen test * Suggestions for storage value decoding (#1457) * Storage decode tweaks * doc tweak * more precise error when leftover or not enough bytes * integrate nits from PR * add fuzztest for storage keys, fix decoding bug * clippy and fmt * clippy * Niklas Suggestions * lifetime issues and iterator impls * fmt and clippy * regenerate polkadot.rs * fix storage key encoding for empty keys * rename trait methods for storage keys * fix hasher bug... * impl nits, add iterator struct seperate from `StorageHashers` * clippy fix * remove println --------- Signed-off-by: dependabot[bot] Signed-off-by: Alexandru Vasile Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: James Wilson Co-authored-by: Niklas Adolfsson Co-authored-by: Alexandru Vasile <60601340+lexnv@users.noreply.github.com> --- codegen/src/api/storage.rs | 149 +- codegen/src/error.rs | 18 +- metadata/src/from_into/v14.rs | 8 +- metadata/src/lib.rs | 29 + subxt/examples/storage_iterating.rs | 7 +- subxt/examples/storage_iterating_dynamic.rs | 11 +- subxt/examples/storage_iterating_partial.rs | 8 +- subxt/src/book/usage/storage.rs | 2 +- subxt/src/error/mod.rs | 27 +- subxt/src/storage/mod.rs | 14 +- subxt/src/storage/storage_address.rs | 183 +- subxt/src/storage/storage_key.rs | 466 ++++ subxt/src/storage/storage_type.rs | 62 +- subxt/src/storage/utils.rs | 27 +- .../src/full_client/codegen/polkadot.rs | 2407 ++++++++--------- .../src/full_client/storage/mod.rs | 30 +- 16 files changed, 1960 insertions(+), 1488 deletions(-) create mode 100644 subxt/src/storage/storage_key.rs diff --git a/codegen/src/api/storage.rs b/codegen/src/api/storage.rs index 9ea3832e94..330843ccf7 100644 --- a/codegen/src/api/storage.rs +++ b/codegen/src/api/storage.rs @@ -8,7 +8,7 @@ use quote::{format_ident, quote}; use scale_info::TypeDef; use scale_typegen::{typegen::type_path::TypePath, TypeGenerator}; use subxt_metadata::{ - PalletMetadata, StorageEntryMetadata, StorageEntryModifier, StorageEntryType, + PalletMetadata, StorageEntryMetadata, StorageEntryModifier, StorageEntryType, StorageHasher, }; use super::CodegenError; @@ -75,8 +75,15 @@ fn generate_storage_entry_fns( let alias_module_name = format_ident!("{snake_case_name}"); let alias_storage_path = quote!( types::#alias_module_name::#alias_name ); - let storage_entry_map = |idx, id| { - let ident: Ident = format_ident!("_{}", idx); + struct MapEntryKey { + arg_name: Ident, + alias_type_def: TokenStream, + alias_type_path: TokenStream, + hasher: StorageHasher, + } + + let map_entry_key = |idx, id, hasher| -> MapEntryKey { + let arg_name: Ident = format_ident!("_{}", idx); let ty_path = type_gen .resolve_type_path(id) .expect("type is in metadata; qed"); @@ -84,34 +91,67 @@ fn generate_storage_entry_fns( let alias_name = format_ident!("Param{}", idx); let alias_type = primitive_type_alias(&ty_path); - let alias_type = quote!( pub type #alias_name = #alias_type; ); - let path_to_alias = quote!( types::#alias_module_name::#alias_name ); + let alias_type_def = quote!( pub type #alias_name = #alias_type; ); + let alias_type_path = quote!( types::#alias_module_name::#alias_name ); - (ident, alias_type, path_to_alias) + MapEntryKey { + arg_name, + alias_type_def, + alias_type_path, + hasher, + } }; - let keys: Vec<(Ident, TokenStream, TokenStream)> = match storage_entry.entry_type() { + let keys: Vec = match storage_entry.entry_type() { StorageEntryType::Plain(_) => vec![], - StorageEntryType::Map { key_ty, .. } => { + StorageEntryType::Map { + key_ty, hashers, .. + } => { match &type_gen .resolve_type(*key_ty) .expect("key type should be present") .type_def { // An N-map; return each of the keys separately. - TypeDef::Tuple(tuple) => tuple - .fields - .iter() - .enumerate() - .map(|(idx, f)| storage_entry_map(idx, f.id)) - .collect::>(), + TypeDef::Tuple(tuple) => { + let key_count = tuple.fields.len(); + let hasher_count = hashers.len(); + if hasher_count != 1 && hasher_count != key_count { + return Err(CodegenError::InvalidStorageHasherCount { + storage_entry_name: storage_entry.name().to_owned(), + key_count, + hasher_count, + }); + } + + let mut map_entry_keys: Vec = vec![]; + for (idx, field) in tuple.fields.iter().enumerate() { + // Note: these are in bounds because of the checks above, qed; + let hasher = if idx >= hasher_count { + hashers[0] + } else { + hashers[idx] + }; + map_entry_keys.push(map_entry_key(idx, field.id, hasher)); + } + map_entry_keys + } // A map with a single key; return the single key. _ => { - vec![storage_entry_map(0, *key_ty)] + let Some(hasher) = hashers.first() else { + return Err(CodegenError::InvalidStorageHasherCount { + storage_entry_name: storage_entry.name().to_owned(), + key_count: 1, + hasher_count: 0, + }); + }; + + vec![map_entry_key(0, *key_ty, *hasher)] } } } }; + let pallet_name = pallet.name(); let storage_name = storage_entry.name(); let Some(storage_hash) = pallet.storage_hash(storage_name) else { @@ -133,6 +173,10 @@ fn generate_storage_entry_fns( StorageEntryModifier::Optional => quote!(()), }; + // Note: putting `#crate_path::storage::address::StaticStorageKey` into this variable is necessary + // to get the line width below a certain limit. If not done, rustfmt will refuse to format the following big expression. + // for more information see [this post](https://users.rust-lang.org/t/rustfmt-silently-fails-to-work/75485/4). + let static_storage_key: TokenStream = quote!(#crate_path::storage::address::StaticStorageKey); let all_fns = (0..=keys.len()).map(|n_keys| { let keys_slice = &keys[..n_keys]; let (fn_name, is_fetchable, is_iterable) = if n_keys == keys.len() { @@ -146,12 +190,65 @@ fn generate_storage_entry_fns( }; (fn_name, false, true) }; - let is_fetchable_type = is_fetchable.then_some(quote!(#crate_path::storage::address::Yes)).unwrap_or(quote!(())); - let is_iterable_type = is_iterable.then_some(quote!(#crate_path::storage::address::Yes)).unwrap_or(quote!(())); - let key_impls = keys_slice.iter().map(|(field_name, _, _)| quote!( #crate_path::storage::address::make_static_storage_map_key(#field_name.borrow()) )); - let key_args = keys_slice.iter().map(|(field_name, _, path_to_alias )| { - quote!( #field_name: impl ::std::borrow::Borrow<#path_to_alias> ) - }); + let is_fetchable_type = is_fetchable + .then_some(quote!(#crate_path::storage::address::Yes)) + .unwrap_or(quote!(())); + let is_iterable_type = is_iterable + .then_some(quote!(#crate_path::storage::address::Yes)) + .unwrap_or(quote!(())); + + let (keys, keys_type) = match keys_slice.len() { + 0 => (quote!(()), quote!(())), + 1 => { + let key = &keys_slice[0]; + if key.hasher.ends_with_key() { + let arg = &key.arg_name; + let keys = quote!(#static_storage_key::new(#arg.borrow())); + let path = &key.alias_type_path; + let path = quote!(#static_storage_key<#path>); + (keys, path) + } else { + (quote!(()), quote!(())) + } + } + _ => { + let keys_iter = keys_slice.iter().map( + |MapEntryKey { + arg_name, hasher, .. + }| { + if hasher.ends_with_key() { + quote!( #static_storage_key::new(#arg_name.borrow()) ) + } else { + quote!(()) + } + }, + ); + let keys = quote!( (#(#keys_iter,)*) ); + let paths_iter = keys_slice.iter().map( + |MapEntryKey { + alias_type_path, + hasher, + .. + }| { + if hasher.ends_with_key() { + quote!( #static_storage_key<#alias_type_path> ) + } else { + quote!(()) + } + }, + ); + let paths = quote!( (#(#paths_iter,)*) ); + (keys, paths) + } + }; + + let key_args = keys_slice.iter().map( + |MapEntryKey { + arg_name, + alias_type_path, + .. + }| quote!( #arg_name: impl ::std::borrow::Borrow<#alias_type_path> ), + ); quote!( #docs @@ -159,7 +256,7 @@ fn generate_storage_entry_fns( &self, #(#key_args,)* ) -> #crate_path::storage::address::Address::< - #crate_path::storage::address::StaticStorageMapKey, + #keys_type, #alias_storage_path, #is_fetchable_type, #is_defaultable_type, @@ -168,14 +265,16 @@ fn generate_storage_entry_fns( #crate_path::storage::address::Address::new_static( #pallet_name, #storage_name, - vec![#(#key_impls,)*], + #keys, [#(#storage_hash,)*] ) } ) }); - let alias_types = keys.iter().map(|(_, alias_type, _)| alias_type); + let alias_types = keys + .iter() + .map(|MapEntryKey { alias_type_def, .. }| alias_type_def); let types_mod_ident = type_gen.types_mod_ident(); // Generate type alias for the return type only, since @@ -231,7 +330,7 @@ mod tests { name, modifier: v15::StorageEntryModifier::Optional, ty: v15::StorageEntryType::Map { - hashers: vec![], + hashers: vec![v15::StorageHasher::Blake2_128Concat], key, value: meta_type::(), }, diff --git a/codegen/src/error.rs b/codegen/src/error.rs index cb95354a20..4a77d247af 100644 --- a/codegen/src/error.rs +++ b/codegen/src/error.rs @@ -39,15 +39,21 @@ pub enum CodegenError { #[error("Call variant for type {0} must have all named fields. Make sure you are providing a valid substrate-based metadata")] InvalidCallVariant(u32), /// Type should be an variant/enum. - #[error( - "{0} type should be an variant/enum type. Make sure you are providing a valid substrate-based metadata" - )] + #[error("{0} type should be an variant/enum type. Make sure you are providing a valid substrate-based metadata")] InvalidType(String), /// Extrinsic call type could not be found. - #[error( - "Extrinsic call type could not be found. Make sure you are providing a valid substrate-based metadata" - )] + #[error("Extrinsic call type could not be found. Make sure you are providing a valid substrate-based metadata")] MissingCallType, + /// There are too many or too few hashers. + #[error("Could not generate functions for storage entry {storage_entry_name}. There are {key_count} keys, but only {hasher_count} hashers. The number of hashers must equal the number of keys or be exactly 1.")] + InvalidStorageHasherCount { + /// The name of the storage entry + storage_entry_name: String, + /// Number of keys + key_count: usize, + /// Number of hashers + hasher_count: usize, + }, /// Cannot generate types. #[error("Type Generation failed: {0}")] TypeGeneration(#[from] TypegenError), diff --git a/metadata/src/from_into/v14.rs b/metadata/src/from_into/v14.rs index b9b13cf681..989542ab56 100644 --- a/metadata/src/from_into/v14.rs +++ b/metadata/src/from_into/v14.rs @@ -316,9 +316,7 @@ fn generate_outer_enums( ) -> Result, TryFromError> { let find_type = |name: &str| { metadata.types.types.iter().find_map(|ty| { - let Some(ident) = ty.ty.path.ident() else { - return None; - }; + let ident = ty.ty.path.ident()?; if ident != name { return None; @@ -368,9 +366,7 @@ fn generate_outer_error_enum_type( .pallets .iter() .filter_map(|pallet| { - let Some(error) = &pallet.error else { - return None; - }; + let error = pallet.error.as_ref()?; // Note: using the `alloc::format!` macro like in `let path = format!("{}Error", pallet.name);` // leads to linker errors about extern function `_Unwind_Resume` not being defined. diff --git a/metadata/src/lib.rs b/metadata/src/lib.rs index 59a3ba484b..2f3c6c0000 100644 --- a/metadata/src/lib.rs +++ b/metadata/src/lib.rs @@ -475,6 +475,35 @@ pub enum StorageHasher { Identity, } +impl StorageHasher { + /// The hash produced by a [`StorageHasher`] can have these two components, in order: + /// + /// 1. A fixed size hash. (not present for [`StorageHasher::Identity`]). + /// 2. The SCALE encoded key that was used as an input to the hasher (only present for + /// [`StorageHasher::Twox64Concat`], [`StorageHasher::Blake2_128Concat`] or [`StorageHasher::Identity`]). + /// + /// This function returns the number of bytes used to represent the first of these. + pub fn len_excluding_key(&self) -> usize { + match self { + StorageHasher::Blake2_128Concat => 16, + StorageHasher::Twox64Concat => 8, + StorageHasher::Blake2_128 => 16, + StorageHasher::Blake2_256 => 32, + StorageHasher::Twox128 => 16, + StorageHasher::Twox256 => 32, + StorageHasher::Identity => 0, + } + } + + /// Returns true if the key used to produce the hash is appended to the hash itself. + pub fn ends_with_key(&self) -> bool { + matches!( + self, + StorageHasher::Blake2_128Concat | StorageHasher::Twox64Concat | StorageHasher::Identity + ) + } +} + /// Is the storage entry optional, or does it have a default value. #[derive(Debug, Clone, Copy, Eq, PartialEq)] pub enum StorageEntryModifier { diff --git a/subxt/examples/storage_iterating.rs b/subxt/examples/storage_iterating.rs index e99bb884b3..f64fad6c8d 100644 --- a/subxt/examples/storage_iterating.rs +++ b/subxt/examples/storage_iterating.rs @@ -16,9 +16,10 @@ async fn main() -> Result<(), Box> { // a time from the node, but we always iterate over one at a time). let mut results = api.storage().at_latest().await?.iter(storage_query).await?; - while let Some(Ok((key, value))) = results.next().await { - println!("Key: 0x{}", hex::encode(&key)); - println!("Value: {:?}", value); + while let Some(Ok(kv)) = results.next().await { + println!("Keys decoded: {:?}", kv.keys); + println!("Key: 0x{}", hex::encode(&kv.key_bytes)); + println!("Value: {:?}", kv.value); } Ok(()) diff --git a/subxt/examples/storage_iterating_dynamic.rs b/subxt/examples/storage_iterating_dynamic.rs index 391ce60cd7..a768e6768e 100644 --- a/subxt/examples/storage_iterating_dynamic.rs +++ b/subxt/examples/storage_iterating_dynamic.rs @@ -7,16 +7,17 @@ async fn main() -> Result<(), Box> { let api = OnlineClient::::new().await?; // Build a dynamic storage query to iterate account information. - // With a dynamic query, we can just provide an empty Vec as the keys to iterate over all entries. - let keys = Vec::<()>::new(); + // With a dynamic query, we can just provide an empty vector as the keys to iterate over all entries. + let keys: Vec = vec![]; let storage_query = subxt::dynamic::storage("System", "Account", keys); // Use that query to return an iterator over the results. let mut results = api.storage().at_latest().await?.iter(storage_query).await?; - while let Some(Ok((key, value))) = results.next().await { - println!("Key: 0x{}", hex::encode(&key)); - println!("Value: {:?}", value.to_value()?); + while let Some(Ok(kv)) = results.next().await { + println!("Keys decoded: {:?}", kv.keys); + println!("Key: 0x{}", hex::encode(&kv.key_bytes)); + println!("Value: {:?}", kv.value.to_value()?); } Ok(()) diff --git a/subxt/examples/storage_iterating_partial.rs b/subxt/examples/storage_iterating_partial.rs index eb89dd2e15..d8d800faf4 100644 --- a/subxt/examples/storage_iterating_partial.rs +++ b/subxt/examples/storage_iterating_partial.rs @@ -38,11 +38,11 @@ async fn main() -> Result<(), Box> { // Get back an iterator of results. let mut results = api.storage().at_latest().await?.iter(storage_query).await?; - while let Some(Ok((key, value))) = results.next().await { - println!("Key: 0x{}", hex::encode(&key)); - println!("Value: {:?}", value); + while let Some(Ok(kv)) = results.next().await { + println!("Keys decoded: {:?}", kv.keys); + println!("Key: 0x{}", hex::encode(&kv.key_bytes)); + println!("Value: {:?}", kv.value); } - Ok(()) } diff --git a/subxt/src/book/usage/storage.rs b/subxt/src/book/usage/storage.rs index 6d636c6bc3..f1c9ede5ef 100644 --- a/subxt/src/book/usage/storage.rs +++ b/subxt/src/book/usage/storage.rs @@ -49,7 +49,7 @@ //! // A static query capable of iterating over accounts: //! let storage_query = polkadot::storage().system().account_iter(); //! // A dynamic query to do the same: -//! let storage_query = subxt::dynamic::storage("System", "Account", Vec::::new()); +//! let storage_query = subxt::dynamic::storage("System", "Account", ()); //! ``` //! //! Some storage entries are maps with multiple keys. As an example, we might end up with diff --git a/subxt/src/error/mod.rs b/subxt/src/error/mod.rs index 41dbc11d31..4534585efc 100644 --- a/subxt/src/error/mod.rs +++ b/subxt/src/error/mod.rs @@ -14,6 +14,7 @@ crate::macros::cfg_unstable_light_client! { pub use dispatch_error::{ ArithmeticError, DispatchError, ModuleError, TokenError, TransactionalError, }; +use subxt_metadata::StorageHasher; // Re-expose the errors we use from other crates here: pub use crate::config::ExtrinsicParamsError; @@ -187,14 +188,9 @@ pub enum TransactionError { #[derive(Clone, Debug, thiserror::Error)] #[non_exhaustive] pub enum StorageAddressError { - /// Storage map type must be a composite type. - #[error("Storage map type must be a composite type")] - MapTypeMustBeTuple, /// Storage lookup does not have the expected number of keys. - #[error("Storage lookup requires {expected} keys but got {actual} keys")] - WrongNumberOfKeys { - /// The actual number of keys needed, based on the metadata. - actual: usize, + #[error("Storage lookup requires {expected} keys but more keys have been provided.")] + TooManyKeys { /// The number of keys provided in the storage address. expected: usize, }, @@ -206,6 +202,23 @@ pub enum StorageAddressError { /// The number of fields in the metadata for this storage entry. fields: usize, }, + /// We weren't given enough bytes to decode the storage address/key. + #[error("Not enough remaining bytes to decode the storage address/key")] + NotEnoughBytes, + /// We have leftover bytes after decoding the storage address. + #[error("We have leftover bytes after decoding the storage address")] + TooManyBytes, + /// The bytes of a storage address are not the expected address for decoding the storage keys of the address. + #[error("Storage address bytes are not the expected format. Addresses need to be at least 16 bytes (pallet ++ entry) and follow a structure given by the hashers defined in the metadata")] + UnexpectedAddressBytes, + /// An invalid hasher was used to reconstruct a value from a chunk of bytes that is part of a storage address. Hashers where the hash does not contain the original value are invalid for this purpose. + #[error("An invalid hasher was used to reconstruct a value with type ID {ty_id} from a hash formed by a {hasher:?} hasher. This is only possible for concat-style hashers or the identity hasher")] + HasherCannotReconstructKey { + /// Type id of the key's type. + ty_id: u32, + /// The invalid hasher that caused this error. + hasher: StorageHasher, + }, } /// Something went wrong trying to access details in the metadata. diff --git a/subxt/src/storage/mod.rs b/subxt/src/storage/mod.rs index 0219cd8caf..98f8365274 100644 --- a/subxt/src/storage/mod.rs +++ b/subxt/src/storage/mod.rs @@ -6,23 +6,23 @@ mod storage_address; mod storage_client; +mod storage_key; mod storage_type; - -pub mod utils; +mod utils; pub use storage_client::StorageClient; -pub use storage_type::Storage; +pub use storage_type::{Storage, StorageKeyValuePair}; /// Types representing an address which describes where a storage /// entry lives and how to properly decode it. pub mod address { - pub use super::storage_address::{ - dynamic, make_static_storage_map_key, Address, DynamicAddress, StaticStorageMapKey, - StorageAddress, Yes, - }; + pub use super::storage_address::{dynamic, Address, DynamicAddress, StorageAddress, Yes}; + pub use super::storage_key::{StaticStorageKey, StorageKey}; } +pub use storage_key::StorageKey; + // For consistency with other modules, also expose // the basic address stuff at the root of the module. pub use storage_address::{dynamic, Address, DynamicAddress, StorageAddress}; diff --git a/subxt/src/storage/storage_address.rs b/subxt/src/storage/storage_address.rs index 2211b20def..cb72462eb8 100644 --- a/subxt/src/storage/storage_address.rs +++ b/subxt/src/storage/storage_address.rs @@ -4,20 +4,22 @@ use crate::{ dynamic::DecodedValueThunk, - error::{Error, MetadataError, StorageAddressError}, - metadata::{DecodeWithMetadata, EncodeWithMetadata, Metadata}, - utils::{Encoded, Static}, + error::{Error, MetadataError}, + metadata::{DecodeWithMetadata, Metadata}, }; use derivative::Derivative; -use scale_info::TypeDef; + use std::borrow::Cow; -use subxt_metadata::{StorageEntryType, StorageHasher}; + +use super::{storage_key::StorageHashers, StorageKey}; /// This represents a storage address. Anything implementing this trait /// can be used to fetch and iterate over storage entries. pub trait StorageAddress { /// The target type of the value that lives at this address. type Target: DecodeWithMetadata; + /// The keys type used to construct this address. + type Keys: StorageKey; /// Can an entry be fetched from this address? /// Set this type to [`Yes`] to enable the corresponding calls to be made. type IsFetchable; @@ -54,64 +56,69 @@ pub struct Yes; /// via the `subxt` macro) or dynamic values via [`dynamic`]. #[derive(Derivative)] #[derivative( - Clone(bound = "StorageKey: Clone"), - Debug(bound = "StorageKey: std::fmt::Debug"), - Eq(bound = "StorageKey: std::cmp::Eq"), - Ord(bound = "StorageKey: std::cmp::Ord"), - PartialEq(bound = "StorageKey: std::cmp::PartialEq"), - PartialOrd(bound = "StorageKey: std::cmp::PartialOrd") + Clone(bound = "Keys: Clone"), + Debug(bound = "Keys: std::fmt::Debug"), + Eq(bound = "Keys: std::cmp::Eq"), + Ord(bound = "Keys: std::cmp::Ord"), + PartialEq(bound = "Keys: std::cmp::PartialEq"), + PartialOrd(bound = "Keys: std::cmp::PartialOrd") )] -pub struct Address { +pub struct Address { pallet_name: Cow<'static, str>, entry_name: Cow<'static, str>, - storage_entry_keys: Vec, + keys: Keys, validation_hash: Option<[u8; 32]>, _marker: std::marker::PhantomData<(ReturnTy, Fetchable, Defaultable, Iterable)>, } /// A typical storage address constructed at runtime rather than via the `subxt` macro; this /// has no restriction on what it can be used for (since we don't statically know). -pub type DynamicAddress = Address; +pub type DynamicAddress = Address; -impl - Address -where - StorageKey: EncodeWithMetadata, - ReturnTy: DecodeWithMetadata, -{ - /// Create a new [`Address`] to use to access a storage entry. - pub fn new( - pallet_name: impl Into, - entry_name: impl Into, - storage_entry_keys: Vec, - ) -> Self { +impl DynamicAddress { + /// Creates a new dynamic address. As `Keys` you can use a `Vec` + pub fn new(pallet_name: impl Into, entry_name: impl Into, keys: Keys) -> Self { Self { pallet_name: Cow::Owned(pallet_name.into()), entry_name: Cow::Owned(entry_name.into()), - storage_entry_keys: storage_entry_keys.into_iter().collect(), + keys, validation_hash: None, _marker: std::marker::PhantomData, } } +} +impl + Address +where + Keys: StorageKey, + ReturnTy: DecodeWithMetadata, +{ /// Create a new [`Address`] using static strings for the pallet and call name. /// This is only expected to be used from codegen. #[doc(hidden)] pub fn new_static( pallet_name: &'static str, entry_name: &'static str, - storage_entry_keys: Vec, + keys: Keys, hash: [u8; 32], ) -> Self { Self { pallet_name: Cow::Borrowed(pallet_name), entry_name: Cow::Borrowed(entry_name), - storage_entry_keys: storage_entry_keys.into_iter().collect(), + keys, validation_hash: Some(hash), _marker: std::marker::PhantomData, } } +} +impl + Address +where + Keys: StorageKey, + ReturnTy: DecodeWithMetadata, +{ /// Do not validate this storage entry prior to accessing it. pub fn unvalidated(self) -> Self { Self { @@ -128,13 +135,14 @@ where } } -impl StorageAddress - for Address +impl StorageAddress + for Address where - StorageKey: EncodeWithMetadata, + Keys: StorageKey, ReturnTy: DecodeWithMetadata, { type Target = ReturnTy; + type Keys = Keys; type IsFetchable = Fetchable; type IsDefaultable = Defaultable; type IsIterable = Iterable; @@ -156,78 +164,10 @@ where .entry_by_name(self.entry_name()) .ok_or_else(|| MetadataError::StorageEntryNotFound(self.entry_name().to_owned()))?; - match entry.entry_type() { - StorageEntryType::Plain(_) => { - if !self.storage_entry_keys.is_empty() { - Err(StorageAddressError::WrongNumberOfKeys { - expected: 0, - actual: self.storage_entry_keys.len(), - } - .into()) - } else { - Ok(()) - } - } - StorageEntryType::Map { - hashers, key_ty, .. - } => { - let ty = metadata - .types() - .resolve(*key_ty) - .ok_or(MetadataError::TypeNotFound(*key_ty))?; - - // If the provided keys are empty, the storage address must be - // equal to the storage root address. - if self.storage_entry_keys.is_empty() { - return Ok(()); - } - - // If the key is a tuple, we encode each value to the corresponding tuple type. - // If the key is not a tuple, encode a single value to the key type. - let type_ids = match &ty.type_def { - TypeDef::Tuple(tuple) => { - either::Either::Left(tuple.fields.iter().map(|f| f.id)) - } - _other => either::Either::Right(std::iter::once(*key_ty)), - }; - - if type_ids.len() < self.storage_entry_keys.len() { - // Provided more keys than fields. - return Err(StorageAddressError::WrongNumberOfKeys { - expected: type_ids.len(), - actual: self.storage_entry_keys.len(), - } - .into()); - } - - if hashers.len() == 1 { - // One hasher; hash a tuple of all SCALE encoded bytes with the one hash function. - let mut input = Vec::new(); - let iter = self.storage_entry_keys.iter().zip(type_ids); - for (key, type_id) in iter { - key.encode_with_metadata(type_id, metadata, &mut input)?; - } - hash_bytes(&input, &hashers[0], bytes); - Ok(()) - } else if hashers.len() >= type_ids.len() { - let iter = self.storage_entry_keys.iter().zip(type_ids).zip(hashers); - // A hasher per field; encode and hash each field independently. - for ((key, type_id), hasher) in iter { - let mut input = Vec::new(); - key.encode_with_metadata(type_id, metadata, &mut input)?; - hash_bytes(&input, hasher, bytes); - } - Ok(()) - } else { - // Provided more fields than hashers. - Err(StorageAddressError::WrongNumberOfHashers { - hashers: hashers.len(), - fields: type_ids.len(), - } - .into()) - } - } - } + let hashers = StorageHashers::new(entry.entry_type(), metadata.types())?; + self.keys + .encode_storage_key(bytes, &mut hashers.iter(), metadata.types())?; + Ok(()) } fn validation_hash(&self) -> Option<[u8; 32]> { @@ -235,40 +175,11 @@ where } } -/// A static storage key; this is some pre-encoded bytes -/// likely provided by the generated interface. -pub type StaticStorageMapKey = Static; - -// Used in codegen to construct the above. -#[doc(hidden)] -pub fn make_static_storage_map_key(t: T) -> StaticStorageMapKey { - Static(Encoded(t.encode())) -} - /// Construct a new dynamic storage lookup. -pub fn dynamic( +pub fn dynamic( pallet_name: impl Into, entry_name: impl Into, - storage_entry_keys: Vec, -) -> DynamicAddress { + storage_entry_keys: Keys, +) -> DynamicAddress { DynamicAddress::new(pallet_name, entry_name, storage_entry_keys) } - -/// Take some SCALE encoded bytes and a [`StorageHasher`] and hash the bytes accordingly. -fn hash_bytes(input: &[u8], hasher: &StorageHasher, bytes: &mut Vec) { - match hasher { - StorageHasher::Identity => bytes.extend(input), - StorageHasher::Blake2_128 => bytes.extend(sp_core_hashing::blake2_128(input)), - StorageHasher::Blake2_128Concat => { - bytes.extend(sp_core_hashing::blake2_128(input)); - bytes.extend(input); - } - StorageHasher::Blake2_256 => bytes.extend(sp_core_hashing::blake2_256(input)), - StorageHasher::Twox128 => bytes.extend(sp_core_hashing::twox_128(input)), - StorageHasher::Twox256 => bytes.extend(sp_core_hashing::twox_256(input)), - StorageHasher::Twox64Concat => { - bytes.extend(sp_core_hashing::twox_64(input)); - bytes.extend(input); - } - } -} diff --git a/subxt/src/storage/storage_key.rs b/subxt/src/storage/storage_key.rs new file mode 100644 index 0000000000..a8bffab329 --- /dev/null +++ b/subxt/src/storage/storage_key.rs @@ -0,0 +1,466 @@ +use crate::{ + error::{Error, MetadataError, StorageAddressError}, + utils::{Encoded, Static}, +}; +use scale_decode::{visitor::IgnoreVisitor, DecodeAsType}; +use scale_encode::EncodeAsType; +use scale_info::{PortableRegistry, TypeDef}; +use scale_value::Value; +use subxt_metadata::{StorageEntryType, StorageHasher}; + +use derivative::Derivative; + +use super::utils::hash_bytes; + +/// A collection of storage hashers paired with the type ids of the types they should hash. +/// Can be created for each storage entry in the metadata via [`StorageHashers::new()`]. +#[derive(Debug)] +pub(crate) struct StorageHashers { + hashers_and_ty_ids: Vec<(StorageHasher, u32)>, +} + +impl StorageHashers { + /// Creates new [`StorageHashers`] from a storage entry. Looks at the [`StorageEntryType`] and + /// assigns a hasher to each type id that makes up the key. + pub fn new(storage_entry: &StorageEntryType, types: &PortableRegistry) -> Result { + let mut hashers_and_ty_ids = vec![]; + if let StorageEntryType::Map { + hashers, key_ty, .. + } = storage_entry + { + let ty = types + .resolve(*key_ty) + .ok_or(MetadataError::TypeNotFound(*key_ty))?; + + if let TypeDef::Tuple(tuple) = &ty.type_def { + if hashers.len() == 1 { + // use the same hasher for all fields, if only 1 hasher present: + let hasher = hashers[0]; + for f in tuple.fields.iter() { + hashers_and_ty_ids.push((hasher, f.id)); + } + } else if hashers.len() < tuple.fields.len() { + return Err(StorageAddressError::WrongNumberOfHashers { + hashers: hashers.len(), + fields: tuple.fields.len(), + } + .into()); + } else { + for (i, f) in tuple.fields.iter().enumerate() { + hashers_and_ty_ids.push((hashers[i], f.id)); + } + } + } else { + if hashers.len() != 1 { + return Err(StorageAddressError::WrongNumberOfHashers { + hashers: hashers.len(), + fields: 1, + } + .into()); + } + hashers_and_ty_ids.push((hashers[0], *key_ty)); + }; + } + + Ok(Self { hashers_and_ty_ids }) + } + + /// Creates an iterator over the storage hashers and type ids. + pub fn iter(&self) -> StorageHashersIter<'_> { + StorageHashersIter { + hashers: self, + idx: 0, + } + } +} + +/// An iterator over all type ids of the key and the respective hashers. +/// See [`StorageHashers::iter()`]. +#[derive(Debug)] +pub struct StorageHashersIter<'a> { + hashers: &'a StorageHashers, + idx: usize, +} + +impl<'a> StorageHashersIter<'a> { + fn next_or_err(&mut self) -> Result<(StorageHasher, u32), Error> { + self.next().ok_or_else(|| { + StorageAddressError::TooManyKeys { + expected: self.hashers.hashers_and_ty_ids.len(), + } + .into() + }) + } +} + +impl<'a> Iterator for StorageHashersIter<'a> { + type Item = (StorageHasher, u32); + + fn next(&mut self) -> Option { + let item = self.hashers.hashers_and_ty_ids.get(self.idx).copied()?; + self.idx += 1; + Some(item) + } +} + +impl<'a> ExactSizeIterator for StorageHashersIter<'a> { + fn len(&self) -> usize { + self.hashers.hashers_and_ty_ids.len() - self.idx + } +} + +/// This trait should be implemented by anything that can be used as one or multiple storage keys. +pub trait StorageKey { + /// Encodes the storage key into some bytes + fn encode_storage_key( + &self, + bytes: &mut Vec, + hashers: &mut StorageHashersIter, + types: &PortableRegistry, + ) -> Result<(), Error>; + + /// Attempts to decode the StorageKey given some bytes and a set of hashers and type IDs that they are meant to represent. + /// The bytes passed to `decode` should start with: + /// - 1. some fixed size hash (for all hashers except `Identity`) + /// - 2. the plain key value itself (for `Identity`, `Blake2_128Concat` and `Twox64Concat` hashers) + fn decode_storage_key( + bytes: &mut &[u8], + hashers: &mut StorageHashersIter, + types: &PortableRegistry, + ) -> Result + where + Self: Sized + 'static; +} + +/// Implement `StorageKey` for `()` which can be used for keyless storage entries, +/// or to otherwise just ignore some entry. +impl StorageKey for () { + fn encode_storage_key( + &self, + _bytes: &mut Vec, + hashers: &mut StorageHashersIter, + _types: &PortableRegistry, + ) -> Result<(), Error> { + _ = hashers.next_or_err(); + Ok(()) + } + + fn decode_storage_key( + bytes: &mut &[u8], + hashers: &mut StorageHashersIter, + types: &PortableRegistry, + ) -> Result { + let (hasher, ty_id) = match hashers.next_or_err() { + Ok((hasher, ty_id)) => (hasher, ty_id), + Err(_) if bytes.is_empty() => return Ok(()), + Err(err) => return Err(err), + }; + consume_hash_returning_key_bytes(bytes, hasher, ty_id, types)?; + Ok(()) + } +} + +/// A storage key for static encoded values. +/// The original value is only present at construction, but can be decoded from the contained bytes. +#[derive(Derivative)] +#[derivative(Clone(bound = ""), Debug(bound = ""))] +pub struct StaticStorageKey { + bytes: Static, + _marker: std::marker::PhantomData, +} + +impl StaticStorageKey { + /// Creates a new static storage key + pub fn new(key: &K) -> Self { + StaticStorageKey { + bytes: Static(Encoded(key.encode())), + _marker: std::marker::PhantomData, + } + } +} + +impl StaticStorageKey { + /// Decodes the encoded inner bytes into the type `K`. + pub fn decoded(&self) -> Result { + let decoded = K::decode(&mut self.bytes())?; + Ok(decoded) + } +} + +impl StaticStorageKey { + /// Returns the scale-encoded bytes that make up this key + pub fn bytes(&self) -> &[u8] { + &self.bytes.0 .0 + } +} + +// Note: The ?Sized bound is necessary to support e.g. `StorageKey<[u8]>`. +impl StorageKey for StaticStorageKey { + fn encode_storage_key( + &self, + bytes: &mut Vec, + hashers: &mut StorageHashersIter, + types: &PortableRegistry, + ) -> Result<(), Error> { + let (hasher, ty_id) = hashers.next_or_err()?; + let encoded_value = self.bytes.encode_as_type(ty_id, types)?; + hash_bytes(&encoded_value, hasher, bytes); + Ok(()) + } + + fn decode_storage_key( + bytes: &mut &[u8], + hashers: &mut StorageHashersIter, + types: &PortableRegistry, + ) -> Result + where + Self: Sized + 'static, + { + let (hasher, ty_id) = hashers.next_or_err()?; + let key_bytes = consume_hash_returning_key_bytes(bytes, hasher, ty_id, types)?; + + // if the hasher had no key appended, we can't decode it into a `StaticStorageKey`. + let Some(key_bytes) = key_bytes else { + return Err(StorageAddressError::HasherCannotReconstructKey { ty_id, hasher }.into()); + }; + + // Return the key bytes. + let key = StaticStorageKey { + bytes: Static(Encoded(key_bytes.to_vec())), + _marker: std::marker::PhantomData::, + }; + Ok(key) + } +} + +impl StorageKey for Vec { + fn encode_storage_key( + &self, + bytes: &mut Vec, + hashers: &mut StorageHashersIter, + types: &PortableRegistry, + ) -> Result<(), Error> { + for value in self.iter() { + let (hasher, ty_id) = hashers.next_or_err()?; + let encoded_value = value.encode_as_type(ty_id, types)?; + hash_bytes(&encoded_value, hasher, bytes); + } + Ok(()) + } + + fn decode_storage_key( + bytes: &mut &[u8], + hashers: &mut StorageHashersIter, + types: &PortableRegistry, + ) -> Result + where + Self: Sized + 'static, + { + let mut result: Vec = vec![]; + for (hasher, ty_id) in hashers.by_ref() { + match consume_hash_returning_key_bytes(bytes, hasher, ty_id, types)? { + Some(value_bytes) => { + let value = Value::decode_as_type(&mut &*value_bytes, ty_id, types)?; + result.push(value.remove_context()); + } + None => { + result.push(Value::unnamed_composite([])); + } + } + } + + // We've consumed all of the hashers, so we expect to also consume all of the bytes: + if !bytes.is_empty() { + return Err(StorageAddressError::TooManyBytes.into()); + } + + Ok(result) + } +} + +// Skip over the hash bytes (including any key at the end), returning bytes +// representing the key if one exists, or None if the hasher has no key appended. +fn consume_hash_returning_key_bytes<'a>( + bytes: &mut &'a [u8], + hasher: StorageHasher, + ty_id: u32, + types: &PortableRegistry, +) -> Result, Error> { + // Strip the bytes off for the actual hash, consuming them. + let bytes_to_strip = hasher.len_excluding_key(); + if bytes.len() < bytes_to_strip { + return Err(StorageAddressError::NotEnoughBytes.into()); + } + *bytes = &bytes[bytes_to_strip..]; + + // Now, find the bytes representing the key, consuming them. + let before_key = *bytes; + if hasher.ends_with_key() { + scale_decode::visitor::decode_with_visitor(bytes, ty_id, types, IgnoreVisitor) + .map_err(|err| Error::Decode(err.into()))?; + // Return the key bytes, having advanced the input cursor past them. + let key_bytes = &before_key[..before_key.len() - bytes.len()]; + + Ok(Some(key_bytes)) + } else { + // There are no key bytes, so return None. + Ok(None) + } +} + +/// Generates StorageKey implementations for tuples +macro_rules! impl_tuples { + ($($ty:ident $n:tt),+) => {{ + impl<$($ty: StorageKey),+> StorageKey for ($( $ty ),+) { + fn encode_storage_key( + &self, + bytes: &mut Vec, + hashers: &mut StorageHashersIter, + types: &PortableRegistry, + ) -> Result<(), Error> { + $( self.$n.encode_storage_key(bytes, hashers, types)?; )+ + Ok(()) + } + + fn decode_storage_key( + bytes: &mut &[u8], + hashers: &mut StorageHashersIter, + types: &PortableRegistry, + ) -> Result + where + Self: Sized + 'static, + { + Ok( ( $( $ty::decode_storage_key(bytes, hashers, types)?, )+ ) ) + } + } + }}; +} + +#[rustfmt::skip] +const _: () = { + impl_tuples!(A 0, B 1); + impl_tuples!(A 0, B 1, C 2); + impl_tuples!(A 0, B 1, C 2, D 3); + impl_tuples!(A 0, B 1, C 2, D 3, E 4); + impl_tuples!(A 0, B 1, C 2, D 3, E 4, F 5); + impl_tuples!(A 0, B 1, C 2, D 3, E 4, F 5, G 6); + impl_tuples!(A 0, B 1, C 2, D 3, E 4, F 5, G 6, H 7); +}; + +#[cfg(test)] +mod tests { + + use codec::Encode; + use scale_info::{meta_type, PortableRegistry, Registry, TypeInfo}; + use subxt_metadata::StorageHasher; + + use crate::utils::Era; + + use super::{StaticStorageKey, StorageKey}; + + struct KeyBuilder { + registry: Registry, + bytes: Vec, + hashers_and_ty_ids: Vec<(StorageHasher, u32)>, + } + + impl KeyBuilder { + fn new() -> KeyBuilder { + KeyBuilder { + registry: Registry::new(), + bytes: vec![], + hashers_and_ty_ids: vec![], + } + } + + fn add(mut self, value: T, hasher: StorageHasher) -> Self { + let id = self.registry.register_type(&meta_type::()).id; + + self.hashers_and_ty_ids.push((hasher, id)); + for _i in 0..hasher.len_excluding_key() { + self.bytes.push(0); + } + value.encode_to(&mut self.bytes); + self + } + + fn build(self) -> (PortableRegistry, Vec, Vec<(StorageHasher, u32)>) { + (self.registry.into(), self.bytes, self.hashers_and_ty_ids) + } + } + + #[test] + fn storage_key_decoding_fuzz() { + let hashers = [ + StorageHasher::Blake2_128, + StorageHasher::Blake2_128Concat, + StorageHasher::Blake2_256, + StorageHasher::Identity, + StorageHasher::Twox128, + StorageHasher::Twox256, + StorageHasher::Twox64Concat, + ]; + + let key_preserving_hashers = [ + StorageHasher::Blake2_128Concat, + StorageHasher::Identity, + StorageHasher::Twox64Concat, + ]; + + type T4A = ( + (), + StaticStorageKey, + StaticStorageKey, + StaticStorageKey, + ); + type T4B = ( + (), + (StaticStorageKey, StaticStorageKey), + StaticStorageKey, + ); + type T4C = ( + ((), StaticStorageKey), + (StaticStorageKey, StaticStorageKey), + ); + + let era = Era::Immortal; + for h0 in hashers { + for h1 in key_preserving_hashers { + for h2 in key_preserving_hashers { + for h3 in key_preserving_hashers { + let (types, bytes, hashers_and_ty_ids) = KeyBuilder::new() + .add((), h0) + .add(13u32, h1) + .add("Hello", h2) + .add(era, h3) + .build(); + + let hashers = super::StorageHashers { hashers_and_ty_ids }; + let keys_a = + T4A::decode_storage_key(&mut &bytes[..], &mut hashers.iter(), &types) + .unwrap(); + + let keys_b = + T4B::decode_storage_key(&mut &bytes[..], &mut hashers.iter(), &types) + .unwrap(); + + let keys_c = + T4C::decode_storage_key(&mut &bytes[..], &mut hashers.iter(), &types) + .unwrap(); + + assert_eq!(keys_a.1.decoded().unwrap(), 13); + assert_eq!(keys_b.1 .0.decoded().unwrap(), 13); + assert_eq!(keys_c.0 .1.decoded().unwrap(), 13); + + assert_eq!(keys_a.2.decoded().unwrap(), "Hello"); + assert_eq!(keys_b.1 .1.decoded().unwrap(), "Hello"); + assert_eq!(keys_c.1 .0.decoded().unwrap(), "Hello"); + assert_eq!(keys_a.3.decoded().unwrap(), era); + assert_eq!(keys_b.2.decoded().unwrap(), era); + assert_eq!(keys_c.1 .1.decoded().unwrap(), era); + } + } + } + } + } +} diff --git a/subxt/src/storage/storage_type.rs b/subxt/src/storage/storage_type.rs index 2669c1abce..daa0eccf63 100644 --- a/subxt/src/storage/storage_type.rs +++ b/subxt/src/storage/storage_type.rs @@ -3,18 +3,22 @@ // see LICENSE for license details. use super::storage_address::{StorageAddress, Yes}; +use super::storage_key::StorageHashers; +use super::StorageKey; use crate::{ backend::{BackendExt, BlockRef}, client::OnlineClientT, - error::{Error, MetadataError}, + error::{Error, MetadataError, StorageAddressError}, metadata::{DecodeWithMetadata, Metadata}, Config, }; use codec::Decode; use derivative::Derivative; use futures::StreamExt; + use std::{future::Future, marker::PhantomData}; + use subxt_metadata::{PalletMetadata, StorageEntryMetadata, StorageEntryType}; /// This is returned from a couple of storage functions. @@ -197,18 +201,19 @@ where /// .await /// .unwrap(); /// - /// while let Some(Ok((key, value))) = iter.next().await { - /// println!("Key: 0x{}", hex::encode(&key)); - /// println!("Value: {}", value); + /// while let Some(Ok(kv)) = iter.next().await { + /// println!("Key bytes: 0x{}", hex::encode(&kv.key_bytes)); + /// println!("Value: {}", kv.value); /// } /// # } /// ``` pub fn iter

( &self, address: Address, - ) -> impl Future, Address::Target)>, Error>> + 'static + ) -> impl Future>, Error>> + 'static where Address: StorageAddress + 'static, + Address::Keys: 'static + Sized, { let client = self.client.clone(); let block_ref = self.block_ref.clone(); @@ -226,11 +231,13 @@ where // Look up the return type for flexible decoding. Do this once here to avoid // potentially doing it every iteration if we used `decode_storage_with_metadata` // in the iterator. - let return_type_id = return_type_from_storage_entry_type(entry.entry_type()); + let entry = entry.entry_type(); + + let return_type_id = entry.value_ty(); + let hashers = StorageHashers::new(entry, metadata.types())?; // The address bytes of this entry: let address_bytes = super::utils::storage_address_bytes(&address, &metadata)?; - let s = client .backend() .storage_fetch_descendant_values(address_bytes, block_ref.hash()) @@ -240,12 +247,27 @@ where Ok(kv) => kv, Err(e) => return Err(e), }; - let val = Address::Target::decode_with_metadata( + let value = Address::Target::decode_with_metadata( &mut &*kv.value, return_type_id, &metadata, )?; - Ok((kv.key, val)) + + let key_bytes = kv.key; + let cursor = &mut &key_bytes[..]; + strip_storage_addess_root_bytes(cursor)?; + + let keys = ::decode_storage_key( + cursor, + &mut hashers.iter(), + metadata.types(), + )?; + + Ok(StorageKeyValuePair::
{ + keys, + key_bytes, + value, + }) }); let s = StreamOfResults::new(Box::pin(s)); @@ -290,6 +312,28 @@ where } } +/// Strips the first 16 bytes (8 for the pallet hash, 8 for the entry hash) off some storage address bytes. +fn strip_storage_addess_root_bytes(address_bytes: &mut &[u8]) -> Result<(), StorageAddressError> { + if address_bytes.len() >= 16 { + *address_bytes = &address_bytes[16..]; + Ok(()) + } else { + Err(StorageAddressError::UnexpectedAddressBytes) + } +} + +/// A pair of keys and values together with all the bytes that make up the storage address. +/// `keys` is `None` if non-concat hashers are used. In this case the keys could not be extracted back from the key_bytes. +#[derive(Clone, Debug, Eq, PartialEq, Ord, PartialOrd)] +pub struct StorageKeyValuePair { + /// The bytes that make up the address of the storage entry. + pub key_bytes: Vec, + /// The keys that can be used to construct the address of this storage entry. + pub keys: T::Keys, + /// The value of the storage entry. + pub value: T::Target, +} + /// Validate a storage address against the metadata. pub(crate) fn validate_storage_address( address: &Address, diff --git a/subxt/src/storage/utils.rs b/subxt/src/storage/utils.rs index 728a581baf..12db5a922c 100644 --- a/subxt/src/storage/utils.rs +++ b/subxt/src/storage/utils.rs @@ -6,12 +6,14 @@ //! aren't things that should ever be overridden, and so don't exist on //! the trait itself. +use subxt_metadata::StorageHasher; + use super::StorageAddress; use crate::{error::Error, metadata::Metadata}; /// Return the root of a given [`StorageAddress`]: hash the pallet name and entry name /// and append those bytes to the output. -pub(crate) fn write_storage_address_root_bytes( +pub fn write_storage_address_root_bytes( addr: &Address, out: &mut Vec, ) { @@ -21,7 +23,7 @@ pub(crate) fn write_storage_address_root_bytes( /// Outputs the [`storage_address_root_bytes`] as well as any additional bytes that represent /// a lookup in a storage map at that location. -pub(crate) fn storage_address_bytes( +pub fn storage_address_bytes( addr: &Address, metadata: &Metadata, ) -> Result, Error> { @@ -32,8 +34,27 @@ pub(crate) fn storage_address_bytes( } /// Outputs a vector containing the bytes written by [`write_storage_address_root_bytes`]. -pub(crate) fn storage_address_root_bytes(addr: &Address) -> Vec { +pub fn storage_address_root_bytes(addr: &Address) -> Vec { let mut bytes = Vec::new(); write_storage_address_root_bytes(addr, &mut bytes); bytes } + +/// Take some SCALE encoded bytes and a [`StorageHasher`] and hash the bytes accordingly. +pub fn hash_bytes(input: &[u8], hasher: StorageHasher, bytes: &mut Vec) { + match hasher { + StorageHasher::Identity => bytes.extend(input), + StorageHasher::Blake2_128 => bytes.extend(sp_core_hashing::blake2_128(input)), + StorageHasher::Blake2_128Concat => { + bytes.extend(sp_core_hashing::blake2_128(input)); + bytes.extend(input); + } + StorageHasher::Blake2_256 => bytes.extend(sp_core_hashing::blake2_256(input)), + StorageHasher::Twox128 => bytes.extend(sp_core_hashing::twox_128(input)), + StorageHasher::Twox256 => bytes.extend(sp_core_hashing::twox_256(input)), + StorageHasher::Twox64Concat => { + bytes.extend(sp_core_hashing::twox_64(input)); + bytes.extend(input); + } + } +} diff --git a/testing/integration-tests/src/full_client/codegen/polkadot.rs b/testing/integration-tests/src/full_client/codegen/polkadot.rs index 785f4d82a1..43a705fc31 100644 --- a/testing/integration-tests/src/full_client/codegen/polkadot.rs +++ b/testing/integration-tests/src/full_client/codegen/polkadot.rs @@ -4774,7 +4774,7 @@ pub mod api { pub fn account_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::account::Account, (), ::subxt::storage::address::Yes, @@ -4783,7 +4783,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "System", "Account", - vec![], + (), [ 14u8, 233u8, 115u8, 214u8, 0u8, 109u8, 222u8, 121u8, 162u8, 65u8, 60u8, 175u8, 209u8, 79u8, 222u8, 124u8, 22u8, 235u8, 138u8, 176u8, 133u8, @@ -4796,7 +4796,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::account::Account, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -4805,9 +4805,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "System", "Account", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 14u8, 233u8, 115u8, 214u8, 0u8, 109u8, 222u8, 121u8, 162u8, 65u8, 60u8, 175u8, 209u8, 79u8, 222u8, 124u8, 22u8, 235u8, 138u8, 176u8, 133u8, @@ -4819,7 +4817,7 @@ pub mod api { pub fn extrinsic_count( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::extrinsic_count::ExtrinsicCount, ::subxt::storage::address::Yes, (), @@ -4828,7 +4826,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "System", "ExtrinsicCount", - vec![], + (), [ 102u8, 76u8, 236u8, 42u8, 40u8, 231u8, 33u8, 222u8, 123u8, 147u8, 153u8, 148u8, 234u8, 203u8, 181u8, 119u8, 6u8, 187u8, 177u8, 199u8, @@ -4841,7 +4839,7 @@ pub mod api { pub fn inherents_applied( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::inherents_applied::InherentsApplied, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -4850,7 +4848,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "System", "InherentsApplied", - vec![], + (), [ 132u8, 249u8, 142u8, 252u8, 8u8, 103u8, 80u8, 120u8, 50u8, 6u8, 188u8, 223u8, 101u8, 55u8, 165u8, 189u8, 172u8, 249u8, 165u8, 230u8, 183u8, @@ -4862,7 +4860,7 @@ pub mod api { pub fn block_weight( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::block_weight::BlockWeight, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -4871,7 +4869,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "System", "BlockWeight", - vec![], + (), [ 158u8, 46u8, 228u8, 89u8, 210u8, 214u8, 84u8, 154u8, 50u8, 68u8, 63u8, 62u8, 43u8, 42u8, 99u8, 27u8, 54u8, 42u8, 146u8, 44u8, 241u8, 216u8, @@ -4883,7 +4881,7 @@ pub mod api { pub fn all_extrinsics_len( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::all_extrinsics_len::AllExtrinsicsLen, ::subxt::storage::address::Yes, (), @@ -4892,7 +4890,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "System", "AllExtrinsicsLen", - vec![], + (), [ 117u8, 86u8, 61u8, 243u8, 41u8, 51u8, 102u8, 214u8, 137u8, 100u8, 243u8, 185u8, 122u8, 174u8, 187u8, 117u8, 86u8, 189u8, 63u8, 135u8, @@ -4905,7 +4903,7 @@ pub mod api { pub fn block_hash_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::block_hash::BlockHash, (), ::subxt::storage::address::Yes, @@ -4914,7 +4912,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "System", "BlockHash", - vec![], + (), [ 217u8, 32u8, 215u8, 253u8, 24u8, 182u8, 207u8, 178u8, 157u8, 24u8, 103u8, 100u8, 195u8, 165u8, 69u8, 152u8, 112u8, 181u8, 56u8, 192u8, @@ -4928,7 +4926,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::block_hash::BlockHash, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -4937,9 +4935,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "System", "BlockHash", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 217u8, 32u8, 215u8, 253u8, 24u8, 182u8, 207u8, 178u8, 157u8, 24u8, 103u8, 100u8, 195u8, 165u8, 69u8, 152u8, 112u8, 181u8, 56u8, 192u8, @@ -4952,7 +4948,7 @@ pub mod api { pub fn extrinsic_data_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::extrinsic_data::ExtrinsicData, (), ::subxt::storage::address::Yes, @@ -4961,7 +4957,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "System", "ExtrinsicData", - vec![], + (), [ 160u8, 180u8, 122u8, 18u8, 196u8, 26u8, 2u8, 37u8, 115u8, 232u8, 133u8, 220u8, 106u8, 245u8, 4u8, 129u8, 42u8, 84u8, 241u8, 45u8, 199u8, 179u8, @@ -4974,7 +4970,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::extrinsic_data::ExtrinsicData, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -4983,9 +4979,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "System", "ExtrinsicData", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 160u8, 180u8, 122u8, 18u8, 196u8, 26u8, 2u8, 37u8, 115u8, 232u8, 133u8, 220u8, 106u8, 245u8, 4u8, 129u8, 42u8, 84u8, 241u8, 45u8, 199u8, 179u8, @@ -4997,7 +4991,7 @@ pub mod api { pub fn number( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::number::Number, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -5006,7 +5000,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "System", "Number", - vec![], + (), [ 30u8, 194u8, 177u8, 90u8, 194u8, 232u8, 46u8, 180u8, 85u8, 129u8, 14u8, 9u8, 8u8, 8u8, 23u8, 95u8, 230u8, 5u8, 13u8, 105u8, 125u8, 2u8, 22u8, @@ -5018,7 +5012,7 @@ pub mod api { pub fn parent_hash( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::parent_hash::ParentHash, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -5027,7 +5021,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "System", "ParentHash", - vec![], + (), [ 26u8, 130u8, 11u8, 216u8, 155u8, 71u8, 128u8, 170u8, 30u8, 153u8, 21u8, 192u8, 62u8, 93u8, 137u8, 80u8, 120u8, 81u8, 202u8, 94u8, 248u8, 125u8, @@ -5039,7 +5033,7 @@ pub mod api { pub fn digest( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::digest::Digest, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -5048,7 +5042,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "System", "Digest", - vec![], + (), [ 61u8, 64u8, 237u8, 91u8, 145u8, 232u8, 17u8, 254u8, 181u8, 16u8, 234u8, 91u8, 51u8, 140u8, 254u8, 131u8, 98u8, 135u8, 21u8, 37u8, 251u8, 20u8, @@ -5066,7 +5060,7 @@ pub mod api { pub fn events( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::events::Events, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -5075,7 +5069,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "System", "Events", - vec![], + (), [ 45u8, 244u8, 178u8, 49u8, 95u8, 31u8, 121u8, 90u8, 24u8, 201u8, 101u8, 147u8, 242u8, 227u8, 121u8, 238u8, 126u8, 20u8, 227u8, 97u8, 123u8, @@ -5088,7 +5082,7 @@ pub mod api { pub fn event_count( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::event_count::EventCount, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -5097,7 +5091,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "System", "EventCount", - vec![], + (), [ 175u8, 24u8, 252u8, 184u8, 210u8, 167u8, 146u8, 143u8, 164u8, 80u8, 151u8, 205u8, 189u8, 189u8, 55u8, 220u8, 47u8, 101u8, 181u8, 33u8, @@ -5119,7 +5113,7 @@ pub mod api { pub fn event_topics_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::event_topics::EventTopics, (), ::subxt::storage::address::Yes, @@ -5128,7 +5122,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "System", "EventTopics", - vec![], + (), [ 40u8, 225u8, 14u8, 75u8, 44u8, 176u8, 76u8, 34u8, 143u8, 107u8, 69u8, 133u8, 114u8, 13u8, 172u8, 250u8, 141u8, 73u8, 12u8, 65u8, 217u8, 63u8, @@ -5150,7 +5144,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::event_topics::EventTopics, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -5159,9 +5153,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "System", "EventTopics", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 40u8, 225u8, 14u8, 75u8, 44u8, 176u8, 76u8, 34u8, 143u8, 107u8, 69u8, 133u8, 114u8, 13u8, 172u8, 250u8, 141u8, 73u8, 12u8, 65u8, 217u8, 63u8, @@ -5173,7 +5165,7 @@ pub mod api { pub fn last_runtime_upgrade( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::last_runtime_upgrade::LastRuntimeUpgrade, ::subxt::storage::address::Yes, (), @@ -5182,7 +5174,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "System", "LastRuntimeUpgrade", - vec![], + (), [ 137u8, 29u8, 175u8, 75u8, 197u8, 208u8, 91u8, 207u8, 156u8, 87u8, 148u8, 68u8, 91u8, 140u8, 22u8, 233u8, 1u8, 229u8, 56u8, 34u8, 40u8, @@ -5194,7 +5186,7 @@ pub mod api { pub fn upgraded_to_u32_ref_count( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::upgraded_to_u32_ref_count::UpgradedToU32RefCount, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -5203,7 +5195,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "System", "UpgradedToU32RefCount", - vec![], + (), [ 229u8, 73u8, 9u8, 132u8, 186u8, 116u8, 151u8, 171u8, 145u8, 29u8, 34u8, 130u8, 52u8, 146u8, 124u8, 175u8, 79u8, 189u8, 147u8, 230u8, 234u8, @@ -5216,7 +5208,7 @@ pub mod api { pub fn upgraded_to_triple_ref_count( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::upgraded_to_triple_ref_count::UpgradedToTripleRefCount, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -5225,7 +5217,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "System", "UpgradedToTripleRefCount", - vec![], + (), [ 97u8, 66u8, 124u8, 243u8, 27u8, 167u8, 147u8, 81u8, 254u8, 201u8, 101u8, 24u8, 40u8, 231u8, 14u8, 179u8, 154u8, 163u8, 71u8, 81u8, 185u8, @@ -5238,7 +5230,7 @@ pub mod api { pub fn execution_phase( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::execution_phase::ExecutionPhase, ::subxt::storage::address::Yes, (), @@ -5247,7 +5239,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "System", "ExecutionPhase", - vec![], + (), [ 191u8, 129u8, 100u8, 134u8, 126u8, 116u8, 154u8, 203u8, 220u8, 200u8, 0u8, 26u8, 161u8, 250u8, 133u8, 205u8, 146u8, 24u8, 5u8, 156u8, 158u8, @@ -5259,7 +5251,7 @@ pub mod api { pub fn authorized_upgrade( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::authorized_upgrade::AuthorizedUpgrade, ::subxt::storage::address::Yes, (), @@ -5268,7 +5260,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "System", "AuthorizedUpgrade", - vec![], + (), [ 165u8, 97u8, 27u8, 138u8, 2u8, 28u8, 55u8, 92u8, 96u8, 96u8, 168u8, 169u8, 55u8, 178u8, 44u8, 127u8, 58u8, 140u8, 206u8, 178u8, 1u8, 37u8, @@ -5665,7 +5657,7 @@ pub mod api { pub fn epoch_index( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::epoch_index::EpochIndex, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -5674,7 +5666,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Babe", "EpochIndex", - vec![], + (), [ 32u8, 82u8, 130u8, 31u8, 190u8, 162u8, 237u8, 189u8, 104u8, 244u8, 30u8, 199u8, 179u8, 0u8, 161u8, 107u8, 72u8, 240u8, 201u8, 222u8, @@ -5687,7 +5679,7 @@ pub mod api { pub fn authorities( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::authorities::Authorities, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -5696,7 +5688,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Babe", "Authorities", - vec![], + (), [ 67u8, 196u8, 244u8, 13u8, 246u8, 245u8, 198u8, 98u8, 81u8, 55u8, 182u8, 187u8, 214u8, 5u8, 181u8, 76u8, 251u8, 213u8, 144u8, 166u8, 36u8, @@ -5710,7 +5702,7 @@ pub mod api { pub fn genesis_slot( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::genesis_slot::GenesisSlot, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -5719,7 +5711,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Babe", "GenesisSlot", - vec![], + (), [ 218u8, 174u8, 152u8, 76u8, 188u8, 214u8, 7u8, 88u8, 253u8, 187u8, 139u8, 234u8, 51u8, 28u8, 220u8, 57u8, 73u8, 1u8, 18u8, 205u8, 80u8, @@ -5732,7 +5724,7 @@ pub mod api { pub fn current_slot( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::current_slot::CurrentSlot, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -5741,7 +5733,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Babe", "CurrentSlot", - vec![], + (), [ 112u8, 199u8, 115u8, 248u8, 217u8, 242u8, 45u8, 231u8, 178u8, 53u8, 236u8, 167u8, 219u8, 238u8, 81u8, 243u8, 39u8, 140u8, 68u8, 19u8, @@ -5763,7 +5755,7 @@ pub mod api { pub fn randomness( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::randomness::Randomness, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -5772,7 +5764,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Babe", "Randomness", - vec![], + (), [ 36u8, 15u8, 52u8, 73u8, 195u8, 177u8, 186u8, 125u8, 134u8, 11u8, 103u8, 248u8, 170u8, 237u8, 105u8, 239u8, 168u8, 204u8, 147u8, 52u8, 15u8, @@ -5785,7 +5777,7 @@ pub mod api { pub fn pending_epoch_config_change( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::pending_epoch_config_change::PendingEpochConfigChange, ::subxt::storage::address::Yes, (), @@ -5794,7 +5786,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Babe", "PendingEpochConfigChange", - vec![], + (), [ 79u8, 216u8, 84u8, 210u8, 83u8, 149u8, 122u8, 160u8, 159u8, 164u8, 16u8, 134u8, 154u8, 104u8, 77u8, 254u8, 139u8, 18u8, 163u8, 59u8, 92u8, @@ -5806,7 +5798,7 @@ pub mod api { pub fn next_randomness( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::next_randomness::NextRandomness, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -5815,7 +5807,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Babe", "NextRandomness", - vec![], + (), [ 96u8, 191u8, 139u8, 171u8, 144u8, 92u8, 33u8, 58u8, 23u8, 219u8, 164u8, 121u8, 59u8, 209u8, 112u8, 244u8, 50u8, 8u8, 14u8, 244u8, 103u8, 125u8, @@ -5827,7 +5819,7 @@ pub mod api { pub fn next_authorities( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::next_authorities::NextAuthorities, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -5836,7 +5828,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Babe", "NextAuthorities", - vec![], + (), [ 116u8, 95u8, 126u8, 199u8, 237u8, 90u8, 202u8, 227u8, 247u8, 56u8, 201u8, 113u8, 239u8, 191u8, 151u8, 56u8, 156u8, 133u8, 61u8, 64u8, @@ -5857,7 +5849,7 @@ pub mod api { pub fn segment_index( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::segment_index::SegmentIndex, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -5866,7 +5858,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Babe", "SegmentIndex", - vec![], + (), [ 145u8, 91u8, 142u8, 240u8, 184u8, 94u8, 68u8, 52u8, 130u8, 3u8, 75u8, 175u8, 155u8, 130u8, 66u8, 9u8, 150u8, 242u8, 123u8, 111u8, 124u8, @@ -5879,7 +5871,7 @@ pub mod api { pub fn under_construction_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::under_construction::UnderConstruction, (), ::subxt::storage::address::Yes, @@ -5888,7 +5880,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Babe", "UnderConstruction", - vec![], + (), [ 120u8, 120u8, 59u8, 247u8, 50u8, 6u8, 220u8, 14u8, 2u8, 76u8, 203u8, 244u8, 232u8, 144u8, 253u8, 191u8, 101u8, 35u8, 99u8, 85u8, 111u8, @@ -5901,7 +5893,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::under_construction::UnderConstruction, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -5910,9 +5902,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Babe", "UnderConstruction", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 120u8, 120u8, 59u8, 247u8, 50u8, 6u8, 220u8, 14u8, 2u8, 76u8, 203u8, 244u8, 232u8, 144u8, 253u8, 191u8, 101u8, 35u8, 99u8, 85u8, 111u8, @@ -5925,7 +5915,7 @@ pub mod api { pub fn initialized( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::initialized::Initialized, ::subxt::storage::address::Yes, (), @@ -5934,7 +5924,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Babe", "Initialized", - vec![], + (), [ 169u8, 217u8, 237u8, 78u8, 186u8, 202u8, 206u8, 213u8, 54u8, 85u8, 206u8, 166u8, 22u8, 138u8, 236u8, 60u8, 211u8, 169u8, 12u8, 183u8, @@ -5950,7 +5940,7 @@ pub mod api { pub fn author_vrf_randomness( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::author_vrf_randomness::AuthorVrfRandomness, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -5959,7 +5949,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Babe", "AuthorVrfRandomness", - vec![], + (), [ 160u8, 157u8, 62u8, 48u8, 196u8, 136u8, 63u8, 132u8, 155u8, 183u8, 91u8, 201u8, 146u8, 29u8, 192u8, 142u8, 168u8, 152u8, 197u8, 233u8, @@ -5976,7 +5966,7 @@ pub mod api { pub fn epoch_start( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::epoch_start::EpochStart, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -5985,7 +5975,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Babe", "EpochStart", - vec![], + (), [ 144u8, 133u8, 140u8, 56u8, 241u8, 203u8, 199u8, 123u8, 244u8, 126u8, 196u8, 151u8, 214u8, 204u8, 243u8, 244u8, 210u8, 198u8, 174u8, 126u8, @@ -6002,7 +5992,7 @@ pub mod api { pub fn lateness( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::lateness::Lateness, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -6011,7 +6001,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Babe", "Lateness", - vec![], + (), [ 229u8, 214u8, 133u8, 149u8, 32u8, 159u8, 26u8, 22u8, 252u8, 131u8, 200u8, 191u8, 231u8, 176u8, 178u8, 127u8, 33u8, 212u8, 139u8, 220u8, @@ -6025,7 +6015,7 @@ pub mod api { pub fn epoch_config( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::epoch_config::EpochConfig, ::subxt::storage::address::Yes, (), @@ -6034,7 +6024,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Babe", "EpochConfig", - vec![], + (), [ 151u8, 58u8, 93u8, 2u8, 19u8, 98u8, 41u8, 144u8, 241u8, 70u8, 195u8, 37u8, 126u8, 241u8, 111u8, 65u8, 16u8, 228u8, 111u8, 220u8, 241u8, @@ -6048,7 +6038,7 @@ pub mod api { pub fn next_epoch_config( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::next_epoch_config::NextEpochConfig, ::subxt::storage::address::Yes, (), @@ -6057,7 +6047,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Babe", "NextEpochConfig", - vec![], + (), [ 65u8, 54u8, 74u8, 141u8, 193u8, 124u8, 130u8, 238u8, 106u8, 27u8, 221u8, 189u8, 103u8, 53u8, 39u8, 243u8, 212u8, 216u8, 75u8, 185u8, @@ -6077,7 +6067,7 @@ pub mod api { pub fn skipped_epochs( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::skipped_epochs::SkippedEpochs, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -6086,7 +6076,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Babe", "SkippedEpochs", - vec![], + (), [ 120u8, 167u8, 144u8, 97u8, 41u8, 216u8, 103u8, 90u8, 3u8, 86u8, 196u8, 35u8, 160u8, 150u8, 144u8, 233u8, 128u8, 35u8, 119u8, 66u8, 6u8, 63u8, @@ -6276,7 +6266,7 @@ pub mod api { pub fn now( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::now::Now, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -6285,7 +6275,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Timestamp", "Now", - vec![], + (), [ 44u8, 50u8, 80u8, 30u8, 195u8, 146u8, 123u8, 238u8, 8u8, 163u8, 187u8, 92u8, 61u8, 39u8, 51u8, 29u8, 173u8, 169u8, 217u8, 158u8, 85u8, 187u8, @@ -6300,7 +6290,7 @@ pub mod api { pub fn did_update( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::did_update::DidUpdate, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -6309,7 +6299,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Timestamp", "DidUpdate", - vec![], + (), [ 229u8, 175u8, 246u8, 102u8, 237u8, 158u8, 212u8, 229u8, 238u8, 214u8, 205u8, 160u8, 164u8, 252u8, 195u8, 75u8, 139u8, 110u8, 22u8, 34u8, @@ -6772,7 +6762,7 @@ pub mod api { pub fn accounts_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::accounts::Accounts, (), (), @@ -6781,7 +6771,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Indices", "Accounts", - vec![], + (), [ 48u8, 189u8, 43u8, 119u8, 32u8, 168u8, 28u8, 12u8, 245u8, 81u8, 119u8, 182u8, 23u8, 201u8, 33u8, 147u8, 128u8, 171u8, 155u8, 134u8, 71u8, @@ -6795,7 +6785,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::accounts::Accounts, ::subxt::storage::address::Yes, (), @@ -6804,9 +6794,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Indices", "Accounts", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 48u8, 189u8, 43u8, 119u8, 32u8, 168u8, 28u8, 12u8, 245u8, 81u8, 119u8, 182u8, 23u8, 201u8, 33u8, 147u8, 128u8, 171u8, 155u8, 134u8, 71u8, @@ -7877,7 +7865,7 @@ pub mod api { pub fn total_issuance( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::total_issuance::TotalIssuance, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -7886,7 +7874,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Balances", "TotalIssuance", - vec![], + (), [ 116u8, 70u8, 119u8, 194u8, 69u8, 37u8, 116u8, 206u8, 171u8, 70u8, 171u8, 210u8, 226u8, 111u8, 184u8, 204u8, 206u8, 11u8, 68u8, 72u8, @@ -7899,7 +7887,7 @@ pub mod api { pub fn inactive_issuance( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::inactive_issuance::InactiveIssuance, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -7908,7 +7896,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Balances", "InactiveIssuance", - vec![], + (), [ 212u8, 185u8, 19u8, 50u8, 250u8, 72u8, 173u8, 50u8, 4u8, 104u8, 161u8, 249u8, 77u8, 247u8, 204u8, 248u8, 11u8, 18u8, 57u8, 4u8, 82u8, 110u8, @@ -7943,7 +7931,7 @@ pub mod api { pub fn account_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::account::Account, (), ::subxt::storage::address::Yes, @@ -7952,7 +7940,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Balances", "Account", - vec![], + (), [ 213u8, 38u8, 200u8, 69u8, 218u8, 0u8, 112u8, 181u8, 160u8, 23u8, 96u8, 90u8, 3u8, 88u8, 126u8, 22u8, 103u8, 74u8, 64u8, 69u8, 29u8, 247u8, @@ -7988,7 +7976,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::account::Account, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -7997,9 +7985,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Balances", "Account", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 213u8, 38u8, 200u8, 69u8, 218u8, 0u8, 112u8, 181u8, 160u8, 23u8, 96u8, 90u8, 3u8, 88u8, 126u8, 22u8, 103u8, 74u8, 64u8, 69u8, 29u8, 247u8, @@ -8012,7 +7998,7 @@ pub mod api { pub fn locks_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::locks::Locks, (), ::subxt::storage::address::Yes, @@ -8021,7 +8007,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Balances", "Locks", - vec![], + (), [ 10u8, 223u8, 55u8, 0u8, 249u8, 69u8, 168u8, 41u8, 75u8, 35u8, 120u8, 167u8, 18u8, 132u8, 9u8, 20u8, 91u8, 51u8, 27u8, 69u8, 136u8, 187u8, @@ -8035,7 +8021,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::locks::Locks, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -8044,9 +8030,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Balances", "Locks", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 10u8, 223u8, 55u8, 0u8, 249u8, 69u8, 168u8, 41u8, 75u8, 35u8, 120u8, 167u8, 18u8, 132u8, 9u8, 20u8, 91u8, 51u8, 27u8, 69u8, 136u8, 187u8, @@ -8058,7 +8042,7 @@ pub mod api { pub fn reserves_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::reserves::Reserves, (), ::subxt::storage::address::Yes, @@ -8067,7 +8051,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Balances", "Reserves", - vec![], + (), [ 112u8, 10u8, 241u8, 77u8, 64u8, 187u8, 106u8, 159u8, 13u8, 153u8, 140u8, 178u8, 182u8, 50u8, 1u8, 55u8, 149u8, 92u8, 196u8, 229u8, 170u8, @@ -8080,7 +8064,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::reserves::Reserves, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -8089,9 +8073,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Balances", "Reserves", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 112u8, 10u8, 241u8, 77u8, 64u8, 187u8, 106u8, 159u8, 13u8, 153u8, 140u8, 178u8, 182u8, 50u8, 1u8, 55u8, 149u8, 92u8, 196u8, 229u8, 170u8, @@ -8103,7 +8085,7 @@ pub mod api { pub fn holds_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::holds::Holds, (), ::subxt::storage::address::Yes, @@ -8112,7 +8094,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Balances", "Holds", - vec![], + (), [ 181u8, 39u8, 29u8, 45u8, 45u8, 198u8, 129u8, 210u8, 189u8, 183u8, 121u8, 125u8, 57u8, 90u8, 95u8, 107u8, 51u8, 13u8, 22u8, 105u8, 191u8, @@ -8126,7 +8108,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::holds::Holds, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -8135,9 +8117,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Balances", "Holds", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 181u8, 39u8, 29u8, 45u8, 45u8, 198u8, 129u8, 210u8, 189u8, 183u8, 121u8, 125u8, 57u8, 90u8, 95u8, 107u8, 51u8, 13u8, 22u8, 105u8, 191u8, @@ -8150,7 +8130,7 @@ pub mod api { pub fn freezes_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::freezes::Freezes, (), ::subxt::storage::address::Yes, @@ -8159,7 +8139,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Balances", "Freezes", - vec![], + (), [ 69u8, 49u8, 165u8, 76u8, 135u8, 142u8, 179u8, 118u8, 50u8, 109u8, 53u8, 112u8, 110u8, 94u8, 30u8, 93u8, 173u8, 38u8, 27u8, 142u8, 19u8, 5u8, @@ -8172,7 +8152,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::freezes::Freezes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -8181,9 +8161,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Balances", "Freezes", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 69u8, 49u8, 165u8, 76u8, 135u8, 142u8, 179u8, 118u8, 50u8, 109u8, 53u8, 112u8, 110u8, 94u8, 30u8, 93u8, 173u8, 38u8, 27u8, 142u8, 19u8, 5u8, @@ -8315,7 +8293,7 @@ pub mod api { pub fn next_fee_multiplier( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::next_fee_multiplier::NextFeeMultiplier, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -8324,7 +8302,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "TransactionPayment", "NextFeeMultiplier", - vec![], + (), [ 247u8, 39u8, 81u8, 170u8, 225u8, 226u8, 82u8, 147u8, 34u8, 113u8, 147u8, 213u8, 59u8, 80u8, 139u8, 35u8, 36u8, 196u8, 152u8, 19u8, 9u8, @@ -8336,7 +8314,7 @@ pub mod api { pub fn storage_version( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::storage_version::StorageVersion, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -8345,7 +8323,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "TransactionPayment", "StorageVersion", - vec![], + (), [ 105u8, 243u8, 158u8, 241u8, 159u8, 231u8, 253u8, 6u8, 4u8, 32u8, 85u8, 178u8, 126u8, 31u8, 203u8, 134u8, 154u8, 38u8, 122u8, 155u8, 150u8, @@ -8416,7 +8394,7 @@ pub mod api { pub fn author( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::author::Author, ::subxt::storage::address::Yes, (), @@ -8425,7 +8403,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Authorship", "Author", - vec![], + (), [ 247u8, 192u8, 118u8, 227u8, 47u8, 20u8, 203u8, 199u8, 216u8, 87u8, 220u8, 50u8, 166u8, 61u8, 168u8, 213u8, 253u8, 62u8, 202u8, 199u8, @@ -8496,7 +8474,7 @@ pub mod api { pub fn reports_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::reports::Reports, (), (), @@ -8505,7 +8483,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Offences", "Reports", - vec![], + (), [ 255u8, 234u8, 162u8, 48u8, 243u8, 210u8, 198u8, 231u8, 218u8, 142u8, 167u8, 10u8, 232u8, 223u8, 239u8, 55u8, 74u8, 23u8, 14u8, 236u8, 88u8, @@ -8519,7 +8497,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::reports::Reports, ::subxt::storage::address::Yes, (), @@ -8528,9 +8506,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Offences", "Reports", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 255u8, 234u8, 162u8, 48u8, 243u8, 210u8, 198u8, 231u8, 218u8, 142u8, 167u8, 10u8, 232u8, 223u8, 239u8, 55u8, 74u8, 23u8, 14u8, 236u8, 88u8, @@ -8543,7 +8519,7 @@ pub mod api { pub fn concurrent_reports_index_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::concurrent_reports_index::ConcurrentReportsIndex, (), ::subxt::storage::address::Yes, @@ -8552,7 +8528,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Offences", "ConcurrentReportsIndex", - vec![], + (), [ 170u8, 186u8, 72u8, 29u8, 251u8, 38u8, 193u8, 195u8, 109u8, 86u8, 0u8, 241u8, 20u8, 235u8, 108u8, 126u8, 215u8, 82u8, 73u8, 113u8, 199u8, @@ -8566,7 +8542,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::concurrent_reports_index::Param0, + >, types::concurrent_reports_index::ConcurrentReportsIndex, (), ::subxt::storage::address::Yes, @@ -8575,9 +8553,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Offences", "ConcurrentReportsIndex", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 170u8, 186u8, 72u8, 29u8, 251u8, 38u8, 193u8, 195u8, 109u8, 86u8, 0u8, 241u8, 20u8, 235u8, 108u8, 126u8, 215u8, 82u8, 73u8, 113u8, 199u8, @@ -8592,7 +8568,14 @@ pub mod api { _0: impl ::std::borrow::Borrow, _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ( + ::subxt::storage::address::StaticStorageKey< + types::concurrent_reports_index::Param0, + >, + ::subxt::storage::address::StaticStorageKey< + types::concurrent_reports_index::Param1, + >, + ), types::concurrent_reports_index::ConcurrentReportsIndex, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -8601,10 +8584,10 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Offences", "ConcurrentReportsIndex", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + ( + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ), [ 170u8, 186u8, 72u8, 29u8, 251u8, 38u8, 193u8, 195u8, 109u8, 86u8, 0u8, 241u8, 20u8, 235u8, 108u8, 126u8, 215u8, 82u8, 73u8, 113u8, 199u8, @@ -8639,7 +8622,7 @@ pub mod api { pub fn historical_sessions_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::historical_sessions::HistoricalSessions, (), (), @@ -8648,7 +8631,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Historical", "HistoricalSessions", - vec![], + (), [ 9u8, 138u8, 247u8, 141u8, 178u8, 146u8, 124u8, 81u8, 162u8, 211u8, 205u8, 149u8, 222u8, 254u8, 253u8, 188u8, 170u8, 242u8, 218u8, 41u8, @@ -8662,7 +8645,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::historical_sessions::HistoricalSessions, ::subxt::storage::address::Yes, (), @@ -8671,9 +8654,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Historical", "HistoricalSessions", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 9u8, 138u8, 247u8, 141u8, 178u8, 146u8, 124u8, 81u8, 162u8, 211u8, 205u8, 149u8, 222u8, 254u8, 253u8, 188u8, 170u8, 242u8, 218u8, 41u8, @@ -8686,7 +8667,7 @@ pub mod api { pub fn stored_range( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::stored_range::StoredRange, ::subxt::storage::address::Yes, (), @@ -8695,7 +8676,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Historical", "StoredRange", - vec![], + (), [ 134u8, 32u8, 250u8, 13u8, 201u8, 25u8, 54u8, 243u8, 231u8, 81u8, 252u8, 231u8, 68u8, 217u8, 235u8, 43u8, 22u8, 223u8, 220u8, 133u8, 198u8, @@ -8907,7 +8888,7 @@ pub mod api { pub fn validators( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::validators::Validators, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -8916,7 +8897,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Session", "Validators", - vec![], + (), [ 50u8, 86u8, 154u8, 222u8, 249u8, 209u8, 156u8, 22u8, 155u8, 25u8, 133u8, 194u8, 210u8, 50u8, 38u8, 28u8, 139u8, 201u8, 90u8, 139u8, @@ -8929,7 +8910,7 @@ pub mod api { pub fn current_index( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::current_index::CurrentIndex, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -8938,7 +8919,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Session", "CurrentIndex", - vec![], + (), [ 167u8, 151u8, 125u8, 150u8, 159u8, 21u8, 78u8, 217u8, 237u8, 183u8, 135u8, 65u8, 187u8, 114u8, 188u8, 206u8, 16u8, 32u8, 69u8, 208u8, @@ -8952,7 +8933,7 @@ pub mod api { pub fn queued_changed( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::queued_changed::QueuedChanged, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -8961,7 +8942,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Session", "QueuedChanged", - vec![], + (), [ 184u8, 137u8, 224u8, 137u8, 31u8, 236u8, 95u8, 164u8, 102u8, 225u8, 198u8, 227u8, 140u8, 37u8, 113u8, 57u8, 59u8, 4u8, 202u8, 102u8, 117u8, @@ -8975,7 +8956,7 @@ pub mod api { pub fn queued_keys( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::queued_keys::QueuedKeys, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -8984,7 +8965,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Session", "QueuedKeys", - vec![], + (), [ 123u8, 8u8, 241u8, 219u8, 141u8, 50u8, 254u8, 247u8, 130u8, 71u8, 105u8, 18u8, 149u8, 204u8, 28u8, 104u8, 184u8, 6u8, 165u8, 31u8, 153u8, @@ -9001,7 +8982,7 @@ pub mod api { pub fn disabled_validators( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::disabled_validators::DisabledValidators, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -9010,7 +8991,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Session", "DisabledValidators", - vec![], + (), [ 213u8, 19u8, 168u8, 234u8, 187u8, 200u8, 180u8, 97u8, 234u8, 189u8, 36u8, 233u8, 158u8, 184u8, 45u8, 35u8, 129u8, 213u8, 133u8, 8u8, 104u8, @@ -9022,7 +9003,7 @@ pub mod api { pub fn next_keys_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::next_keys::NextKeys, (), (), @@ -9031,7 +9012,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Session", "NextKeys", - vec![], + (), [ 13u8, 219u8, 184u8, 220u8, 199u8, 150u8, 34u8, 166u8, 125u8, 46u8, 26u8, 160u8, 113u8, 243u8, 227u8, 6u8, 121u8, 176u8, 222u8, 250u8, @@ -9045,7 +9026,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::next_keys::NextKeys, ::subxt::storage::address::Yes, (), @@ -9054,9 +9035,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Session", "NextKeys", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 13u8, 219u8, 184u8, 220u8, 199u8, 150u8, 34u8, 166u8, 125u8, 46u8, 26u8, 160u8, 113u8, 243u8, 227u8, 6u8, 121u8, 176u8, 222u8, 250u8, @@ -9069,7 +9048,7 @@ pub mod api { pub fn key_owner_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::key_owner::KeyOwner, (), (), @@ -9078,7 +9057,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Session", "KeyOwner", - vec![], + (), [ 217u8, 204u8, 21u8, 114u8, 247u8, 129u8, 32u8, 242u8, 93u8, 91u8, 253u8, 253u8, 248u8, 90u8, 12u8, 202u8, 195u8, 25u8, 18u8, 100u8, @@ -9092,7 +9071,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::key_owner::KeyOwner, (), (), @@ -9101,9 +9080,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Session", "KeyOwner", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 217u8, 204u8, 21u8, 114u8, 247u8, 129u8, 32u8, 242u8, 93u8, 91u8, 253u8, 253u8, 248u8, 90u8, 12u8, 202u8, 195u8, 25u8, 18u8, 100u8, @@ -9118,7 +9095,10 @@ pub mod api { _0: impl ::std::borrow::Borrow, _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ( + ::subxt::storage::address::StaticStorageKey, + ::subxt::storage::address::StaticStorageKey, + ), types::key_owner::KeyOwner, ::subxt::storage::address::Yes, (), @@ -9127,10 +9107,10 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Session", "KeyOwner", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + ( + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ), [ 217u8, 204u8, 21u8, 114u8, 247u8, 129u8, 32u8, 242u8, 93u8, 91u8, 253u8, 253u8, 248u8, 90u8, 12u8, 202u8, 195u8, 25u8, 18u8, 100u8, @@ -9454,7 +9434,7 @@ pub mod api { pub fn state( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::state::State, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -9463,7 +9443,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Grandpa", "State", - vec![], + (), [ 73u8, 71u8, 112u8, 83u8, 238u8, 75u8, 44u8, 9u8, 180u8, 33u8, 30u8, 121u8, 98u8, 96u8, 61u8, 133u8, 16u8, 70u8, 30u8, 249u8, 34u8, 148u8, @@ -9475,7 +9455,7 @@ pub mod api { pub fn pending_change( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::pending_change::PendingChange, ::subxt::storage::address::Yes, (), @@ -9484,7 +9464,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Grandpa", "PendingChange", - vec![], + (), [ 150u8, 194u8, 185u8, 248u8, 239u8, 43u8, 141u8, 253u8, 61u8, 106u8, 74u8, 164u8, 209u8, 204u8, 206u8, 200u8, 32u8, 38u8, 11u8, 78u8, 84u8, @@ -9497,7 +9477,7 @@ pub mod api { pub fn next_forced( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::next_forced::NextForced, ::subxt::storage::address::Yes, (), @@ -9506,7 +9486,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Grandpa", "NextForced", - vec![], + (), [ 3u8, 231u8, 56u8, 18u8, 87u8, 112u8, 227u8, 126u8, 180u8, 131u8, 255u8, 141u8, 82u8, 34u8, 61u8, 47u8, 234u8, 37u8, 95u8, 62u8, 33u8, 235u8, @@ -9518,7 +9498,7 @@ pub mod api { pub fn stalled( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::stalled::Stalled, ::subxt::storage::address::Yes, (), @@ -9527,7 +9507,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Grandpa", "Stalled", - vec![], + (), [ 6u8, 81u8, 205u8, 142u8, 195u8, 48u8, 0u8, 247u8, 108u8, 170u8, 10u8, 249u8, 72u8, 206u8, 32u8, 103u8, 109u8, 57u8, 51u8, 21u8, 144u8, 204u8, @@ -9540,7 +9520,7 @@ pub mod api { pub fn current_set_id( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::current_set_id::CurrentSetId, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -9549,7 +9529,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Grandpa", "CurrentSetId", - vec![], + (), [ 234u8, 215u8, 218u8, 42u8, 30u8, 76u8, 129u8, 40u8, 125u8, 137u8, 207u8, 47u8, 46u8, 213u8, 159u8, 50u8, 175u8, 81u8, 155u8, 123u8, @@ -9571,7 +9551,7 @@ pub mod api { pub fn set_id_session_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::set_id_session::SetIdSession, (), (), @@ -9580,7 +9560,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Grandpa", "SetIdSession", - vec![], + (), [ 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, @@ -9602,7 +9582,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::set_id_session::SetIdSession, ::subxt::storage::address::Yes, (), @@ -9611,9 +9591,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Grandpa", "SetIdSession", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, @@ -9625,7 +9603,7 @@ pub mod api { pub fn authorities( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::authorities::Authorities, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -9634,7 +9612,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Grandpa", "Authorities", - vec![], + (), [ 67u8, 196u8, 244u8, 13u8, 246u8, 245u8, 198u8, 98u8, 81u8, 55u8, 182u8, 187u8, 214u8, 5u8, 181u8, 76u8, 251u8, 213u8, 144u8, 166u8, 36u8, @@ -9730,7 +9708,7 @@ pub mod api { pub fn keys( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::keys::Keys, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -9739,7 +9717,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "AuthorityDiscovery", "Keys", - vec![], + (), [ 111u8, 104u8, 188u8, 46u8, 152u8, 140u8, 137u8, 244u8, 52u8, 214u8, 115u8, 156u8, 39u8, 239u8, 15u8, 168u8, 193u8, 125u8, 57u8, 195u8, @@ -9752,7 +9730,7 @@ pub mod api { pub fn next_keys( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::next_keys::NextKeys, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -9761,7 +9739,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "AuthorityDiscovery", "NextKeys", - vec![], + (), [ 171u8, 107u8, 15u8, 108u8, 125u8, 102u8, 193u8, 240u8, 127u8, 160u8, 53u8, 1u8, 208u8, 36u8, 134u8, 4u8, 216u8, 26u8, 156u8, 143u8, 154u8, @@ -10870,7 +10848,7 @@ pub mod api { pub fn proposal_count( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::proposal_count::ProposalCount, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -10879,7 +10857,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Treasury", "ProposalCount", - vec![], + (), [ 91u8, 238u8, 246u8, 106u8, 95u8, 66u8, 83u8, 134u8, 1u8, 225u8, 164u8, 216u8, 113u8, 101u8, 203u8, 200u8, 113u8, 97u8, 246u8, 228u8, 140u8, @@ -10891,7 +10869,7 @@ pub mod api { pub fn proposals_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::proposals::Proposals, (), (), @@ -10900,7 +10878,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Treasury", "Proposals", - vec![], + (), [ 207u8, 135u8, 145u8, 146u8, 48u8, 10u8, 252u8, 40u8, 20u8, 115u8, 205u8, 41u8, 173u8, 83u8, 115u8, 46u8, 106u8, 40u8, 130u8, 157u8, @@ -10914,7 +10892,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::proposals::Proposals, ::subxt::storage::address::Yes, (), @@ -10923,9 +10901,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Treasury", "Proposals", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 207u8, 135u8, 145u8, 146u8, 48u8, 10u8, 252u8, 40u8, 20u8, 115u8, 205u8, 41u8, 173u8, 83u8, 115u8, 46u8, 106u8, 40u8, 130u8, 157u8, @@ -10938,7 +10914,7 @@ pub mod api { pub fn deactivated( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::deactivated::Deactivated, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -10947,7 +10923,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Treasury", "Deactivated", - vec![], + (), [ 120u8, 221u8, 159u8, 56u8, 161u8, 44u8, 54u8, 233u8, 47u8, 114u8, 170u8, 150u8, 52u8, 24u8, 137u8, 212u8, 122u8, 247u8, 40u8, 17u8, @@ -10960,7 +10936,7 @@ pub mod api { pub fn approvals( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::approvals::Approvals, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -10969,7 +10945,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Treasury", "Approvals", - vec![], + (), [ 78u8, 147u8, 186u8, 235u8, 17u8, 40u8, 247u8, 235u8, 67u8, 222u8, 3u8, 14u8, 248u8, 17u8, 67u8, 180u8, 93u8, 161u8, 64u8, 35u8, 119u8, 194u8, @@ -10981,7 +10957,7 @@ pub mod api { pub fn spend_count( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::spend_count::SpendCount, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -10990,7 +10966,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Treasury", "SpendCount", - vec![], + (), [ 220u8, 74u8, 248u8, 52u8, 243u8, 209u8, 42u8, 236u8, 27u8, 98u8, 76u8, 153u8, 129u8, 176u8, 34u8, 177u8, 33u8, 132u8, 21u8, 71u8, 206u8, @@ -11003,7 +10979,7 @@ pub mod api { pub fn spends_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::spends::Spends, (), (), @@ -11012,7 +10988,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Treasury", "Spends", - vec![], + (), [ 207u8, 104u8, 63u8, 103u8, 177u8, 66u8, 236u8, 100u8, 122u8, 213u8, 125u8, 153u8, 180u8, 219u8, 124u8, 22u8, 88u8, 161u8, 188u8, 197u8, @@ -11026,7 +11002,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::spends::Spends, ::subxt::storage::address::Yes, (), @@ -11035,9 +11011,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Treasury", "Spends", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 207u8, 104u8, 63u8, 103u8, 177u8, 66u8, 236u8, 100u8, 122u8, 213u8, 125u8, 153u8, 180u8, 219u8, 124u8, 22u8, 88u8, 161u8, 188u8, 197u8, @@ -11725,7 +11699,7 @@ pub mod api { pub fn voting_for_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::voting_for::VotingFor, (), ::subxt::storage::address::Yes, @@ -11734,7 +11708,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ConvictionVoting", "VotingFor", - vec![], + (), [ 76u8, 63u8, 153u8, 193u8, 39u8, 137u8, 186u8, 29u8, 202u8, 56u8, 169u8, 56u8, 103u8, 138u8, 192u8, 18u8, 179u8, 114u8, 56u8, 121u8, 197u8, @@ -11748,7 +11722,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::voting_for::VotingFor, (), ::subxt::storage::address::Yes, @@ -11757,9 +11731,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ConvictionVoting", "VotingFor", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 76u8, 63u8, 153u8, 193u8, 39u8, 137u8, 186u8, 29u8, 202u8, 56u8, 169u8, 56u8, 103u8, 138u8, 192u8, 18u8, 179u8, 114u8, 56u8, 121u8, 197u8, @@ -11774,7 +11746,10 @@ pub mod api { _0: impl ::std::borrow::Borrow, _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ( + ::subxt::storage::address::StaticStorageKey, + ::subxt::storage::address::StaticStorageKey, + ), types::voting_for::VotingFor, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -11783,10 +11758,10 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ConvictionVoting", "VotingFor", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + ( + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ), [ 76u8, 63u8, 153u8, 193u8, 39u8, 137u8, 186u8, 29u8, 202u8, 56u8, 169u8, 56u8, 103u8, 138u8, 192u8, 18u8, 179u8, 114u8, 56u8, 121u8, 197u8, @@ -11800,7 +11775,7 @@ pub mod api { pub fn class_locks_for_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::class_locks_for::ClassLocksFor, (), ::subxt::storage::address::Yes, @@ -11809,7 +11784,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ConvictionVoting", "ClassLocksFor", - vec![], + (), [ 74u8, 74u8, 8u8, 82u8, 215u8, 61u8, 13u8, 9u8, 44u8, 222u8, 33u8, 245u8, 195u8, 124u8, 6u8, 174u8, 65u8, 245u8, 71u8, 42u8, 47u8, 46u8, @@ -11824,7 +11799,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::class_locks_for::ClassLocksFor, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -11833,9 +11808,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ConvictionVoting", "ClassLocksFor", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 74u8, 74u8, 8u8, 82u8, 215u8, 61u8, 13u8, 9u8, 44u8, 222u8, 33u8, 245u8, 195u8, 124u8, 6u8, 174u8, 65u8, 245u8, 71u8, 42u8, 47u8, 46u8, @@ -12834,7 +12807,7 @@ pub mod api { pub fn referendum_count( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::referendum_count::ReferendumCount, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -12843,7 +12816,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Referenda", "ReferendumCount", - vec![], + (), [ 64u8, 145u8, 232u8, 153u8, 121u8, 87u8, 128u8, 253u8, 170u8, 192u8, 139u8, 18u8, 0u8, 33u8, 243u8, 11u8, 238u8, 222u8, 244u8, 5u8, 247u8, @@ -12856,7 +12829,7 @@ pub mod api { pub fn referendum_info_for_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::referendum_info_for::ReferendumInfoFor, (), (), @@ -12865,7 +12838,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Referenda", "ReferendumInfoFor", - vec![], + (), [ 244u8, 215u8, 156u8, 181u8, 105u8, 12u8, 138u8, 249u8, 173u8, 158u8, 171u8, 67u8, 107u8, 228u8, 45u8, 180u8, 252u8, 244u8, 186u8, 78u8, @@ -12879,7 +12852,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::referendum_info_for::ReferendumInfoFor, ::subxt::storage::address::Yes, (), @@ -12888,9 +12861,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Referenda", "ReferendumInfoFor", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 244u8, 215u8, 156u8, 181u8, 105u8, 12u8, 138u8, 249u8, 173u8, 158u8, 171u8, 67u8, 107u8, 228u8, 45u8, 180u8, 252u8, 244u8, 186u8, 78u8, @@ -12906,7 +12877,7 @@ pub mod api { pub fn track_queue_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::track_queue::TrackQueue, (), ::subxt::storage::address::Yes, @@ -12915,7 +12886,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Referenda", "TrackQueue", - vec![], + (), [ 125u8, 59u8, 111u8, 68u8, 27u8, 236u8, 82u8, 55u8, 83u8, 159u8, 105u8, 20u8, 241u8, 118u8, 58u8, 141u8, 103u8, 60u8, 246u8, 49u8, 121u8, @@ -12931,7 +12902,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::track_queue::TrackQueue, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -12940,9 +12911,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Referenda", "TrackQueue", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 125u8, 59u8, 111u8, 68u8, 27u8, 236u8, 82u8, 55u8, 83u8, 159u8, 105u8, 20u8, 241u8, 118u8, 58u8, 141u8, 103u8, 60u8, 246u8, 49u8, 121u8, @@ -12954,7 +12923,7 @@ pub mod api { pub fn deciding_count_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::deciding_count::DecidingCount, (), ::subxt::storage::address::Yes, @@ -12963,7 +12932,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Referenda", "DecidingCount", - vec![], + (), [ 203u8, 89u8, 158u8, 179u8, 194u8, 82u8, 248u8, 162u8, 93u8, 140u8, 146u8, 51u8, 110u8, 232u8, 51u8, 1u8, 128u8, 212u8, 199u8, 14u8, 182u8, @@ -12977,7 +12946,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::deciding_count::DecidingCount, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -12986,9 +12955,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Referenda", "DecidingCount", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 203u8, 89u8, 158u8, 179u8, 194u8, 82u8, 248u8, 162u8, 93u8, 140u8, 146u8, 51u8, 110u8, 232u8, 51u8, 1u8, 128u8, 212u8, 199u8, 14u8, 182u8, @@ -13006,7 +12973,7 @@ pub mod api { pub fn metadata_of_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::metadata_of::MetadataOf, (), (), @@ -13015,7 +12982,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Referenda", "MetadataOf", - vec![], + (), [ 159u8, 250u8, 56u8, 189u8, 247u8, 165u8, 206u8, 166u8, 91u8, 139u8, 124u8, 164u8, 25u8, 246u8, 199u8, 36u8, 159u8, 56u8, 227u8, 136u8, 4u8, @@ -13034,7 +13001,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::metadata_of::MetadataOf, ::subxt::storage::address::Yes, (), @@ -13043,9 +13010,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Referenda", "MetadataOf", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 159u8, 250u8, 56u8, 189u8, 247u8, 165u8, 206u8, 166u8, 91u8, 139u8, 124u8, 164u8, 25u8, 246u8, 199u8, 36u8, 159u8, 56u8, 227u8, 136u8, 4u8, @@ -13713,7 +13678,7 @@ pub mod api { pub fn member_count_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::member_count::MemberCount, (), ::subxt::storage::address::Yes, @@ -13722,7 +13687,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "FellowshipCollective", "MemberCount", - vec![], + (), [ 0u8, 141u8, 66u8, 91u8, 155u8, 74u8, 17u8, 191u8, 143u8, 41u8, 231u8, 56u8, 123u8, 219u8, 145u8, 27u8, 197u8, 62u8, 118u8, 237u8, 30u8, 7u8, @@ -13736,7 +13701,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::member_count::MemberCount, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -13745,9 +13710,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "FellowshipCollective", "MemberCount", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 0u8, 141u8, 66u8, 91u8, 155u8, 74u8, 17u8, 191u8, 143u8, 41u8, 231u8, 56u8, 123u8, 219u8, 145u8, 27u8, 197u8, 62u8, 118u8, 237u8, 30u8, 7u8, @@ -13759,7 +13722,7 @@ pub mod api { pub fn members_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::members::Members, (), (), @@ -13768,7 +13731,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "FellowshipCollective", "Members", - vec![], + (), [ 101u8, 183u8, 36u8, 241u8, 67u8, 8u8, 252u8, 116u8, 110u8, 153u8, 117u8, 210u8, 128u8, 80u8, 130u8, 163u8, 38u8, 76u8, 230u8, 107u8, @@ -13782,7 +13745,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::members::Members, ::subxt::storage::address::Yes, (), @@ -13791,9 +13754,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "FellowshipCollective", "Members", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 101u8, 183u8, 36u8, 241u8, 67u8, 8u8, 252u8, 116u8, 110u8, 153u8, 117u8, 210u8, 128u8, 80u8, 130u8, 163u8, 38u8, 76u8, 230u8, 107u8, @@ -13806,7 +13767,7 @@ pub mod api { pub fn id_to_index_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::id_to_index::IdToIndex, (), (), @@ -13815,7 +13776,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "FellowshipCollective", "IdToIndex", - vec![], + (), [ 121u8, 225u8, 69u8, 131u8, 194u8, 3u8, 82u8, 27u8, 129u8, 152u8, 157u8, 45u8, 39u8, 47u8, 166u8, 28u8, 42u8, 92u8, 217u8, 189u8, 160u8, 102u8, @@ -13828,7 +13789,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::id_to_index::IdToIndex, (), (), @@ -13837,9 +13798,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "FellowshipCollective", "IdToIndex", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 121u8, 225u8, 69u8, 131u8, 194u8, 3u8, 82u8, 27u8, 129u8, 152u8, 157u8, 45u8, 39u8, 47u8, 166u8, 28u8, 42u8, 92u8, 217u8, 189u8, 160u8, 102u8, @@ -13853,7 +13812,10 @@ pub mod api { _0: impl ::std::borrow::Borrow, _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ( + ::subxt::storage::address::StaticStorageKey, + ::subxt::storage::address::StaticStorageKey, + ), types::id_to_index::IdToIndex, ::subxt::storage::address::Yes, (), @@ -13862,10 +13824,10 @@ pub mod api { ::subxt::storage::address::Address::new_static( "FellowshipCollective", "IdToIndex", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + ( + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ), [ 121u8, 225u8, 69u8, 131u8, 194u8, 3u8, 82u8, 27u8, 129u8, 152u8, 157u8, 45u8, 39u8, 47u8, 166u8, 28u8, 42u8, 92u8, 217u8, 189u8, 160u8, 102u8, @@ -13878,7 +13840,7 @@ pub mod api { pub fn index_to_id_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::index_to_id::IndexToId, (), (), @@ -13887,7 +13849,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "FellowshipCollective", "IndexToId", - vec![], + (), [ 110u8, 48u8, 214u8, 224u8, 56u8, 195u8, 186u8, 24u8, 111u8, 37u8, 15u8, 153u8, 245u8, 101u8, 229u8, 149u8, 216u8, 185u8, 7u8, 242u8, 196u8, @@ -13902,7 +13864,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::index_to_id::IndexToId, (), (), @@ -13911,9 +13873,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "FellowshipCollective", "IndexToId", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 110u8, 48u8, 214u8, 224u8, 56u8, 195u8, 186u8, 24u8, 111u8, 37u8, 15u8, 153u8, 245u8, 101u8, 229u8, 149u8, 216u8, 185u8, 7u8, 242u8, 196u8, @@ -13929,7 +13889,10 @@ pub mod api { _0: impl ::std::borrow::Borrow, _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ( + ::subxt::storage::address::StaticStorageKey, + ::subxt::storage::address::StaticStorageKey, + ), types::index_to_id::IndexToId, ::subxt::storage::address::Yes, (), @@ -13938,10 +13901,10 @@ pub mod api { ::subxt::storage::address::Address::new_static( "FellowshipCollective", "IndexToId", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + ( + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ), [ 110u8, 48u8, 214u8, 224u8, 56u8, 195u8, 186u8, 24u8, 111u8, 37u8, 15u8, 153u8, 245u8, 101u8, 229u8, 149u8, 216u8, 185u8, 7u8, 242u8, 196u8, @@ -13954,7 +13917,7 @@ pub mod api { pub fn voting_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::voting::Voting, (), (), @@ -13963,7 +13926,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "FellowshipCollective", "Voting", - vec![], + (), [ 180u8, 146u8, 236u8, 178u8, 30u8, 50u8, 161u8, 50u8, 140u8, 110u8, 220u8, 1u8, 109u8, 209u8, 17u8, 94u8, 234u8, 223u8, 222u8, 177u8, @@ -13977,7 +13940,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::voting::Voting, (), (), @@ -13986,9 +13949,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "FellowshipCollective", "Voting", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 180u8, 146u8, 236u8, 178u8, 30u8, 50u8, 161u8, 50u8, 140u8, 110u8, 220u8, 1u8, 109u8, 209u8, 17u8, 94u8, 234u8, 223u8, 222u8, 177u8, @@ -14003,7 +13964,10 @@ pub mod api { _0: impl ::std::borrow::Borrow, _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ( + ::subxt::storage::address::StaticStorageKey, + ::subxt::storage::address::StaticStorageKey, + ), types::voting::Voting, ::subxt::storage::address::Yes, (), @@ -14012,10 +13976,10 @@ pub mod api { ::subxt::storage::address::Address::new_static( "FellowshipCollective", "Voting", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + ( + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ), [ 180u8, 146u8, 236u8, 178u8, 30u8, 50u8, 161u8, 50u8, 140u8, 110u8, 220u8, 1u8, 109u8, 209u8, 17u8, 94u8, 234u8, 223u8, 222u8, 177u8, @@ -14027,7 +13991,7 @@ pub mod api { pub fn voting_cleanup_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::voting_cleanup::VotingCleanup, (), (), @@ -14036,7 +14000,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "FellowshipCollective", "VotingCleanup", - vec![], + (), [ 223u8, 130u8, 79u8, 104u8, 94u8, 221u8, 222u8, 72u8, 187u8, 95u8, 231u8, 59u8, 28u8, 119u8, 191u8, 63u8, 40u8, 186u8, 58u8, 254u8, 14u8, @@ -14048,7 +14012,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::voting_cleanup::VotingCleanup, ::subxt::storage::address::Yes, (), @@ -14057,9 +14021,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "FellowshipCollective", "VotingCleanup", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 223u8, 130u8, 79u8, 104u8, 94u8, 221u8, 222u8, 72u8, 187u8, 95u8, 231u8, 59u8, 28u8, 119u8, 191u8, 63u8, 40u8, 186u8, 58u8, 254u8, 14u8, @@ -15010,7 +14972,7 @@ pub mod api { pub fn referendum_count( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::referendum_count::ReferendumCount, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -15019,7 +14981,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "FellowshipReferenda", "ReferendumCount", - vec![], + (), [ 64u8, 145u8, 232u8, 153u8, 121u8, 87u8, 128u8, 253u8, 170u8, 192u8, 139u8, 18u8, 0u8, 33u8, 243u8, 11u8, 238u8, 222u8, 244u8, 5u8, 247u8, @@ -15032,7 +14994,7 @@ pub mod api { pub fn referendum_info_for_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::referendum_info_for::ReferendumInfoFor, (), (), @@ -15041,7 +15003,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "FellowshipReferenda", "ReferendumInfoFor", - vec![], + (), [ 64u8, 146u8, 31u8, 207u8, 209u8, 86u8, 44u8, 53u8, 78u8, 240u8, 222u8, 131u8, 225u8, 83u8, 114u8, 205u8, 225u8, 20u8, 128u8, 183u8, 19u8, @@ -15055,7 +15017,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::referendum_info_for::ReferendumInfoFor, ::subxt::storage::address::Yes, (), @@ -15064,9 +15026,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "FellowshipReferenda", "ReferendumInfoFor", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 64u8, 146u8, 31u8, 207u8, 209u8, 86u8, 44u8, 53u8, 78u8, 240u8, 222u8, 131u8, 225u8, 83u8, 114u8, 205u8, 225u8, 20u8, 128u8, 183u8, 19u8, @@ -15082,7 +15042,7 @@ pub mod api { pub fn track_queue_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::track_queue::TrackQueue, (), ::subxt::storage::address::Yes, @@ -15091,7 +15051,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "FellowshipReferenda", "TrackQueue", - vec![], + (), [ 187u8, 113u8, 225u8, 99u8, 159u8, 207u8, 182u8, 41u8, 116u8, 136u8, 119u8, 196u8, 152u8, 50u8, 192u8, 22u8, 171u8, 182u8, 237u8, 228u8, @@ -15108,7 +15068,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::track_queue::TrackQueue, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -15117,9 +15077,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "FellowshipReferenda", "TrackQueue", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 187u8, 113u8, 225u8, 99u8, 159u8, 207u8, 182u8, 41u8, 116u8, 136u8, 119u8, 196u8, 152u8, 50u8, 192u8, 22u8, 171u8, 182u8, 237u8, 228u8, @@ -15132,7 +15090,7 @@ pub mod api { pub fn deciding_count_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::deciding_count::DecidingCount, (), ::subxt::storage::address::Yes, @@ -15141,7 +15099,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "FellowshipReferenda", "DecidingCount", - vec![], + (), [ 203u8, 89u8, 158u8, 179u8, 194u8, 82u8, 248u8, 162u8, 93u8, 140u8, 146u8, 51u8, 110u8, 232u8, 51u8, 1u8, 128u8, 212u8, 199u8, 14u8, 182u8, @@ -15155,7 +15113,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::deciding_count::DecidingCount, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -15164,9 +15122,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "FellowshipReferenda", "DecidingCount", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 203u8, 89u8, 158u8, 179u8, 194u8, 82u8, 248u8, 162u8, 93u8, 140u8, 146u8, 51u8, 110u8, 232u8, 51u8, 1u8, 128u8, 212u8, 199u8, 14u8, 182u8, @@ -15184,7 +15140,7 @@ pub mod api { pub fn metadata_of_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::metadata_of::MetadataOf, (), (), @@ -15193,7 +15149,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "FellowshipReferenda", "MetadataOf", - vec![], + (), [ 159u8, 250u8, 56u8, 189u8, 247u8, 165u8, 206u8, 166u8, 91u8, 139u8, 124u8, 164u8, 25u8, 246u8, 199u8, 36u8, 159u8, 56u8, 227u8, 136u8, 4u8, @@ -15212,7 +15168,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::metadata_of::MetadataOf, ::subxt::storage::address::Yes, (), @@ -15221,9 +15177,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "FellowshipReferenda", "MetadataOf", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 159u8, 250u8, 56u8, 189u8, 247u8, 165u8, 206u8, 166u8, 91u8, 139u8, 124u8, 164u8, 25u8, 246u8, 199u8, 36u8, 159u8, 56u8, 227u8, 136u8, 4u8, @@ -15596,7 +15550,7 @@ pub mod api { pub fn whitelisted_call_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::whitelisted_call::WhitelistedCall, (), (), @@ -15605,7 +15559,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Whitelist", "WhitelistedCall", - vec![], + (), [ 82u8, 208u8, 214u8, 72u8, 225u8, 35u8, 51u8, 212u8, 25u8, 138u8, 30u8, 87u8, 54u8, 232u8, 72u8, 132u8, 4u8, 9u8, 28u8, 143u8, 251u8, 106u8, @@ -15617,7 +15571,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::whitelisted_call::WhitelistedCall, ::subxt::storage::address::Yes, (), @@ -15626,9 +15580,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Whitelist", "WhitelistedCall", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 82u8, 208u8, 214u8, 72u8, 225u8, 35u8, 51u8, 212u8, 25u8, 138u8, 30u8, 87u8, 54u8, 232u8, 72u8, 132u8, 4u8, 9u8, 28u8, 143u8, 251u8, 106u8, @@ -16133,7 +16085,7 @@ pub mod api { pub fn claims_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::claims::Claims, (), (), @@ -16142,7 +16094,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Claims", "Claims", - vec![], + (), [ 148u8, 115u8, 159u8, 169u8, 36u8, 116u8, 15u8, 108u8, 57u8, 195u8, 226u8, 180u8, 187u8, 112u8, 114u8, 63u8, 3u8, 205u8, 113u8, 141u8, @@ -16155,7 +16107,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::claims::Claims, ::subxt::storage::address::Yes, (), @@ -16164,9 +16116,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Claims", "Claims", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 148u8, 115u8, 159u8, 169u8, 36u8, 116u8, 15u8, 108u8, 57u8, 195u8, 226u8, 180u8, 187u8, 112u8, 114u8, 63u8, 3u8, 205u8, 113u8, 141u8, @@ -16178,7 +16128,7 @@ pub mod api { pub fn total( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::total::Total, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -16187,7 +16137,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Claims", "Total", - vec![], + (), [ 188u8, 31u8, 219u8, 189u8, 49u8, 213u8, 203u8, 89u8, 125u8, 58u8, 232u8, 159u8, 131u8, 155u8, 166u8, 113u8, 99u8, 24u8, 40u8, 242u8, @@ -16203,7 +16153,7 @@ pub mod api { pub fn vesting_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::vesting::Vesting, (), (), @@ -16212,7 +16162,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Claims", "Vesting", - vec![], + (), [ 206u8, 106u8, 195u8, 101u8, 55u8, 137u8, 50u8, 105u8, 137u8, 87u8, 230u8, 34u8, 255u8, 94u8, 210u8, 186u8, 179u8, 72u8, 24u8, 194u8, @@ -16229,7 +16179,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::vesting::Vesting, ::subxt::storage::address::Yes, (), @@ -16238,9 +16188,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Claims", "Vesting", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 206u8, 106u8, 195u8, 101u8, 55u8, 137u8, 50u8, 105u8, 137u8, 87u8, 230u8, 34u8, 255u8, 94u8, 210u8, 186u8, 179u8, 72u8, 24u8, 194u8, @@ -16253,7 +16201,7 @@ pub mod api { pub fn signing_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::signing::Signing, (), (), @@ -16262,7 +16210,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Claims", "Signing", - vec![], + (), [ 111u8, 90u8, 178u8, 121u8, 241u8, 28u8, 169u8, 231u8, 61u8, 189u8, 113u8, 207u8, 26u8, 153u8, 189u8, 15u8, 192u8, 25u8, 22u8, 22u8, 124u8, @@ -16275,7 +16223,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::signing::Signing, ::subxt::storage::address::Yes, (), @@ -16284,9 +16232,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Claims", "Signing", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 111u8, 90u8, 178u8, 121u8, 241u8, 28u8, 169u8, 231u8, 61u8, 189u8, 113u8, 207u8, 26u8, 153u8, 189u8, 15u8, 192u8, 25u8, 22u8, 22u8, 124u8, @@ -16298,7 +16244,7 @@ pub mod api { pub fn preclaims_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::preclaims::Preclaims, (), (), @@ -16307,7 +16253,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Claims", "Preclaims", - vec![], + (), [ 197u8, 114u8, 147u8, 235u8, 203u8, 255u8, 94u8, 113u8, 151u8, 119u8, 224u8, 147u8, 48u8, 246u8, 124u8, 38u8, 190u8, 237u8, 226u8, 65u8, @@ -16321,7 +16267,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::preclaims::Preclaims, ::subxt::storage::address::Yes, (), @@ -16330,9 +16276,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Claims", "Preclaims", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 197u8, 114u8, 147u8, 235u8, 203u8, 255u8, 94u8, 113u8, 151u8, 119u8, 224u8, 147u8, 48u8, 246u8, 124u8, 38u8, 190u8, 237u8, 226u8, 65u8, @@ -18606,7 +18550,7 @@ pub mod api { pub fn identity_of_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::identity_of::IdentityOf, (), (), @@ -18615,7 +18559,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Identity", "IdentityOf", - vec![], + (), [ 0u8, 73u8, 213u8, 52u8, 49u8, 235u8, 238u8, 43u8, 119u8, 12u8, 35u8, 162u8, 230u8, 24u8, 246u8, 200u8, 44u8, 254u8, 13u8, 84u8, 10u8, 27u8, @@ -18631,7 +18575,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::identity_of::IdentityOf, ::subxt::storage::address::Yes, (), @@ -18640,9 +18584,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Identity", "IdentityOf", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 0u8, 73u8, 213u8, 52u8, 49u8, 235u8, 238u8, 43u8, 119u8, 12u8, 35u8, 162u8, 230u8, 24u8, 246u8, 200u8, 44u8, 254u8, 13u8, 84u8, 10u8, 27u8, @@ -18655,7 +18597,7 @@ pub mod api { pub fn super_of_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::super_of::SuperOf, (), (), @@ -18664,7 +18606,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Identity", "SuperOf", - vec![], + (), [ 84u8, 72u8, 64u8, 14u8, 56u8, 9u8, 143u8, 100u8, 141u8, 163u8, 36u8, 55u8, 38u8, 254u8, 164u8, 17u8, 3u8, 110u8, 88u8, 175u8, 161u8, 65u8, @@ -18678,7 +18620,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::super_of::SuperOf, ::subxt::storage::address::Yes, (), @@ -18687,9 +18629,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Identity", "SuperOf", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 84u8, 72u8, 64u8, 14u8, 56u8, 9u8, 143u8, 100u8, 141u8, 163u8, 36u8, 55u8, 38u8, 254u8, 164u8, 17u8, 3u8, 110u8, 88u8, 175u8, 161u8, 65u8, @@ -18705,7 +18645,7 @@ pub mod api { pub fn subs_of_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::subs_of::SubsOf, (), ::subxt::storage::address::Yes, @@ -18714,7 +18654,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Identity", "SubsOf", - vec![], + (), [ 164u8, 140u8, 52u8, 123u8, 220u8, 118u8, 147u8, 3u8, 67u8, 22u8, 191u8, 18u8, 186u8, 21u8, 154u8, 8u8, 205u8, 224u8, 163u8, 173u8, 174u8, @@ -18732,7 +18672,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::subs_of::SubsOf, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -18741,9 +18681,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Identity", "SubsOf", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 164u8, 140u8, 52u8, 123u8, 220u8, 118u8, 147u8, 3u8, 67u8, 22u8, 191u8, 18u8, 186u8, 21u8, 154u8, 8u8, 205u8, 224u8, 163u8, 173u8, 174u8, @@ -18759,7 +18697,7 @@ pub mod api { pub fn registrars( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::registrars::Registrars, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -18768,7 +18706,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Identity", "Registrars", - vec![], + (), [ 167u8, 99u8, 159u8, 117u8, 103u8, 243u8, 208u8, 113u8, 57u8, 225u8, 27u8, 25u8, 188u8, 120u8, 15u8, 40u8, 134u8, 169u8, 108u8, 134u8, 83u8, @@ -18781,7 +18719,7 @@ pub mod api { pub fn username_authorities_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::username_authorities::UsernameAuthorities, (), (), @@ -18790,7 +18728,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Identity", "UsernameAuthorities", - vec![], + (), [ 89u8, 102u8, 60u8, 184u8, 127u8, 244u8, 3u8, 61u8, 209u8, 78u8, 178u8, 44u8, 159u8, 27u8, 7u8, 0u8, 22u8, 116u8, 42u8, 240u8, 130u8, 93u8, @@ -18803,7 +18741,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::username_authorities::Param0, + >, types::username_authorities::UsernameAuthorities, ::subxt::storage::address::Yes, (), @@ -18812,9 +18752,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Identity", "UsernameAuthorities", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 89u8, 102u8, 60u8, 184u8, 127u8, 244u8, 3u8, 61u8, 209u8, 78u8, 178u8, 44u8, 159u8, 27u8, 7u8, 0u8, 22u8, 116u8, 42u8, 240u8, 130u8, 93u8, @@ -18830,7 +18768,7 @@ pub mod api { pub fn account_of_username_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::account_of_username::AccountOfUsername, (), (), @@ -18839,7 +18777,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Identity", "AccountOfUsername", - vec![], + (), [ 131u8, 96u8, 207u8, 217u8, 223u8, 54u8, 51u8, 156u8, 8u8, 238u8, 134u8, 57u8, 42u8, 110u8, 180u8, 107u8, 30u8, 109u8, 162u8, 110u8, 178u8, @@ -18857,7 +18795,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::account_of_username::AccountOfUsername, ::subxt::storage::address::Yes, (), @@ -18866,9 +18804,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Identity", "AccountOfUsername", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 131u8, 96u8, 207u8, 217u8, 223u8, 54u8, 51u8, 156u8, 8u8, 238u8, 134u8, 57u8, 42u8, 110u8, 180u8, 107u8, 30u8, 109u8, 162u8, 110u8, 178u8, @@ -18886,7 +18822,7 @@ pub mod api { pub fn pending_usernames_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::pending_usernames::PendingUsernames, (), (), @@ -18895,7 +18831,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Identity", "PendingUsernames", - vec![], + (), [ 237u8, 213u8, 92u8, 249u8, 11u8, 169u8, 104u8, 7u8, 201u8, 133u8, 164u8, 64u8, 191u8, 172u8, 169u8, 229u8, 206u8, 105u8, 190u8, 113u8, @@ -18914,7 +18850,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::pending_usernames::PendingUsernames, ::subxt::storage::address::Yes, (), @@ -18923,9 +18859,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Identity", "PendingUsernames", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 237u8, 213u8, 92u8, 249u8, 11u8, 169u8, 104u8, 7u8, 201u8, 133u8, 164u8, 64u8, 191u8, 172u8, 169u8, 229u8, 206u8, 105u8, 190u8, 113u8, @@ -20611,7 +20545,7 @@ pub mod api { pub fn parameters( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::parameters::Parameters, ::subxt::storage::address::Yes, (), @@ -20620,7 +20554,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "Parameters", - vec![], + (), [ 69u8, 147u8, 95u8, 26u8, 245u8, 207u8, 83u8, 57u8, 229u8, 34u8, 205u8, 202u8, 182u8, 180u8, 219u8, 86u8, 152u8, 140u8, 212u8, 145u8, 7u8, @@ -20633,7 +20567,7 @@ pub mod api { pub fn pot( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::pot::Pot, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -20642,7 +20576,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "Pot", - vec![], + (), [ 98u8, 77u8, 215u8, 220u8, 51u8, 87u8, 188u8, 65u8, 72u8, 231u8, 34u8, 161u8, 61u8, 59u8, 66u8, 105u8, 128u8, 23u8, 249u8, 27u8, 10u8, 0u8, @@ -20654,7 +20588,7 @@ pub mod api { pub fn founder( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::founder::Founder, ::subxt::storage::address::Yes, (), @@ -20663,7 +20597,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "Founder", - vec![], + (), [ 14u8, 6u8, 181u8, 186u8, 64u8, 213u8, 48u8, 110u8, 242u8, 50u8, 144u8, 77u8, 38u8, 127u8, 161u8, 54u8, 204u8, 119u8, 1u8, 218u8, 12u8, 57u8, @@ -20675,7 +20609,7 @@ pub mod api { pub fn head( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::head::Head, ::subxt::storage::address::Yes, (), @@ -20684,7 +20618,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "Head", - vec![], + (), [ 95u8, 2u8, 23u8, 237u8, 130u8, 169u8, 84u8, 51u8, 1u8, 178u8, 234u8, 194u8, 139u8, 35u8, 222u8, 150u8, 246u8, 176u8, 97u8, 103u8, 211u8, @@ -20697,7 +20631,7 @@ pub mod api { pub fn rules( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::rules::Rules, ::subxt::storage::address::Yes, (), @@ -20706,7 +20640,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "Rules", - vec![], + (), [ 119u8, 249u8, 119u8, 89u8, 243u8, 239u8, 149u8, 15u8, 238u8, 40u8, 172u8, 198u8, 24u8, 107u8, 57u8, 39u8, 155u8, 36u8, 13u8, 72u8, 153u8, @@ -20719,7 +20653,7 @@ pub mod api { pub fn members_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::members::Members, (), (), @@ -20728,7 +20662,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "Members", - vec![], + (), [ 207u8, 227u8, 130u8, 247u8, 29u8, 198u8, 129u8, 83u8, 3u8, 6u8, 19u8, 37u8, 163u8, 227u8, 0u8, 94u8, 8u8, 166u8, 111u8, 70u8, 101u8, 65u8, @@ -20741,7 +20675,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::members::Members, ::subxt::storage::address::Yes, (), @@ -20750,9 +20684,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "Members", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 207u8, 227u8, 130u8, 247u8, 29u8, 198u8, 129u8, 83u8, 3u8, 6u8, 19u8, 37u8, 163u8, 227u8, 0u8, 94u8, 8u8, 166u8, 111u8, 70u8, 101u8, 65u8, @@ -20764,7 +20696,7 @@ pub mod api { pub fn payouts_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::payouts::Payouts, (), ::subxt::storage::address::Yes, @@ -20773,7 +20705,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "Payouts", - vec![], + (), [ 251u8, 249u8, 170u8, 219u8, 131u8, 113u8, 178u8, 165u8, 173u8, 36u8, 175u8, 199u8, 57u8, 188u8, 59u8, 226u8, 4u8, 45u8, 36u8, 173u8, 113u8, @@ -20786,7 +20718,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::payouts::Payouts, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -20795,9 +20727,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "Payouts", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 251u8, 249u8, 170u8, 219u8, 131u8, 113u8, 178u8, 165u8, 173u8, 36u8, 175u8, 199u8, 57u8, 188u8, 59u8, 226u8, 4u8, 45u8, 36u8, 173u8, 113u8, @@ -20809,7 +20739,7 @@ pub mod api { pub fn member_count( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::member_count::MemberCount, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -20818,7 +20748,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "MemberCount", - vec![], + (), [ 251u8, 200u8, 97u8, 38u8, 125u8, 162u8, 19u8, 100u8, 249u8, 254u8, 42u8, 93u8, 64u8, 171u8, 2u8, 200u8, 129u8, 228u8, 211u8, 229u8, 152u8, @@ -20832,7 +20762,7 @@ pub mod api { pub fn member_by_index_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::member_by_index::MemberByIndex, (), (), @@ -20841,7 +20771,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "MemberByIndex", - vec![], + (), [ 13u8, 233u8, 212u8, 149u8, 220u8, 158u8, 17u8, 27u8, 201u8, 61u8, 202u8, 248u8, 192u8, 37u8, 199u8, 73u8, 32u8, 140u8, 204u8, 206u8, @@ -20856,7 +20786,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::member_by_index::MemberByIndex, ::subxt::storage::address::Yes, (), @@ -20865,9 +20795,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "MemberByIndex", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 13u8, 233u8, 212u8, 149u8, 220u8, 158u8, 17u8, 27u8, 201u8, 61u8, 202u8, 248u8, 192u8, 37u8, 199u8, 73u8, 32u8, 140u8, 204u8, 206u8, @@ -20880,7 +20808,7 @@ pub mod api { pub fn suspended_members_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::suspended_members::SuspendedMembers, (), (), @@ -20889,7 +20817,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "SuspendedMembers", - vec![], + (), [ 156u8, 11u8, 75u8, 79u8, 74u8, 79u8, 98u8, 89u8, 63u8, 83u8, 84u8, 249u8, 177u8, 227u8, 113u8, 21u8, 26u8, 165u8, 129u8, 5u8, 129u8, @@ -20903,7 +20831,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::suspended_members::SuspendedMembers, ::subxt::storage::address::Yes, (), @@ -20912,9 +20840,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "SuspendedMembers", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 156u8, 11u8, 75u8, 79u8, 74u8, 79u8, 98u8, 89u8, 63u8, 83u8, 84u8, 249u8, 177u8, 227u8, 113u8, 21u8, 26u8, 165u8, 129u8, 5u8, 129u8, @@ -20927,7 +20853,7 @@ pub mod api { pub fn round_count( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::round_count::RoundCount, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -20936,7 +20862,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "RoundCount", - vec![], + (), [ 61u8, 189u8, 115u8, 157u8, 36u8, 97u8, 192u8, 96u8, 138u8, 168u8, 222u8, 58u8, 117u8, 199u8, 176u8, 146u8, 232u8, 167u8, 52u8, 190u8, @@ -20949,7 +20875,7 @@ pub mod api { pub fn bids( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::bids::Bids, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -20958,7 +20884,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "Bids", - vec![], + (), [ 220u8, 159u8, 208u8, 176u8, 118u8, 11u8, 21u8, 34u8, 3u8, 101u8, 233u8, 212u8, 149u8, 156u8, 235u8, 135u8, 142u8, 220u8, 76u8, 99u8, 60u8, @@ -20969,7 +20895,7 @@ pub mod api { pub fn candidates_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::candidates::Candidates, (), (), @@ -20978,7 +20904,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "Candidates", - vec![], + (), [ 52u8, 250u8, 201u8, 163u8, 0u8, 5u8, 156u8, 84u8, 96u8, 130u8, 228u8, 205u8, 34u8, 75u8, 121u8, 209u8, 82u8, 15u8, 247u8, 21u8, 54u8, 177u8, @@ -20990,7 +20916,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::candidates::Candidates, ::subxt::storage::address::Yes, (), @@ -20999,9 +20925,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "Candidates", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 52u8, 250u8, 201u8, 163u8, 0u8, 5u8, 156u8, 84u8, 96u8, 130u8, 228u8, 205u8, 34u8, 75u8, 121u8, 209u8, 82u8, 15u8, 247u8, 21u8, 54u8, 177u8, @@ -21013,7 +20937,7 @@ pub mod api { pub fn skeptic( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::skeptic::Skeptic, ::subxt::storage::address::Yes, (), @@ -21022,7 +20946,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "Skeptic", - vec![], + (), [ 121u8, 103u8, 195u8, 11u8, 87u8, 129u8, 61u8, 69u8, 218u8, 17u8, 101u8, 207u8, 249u8, 207u8, 18u8, 103u8, 253u8, 240u8, 132u8, 46u8, 47u8, @@ -21035,7 +20959,7 @@ pub mod api { pub fn votes_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::votes::Votes, (), (), @@ -21044,7 +20968,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "Votes", - vec![], + (), [ 34u8, 201u8, 151u8, 130u8, 149u8, 159u8, 32u8, 201u8, 127u8, 178u8, 77u8, 214u8, 73u8, 158u8, 11u8, 247u8, 188u8, 156u8, 146u8, 59u8, @@ -21058,7 +20982,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::votes::Votes, (), (), @@ -21067,9 +20991,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "Votes", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 34u8, 201u8, 151u8, 130u8, 149u8, 159u8, 32u8, 201u8, 127u8, 178u8, 77u8, 214u8, 73u8, 158u8, 11u8, 247u8, 188u8, 156u8, 146u8, 59u8, @@ -21084,7 +21006,10 @@ pub mod api { _0: impl ::std::borrow::Borrow, _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ( + ::subxt::storage::address::StaticStorageKey, + ::subxt::storage::address::StaticStorageKey, + ), types::votes::Votes, ::subxt::storage::address::Yes, (), @@ -21093,10 +21018,10 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "Votes", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + ( + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ), [ 34u8, 201u8, 151u8, 130u8, 149u8, 159u8, 32u8, 201u8, 127u8, 178u8, 77u8, 214u8, 73u8, 158u8, 11u8, 247u8, 188u8, 156u8, 146u8, 59u8, @@ -21109,7 +21034,7 @@ pub mod api { pub fn vote_clear_cursor_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::vote_clear_cursor::VoteClearCursor, (), (), @@ -21118,7 +21043,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "VoteClearCursor", - vec![], + (), [ 157u8, 200u8, 216u8, 228u8, 235u8, 144u8, 13u8, 111u8, 252u8, 213u8, 209u8, 114u8, 157u8, 159u8, 47u8, 125u8, 45u8, 152u8, 27u8, 145u8, @@ -21132,7 +21057,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::vote_clear_cursor::VoteClearCursor, ::subxt::storage::address::Yes, (), @@ -21141,9 +21066,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "VoteClearCursor", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 157u8, 200u8, 216u8, 228u8, 235u8, 144u8, 13u8, 111u8, 252u8, 213u8, 209u8, 114u8, 157u8, 159u8, 47u8, 125u8, 45u8, 152u8, 27u8, 145u8, @@ -21158,7 +21081,7 @@ pub mod api { pub fn next_head( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::next_head::NextHead, ::subxt::storage::address::Yes, (), @@ -21167,7 +21090,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "NextHead", - vec![], + (), [ 64u8, 118u8, 253u8, 247u8, 56u8, 39u8, 156u8, 38u8, 150u8, 234u8, 190u8, 11u8, 45u8, 236u8, 15u8, 181u8, 6u8, 165u8, 226u8, 99u8, 46u8, @@ -21179,7 +21102,7 @@ pub mod api { pub fn challenge_round_count( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::challenge_round_count::ChallengeRoundCount, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -21188,7 +21111,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "ChallengeRoundCount", - vec![], + (), [ 111u8, 74u8, 218u8, 126u8, 43u8, 20u8, 75u8, 119u8, 166u8, 4u8, 56u8, 24u8, 206u8, 10u8, 236u8, 17u8, 62u8, 124u8, 129u8, 39u8, 197u8, 157u8, @@ -21200,7 +21123,7 @@ pub mod api { pub fn defending( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::defending::Defending, ::subxt::storage::address::Yes, (), @@ -21209,7 +21132,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "Defending", - vec![], + (), [ 22u8, 165u8, 42u8, 82u8, 129u8, 214u8, 77u8, 50u8, 110u8, 35u8, 16u8, 44u8, 222u8, 47u8, 238u8, 209u8, 171u8, 254u8, 208u8, 3u8, 2u8, 87u8, @@ -21221,7 +21144,7 @@ pub mod api { pub fn defender_votes_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::defender_votes::DefenderVotes, (), (), @@ -21230,7 +21153,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "DefenderVotes", - vec![], + (), [ 208u8, 137u8, 138u8, 215u8, 215u8, 207u8, 236u8, 140u8, 175u8, 50u8, 110u8, 228u8, 48u8, 174u8, 16u8, 59u8, 72u8, 108u8, 7u8, 183u8, 119u8, @@ -21244,7 +21167,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::defender_votes::DefenderVotes, (), (), @@ -21253,9 +21176,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "DefenderVotes", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 208u8, 137u8, 138u8, 215u8, 215u8, 207u8, 236u8, 140u8, 175u8, 50u8, 110u8, 228u8, 48u8, 174u8, 16u8, 59u8, 72u8, 108u8, 7u8, 183u8, 119u8, @@ -21270,7 +21191,10 @@ pub mod api { _0: impl ::std::borrow::Borrow, _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ( + ::subxt::storage::address::StaticStorageKey, + ::subxt::storage::address::StaticStorageKey, + ), types::defender_votes::DefenderVotes, ::subxt::storage::address::Yes, (), @@ -21279,10 +21203,10 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Society", "DefenderVotes", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + ( + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ), [ 208u8, 137u8, 138u8, 215u8, 215u8, 207u8, 236u8, 140u8, 175u8, 50u8, 110u8, 228u8, 48u8, 174u8, 16u8, 59u8, 72u8, 108u8, 7u8, 183u8, 119u8, @@ -22163,7 +22087,7 @@ pub mod api { pub fn recoverable_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::recoverable::Recoverable, (), (), @@ -22172,7 +22096,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Recovery", "Recoverable", - vec![], + (), [ 112u8, 7u8, 56u8, 46u8, 138u8, 197u8, 63u8, 234u8, 140u8, 123u8, 145u8, 106u8, 189u8, 190u8, 247u8, 61u8, 250u8, 67u8, 107u8, 42u8, 170u8, @@ -22185,7 +22109,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::recoverable::Recoverable, ::subxt::storage::address::Yes, (), @@ -22194,9 +22118,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Recovery", "Recoverable", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 112u8, 7u8, 56u8, 46u8, 138u8, 197u8, 63u8, 234u8, 140u8, 123u8, 145u8, 106u8, 189u8, 190u8, 247u8, 61u8, 250u8, 67u8, 107u8, 42u8, 170u8, @@ -22211,7 +22133,7 @@ pub mod api { pub fn active_recoveries_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::active_recoveries::ActiveRecoveries, (), (), @@ -22220,7 +22142,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Recovery", "ActiveRecoveries", - vec![], + (), [ 104u8, 252u8, 28u8, 142u8, 48u8, 26u8, 91u8, 201u8, 184u8, 163u8, 180u8, 197u8, 189u8, 71u8, 144u8, 88u8, 225u8, 13u8, 183u8, 84u8, @@ -22237,7 +22159,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::active_recoveries::ActiveRecoveries, (), (), @@ -22246,9 +22168,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Recovery", "ActiveRecoveries", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 104u8, 252u8, 28u8, 142u8, 48u8, 26u8, 91u8, 201u8, 184u8, 163u8, 180u8, 197u8, 189u8, 71u8, 144u8, 88u8, 225u8, 13u8, 183u8, 84u8, @@ -22266,7 +22186,14 @@ pub mod api { _0: impl ::std::borrow::Borrow, _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ( + ::subxt::storage::address::StaticStorageKey< + types::active_recoveries::Param0, + >, + ::subxt::storage::address::StaticStorageKey< + types::active_recoveries::Param1, + >, + ), types::active_recoveries::ActiveRecoveries, ::subxt::storage::address::Yes, (), @@ -22275,10 +22202,10 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Recovery", "ActiveRecoveries", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + ( + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ), [ 104u8, 252u8, 28u8, 142u8, 48u8, 26u8, 91u8, 201u8, 184u8, 163u8, 180u8, 197u8, 189u8, 71u8, 144u8, 88u8, 225u8, 13u8, 183u8, 84u8, @@ -22293,7 +22220,7 @@ pub mod api { pub fn proxy_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::proxy::Proxy, (), (), @@ -22302,7 +22229,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Recovery", "Proxy", - vec![], + (), [ 161u8, 242u8, 17u8, 183u8, 161u8, 47u8, 87u8, 110u8, 201u8, 177u8, 199u8, 157u8, 30u8, 131u8, 49u8, 89u8, 182u8, 86u8, 152u8, 19u8, 199u8, @@ -22317,7 +22244,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::proxy::Proxy, ::subxt::storage::address::Yes, (), @@ -22326,9 +22253,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Recovery", "Proxy", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 161u8, 242u8, 17u8, 183u8, 161u8, 47u8, 87u8, 110u8, 201u8, 177u8, 199u8, 157u8, 30u8, 131u8, 49u8, 89u8, 182u8, 86u8, 152u8, 19u8, 199u8, @@ -22901,7 +22826,7 @@ pub mod api { pub fn vesting_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::vesting::Vesting, (), (), @@ -22910,7 +22835,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Vesting", "Vesting", - vec![], + (), [ 95u8, 168u8, 217u8, 248u8, 149u8, 86u8, 195u8, 93u8, 73u8, 206u8, 105u8, 165u8, 33u8, 173u8, 232u8, 81u8, 147u8, 254u8, 50u8, 228u8, @@ -22924,7 +22849,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::vesting::Vesting, ::subxt::storage::address::Yes, (), @@ -22933,9 +22858,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Vesting", "Vesting", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 95u8, 168u8, 217u8, 248u8, 149u8, 86u8, 195u8, 93u8, 73u8, 206u8, 105u8, 165u8, 33u8, 173u8, 232u8, 81u8, 147u8, 254u8, 50u8, 228u8, @@ -22950,7 +22873,7 @@ pub mod api { pub fn storage_version( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::storage_version::StorageVersion, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -22959,7 +22882,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Vesting", "StorageVersion", - vec![], + (), [ 230u8, 137u8, 180u8, 133u8, 142u8, 124u8, 231u8, 234u8, 223u8, 10u8, 154u8, 98u8, 158u8, 253u8, 228u8, 80u8, 5u8, 9u8, 91u8, 210u8, 252u8, @@ -23816,7 +23739,7 @@ pub mod api { pub fn incomplete_since( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::incomplete_since::IncompleteSince, ::subxt::storage::address::Yes, (), @@ -23825,7 +23748,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Scheduler", "IncompleteSince", - vec![], + (), [ 250u8, 83u8, 64u8, 167u8, 205u8, 59u8, 225u8, 97u8, 205u8, 12u8, 76u8, 130u8, 197u8, 4u8, 111u8, 208u8, 92u8, 217u8, 145u8, 119u8, 38u8, @@ -23837,7 +23760,7 @@ pub mod api { pub fn agenda_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::agenda::Agenda, (), ::subxt::storage::address::Yes, @@ -23846,7 +23769,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Scheduler", "Agenda", - vec![], + (), [ 10u8, 123u8, 252u8, 106u8, 154u8, 9u8, 245u8, 203u8, 188u8, 254u8, 20u8, 41u8, 6u8, 226u8, 78u8, 188u8, 0u8, 173u8, 143u8, 44u8, 117u8, @@ -23859,7 +23782,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::agenda::Agenda, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -23868,9 +23791,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Scheduler", "Agenda", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 10u8, 123u8, 252u8, 106u8, 154u8, 9u8, 245u8, 203u8, 188u8, 254u8, 20u8, 41u8, 6u8, 226u8, 78u8, 188u8, 0u8, 173u8, 143u8, 44u8, 117u8, @@ -23882,7 +23803,7 @@ pub mod api { pub fn retries_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::retries::Retries, (), (), @@ -23891,7 +23812,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Scheduler", "Retries", - vec![], + (), [ 164u8, 27u8, 208u8, 185u8, 19u8, 232u8, 190u8, 97u8, 137u8, 73u8, 146u8, 10u8, 241u8, 176u8, 251u8, 140u8, 133u8, 65u8, 190u8, 162u8, @@ -23905,7 +23826,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::retries::Retries, (), (), @@ -23914,9 +23835,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Scheduler", "Retries", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 164u8, 27u8, 208u8, 185u8, 19u8, 232u8, 190u8, 97u8, 137u8, 73u8, 146u8, 10u8, 241u8, 176u8, 251u8, 140u8, 133u8, 65u8, 190u8, 162u8, @@ -23931,7 +23850,10 @@ pub mod api { _0: impl ::std::borrow::Borrow, _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ( + ::subxt::storage::address::StaticStorageKey, + ::subxt::storage::address::StaticStorageKey, + ), types::retries::Retries, ::subxt::storage::address::Yes, (), @@ -23940,10 +23862,10 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Scheduler", "Retries", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + ( + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ), [ 164u8, 27u8, 208u8, 185u8, 19u8, 232u8, 190u8, 97u8, 137u8, 73u8, 146u8, 10u8, 241u8, 176u8, 251u8, 140u8, 133u8, 65u8, 190u8, 162u8, @@ -23959,7 +23881,7 @@ pub mod api { pub fn lookup_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::lookup::Lookup, (), (), @@ -23968,7 +23890,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Scheduler", "Lookup", - vec![], + (), [ 24u8, 87u8, 96u8, 127u8, 136u8, 205u8, 238u8, 174u8, 71u8, 110u8, 65u8, 98u8, 228u8, 167u8, 99u8, 71u8, 171u8, 186u8, 12u8, 218u8, 137u8, 70u8, @@ -23984,7 +23906,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::lookup::Lookup, ::subxt::storage::address::Yes, (), @@ -23993,9 +23915,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Scheduler", "Lookup", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 24u8, 87u8, 96u8, 127u8, 136u8, 205u8, 238u8, 174u8, 71u8, 110u8, 65u8, 98u8, 228u8, 167u8, 99u8, 71u8, 171u8, 186u8, 12u8, 218u8, 137u8, 70u8, @@ -24914,7 +24834,7 @@ pub mod api { pub fn proxies_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::proxies::Proxies, (), ::subxt::storage::address::Yes, @@ -24923,7 +24843,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Proxy", "Proxies", - vec![], + (), [ 92u8, 131u8, 10u8, 14u8, 241u8, 148u8, 230u8, 81u8, 54u8, 152u8, 147u8, 180u8, 85u8, 28u8, 87u8, 215u8, 110u8, 13u8, 158u8, 207u8, 77u8, 102u8, @@ -24937,7 +24857,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::proxies::Proxies, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -24946,9 +24866,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Proxy", "Proxies", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 92u8, 131u8, 10u8, 14u8, 241u8, 148u8, 230u8, 81u8, 54u8, 152u8, 147u8, 180u8, 85u8, 28u8, 87u8, 215u8, 110u8, 13u8, 158u8, 207u8, 77u8, 102u8, @@ -24960,7 +24878,7 @@ pub mod api { pub fn announcements_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::announcements::Announcements, (), ::subxt::storage::address::Yes, @@ -24969,7 +24887,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Proxy", "Announcements", - vec![], + (), [ 129u8, 228u8, 198u8, 210u8, 90u8, 69u8, 151u8, 198u8, 206u8, 174u8, 148u8, 58u8, 134u8, 14u8, 53u8, 56u8, 234u8, 71u8, 84u8, 247u8, 246u8, @@ -24983,7 +24901,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::announcements::Announcements, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -24992,9 +24910,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Proxy", "Announcements", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 129u8, 228u8, 198u8, 210u8, 90u8, 69u8, 151u8, 198u8, 206u8, 174u8, 148u8, 58u8, 134u8, 14u8, 53u8, 56u8, 234u8, 71u8, 84u8, 247u8, 246u8, @@ -25678,7 +25594,7 @@ pub mod api { pub fn multisigs_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::multisigs::Multisigs, (), (), @@ -25687,7 +25603,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Multisig", "Multisigs", - vec![], + (), [ 154u8, 109u8, 45u8, 18u8, 155u8, 151u8, 81u8, 28u8, 86u8, 127u8, 189u8, 151u8, 49u8, 61u8, 12u8, 149u8, 84u8, 61u8, 110u8, 197u8, 200u8, 140u8, @@ -25700,7 +25616,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::multisigs::Multisigs, (), (), @@ -25709,9 +25625,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Multisig", "Multisigs", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 154u8, 109u8, 45u8, 18u8, 155u8, 151u8, 81u8, 28u8, 86u8, 127u8, 189u8, 151u8, 49u8, 61u8, 12u8, 149u8, 84u8, 61u8, 110u8, 197u8, 200u8, 140u8, @@ -25725,7 +25639,10 @@ pub mod api { _0: impl ::std::borrow::Borrow, _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ( + ::subxt::storage::address::StaticStorageKey, + ::subxt::storage::address::StaticStorageKey, + ), types::multisigs::Multisigs, ::subxt::storage::address::Yes, (), @@ -25734,10 +25651,10 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Multisig", "Multisigs", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + ( + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ), [ 154u8, 109u8, 45u8, 18u8, 155u8, 151u8, 81u8, 28u8, 86u8, 127u8, 189u8, 151u8, 49u8, 61u8, 12u8, 149u8, 84u8, 61u8, 110u8, 197u8, 200u8, 140u8, @@ -26150,7 +26067,7 @@ pub mod api { pub fn status_for_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::status_for::StatusFor, (), (), @@ -26159,7 +26076,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Preimage", "StatusFor", - vec![], + (), [ 187u8, 100u8, 54u8, 112u8, 96u8, 129u8, 36u8, 149u8, 127u8, 226u8, 126u8, 171u8, 72u8, 189u8, 59u8, 126u8, 204u8, 125u8, 67u8, 204u8, @@ -26173,7 +26090,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::status_for::StatusFor, ::subxt::storage::address::Yes, (), @@ -26182,9 +26099,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Preimage", "StatusFor", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 187u8, 100u8, 54u8, 112u8, 96u8, 129u8, 36u8, 149u8, 127u8, 226u8, 126u8, 171u8, 72u8, 189u8, 59u8, 126u8, 204u8, 125u8, 67u8, 204u8, @@ -26197,7 +26112,7 @@ pub mod api { pub fn request_status_for_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::request_status_for::RequestStatusFor, (), (), @@ -26206,7 +26121,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Preimage", "RequestStatusFor", - vec![], + (), [ 72u8, 59u8, 254u8, 211u8, 96u8, 223u8, 10u8, 64u8, 6u8, 139u8, 213u8, 85u8, 14u8, 29u8, 166u8, 37u8, 140u8, 124u8, 186u8, 156u8, 172u8, @@ -26219,7 +26134,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::request_status_for::RequestStatusFor, ::subxt::storage::address::Yes, (), @@ -26228,9 +26143,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Preimage", "RequestStatusFor", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 72u8, 59u8, 254u8, 211u8, 96u8, 223u8, 10u8, 64u8, 6u8, 139u8, 213u8, 85u8, 14u8, 29u8, 166u8, 37u8, 140u8, 124u8, 186u8, 156u8, 172u8, @@ -26241,7 +26154,7 @@ pub mod api { pub fn preimage_for_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::preimage_for::PreimageFor, (), (), @@ -26250,7 +26163,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Preimage", "PreimageFor", - vec![], + (), [ 106u8, 5u8, 17u8, 46u8, 6u8, 184u8, 177u8, 113u8, 169u8, 34u8, 119u8, 141u8, 117u8, 40u8, 30u8, 94u8, 187u8, 35u8, 206u8, 216u8, 143u8, @@ -26263,7 +26176,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::preimage_for::PreimageFor, (), (), @@ -26272,9 +26185,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Preimage", "PreimageFor", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 106u8, 5u8, 17u8, 46u8, 6u8, 184u8, 177u8, 113u8, 169u8, 34u8, 119u8, 141u8, 117u8, 40u8, 30u8, 94u8, 187u8, 35u8, 206u8, 216u8, 143u8, @@ -26288,7 +26199,10 @@ pub mod api { _0: impl ::std::borrow::Borrow, _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ( + ::subxt::storage::address::StaticStorageKey, + ::subxt::storage::address::StaticStorageKey, + ), types::preimage_for::PreimageFor, ::subxt::storage::address::Yes, (), @@ -26297,10 +26211,10 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Preimage", "PreimageFor", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + ( + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ), [ 106u8, 5u8, 17u8, 46u8, 6u8, 184u8, 177u8, 113u8, 169u8, 34u8, 119u8, 141u8, 117u8, 40u8, 30u8, 94u8, 187u8, 35u8, 206u8, 216u8, 143u8, @@ -26577,7 +26491,7 @@ pub mod api { pub fn conversion_rate_to_native_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::conversion_rate_to_native::ConversionRateToNative, (), (), @@ -26586,7 +26500,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "AssetRate", "ConversionRateToNative", - vec![], + (), [ 230u8, 127u8, 110u8, 126u8, 79u8, 168u8, 134u8, 97u8, 195u8, 105u8, 16u8, 57u8, 197u8, 104u8, 87u8, 144u8, 83u8, 188u8, 85u8, 253u8, 230u8, @@ -26602,7 +26516,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::conversion_rate_to_native::Param0, + >, types::conversion_rate_to_native::ConversionRateToNative, ::subxt::storage::address::Yes, (), @@ -26611,9 +26527,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "AssetRate", "ConversionRateToNative", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 230u8, 127u8, 110u8, 126u8, 79u8, 168u8, 134u8, 97u8, 195u8, 105u8, 16u8, 57u8, 197u8, 104u8, 87u8, 144u8, 83u8, 188u8, 85u8, 253u8, 230u8, @@ -27474,7 +27388,7 @@ pub mod api { pub fn bounty_count( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::bounty_count::BountyCount, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -27483,7 +27397,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Bounties", "BountyCount", - vec![], + (), [ 120u8, 204u8, 26u8, 150u8, 37u8, 81u8, 43u8, 223u8, 180u8, 252u8, 142u8, 144u8, 109u8, 5u8, 184u8, 72u8, 223u8, 230u8, 66u8, 196u8, 14u8, @@ -27496,7 +27410,7 @@ pub mod api { pub fn bounties_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::bounties::Bounties, (), (), @@ -27505,7 +27419,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Bounties", "Bounties", - vec![], + (), [ 183u8, 96u8, 172u8, 86u8, 167u8, 129u8, 51u8, 179u8, 238u8, 155u8, 196u8, 77u8, 158u8, 102u8, 188u8, 19u8, 79u8, 178u8, 145u8, 189u8, @@ -27519,7 +27433,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::bounties::Bounties, ::subxt::storage::address::Yes, (), @@ -27528,9 +27442,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Bounties", "Bounties", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 183u8, 96u8, 172u8, 86u8, 167u8, 129u8, 51u8, 179u8, 238u8, 155u8, 196u8, 77u8, 158u8, 102u8, 188u8, 19u8, 79u8, 178u8, 145u8, 189u8, @@ -27543,7 +27455,7 @@ pub mod api { pub fn bounty_descriptions_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::bounty_descriptions::BountyDescriptions, (), (), @@ -27552,7 +27464,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Bounties", "BountyDescriptions", - vec![], + (), [ 71u8, 40u8, 133u8, 84u8, 55u8, 207u8, 169u8, 189u8, 160u8, 51u8, 202u8, 144u8, 15u8, 226u8, 97u8, 114u8, 54u8, 247u8, 53u8, 26u8, 36u8, 54u8, @@ -27565,7 +27477,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::bounty_descriptions::BountyDescriptions, ::subxt::storage::address::Yes, (), @@ -27574,9 +27486,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Bounties", "BountyDescriptions", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 71u8, 40u8, 133u8, 84u8, 55u8, 207u8, 169u8, 189u8, 160u8, 51u8, 202u8, 144u8, 15u8, 226u8, 97u8, 114u8, 54u8, 247u8, 53u8, 26u8, 36u8, 54u8, @@ -27588,7 +27498,7 @@ pub mod api { pub fn bounty_approvals( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::bounty_approvals::BountyApprovals, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -27597,7 +27507,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Bounties", "BountyApprovals", - vec![], + (), [ 182u8, 228u8, 0u8, 46u8, 176u8, 25u8, 222u8, 180u8, 51u8, 57u8, 14u8, 0u8, 69u8, 160u8, 64u8, 27u8, 88u8, 29u8, 227u8, 146u8, 2u8, 121u8, @@ -28535,7 +28445,7 @@ pub mod api { pub fn child_bounty_count( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::child_bounty_count::ChildBountyCount, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -28544,7 +28454,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ChildBounties", "ChildBountyCount", - vec![], + (), [ 206u8, 1u8, 40u8, 132u8, 51u8, 139u8, 234u8, 20u8, 89u8, 86u8, 247u8, 107u8, 169u8, 252u8, 5u8, 180u8, 218u8, 24u8, 232u8, 94u8, 82u8, 135u8, @@ -28557,7 +28467,7 @@ pub mod api { pub fn parent_child_bounties_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::parent_child_bounties::ParentChildBounties, (), ::subxt::storage::address::Yes, @@ -28566,7 +28476,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ChildBounties", "ParentChildBounties", - vec![], + (), [ 52u8, 179u8, 242u8, 212u8, 91u8, 185u8, 176u8, 52u8, 100u8, 200u8, 1u8, 41u8, 184u8, 234u8, 234u8, 8u8, 123u8, 252u8, 131u8, 55u8, 109u8, @@ -28580,7 +28490,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::parent_child_bounties::Param0, + >, types::parent_child_bounties::ParentChildBounties, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -28589,9 +28501,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ChildBounties", "ParentChildBounties", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 52u8, 179u8, 242u8, 212u8, 91u8, 185u8, 176u8, 52u8, 100u8, 200u8, 1u8, 41u8, 184u8, 234u8, 234u8, 8u8, 123u8, 252u8, 131u8, 55u8, 109u8, @@ -28603,7 +28513,7 @@ pub mod api { pub fn child_bounties_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::child_bounties::ChildBounties, (), (), @@ -28612,7 +28522,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ChildBounties", "ChildBounties", - vec![], + (), [ 165u8, 240u8, 158u8, 204u8, 183u8, 190u8, 129u8, 65u8, 226u8, 8u8, 182u8, 103u8, 46u8, 162u8, 35u8, 155u8, 131u8, 45u8, 163u8, 64u8, @@ -28626,7 +28536,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::child_bounties::ChildBounties, (), (), @@ -28635,9 +28545,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ChildBounties", "ChildBounties", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 165u8, 240u8, 158u8, 204u8, 183u8, 190u8, 129u8, 65u8, 226u8, 8u8, 182u8, 103u8, 46u8, 162u8, 35u8, 155u8, 131u8, 45u8, 163u8, 64u8, @@ -28652,7 +28560,10 @@ pub mod api { _0: impl ::std::borrow::Borrow, _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ( + ::subxt::storage::address::StaticStorageKey, + ::subxt::storage::address::StaticStorageKey, + ), types::child_bounties::ChildBounties, ::subxt::storage::address::Yes, (), @@ -28661,10 +28572,10 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ChildBounties", "ChildBounties", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + ( + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ), [ 165u8, 240u8, 158u8, 204u8, 183u8, 190u8, 129u8, 65u8, 226u8, 8u8, 182u8, 103u8, 46u8, 162u8, 35u8, 155u8, 131u8, 45u8, 163u8, 64u8, @@ -28677,7 +28588,7 @@ pub mod api { pub fn child_bounty_descriptions_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::child_bounty_descriptions::ChildBountyDescriptions, (), (), @@ -28686,7 +28597,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ChildBounties", "ChildBountyDescriptions", - vec![], + (), [ 192u8, 0u8, 220u8, 156u8, 109u8, 65u8, 113u8, 102u8, 119u8, 0u8, 109u8, 141u8, 211u8, 128u8, 237u8, 61u8, 28u8, 56u8, 206u8, 93u8, 183u8, 74u8, @@ -28699,7 +28610,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::child_bounty_descriptions::Param0, + >, types::child_bounty_descriptions::ChildBountyDescriptions, ::subxt::storage::address::Yes, (), @@ -28708,9 +28621,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ChildBounties", "ChildBountyDescriptions", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 192u8, 0u8, 220u8, 156u8, 109u8, 65u8, 113u8, 102u8, 119u8, 0u8, 109u8, 141u8, 211u8, 128u8, 237u8, 61u8, 28u8, 56u8, 206u8, 93u8, 183u8, 74u8, @@ -28722,7 +28633,7 @@ pub mod api { pub fn children_curator_fees_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::children_curator_fees::ChildrenCuratorFees, (), ::subxt::storage::address::Yes, @@ -28731,7 +28642,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ChildBounties", "ChildrenCuratorFees", - vec![], + (), [ 32u8, 16u8, 190u8, 193u8, 6u8, 80u8, 163u8, 16u8, 85u8, 111u8, 39u8, 141u8, 209u8, 70u8, 213u8, 167u8, 22u8, 12u8, 93u8, 17u8, 104u8, 94u8, @@ -28744,7 +28655,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::children_curator_fees::Param0, + >, types::children_curator_fees::ChildrenCuratorFees, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -28753,9 +28666,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ChildBounties", "ChildrenCuratorFees", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 32u8, 16u8, 190u8, 193u8, 6u8, 80u8, 163u8, 16u8, 85u8, 111u8, 39u8, 141u8, 209u8, 70u8, 213u8, 167u8, 22u8, 12u8, 93u8, 17u8, 104u8, 94u8, @@ -29401,7 +29312,7 @@ pub mod api { pub fn queue_totals( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::queue_totals::QueueTotals, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -29410,7 +29321,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Nis", "QueueTotals", - vec![], + (), [ 40u8, 120u8, 43u8, 203u8, 97u8, 129u8, 61u8, 184u8, 137u8, 45u8, 201u8, 90u8, 227u8, 161u8, 52u8, 179u8, 9u8, 74u8, 104u8, 225u8, 209u8, 62u8, @@ -29422,7 +29333,7 @@ pub mod api { pub fn queues_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::queues::Queues, (), ::subxt::storage::address::Yes, @@ -29431,7 +29342,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Nis", "Queues", - vec![], + (), [ 144u8, 181u8, 173u8, 134u8, 6u8, 165u8, 174u8, 91u8, 75u8, 241u8, 142u8, 192u8, 246u8, 71u8, 132u8, 146u8, 181u8, 158u8, 125u8, 34u8, @@ -29445,7 +29356,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::queues::Queues, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -29454,9 +29365,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Nis", "Queues", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 144u8, 181u8, 173u8, 134u8, 6u8, 165u8, 174u8, 91u8, 75u8, 241u8, 142u8, 192u8, 246u8, 71u8, 132u8, 146u8, 181u8, 158u8, 125u8, 34u8, @@ -29469,7 +29378,7 @@ pub mod api { pub fn summary( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::summary::Summary, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -29478,7 +29387,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Nis", "Summary", - vec![], + (), [ 106u8, 21u8, 103u8, 47u8, 211u8, 234u8, 50u8, 222u8, 25u8, 209u8, 67u8, 117u8, 111u8, 6u8, 231u8, 245u8, 109u8, 52u8, 177u8, 20u8, 179u8, @@ -29491,7 +29400,7 @@ pub mod api { pub fn receipts_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::receipts::Receipts, (), (), @@ -29500,7 +29409,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Nis", "Receipts", - vec![], + (), [ 123u8, 179u8, 0u8, 14u8, 5u8, 132u8, 165u8, 192u8, 163u8, 22u8, 174u8, 22u8, 252u8, 44u8, 167u8, 22u8, 116u8, 170u8, 186u8, 118u8, 131u8, 5u8, @@ -29513,7 +29422,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::receipts::Receipts, ::subxt::storage::address::Yes, (), @@ -29522,9 +29431,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Nis", "Receipts", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 123u8, 179u8, 0u8, 14u8, 5u8, 132u8, 165u8, 192u8, 163u8, 22u8, 174u8, 22u8, 252u8, 44u8, 167u8, 22u8, 116u8, 170u8, 186u8, 118u8, 131u8, 5u8, @@ -30744,7 +30651,7 @@ pub mod api { pub fn total_issuance( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::total_issuance::TotalIssuance, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -30753,7 +30660,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "NisCounterpartBalances", "TotalIssuance", - vec![], + (), [ 116u8, 70u8, 119u8, 194u8, 69u8, 37u8, 116u8, 206u8, 171u8, 70u8, 171u8, 210u8, 226u8, 111u8, 184u8, 204u8, 206u8, 11u8, 68u8, 72u8, @@ -30766,7 +30673,7 @@ pub mod api { pub fn inactive_issuance( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::inactive_issuance::InactiveIssuance, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -30775,7 +30682,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "NisCounterpartBalances", "InactiveIssuance", - vec![], + (), [ 212u8, 185u8, 19u8, 50u8, 250u8, 72u8, 173u8, 50u8, 4u8, 104u8, 161u8, 249u8, 77u8, 247u8, 204u8, 248u8, 11u8, 18u8, 57u8, 4u8, 82u8, 110u8, @@ -30810,7 +30717,7 @@ pub mod api { pub fn account_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::account::Account, (), ::subxt::storage::address::Yes, @@ -30819,7 +30726,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "NisCounterpartBalances", "Account", - vec![], + (), [ 213u8, 38u8, 200u8, 69u8, 218u8, 0u8, 112u8, 181u8, 160u8, 23u8, 96u8, 90u8, 3u8, 88u8, 126u8, 22u8, 103u8, 74u8, 64u8, 69u8, 29u8, 247u8, @@ -30855,7 +30762,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::account::Account, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -30864,9 +30771,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "NisCounterpartBalances", "Account", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 213u8, 38u8, 200u8, 69u8, 218u8, 0u8, 112u8, 181u8, 160u8, 23u8, 96u8, 90u8, 3u8, 88u8, 126u8, 22u8, 103u8, 74u8, 64u8, 69u8, 29u8, 247u8, @@ -30879,7 +30784,7 @@ pub mod api { pub fn locks_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::locks::Locks, (), ::subxt::storage::address::Yes, @@ -30888,7 +30793,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "NisCounterpartBalances", "Locks", - vec![], + (), [ 10u8, 223u8, 55u8, 0u8, 249u8, 69u8, 168u8, 41u8, 75u8, 35u8, 120u8, 167u8, 18u8, 132u8, 9u8, 20u8, 91u8, 51u8, 27u8, 69u8, 136u8, 187u8, @@ -30902,7 +30807,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::locks::Locks, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -30911,9 +30816,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "NisCounterpartBalances", "Locks", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 10u8, 223u8, 55u8, 0u8, 249u8, 69u8, 168u8, 41u8, 75u8, 35u8, 120u8, 167u8, 18u8, 132u8, 9u8, 20u8, 91u8, 51u8, 27u8, 69u8, 136u8, 187u8, @@ -30925,7 +30828,7 @@ pub mod api { pub fn reserves_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::reserves::Reserves, (), ::subxt::storage::address::Yes, @@ -30934,7 +30837,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "NisCounterpartBalances", "Reserves", - vec![], + (), [ 112u8, 10u8, 241u8, 77u8, 64u8, 187u8, 106u8, 159u8, 13u8, 153u8, 140u8, 178u8, 182u8, 50u8, 1u8, 55u8, 149u8, 92u8, 196u8, 229u8, 170u8, @@ -30947,7 +30850,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::reserves::Reserves, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -30956,9 +30859,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "NisCounterpartBalances", "Reserves", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 112u8, 10u8, 241u8, 77u8, 64u8, 187u8, 106u8, 159u8, 13u8, 153u8, 140u8, 178u8, 182u8, 50u8, 1u8, 55u8, 149u8, 92u8, 196u8, 229u8, 170u8, @@ -30970,7 +30871,7 @@ pub mod api { pub fn holds_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::holds::Holds, (), ::subxt::storage::address::Yes, @@ -30979,7 +30880,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "NisCounterpartBalances", "Holds", - vec![], + (), [ 181u8, 39u8, 29u8, 45u8, 45u8, 198u8, 129u8, 210u8, 189u8, 183u8, 121u8, 125u8, 57u8, 90u8, 95u8, 107u8, 51u8, 13u8, 22u8, 105u8, 191u8, @@ -30993,7 +30894,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::holds::Holds, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -31002,9 +30903,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "NisCounterpartBalances", "Holds", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 181u8, 39u8, 29u8, 45u8, 45u8, 198u8, 129u8, 210u8, 189u8, 183u8, 121u8, 125u8, 57u8, 90u8, 95u8, 107u8, 51u8, 13u8, 22u8, 105u8, 191u8, @@ -31017,7 +30916,7 @@ pub mod api { pub fn freezes_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::freezes::Freezes, (), ::subxt::storage::address::Yes, @@ -31026,7 +30925,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "NisCounterpartBalances", "Freezes", - vec![], + (), [ 69u8, 49u8, 165u8, 76u8, 135u8, 142u8, 179u8, 118u8, 50u8, 109u8, 53u8, 112u8, 110u8, 94u8, 30u8, 93u8, 173u8, 38u8, 27u8, 142u8, 19u8, 5u8, @@ -31039,7 +30938,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::freezes::Freezes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -31048,9 +30947,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "NisCounterpartBalances", "Freezes", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 69u8, 49u8, 165u8, 76u8, 135u8, 142u8, 179u8, 118u8, 50u8, 109u8, 53u8, 112u8, 110u8, 94u8, 30u8, 93u8, 173u8, 38u8, 27u8, 142u8, 19u8, 5u8, @@ -33055,7 +32952,7 @@ pub mod api { pub fn active_config( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::active_config::ActiveConfig, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -33064,7 +32961,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Configuration", "ActiveConfig", - vec![], + (), [ 139u8, 211u8, 123u8, 64u8, 213u8, 119u8, 27u8, 145u8, 140u8, 101u8, 90u8, 64u8, 218u8, 130u8, 96u8, 66u8, 107u8, 131u8, 85u8, 4u8, 136u8, @@ -33083,7 +32980,7 @@ pub mod api { pub fn pending_configs( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::pending_configs::PendingConfigs, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -33092,7 +32989,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Configuration", "PendingConfigs", - vec![], + (), [ 7u8, 170u8, 38u8, 177u8, 76u8, 75u8, 198u8, 192u8, 247u8, 137u8, 85u8, 17u8, 74u8, 93u8, 170u8, 177u8, 198u8, 208u8, 183u8, 28u8, 178u8, 5u8, @@ -33105,7 +33002,7 @@ pub mod api { pub fn bypass_consistency_check( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::bypass_consistency_check::BypassConsistencyCheck, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -33114,7 +33011,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Configuration", "BypassConsistencyCheck", - vec![], + (), [ 109u8, 201u8, 130u8, 189u8, 167u8, 112u8, 171u8, 180u8, 100u8, 146u8, 23u8, 174u8, 199u8, 230u8, 185u8, 155u8, 178u8, 45u8, 24u8, 66u8, @@ -33171,7 +33068,7 @@ pub mod api { pub fn current_session_index( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::current_session_index::CurrentSessionIndex, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -33180,7 +33077,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParasShared", "CurrentSessionIndex", - vec![], + (), [ 250u8, 164u8, 179u8, 84u8, 199u8, 245u8, 116u8, 48u8, 86u8, 127u8, 50u8, 117u8, 236u8, 41u8, 107u8, 238u8, 151u8, 236u8, 68u8, 78u8, @@ -33194,7 +33091,7 @@ pub mod api { pub fn active_validator_indices( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::active_validator_indices::ActiveValidatorIndices, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -33203,7 +33100,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParasShared", "ActiveValidatorIndices", - vec![], + (), [ 80u8, 207u8, 217u8, 195u8, 69u8, 151u8, 27u8, 205u8, 227u8, 89u8, 71u8, 180u8, 91u8, 116u8, 82u8, 193u8, 108u8, 115u8, 40u8, 247u8, 160u8, @@ -33216,7 +33113,7 @@ pub mod api { pub fn active_validator_keys( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::active_validator_keys::ActiveValidatorKeys, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -33225,7 +33122,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParasShared", "ActiveValidatorKeys", - vec![], + (), [ 155u8, 151u8, 155u8, 8u8, 23u8, 38u8, 91u8, 12u8, 94u8, 69u8, 228u8, 185u8, 14u8, 219u8, 215u8, 98u8, 235u8, 222u8, 157u8, 180u8, 230u8, @@ -33238,7 +33135,7 @@ pub mod api { pub fn allowed_relay_parents( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::allowed_relay_parents::AllowedRelayParents, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -33247,7 +33144,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParasShared", "AllowedRelayParents", - vec![], + (), [ 12u8, 170u8, 241u8, 120u8, 39u8, 216u8, 90u8, 37u8, 119u8, 212u8, 161u8, 90u8, 233u8, 124u8, 92u8, 43u8, 212u8, 206u8, 153u8, 103u8, @@ -33422,7 +33319,7 @@ pub mod api { pub fn availability_bitfields_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::availability_bitfields::AvailabilityBitfields, (), (), @@ -33431,7 +33328,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParaInclusion", "AvailabilityBitfields", - vec![], + (), [ 163u8, 169u8, 217u8, 160u8, 147u8, 165u8, 186u8, 21u8, 171u8, 177u8, 74u8, 69u8, 55u8, 205u8, 46u8, 13u8, 253u8, 83u8, 55u8, 190u8, 22u8, @@ -33444,7 +33341,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::availability_bitfields::Param0, + >, types::availability_bitfields::AvailabilityBitfields, ::subxt::storage::address::Yes, (), @@ -33453,9 +33352,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParaInclusion", "AvailabilityBitfields", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 163u8, 169u8, 217u8, 160u8, 147u8, 165u8, 186u8, 21u8, 171u8, 177u8, 74u8, 69u8, 55u8, 205u8, 46u8, 13u8, 253u8, 83u8, 55u8, 190u8, 22u8, @@ -33467,7 +33364,7 @@ pub mod api { pub fn pending_availability_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::pending_availability::PendingAvailability, (), (), @@ -33476,7 +33373,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParaInclusion", "PendingAvailability", - vec![], + (), [ 164u8, 175u8, 34u8, 182u8, 190u8, 147u8, 42u8, 185u8, 162u8, 130u8, 33u8, 159u8, 234u8, 242u8, 90u8, 119u8, 2u8, 195u8, 48u8, 150u8, 135u8, @@ -33489,7 +33386,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::pending_availability::Param0, + >, types::pending_availability::PendingAvailability, ::subxt::storage::address::Yes, (), @@ -33498,9 +33397,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParaInclusion", "PendingAvailability", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 164u8, 175u8, 34u8, 182u8, 190u8, 147u8, 42u8, 185u8, 162u8, 130u8, 33u8, 159u8, 234u8, 242u8, 90u8, 119u8, 2u8, 195u8, 48u8, 150u8, 135u8, @@ -33512,7 +33409,7 @@ pub mod api { pub fn pending_availability_commitments_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::pending_availability_commitments::PendingAvailabilityCommitments, (), (), @@ -33521,7 +33418,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParaInclusion", "PendingAvailabilityCommitments", - vec![], + (), [ 196u8, 210u8, 210u8, 16u8, 246u8, 105u8, 121u8, 178u8, 5u8, 48u8, 40u8, 183u8, 63u8, 147u8, 48u8, 74u8, 20u8, 83u8, 76u8, 84u8, 41u8, 30u8, @@ -33534,7 +33431,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::pending_availability_commitments::Param0, + >, types::pending_availability_commitments::PendingAvailabilityCommitments, ::subxt::storage::address::Yes, (), @@ -33543,9 +33442,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParaInclusion", "PendingAvailabilityCommitments", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 196u8, 210u8, 210u8, 16u8, 246u8, 105u8, 121u8, 178u8, 5u8, 48u8, 40u8, 183u8, 63u8, 147u8, 48u8, 74u8, 20u8, 83u8, 76u8, 84u8, 41u8, 30u8, @@ -33642,7 +33539,7 @@ pub mod api { pub fn included( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::included::Included, ::subxt::storage::address::Yes, (), @@ -33651,7 +33548,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParaInherent", "Included", - vec![], + (), [ 108u8, 164u8, 163u8, 34u8, 27u8, 124u8, 202u8, 167u8, 48u8, 130u8, 155u8, 211u8, 148u8, 130u8, 76u8, 16u8, 5u8, 250u8, 211u8, 174u8, 90u8, @@ -33663,7 +33560,7 @@ pub mod api { pub fn on_chain_votes( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::on_chain_votes::OnChainVotes, ::subxt::storage::address::Yes, (), @@ -33672,7 +33569,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParaInherent", "OnChainVotes", - vec![], + (), [ 65u8, 20u8, 36u8, 37u8, 239u8, 150u8, 32u8, 78u8, 226u8, 88u8, 80u8, 240u8, 12u8, 156u8, 176u8, 75u8, 231u8, 204u8, 37u8, 24u8, 204u8, @@ -33726,7 +33623,7 @@ pub mod api { pub fn validator_groups( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::validator_groups::ValidatorGroups, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -33735,7 +33632,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParaScheduler", "ValidatorGroups", - vec![], + (), [ 129u8, 58u8, 65u8, 112u8, 4u8, 172u8, 167u8, 19u8, 96u8, 154u8, 159u8, 83u8, 94u8, 125u8, 60u8, 43u8, 60u8, 70u8, 1u8, 58u8, 222u8, 31u8, @@ -33754,7 +33651,7 @@ pub mod api { pub fn availability_cores( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::availability_cores::AvailabilityCores, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -33763,7 +33660,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParaScheduler", "AvailabilityCores", - vec![], + (), [ 250u8, 177u8, 44u8, 237u8, 5u8, 116u8, 135u8, 99u8, 136u8, 209u8, 181u8, 145u8, 254u8, 57u8, 42u8, 92u8, 236u8, 67u8, 128u8, 171u8, @@ -33782,7 +33679,7 @@ pub mod api { pub fn session_start_block( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::session_start_block::SessionStartBlock, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -33791,7 +33688,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParaScheduler", "SessionStartBlock", - vec![], + (), [ 185u8, 76u8, 120u8, 75u8, 154u8, 31u8, 33u8, 243u8, 16u8, 77u8, 100u8, 249u8, 21u8, 44u8, 199u8, 195u8, 37u8, 9u8, 218u8, 148u8, 222u8, 90u8, @@ -33805,7 +33702,7 @@ pub mod api { pub fn claim_queue( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::claim_queue::ClaimQueue, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -33814,7 +33711,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParaScheduler", "ClaimQueue", - vec![], + (), [ 192u8, 65u8, 227u8, 114u8, 125u8, 169u8, 134u8, 70u8, 201u8, 99u8, 246u8, 23u8, 0u8, 143u8, 163u8, 87u8, 216u8, 1u8, 184u8, 124u8, 23u8, @@ -34584,7 +34481,7 @@ pub mod api { pub fn pvf_active_vote_map_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::pvf_active_vote_map::PvfActiveVoteMap, (), (), @@ -34593,7 +34490,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "PvfActiveVoteMap", - vec![], + (), [ 72u8, 55u8, 139u8, 104u8, 161u8, 63u8, 114u8, 153u8, 16u8, 221u8, 60u8, 88u8, 52u8, 207u8, 123u8, 193u8, 11u8, 30u8, 19u8, 39u8, 231u8, 39u8, @@ -34609,7 +34506,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::pvf_active_vote_map::PvfActiveVoteMap, ::subxt::storage::address::Yes, (), @@ -34618,9 +34515,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "PvfActiveVoteMap", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 72u8, 55u8, 139u8, 104u8, 161u8, 63u8, 114u8, 153u8, 16u8, 221u8, 60u8, 88u8, 52u8, 207u8, 123u8, 193u8, 11u8, 30u8, 19u8, 39u8, 231u8, 39u8, @@ -34632,7 +34527,7 @@ pub mod api { pub fn pvf_active_vote_list( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::pvf_active_vote_list::PvfActiveVoteList, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -34641,7 +34536,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "PvfActiveVoteList", - vec![], + (), [ 172u8, 215u8, 137u8, 191u8, 52u8, 104u8, 106u8, 118u8, 134u8, 82u8, 137u8, 6u8, 175u8, 158u8, 58u8, 230u8, 231u8, 152u8, 195u8, 17u8, 51u8, @@ -34656,7 +34551,7 @@ pub mod api { pub fn parachains( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::parachains::Parachains, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -34665,7 +34560,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "Parachains", - vec![], + (), [ 242u8, 228u8, 175u8, 107u8, 242u8, 39u8, 52u8, 181u8, 32u8, 171u8, 21u8, 169u8, 204u8, 19u8, 21u8, 217u8, 121u8, 239u8, 218u8, 252u8, @@ -34678,7 +34573,7 @@ pub mod api { pub fn para_lifecycles_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::para_lifecycles::ParaLifecycles, (), (), @@ -34687,7 +34582,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "ParaLifecycles", - vec![], + (), [ 2u8, 203u8, 32u8, 194u8, 76u8, 227u8, 250u8, 9u8, 168u8, 201u8, 171u8, 180u8, 18u8, 169u8, 206u8, 183u8, 48u8, 189u8, 204u8, 192u8, 237u8, @@ -34701,7 +34596,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::para_lifecycles::ParaLifecycles, ::subxt::storage::address::Yes, (), @@ -34710,9 +34605,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "ParaLifecycles", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 2u8, 203u8, 32u8, 194u8, 76u8, 227u8, 250u8, 9u8, 168u8, 201u8, 171u8, 180u8, 18u8, 169u8, 206u8, 183u8, 48u8, 189u8, 204u8, 192u8, 237u8, @@ -34725,7 +34618,7 @@ pub mod api { pub fn heads_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::heads::Heads, (), (), @@ -34734,7 +34627,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "Heads", - vec![], + (), [ 222u8, 116u8, 180u8, 190u8, 172u8, 192u8, 174u8, 132u8, 225u8, 180u8, 119u8, 90u8, 5u8, 39u8, 92u8, 230u8, 116u8, 202u8, 92u8, 99u8, 135u8, @@ -34747,7 +34640,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::heads::Heads, ::subxt::storage::address::Yes, (), @@ -34756,9 +34649,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "Heads", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 222u8, 116u8, 180u8, 190u8, 172u8, 192u8, 174u8, 132u8, 225u8, 180u8, 119u8, 90u8, 5u8, 39u8, 92u8, 230u8, 116u8, 202u8, 92u8, 99u8, 135u8, @@ -34770,7 +34661,7 @@ pub mod api { pub fn most_recent_context_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::most_recent_context::MostRecentContext, (), (), @@ -34779,7 +34670,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "MostRecentContext", - vec![], + (), [ 196u8, 150u8, 125u8, 121u8, 196u8, 182u8, 2u8, 5u8, 244u8, 170u8, 75u8, 57u8, 162u8, 8u8, 104u8, 94u8, 114u8, 32u8, 192u8, 236u8, 120u8, 91u8, @@ -34792,7 +34683,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::most_recent_context::MostRecentContext, ::subxt::storage::address::Yes, (), @@ -34801,9 +34692,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "MostRecentContext", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 196u8, 150u8, 125u8, 121u8, 196u8, 182u8, 2u8, 5u8, 244u8, 170u8, 75u8, 57u8, 162u8, 8u8, 104u8, 94u8, 114u8, 32u8, 192u8, 236u8, 120u8, 91u8, @@ -34817,7 +34706,7 @@ pub mod api { pub fn current_code_hash_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::current_code_hash::CurrentCodeHash, (), (), @@ -34826,7 +34715,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "CurrentCodeHash", - vec![], + (), [ 251u8, 100u8, 30u8, 46u8, 191u8, 60u8, 45u8, 221u8, 218u8, 20u8, 154u8, 233u8, 211u8, 198u8, 151u8, 195u8, 99u8, 210u8, 126u8, 165u8, 240u8, @@ -34842,7 +34731,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::current_code_hash::CurrentCodeHash, ::subxt::storage::address::Yes, (), @@ -34851,9 +34740,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "CurrentCodeHash", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 251u8, 100u8, 30u8, 46u8, 191u8, 60u8, 45u8, 221u8, 218u8, 20u8, 154u8, 233u8, 211u8, 198u8, 151u8, 195u8, 99u8, 210u8, 126u8, 165u8, 240u8, @@ -34869,7 +34756,7 @@ pub mod api { pub fn past_code_hash_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::past_code_hash::PastCodeHash, (), (), @@ -34878,7 +34765,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "PastCodeHash", - vec![], + (), [ 73u8, 209u8, 188u8, 36u8, 127u8, 42u8, 171u8, 136u8, 29u8, 126u8, 220u8, 209u8, 230u8, 22u8, 12u8, 63u8, 8u8, 102u8, 45u8, 158u8, 178u8, @@ -34894,7 +34781,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::past_code_hash::PastCodeHash, (), (), @@ -34903,9 +34790,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "PastCodeHash", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 73u8, 209u8, 188u8, 36u8, 127u8, 42u8, 171u8, 136u8, 29u8, 126u8, 220u8, 209u8, 230u8, 22u8, 12u8, 63u8, 8u8, 102u8, 45u8, 158u8, 178u8, @@ -34922,7 +34807,10 @@ pub mod api { _0: impl ::std::borrow::Borrow, _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ( + ::subxt::storage::address::StaticStorageKey, + ::subxt::storage::address::StaticStorageKey, + ), types::past_code_hash::PastCodeHash, ::subxt::storage::address::Yes, (), @@ -34931,10 +34819,10 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "PastCodeHash", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + ( + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ), [ 73u8, 209u8, 188u8, 36u8, 127u8, 42u8, 171u8, 136u8, 29u8, 126u8, 220u8, 209u8, 230u8, 22u8, 12u8, 63u8, 8u8, 102u8, 45u8, 158u8, 178u8, @@ -34948,7 +34836,7 @@ pub mod api { pub fn past_code_meta_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::past_code_meta::PastCodeMeta, (), ::subxt::storage::address::Yes, @@ -34957,7 +34845,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "PastCodeMeta", - vec![], + (), [ 233u8, 47u8, 137u8, 174u8, 98u8, 64u8, 11u8, 75u8, 93u8, 222u8, 78u8, 58u8, 66u8, 245u8, 151u8, 39u8, 144u8, 36u8, 84u8, 176u8, 239u8, 183u8, @@ -34972,7 +34860,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::past_code_meta::PastCodeMeta, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -34981,9 +34869,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "PastCodeMeta", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 233u8, 47u8, 137u8, 174u8, 98u8, 64u8, 11u8, 75u8, 93u8, 222u8, 78u8, 58u8, 66u8, 245u8, 151u8, 39u8, 144u8, 36u8, 84u8, 176u8, 239u8, 183u8, @@ -35000,7 +34886,7 @@ pub mod api { pub fn past_code_pruning( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::past_code_pruning::PastCodePruning, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -35009,7 +34895,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "PastCodePruning", - vec![], + (), [ 67u8, 190u8, 51u8, 133u8, 173u8, 24u8, 151u8, 111u8, 108u8, 152u8, 106u8, 18u8, 29u8, 80u8, 104u8, 120u8, 91u8, 138u8, 209u8, 49u8, 255u8, @@ -35023,7 +34909,7 @@ pub mod api { pub fn future_code_upgrades_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::future_code_upgrades::FutureCodeUpgrades, (), (), @@ -35032,7 +34918,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "FutureCodeUpgrades", - vec![], + (), [ 163u8, 168u8, 23u8, 138u8, 198u8, 70u8, 135u8, 221u8, 167u8, 187u8, 15u8, 144u8, 228u8, 8u8, 138u8, 125u8, 101u8, 154u8, 11u8, 74u8, 173u8, @@ -35047,7 +34933,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::future_code_upgrades::Param0, + >, types::future_code_upgrades::FutureCodeUpgrades, ::subxt::storage::address::Yes, (), @@ -35056,9 +34944,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "FutureCodeUpgrades", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 163u8, 168u8, 23u8, 138u8, 198u8, 70u8, 135u8, 221u8, 167u8, 187u8, 15u8, 144u8, 228u8, 8u8, 138u8, 125u8, 101u8, 154u8, 11u8, 74u8, 173u8, @@ -35072,7 +34958,7 @@ pub mod api { pub fn future_code_hash_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::future_code_hash::FutureCodeHash, (), (), @@ -35081,7 +34967,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "FutureCodeHash", - vec![], + (), [ 62u8, 238u8, 183u8, 12u8, 197u8, 119u8, 163u8, 239u8, 192u8, 228u8, 110u8, 58u8, 128u8, 223u8, 32u8, 137u8, 109u8, 127u8, 41u8, 83u8, 91u8, @@ -35096,7 +34982,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::future_code_hash::FutureCodeHash, ::subxt::storage::address::Yes, (), @@ -35105,9 +34991,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "FutureCodeHash", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 62u8, 238u8, 183u8, 12u8, 197u8, 119u8, 163u8, 239u8, 192u8, 228u8, 110u8, 58u8, 128u8, 223u8, 32u8, 137u8, 109u8, 127u8, 41u8, 83u8, 91u8, @@ -35128,7 +35012,7 @@ pub mod api { pub fn upgrade_go_ahead_signal_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::upgrade_go_ahead_signal::UpgradeGoAheadSignal, (), (), @@ -35137,7 +35021,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "UpgradeGoAheadSignal", - vec![], + (), [ 41u8, 80u8, 120u8, 6u8, 98u8, 85u8, 36u8, 37u8, 170u8, 189u8, 56u8, 127u8, 155u8, 180u8, 112u8, 195u8, 135u8, 214u8, 235u8, 87u8, 197u8, @@ -35160,7 +35044,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::upgrade_go_ahead_signal::Param0, + >, types::upgrade_go_ahead_signal::UpgradeGoAheadSignal, ::subxt::storage::address::Yes, (), @@ -35169,9 +35055,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "UpgradeGoAheadSignal", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 41u8, 80u8, 120u8, 6u8, 98u8, 85u8, 36u8, 37u8, 170u8, 189u8, 56u8, 127u8, 155u8, 180u8, 112u8, 195u8, 135u8, 214u8, 235u8, 87u8, 197u8, @@ -35192,7 +35076,7 @@ pub mod api { pub fn upgrade_restriction_signal_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::upgrade_restriction_signal::UpgradeRestrictionSignal, (), (), @@ -35201,7 +35085,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "UpgradeRestrictionSignal", - vec![], + (), [ 158u8, 105u8, 62u8, 252u8, 149u8, 145u8, 34u8, 92u8, 119u8, 204u8, 46u8, 96u8, 117u8, 183u8, 134u8, 20u8, 172u8, 243u8, 145u8, 113u8, @@ -35223,7 +35107,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::upgrade_restriction_signal::Param0, + >, types::upgrade_restriction_signal::UpgradeRestrictionSignal, ::subxt::storage::address::Yes, (), @@ -35232,9 +35118,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "UpgradeRestrictionSignal", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 158u8, 105u8, 62u8, 252u8, 149u8, 145u8, 34u8, 92u8, 119u8, 204u8, 46u8, 96u8, 117u8, 183u8, 134u8, 20u8, 172u8, 243u8, 145u8, 113u8, @@ -35249,7 +35133,7 @@ pub mod api { pub fn upgrade_cooldowns( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::upgrade_cooldowns::UpgradeCooldowns, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -35258,7 +35142,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "UpgradeCooldowns", - vec![], + (), [ 180u8, 197u8, 115u8, 209u8, 126u8, 120u8, 133u8, 54u8, 232u8, 192u8, 47u8, 17u8, 21u8, 8u8, 231u8, 67u8, 1u8, 89u8, 127u8, 38u8, 179u8, @@ -35274,7 +35158,7 @@ pub mod api { pub fn upcoming_upgrades( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::upcoming_upgrades::UpcomingUpgrades, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -35283,7 +35167,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "UpcomingUpgrades", - vec![], + (), [ 38u8, 195u8, 15u8, 56u8, 225u8, 199u8, 105u8, 84u8, 128u8, 51u8, 44u8, 248u8, 237u8, 32u8, 36u8, 72u8, 77u8, 137u8, 124u8, 88u8, 242u8, 185u8, @@ -35295,7 +35179,7 @@ pub mod api { pub fn actions_queue_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::actions_queue::ActionsQueue, (), ::subxt::storage::address::Yes, @@ -35304,7 +35188,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "ActionsQueue", - vec![], + (), [ 13u8, 25u8, 129u8, 203u8, 95u8, 206u8, 254u8, 240u8, 170u8, 209u8, 55u8, 117u8, 70u8, 220u8, 139u8, 102u8, 9u8, 229u8, 139u8, 120u8, 67u8, @@ -35317,7 +35201,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::actions_queue::ActionsQueue, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -35326,9 +35210,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "ActionsQueue", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 13u8, 25u8, 129u8, 203u8, 95u8, 206u8, 254u8, 240u8, 170u8, 209u8, 55u8, 117u8, 70u8, 220u8, 139u8, 102u8, 9u8, 229u8, 139u8, 120u8, 67u8, @@ -35343,7 +35225,7 @@ pub mod api { pub fn upcoming_paras_genesis_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::upcoming_paras_genesis::UpcomingParasGenesis, (), (), @@ -35352,7 +35234,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "UpcomingParasGenesis", - vec![], + (), [ 215u8, 121u8, 106u8, 13u8, 102u8, 47u8, 129u8, 221u8, 153u8, 91u8, 23u8, 94u8, 11u8, 39u8, 19u8, 180u8, 136u8, 136u8, 254u8, 152u8, 250u8, @@ -35369,7 +35251,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::upcoming_paras_genesis::Param0, + >, types::upcoming_paras_genesis::UpcomingParasGenesis, ::subxt::storage::address::Yes, (), @@ -35378,9 +35262,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "UpcomingParasGenesis", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 215u8, 121u8, 106u8, 13u8, 102u8, 47u8, 129u8, 221u8, 153u8, 91u8, 23u8, 94u8, 11u8, 39u8, 19u8, 180u8, 136u8, 136u8, 254u8, 152u8, 250u8, @@ -35393,7 +35275,7 @@ pub mod api { pub fn code_by_hash_refs_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::code_by_hash_refs::CodeByHashRefs, (), ::subxt::storage::address::Yes, @@ -35402,7 +35284,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "CodeByHashRefs", - vec![], + (), [ 47u8, 50u8, 103u8, 161u8, 130u8, 252u8, 157u8, 35u8, 174u8, 37u8, 102u8, 60u8, 195u8, 30u8, 164u8, 203u8, 67u8, 129u8, 107u8, 181u8, @@ -35416,7 +35298,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::code_by_hash_refs::CodeByHashRefs, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -35425,9 +35307,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "CodeByHashRefs", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 47u8, 50u8, 103u8, 161u8, 130u8, 252u8, 157u8, 35u8, 174u8, 37u8, 102u8, 60u8, 195u8, 30u8, 164u8, 203u8, 67u8, 129u8, 107u8, 181u8, @@ -35443,7 +35323,7 @@ pub mod api { pub fn code_by_hash_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::code_by_hash::CodeByHash, (), (), @@ -35452,7 +35332,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "CodeByHash", - vec![], + (), [ 155u8, 102u8, 73u8, 180u8, 127u8, 211u8, 181u8, 44u8, 56u8, 235u8, 49u8, 4u8, 25u8, 213u8, 116u8, 200u8, 232u8, 203u8, 190u8, 90u8, 93u8, @@ -35468,7 +35348,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::code_by_hash::CodeByHash, ::subxt::storage::address::Yes, (), @@ -35477,9 +35357,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Paras", "CodeByHash", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 155u8, 102u8, 73u8, 180u8, 127u8, 211u8, 181u8, 44u8, 56u8, 235u8, 49u8, 4u8, 25u8, 213u8, 116u8, 200u8, 232u8, 203u8, 190u8, 90u8, 93u8, @@ -35595,7 +35473,7 @@ pub mod api { pub fn has_initialized( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::has_initialized::HasInitialized, ::subxt::storage::address::Yes, (), @@ -35604,7 +35482,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Initializer", "HasInitialized", - vec![], + (), [ 156u8, 208u8, 212u8, 86u8, 105u8, 148u8, 252u8, 11u8, 140u8, 67u8, 231u8, 86u8, 1u8, 147u8, 178u8, 79u8, 27u8, 249u8, 137u8, 103u8, 178u8, @@ -35622,7 +35500,7 @@ pub mod api { pub fn buffered_session_changes( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::buffered_session_changes::BufferedSessionChanges, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -35631,7 +35509,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Initializer", "BufferedSessionChanges", - vec![], + (), [ 99u8, 153u8, 100u8, 11u8, 28u8, 62u8, 163u8, 239u8, 177u8, 55u8, 151u8, 242u8, 227u8, 59u8, 176u8, 10u8, 227u8, 51u8, 252u8, 191u8, 233u8, @@ -35676,7 +35554,7 @@ pub mod api { pub fn downward_message_queues_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::downward_message_queues::DownwardMessageQueues, (), ::subxt::storage::address::Yes, @@ -35685,7 +35563,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Dmp", "DownwardMessageQueues", - vec![], + (), [ 38u8, 183u8, 133u8, 200u8, 199u8, 135u8, 68u8, 232u8, 189u8, 168u8, 3u8, 219u8, 201u8, 180u8, 156u8, 79u8, 134u8, 164u8, 94u8, 114u8, @@ -35699,7 +35577,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::downward_message_queues::Param0, + >, types::downward_message_queues::DownwardMessageQueues, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -35708,9 +35588,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Dmp", "DownwardMessageQueues", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 38u8, 183u8, 133u8, 200u8, 199u8, 135u8, 68u8, 232u8, 189u8, 168u8, 3u8, 219u8, 201u8, 180u8, 156u8, 79u8, 134u8, 164u8, 94u8, 114u8, @@ -35729,7 +35607,7 @@ pub mod api { pub fn downward_message_queue_heads_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::downward_message_queue_heads::DownwardMessageQueueHeads, (), ::subxt::storage::address::Yes, @@ -35738,7 +35616,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Dmp", "DownwardMessageQueueHeads", - vec![], + (), [ 135u8, 165u8, 240u8, 0u8, 25u8, 110u8, 9u8, 108u8, 251u8, 225u8, 109u8, 184u8, 90u8, 132u8, 9u8, 151u8, 12u8, 118u8, 153u8, 212u8, 140u8, @@ -35757,7 +35635,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::downward_message_queue_heads::Param0, + >, types::downward_message_queue_heads::DownwardMessageQueueHeads, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -35766,9 +35646,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Dmp", "DownwardMessageQueueHeads", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 135u8, 165u8, 240u8, 0u8, 25u8, 110u8, 9u8, 108u8, 251u8, 225u8, 109u8, 184u8, 90u8, 132u8, 9u8, 151u8, 12u8, 118u8, 153u8, 212u8, 140u8, @@ -35780,7 +35658,7 @@ pub mod api { pub fn delivery_fee_factor_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::delivery_fee_factor::DeliveryFeeFactor, (), ::subxt::storage::address::Yes, @@ -35789,7 +35667,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Dmp", "DeliveryFeeFactor", - vec![], + (), [ 43u8, 5u8, 63u8, 235u8, 115u8, 155u8, 130u8, 27u8, 75u8, 216u8, 177u8, 135u8, 203u8, 147u8, 167u8, 95u8, 208u8, 188u8, 25u8, 14u8, 84u8, 63u8, @@ -35802,7 +35680,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::delivery_fee_factor::DeliveryFeeFactor, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -35811,9 +35689,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Dmp", "DeliveryFeeFactor", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 43u8, 5u8, 63u8, 235u8, 115u8, 155u8, 130u8, 27u8, 75u8, 216u8, 177u8, 135u8, 203u8, 147u8, 167u8, 95u8, 208u8, 188u8, 25u8, 14u8, 84u8, 63u8, @@ -36696,7 +36572,7 @@ pub mod api { pub fn hrmp_open_channel_requests_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::hrmp_open_channel_requests::HrmpOpenChannelRequests, (), (), @@ -36705,7 +36581,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpOpenChannelRequests", - vec![], + (), [ 164u8, 97u8, 52u8, 242u8, 255u8, 67u8, 248u8, 170u8, 204u8, 92u8, 81u8, 144u8, 11u8, 63u8, 145u8, 167u8, 8u8, 174u8, 221u8, 147u8, 125u8, @@ -36724,7 +36600,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::hrmp_open_channel_requests::Param0, + >, types::hrmp_open_channel_requests::HrmpOpenChannelRequests, ::subxt::storage::address::Yes, (), @@ -36733,9 +36611,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpOpenChannelRequests", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 164u8, 97u8, 52u8, 242u8, 255u8, 67u8, 248u8, 170u8, 204u8, 92u8, 81u8, 144u8, 11u8, 63u8, 145u8, 167u8, 8u8, 174u8, 221u8, 147u8, 125u8, @@ -36747,7 +36623,7 @@ pub mod api { pub fn hrmp_open_channel_requests_list( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::hrmp_open_channel_requests_list::HrmpOpenChannelRequestsList, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -36756,7 +36632,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpOpenChannelRequestsList", - vec![], + (), [ 45u8, 190u8, 124u8, 26u8, 37u8, 249u8, 140u8, 254u8, 101u8, 249u8, 27u8, 117u8, 218u8, 3u8, 126u8, 114u8, 143u8, 65u8, 122u8, 246u8, @@ -36771,7 +36647,7 @@ pub mod api { pub fn hrmp_open_channel_request_count_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::hrmp_open_channel_request_count::HrmpOpenChannelRequestCount, (), ::subxt::storage::address::Yes, @@ -36780,7 +36656,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpOpenChannelRequestCount", - vec![], + (), [ 136u8, 72u8, 56u8, 31u8, 229u8, 99u8, 241u8, 14u8, 159u8, 243u8, 179u8, 222u8, 252u8, 56u8, 63u8, 24u8, 204u8, 130u8, 47u8, 161u8, 133u8, @@ -36796,7 +36672,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::hrmp_open_channel_request_count::Param0, + >, types::hrmp_open_channel_request_count::HrmpOpenChannelRequestCount, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -36805,9 +36683,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpOpenChannelRequestCount", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 136u8, 72u8, 56u8, 31u8, 229u8, 99u8, 241u8, 14u8, 159u8, 243u8, 179u8, 222u8, 252u8, 56u8, 63u8, 24u8, 204u8, 130u8, 47u8, 161u8, 133u8, @@ -36822,7 +36698,7 @@ pub mod api { pub fn hrmp_accepted_channel_request_count_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::hrmp_accepted_channel_request_count::HrmpAcceptedChannelRequestCount, (), ::subxt::storage::address::Yes, @@ -36831,7 +36707,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpAcceptedChannelRequestCount", - vec![], + (), [ 29u8, 100u8, 52u8, 28u8, 180u8, 84u8, 132u8, 120u8, 117u8, 172u8, 169u8, 40u8, 237u8, 92u8, 89u8, 87u8, 230u8, 148u8, 140u8, 226u8, 60u8, @@ -36847,7 +36723,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::hrmp_accepted_channel_request_count::Param0, + >, types::hrmp_accepted_channel_request_count::HrmpAcceptedChannelRequestCount, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -36856,9 +36734,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpAcceptedChannelRequestCount", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 29u8, 100u8, 52u8, 28u8, 180u8, 84u8, 132u8, 120u8, 117u8, 172u8, 169u8, 40u8, 237u8, 92u8, 89u8, 87u8, 230u8, 148u8, 140u8, 226u8, 60u8, @@ -36877,7 +36753,7 @@ pub mod api { pub fn hrmp_close_channel_requests_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::hrmp_close_channel_requests::HrmpCloseChannelRequests, (), (), @@ -36886,7 +36762,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpCloseChannelRequests", - vec![], + (), [ 155u8, 13u8, 73u8, 166u8, 58u8, 67u8, 138u8, 58u8, 215u8, 172u8, 241u8, 168u8, 57u8, 4u8, 230u8, 248u8, 31u8, 183u8, 227u8, 224u8, 139u8, @@ -36906,7 +36782,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::hrmp_close_channel_requests::Param0, + >, types::hrmp_close_channel_requests::HrmpCloseChannelRequests, ::subxt::storage::address::Yes, (), @@ -36915,9 +36793,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpCloseChannelRequests", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 155u8, 13u8, 73u8, 166u8, 58u8, 67u8, 138u8, 58u8, 215u8, 172u8, 241u8, 168u8, 57u8, 4u8, 230u8, 248u8, 31u8, 183u8, 227u8, 224u8, 139u8, @@ -36929,7 +36805,7 @@ pub mod api { pub fn hrmp_close_channel_requests_list( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::hrmp_close_channel_requests_list::HrmpCloseChannelRequestsList, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -36938,7 +36814,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpCloseChannelRequestsList", - vec![], + (), [ 78u8, 194u8, 214u8, 232u8, 91u8, 72u8, 109u8, 113u8, 88u8, 86u8, 136u8, 26u8, 226u8, 30u8, 11u8, 188u8, 57u8, 77u8, 169u8, 64u8, 14u8, 187u8, @@ -36953,7 +36829,7 @@ pub mod api { pub fn hrmp_watermarks_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::hrmp_watermarks::HrmpWatermarks, (), (), @@ -36962,7 +36838,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpWatermarks", - vec![], + (), [ 245u8, 104u8, 137u8, 120u8, 131u8, 7u8, 178u8, 85u8, 96u8, 124u8, 241u8, 2u8, 86u8, 63u8, 116u8, 77u8, 217u8, 235u8, 162u8, 38u8, 104u8, @@ -36978,7 +36854,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::hrmp_watermarks::HrmpWatermarks, ::subxt::storage::address::Yes, (), @@ -36987,9 +36863,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpWatermarks", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 245u8, 104u8, 137u8, 120u8, 131u8, 7u8, 178u8, 85u8, 96u8, 124u8, 241u8, 2u8, 86u8, 63u8, 116u8, 77u8, 217u8, 235u8, 162u8, 38u8, 104u8, @@ -37003,7 +36877,7 @@ pub mod api { pub fn hrmp_channels_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::hrmp_channels::HrmpChannels, (), (), @@ -37012,7 +36886,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpChannels", - vec![], + (), [ 174u8, 90u8, 72u8, 93u8, 43u8, 140u8, 181u8, 170u8, 138u8, 171u8, 179u8, 156u8, 33u8, 87u8, 63u8, 1u8, 131u8, 59u8, 230u8, 14u8, 40u8, @@ -37028,7 +36902,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::hrmp_channels::HrmpChannels, ::subxt::storage::address::Yes, (), @@ -37037,9 +36911,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpChannels", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 174u8, 90u8, 72u8, 93u8, 43u8, 140u8, 181u8, 170u8, 138u8, 171u8, 179u8, 156u8, 33u8, 87u8, 63u8, 1u8, 131u8, 59u8, 230u8, 14u8, 40u8, @@ -37064,7 +36936,7 @@ pub mod api { pub fn hrmp_ingress_channels_index_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::hrmp_ingress_channels_index::HrmpIngressChannelsIndex, (), ::subxt::storage::address::Yes, @@ -37073,7 +36945,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpIngressChannelsIndex", - vec![], + (), [ 125u8, 229u8, 102u8, 230u8, 74u8, 109u8, 173u8, 67u8, 176u8, 169u8, 57u8, 24u8, 75u8, 129u8, 246u8, 198u8, 63u8, 49u8, 56u8, 102u8, 149u8, @@ -37099,7 +36971,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::hrmp_ingress_channels_index::Param0, + >, types::hrmp_ingress_channels_index::HrmpIngressChannelsIndex, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -37108,9 +36982,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpIngressChannelsIndex", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 125u8, 229u8, 102u8, 230u8, 74u8, 109u8, 173u8, 67u8, 176u8, 169u8, 57u8, 24u8, 75u8, 129u8, 246u8, 198u8, 63u8, 49u8, 56u8, 102u8, 149u8, @@ -37122,7 +36994,7 @@ pub mod api { pub fn hrmp_egress_channels_index_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::hrmp_egress_channels_index::HrmpEgressChannelsIndex, (), ::subxt::storage::address::Yes, @@ -37131,7 +37003,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpEgressChannelsIndex", - vec![], + (), [ 237u8, 183u8, 188u8, 57u8, 20u8, 238u8, 166u8, 7u8, 94u8, 155u8, 22u8, 9u8, 173u8, 209u8, 210u8, 17u8, 160u8, 79u8, 243u8, 4u8, 245u8, 240u8, @@ -37143,7 +37015,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::hrmp_egress_channels_index::Param0, + >, types::hrmp_egress_channels_index::HrmpEgressChannelsIndex, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -37152,9 +37026,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpEgressChannelsIndex", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 237u8, 183u8, 188u8, 57u8, 20u8, 238u8, 166u8, 7u8, 94u8, 155u8, 22u8, 9u8, 173u8, 209u8, 210u8, 17u8, 160u8, 79u8, 243u8, 4u8, 245u8, 240u8, @@ -37167,7 +37039,7 @@ pub mod api { pub fn hrmp_channel_contents_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::hrmp_channel_contents::HrmpChannelContents, (), ::subxt::storage::address::Yes, @@ -37176,7 +37048,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpChannelContents", - vec![], + (), [ 55u8, 16u8, 135u8, 69u8, 54u8, 180u8, 246u8, 124u8, 104u8, 92u8, 45u8, 18u8, 223u8, 145u8, 43u8, 190u8, 121u8, 59u8, 35u8, 195u8, 234u8, @@ -37191,7 +37063,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::hrmp_channel_contents::Param0, + >, types::hrmp_channel_contents::HrmpChannelContents, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -37200,9 +37074,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpChannelContents", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 55u8, 16u8, 135u8, 69u8, 54u8, 180u8, 246u8, 124u8, 104u8, 92u8, 45u8, 18u8, 223u8, 145u8, 43u8, 190u8, 121u8, 59u8, 35u8, 195u8, 234u8, @@ -37220,7 +37092,7 @@ pub mod api { pub fn hrmp_channel_digests_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::hrmp_channel_digests::HrmpChannelDigests, (), ::subxt::storage::address::Yes, @@ -37229,7 +37101,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpChannelDigests", - vec![], + (), [ 90u8, 90u8, 139u8, 78u8, 47u8, 2u8, 104u8, 211u8, 42u8, 246u8, 193u8, 210u8, 142u8, 223u8, 17u8, 136u8, 3u8, 182u8, 25u8, 56u8, 72u8, 72u8, @@ -37247,7 +37119,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::hrmp_channel_digests::Param0, + >, types::hrmp_channel_digests::HrmpChannelDigests, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -37256,9 +37130,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpChannelDigests", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 90u8, 90u8, 139u8, 78u8, 47u8, 2u8, 104u8, 211u8, 42u8, 246u8, 193u8, 210u8, 142u8, 223u8, 17u8, 136u8, 3u8, 182u8, 25u8, 56u8, 72u8, 72u8, @@ -37311,7 +37183,7 @@ pub mod api { pub fn assignment_keys_unsafe( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::assignment_keys_unsafe::AssignmentKeysUnsafe, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -37320,7 +37192,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParaSessionInfo", "AssignmentKeysUnsafe", - vec![], + (), [ 51u8, 155u8, 91u8, 101u8, 118u8, 243u8, 134u8, 138u8, 147u8, 59u8, 195u8, 186u8, 54u8, 187u8, 36u8, 14u8, 91u8, 141u8, 60u8, 139u8, 28u8, @@ -37332,7 +37204,7 @@ pub mod api { pub fn earliest_stored_session( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::earliest_stored_session::EarliestStoredSession, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -37341,7 +37213,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParaSessionInfo", "EarliestStoredSession", - vec![], + (), [ 139u8, 176u8, 46u8, 139u8, 217u8, 35u8, 62u8, 91u8, 183u8, 7u8, 114u8, 226u8, 60u8, 237u8, 105u8, 73u8, 20u8, 216u8, 194u8, 205u8, 178u8, @@ -37355,7 +37227,7 @@ pub mod api { pub fn sessions_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::sessions::Sessions, (), (), @@ -37364,7 +37236,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParaSessionInfo", "Sessions", - vec![], + (), [ 254u8, 40u8, 169u8, 18u8, 252u8, 203u8, 49u8, 182u8, 123u8, 19u8, 241u8, 150u8, 227u8, 153u8, 108u8, 109u8, 66u8, 129u8, 157u8, 27u8, @@ -37380,7 +37252,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::sessions::Sessions, ::subxt::storage::address::Yes, (), @@ -37389,9 +37261,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParaSessionInfo", "Sessions", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 254u8, 40u8, 169u8, 18u8, 252u8, 203u8, 49u8, 182u8, 123u8, 19u8, 241u8, 150u8, 227u8, 153u8, 108u8, 109u8, 66u8, 129u8, 157u8, 27u8, @@ -37404,7 +37274,7 @@ pub mod api { pub fn account_keys_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::account_keys::AccountKeys, (), (), @@ -37413,7 +37283,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParaSessionInfo", "AccountKeys", - vec![], + (), [ 30u8, 98u8, 58u8, 140u8, 96u8, 231u8, 205u8, 111u8, 194u8, 100u8, 185u8, 242u8, 210u8, 143u8, 110u8, 144u8, 170u8, 187u8, 62u8, 196u8, @@ -37427,7 +37297,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::account_keys::AccountKeys, ::subxt::storage::address::Yes, (), @@ -37436,9 +37306,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParaSessionInfo", "AccountKeys", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 30u8, 98u8, 58u8, 140u8, 96u8, 231u8, 205u8, 111u8, 194u8, 100u8, 185u8, 242u8, 210u8, 143u8, 110u8, 144u8, 170u8, 187u8, 62u8, 196u8, @@ -37451,7 +37319,7 @@ pub mod api { pub fn session_executor_params_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::session_executor_params::SessionExecutorParams, (), (), @@ -37460,7 +37328,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParaSessionInfo", "SessionExecutorParams", - vec![], + (), [ 38u8, 80u8, 118u8, 112u8, 189u8, 55u8, 95u8, 184u8, 19u8, 8u8, 114u8, 6u8, 173u8, 80u8, 254u8, 98u8, 107u8, 202u8, 215u8, 107u8, 149u8, @@ -37473,7 +37341,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::session_executor_params::Param0, + >, types::session_executor_params::SessionExecutorParams, ::subxt::storage::address::Yes, (), @@ -37482,9 +37352,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParaSessionInfo", "SessionExecutorParams", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 38u8, 80u8, 118u8, 112u8, 189u8, 55u8, 95u8, 184u8, 19u8, 8u8, 114u8, 6u8, 173u8, 80u8, 254u8, 98u8, 107u8, 202u8, 215u8, 107u8, 149u8, @@ -37660,7 +37528,7 @@ pub mod api { pub fn last_pruned_session( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::last_pruned_session::LastPrunedSession, ::subxt::storage::address::Yes, (), @@ -37669,7 +37537,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParasDisputes", "LastPrunedSession", - vec![], + (), [ 98u8, 107u8, 200u8, 158u8, 182u8, 120u8, 24u8, 242u8, 24u8, 163u8, 237u8, 72u8, 153u8, 19u8, 38u8, 85u8, 239u8, 208u8, 194u8, 22u8, 173u8, @@ -37682,7 +37550,7 @@ pub mod api { pub fn disputes_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::disputes::Disputes, (), (), @@ -37691,7 +37559,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParasDisputes", "Disputes", - vec![], + (), [ 38u8, 237u8, 141u8, 222u8, 135u8, 82u8, 210u8, 166u8, 192u8, 122u8, 175u8, 96u8, 91u8, 1u8, 225u8, 182u8, 128u8, 4u8, 159u8, 56u8, 180u8, @@ -37705,7 +37573,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::disputes::Disputes, (), (), @@ -37714,9 +37582,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParasDisputes", "Disputes", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 38u8, 237u8, 141u8, 222u8, 135u8, 82u8, 210u8, 166u8, 192u8, 122u8, 175u8, 96u8, 91u8, 1u8, 225u8, 182u8, 128u8, 4u8, 159u8, 56u8, 180u8, @@ -37731,7 +37597,10 @@ pub mod api { _0: impl ::std::borrow::Borrow, _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ( + ::subxt::storage::address::StaticStorageKey, + ::subxt::storage::address::StaticStorageKey, + ), types::disputes::Disputes, ::subxt::storage::address::Yes, (), @@ -37740,10 +37609,10 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParasDisputes", "Disputes", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + ( + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ), [ 38u8, 237u8, 141u8, 222u8, 135u8, 82u8, 210u8, 166u8, 192u8, 122u8, 175u8, 96u8, 91u8, 1u8, 225u8, 182u8, 128u8, 4u8, 159u8, 56u8, 180u8, @@ -37757,7 +37626,7 @@ pub mod api { pub fn backers_on_disputes_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::backers_on_disputes::BackersOnDisputes, (), (), @@ -37766,7 +37635,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParasDisputes", "BackersOnDisputes", - vec![], + (), [ 136u8, 171u8, 20u8, 204u8, 135u8, 153u8, 144u8, 241u8, 46u8, 193u8, 65u8, 22u8, 116u8, 161u8, 144u8, 186u8, 31u8, 194u8, 202u8, 225u8, @@ -37781,7 +37650,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::backers_on_disputes::BackersOnDisputes, (), (), @@ -37790,9 +37659,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParasDisputes", "BackersOnDisputes", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 136u8, 171u8, 20u8, 204u8, 135u8, 153u8, 144u8, 241u8, 46u8, 193u8, 65u8, 22u8, 116u8, 161u8, 144u8, 186u8, 31u8, 194u8, 202u8, 225u8, @@ -37808,7 +37675,14 @@ pub mod api { _0: impl ::std::borrow::Borrow, _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ( + ::subxt::storage::address::StaticStorageKey< + types::backers_on_disputes::Param0, + >, + ::subxt::storage::address::StaticStorageKey< + types::backers_on_disputes::Param1, + >, + ), types::backers_on_disputes::BackersOnDisputes, ::subxt::storage::address::Yes, (), @@ -37817,10 +37691,10 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParasDisputes", "BackersOnDisputes", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + ( + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ), [ 136u8, 171u8, 20u8, 204u8, 135u8, 153u8, 144u8, 241u8, 46u8, 193u8, 65u8, 22u8, 116u8, 161u8, 144u8, 186u8, 31u8, 194u8, 202u8, 225u8, @@ -37834,7 +37708,7 @@ pub mod api { pub fn included_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::included::Included, (), (), @@ -37843,7 +37717,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParasDisputes", "Included", - vec![], + (), [ 47u8, 105u8, 189u8, 233u8, 206u8, 153u8, 162u8, 217u8, 141u8, 118u8, 31u8, 85u8, 87u8, 53u8, 100u8, 187u8, 31u8, 245u8, 50u8, 171u8, 4u8, @@ -37858,7 +37732,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::included::Included, (), (), @@ -37867,9 +37741,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParasDisputes", "Included", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 47u8, 105u8, 189u8, 233u8, 206u8, 153u8, 162u8, 217u8, 141u8, 118u8, 31u8, 85u8, 87u8, 53u8, 100u8, 187u8, 31u8, 245u8, 50u8, 171u8, 4u8, @@ -37885,7 +37757,10 @@ pub mod api { _0: impl ::std::borrow::Borrow, _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ( + ::subxt::storage::address::StaticStorageKey, + ::subxt::storage::address::StaticStorageKey, + ), types::included::Included, ::subxt::storage::address::Yes, (), @@ -37894,10 +37769,10 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParasDisputes", "Included", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + ( + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ), [ 47u8, 105u8, 189u8, 233u8, 206u8, 153u8, 162u8, 217u8, 141u8, 118u8, 31u8, 85u8, 87u8, 53u8, 100u8, 187u8, 31u8, 245u8, 50u8, 171u8, 4u8, @@ -37913,7 +37788,7 @@ pub mod api { pub fn frozen( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::frozen::Frozen, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -37922,7 +37797,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParasDisputes", "Frozen", - vec![], + (), [ 245u8, 136u8, 43u8, 156u8, 7u8, 74u8, 31u8, 190u8, 184u8, 119u8, 182u8, 66u8, 18u8, 136u8, 30u8, 248u8, 24u8, 121u8, 26u8, 177u8, 169u8, 208u8, @@ -38021,7 +37896,7 @@ pub mod api { pub fn unapplied_slashes_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::unapplied_slashes::UnappliedSlashes, (), (), @@ -38030,7 +37905,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParasSlashing", "UnappliedSlashes", - vec![], + (), [ 114u8, 171u8, 137u8, 142u8, 180u8, 125u8, 226u8, 240u8, 99u8, 181u8, 68u8, 221u8, 91u8, 124u8, 172u8, 93u8, 103u8, 12u8, 95u8, 43u8, 67u8, @@ -38044,7 +37919,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::unapplied_slashes::UnappliedSlashes, (), (), @@ -38053,9 +37928,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParasSlashing", "UnappliedSlashes", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 114u8, 171u8, 137u8, 142u8, 180u8, 125u8, 226u8, 240u8, 99u8, 181u8, 68u8, 221u8, 91u8, 124u8, 172u8, 93u8, 103u8, 12u8, 95u8, 43u8, 67u8, @@ -38070,7 +37943,14 @@ pub mod api { _0: impl ::std::borrow::Borrow, _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ( + ::subxt::storage::address::StaticStorageKey< + types::unapplied_slashes::Param0, + >, + ::subxt::storage::address::StaticStorageKey< + types::unapplied_slashes::Param1, + >, + ), types::unapplied_slashes::UnappliedSlashes, ::subxt::storage::address::Yes, (), @@ -38079,10 +37959,10 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParasSlashing", "UnappliedSlashes", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + ( + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ), [ 114u8, 171u8, 137u8, 142u8, 180u8, 125u8, 226u8, 240u8, 99u8, 181u8, 68u8, 221u8, 91u8, 124u8, 172u8, 93u8, 103u8, 12u8, 95u8, 43u8, 67u8, @@ -38095,7 +37975,7 @@ pub mod api { pub fn validator_set_counts_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::validator_set_counts::ValidatorSetCounts, (), (), @@ -38104,7 +37984,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParasSlashing", "ValidatorSetCounts", - vec![], + (), [ 195u8, 220u8, 79u8, 140u8, 114u8, 80u8, 241u8, 103u8, 4u8, 7u8, 53u8, 100u8, 16u8, 78u8, 104u8, 171u8, 134u8, 110u8, 158u8, 191u8, 37u8, @@ -38117,7 +37997,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::validator_set_counts::Param0, + >, types::validator_set_counts::ValidatorSetCounts, ::subxt::storage::address::Yes, (), @@ -38126,9 +38008,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParasSlashing", "ValidatorSetCounts", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 195u8, 220u8, 79u8, 140u8, 114u8, 80u8, 241u8, 103u8, 4u8, 7u8, 53u8, 100u8, 16u8, 78u8, 104u8, 171u8, 134u8, 110u8, 158u8, 191u8, 37u8, @@ -38421,7 +38301,7 @@ pub mod api { pub fn book_state_for_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::book_state_for::BookStateFor, (), ::subxt::storage::address::Yes, @@ -38430,7 +38310,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "MessageQueue", "BookStateFor", - vec![], + (), [ 32u8, 61u8, 161u8, 81u8, 134u8, 136u8, 252u8, 113u8, 204u8, 115u8, 206u8, 180u8, 33u8, 185u8, 137u8, 155u8, 178u8, 189u8, 234u8, 201u8, @@ -38444,7 +38324,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::book_state_for::BookStateFor, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -38453,9 +38333,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "MessageQueue", "BookStateFor", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 32u8, 61u8, 161u8, 81u8, 134u8, 136u8, 252u8, 113u8, 204u8, 115u8, 206u8, 180u8, 33u8, 185u8, 137u8, 155u8, 178u8, 189u8, 234u8, 201u8, @@ -38468,7 +38346,7 @@ pub mod api { pub fn service_head( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::service_head::ServiceHead, ::subxt::storage::address::Yes, (), @@ -38477,7 +38355,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "MessageQueue", "ServiceHead", - vec![], + (), [ 17u8, 130u8, 229u8, 193u8, 127u8, 237u8, 60u8, 232u8, 99u8, 109u8, 102u8, 228u8, 124u8, 103u8, 24u8, 188u8, 151u8, 121u8, 55u8, 97u8, @@ -38490,7 +38368,7 @@ pub mod api { pub fn pages_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::pages::Pages, (), (), @@ -38499,7 +38377,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "MessageQueue", "Pages", - vec![], + (), [ 56u8, 181u8, 157u8, 16u8, 157u8, 123u8, 106u8, 93u8, 199u8, 208u8, 153u8, 53u8, 168u8, 188u8, 124u8, 77u8, 140u8, 163u8, 113u8, 16u8, @@ -38513,7 +38391,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::pages::Pages, (), (), @@ -38522,9 +38400,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "MessageQueue", "Pages", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 56u8, 181u8, 157u8, 16u8, 157u8, 123u8, 106u8, 93u8, 199u8, 208u8, 153u8, 53u8, 168u8, 188u8, 124u8, 77u8, 140u8, 163u8, 113u8, 16u8, @@ -38539,7 +38415,10 @@ pub mod api { _0: impl ::std::borrow::Borrow, _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ( + ::subxt::storage::address::StaticStorageKey, + ::subxt::storage::address::StaticStorageKey, + ), types::pages::Pages, ::subxt::storage::address::Yes, (), @@ -38548,10 +38427,10 @@ pub mod api { ::subxt::storage::address::Address::new_static( "MessageQueue", "Pages", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + ( + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ), [ 56u8, 181u8, 157u8, 16u8, 157u8, 123u8, 106u8, 93u8, 199u8, 208u8, 153u8, 53u8, 168u8, 188u8, 124u8, 77u8, 140u8, 163u8, 113u8, 16u8, @@ -38867,7 +38746,7 @@ pub mod api { pub fn spot_traffic( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::spot_traffic::SpotTraffic, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -38876,7 +38755,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "OnDemandAssignmentProvider", "SpotTraffic", - vec![], + (), [ 8u8, 236u8, 233u8, 156u8, 211u8, 45u8, 192u8, 58u8, 108u8, 247u8, 47u8, 97u8, 229u8, 26u8, 188u8, 67u8, 98u8, 43u8, 11u8, 11u8, 1u8, 127u8, @@ -38889,7 +38768,7 @@ pub mod api { pub fn on_demand_queue( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::on_demand_queue::OnDemandQueue, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -38898,7 +38777,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "OnDemandAssignmentProvider", "OnDemandQueue", - vec![], + (), [ 241u8, 10u8, 89u8, 240u8, 227u8, 90u8, 218u8, 35u8, 80u8, 244u8, 219u8, 112u8, 177u8, 143u8, 43u8, 228u8, 224u8, 165u8, 217u8, 65u8, 17u8, @@ -38913,7 +38792,7 @@ pub mod api { pub fn para_id_affinity_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::para_id_affinity::ParaIdAffinity, (), (), @@ -38922,7 +38801,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "OnDemandAssignmentProvider", "ParaIdAffinity", - vec![], + (), [ 145u8, 117u8, 2u8, 170u8, 99u8, 68u8, 166u8, 236u8, 247u8, 80u8, 202u8, 87u8, 116u8, 244u8, 218u8, 172u8, 41u8, 187u8, 170u8, 163u8, 187u8, @@ -38937,7 +38816,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::para_id_affinity::ParaIdAffinity, ::subxt::storage::address::Yes, (), @@ -38946,9 +38825,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "OnDemandAssignmentProvider", "ParaIdAffinity", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + (), [ 145u8, 117u8, 2u8, 170u8, 99u8, 68u8, 166u8, 236u8, 247u8, 80u8, 202u8, 87u8, 116u8, 244u8, 218u8, 172u8, 41u8, 187u8, 170u8, 163u8, 187u8, @@ -39015,7 +38892,7 @@ pub mod api { pub fn core_schedules_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::core_schedules::CoreSchedules, (), (), @@ -39024,7 +38901,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "CoretimeAssignmentProvider", "CoreSchedules", - vec![], + (), [ 34u8, 85u8, 91u8, 158u8, 28u8, 200u8, 76u8, 188u8, 253u8, 91u8, 153u8, 42u8, 42u8, 227u8, 119u8, 181u8, 247u8, 44u8, 29u8, 24u8, 128u8, 49u8, @@ -39040,7 +38917,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::core_schedules::CoreSchedules, (), (), @@ -39049,9 +38926,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "CoretimeAssignmentProvider", "CoreSchedules", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + (), [ 34u8, 85u8, 91u8, 158u8, 28u8, 200u8, 76u8, 188u8, 253u8, 91u8, 153u8, 42u8, 42u8, 227u8, 119u8, 181u8, 247u8, 44u8, 29u8, 24u8, 128u8, 49u8, @@ -39068,7 +38943,7 @@ pub mod api { _0: impl ::std::borrow::Borrow, _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ((), ()), types::core_schedules::CoreSchedules, ::subxt::storage::address::Yes, (), @@ -39077,10 +38952,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "CoretimeAssignmentProvider", "CoreSchedules", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + ((), ()), [ 34u8, 85u8, 91u8, 158u8, 28u8, 200u8, 76u8, 188u8, 253u8, 91u8, 153u8, 42u8, 42u8, 227u8, 119u8, 181u8, 247u8, 44u8, 29u8, 24u8, 128u8, 49u8, @@ -39095,7 +38967,7 @@ pub mod api { pub fn core_descriptors_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::core_descriptors::CoreDescriptors, (), ::subxt::storage::address::Yes, @@ -39104,7 +38976,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "CoretimeAssignmentProvider", "CoreDescriptors", - vec![], + (), [ 1u8, 90u8, 208u8, 119u8, 150u8, 241u8, 133u8, 74u8, 22u8, 166u8, 13u8, 7u8, 73u8, 136u8, 105u8, 61u8, 251u8, 245u8, 164u8, 7u8, 45u8, 68u8, @@ -39120,7 +38992,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::core_descriptors::CoreDescriptors, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -39129,9 +39001,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "CoretimeAssignmentProvider", "CoreDescriptors", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + (), [ 1u8, 90u8, 208u8, 119u8, 150u8, 241u8, 133u8, 74u8, 22u8, 166u8, 13u8, 7u8, 73u8, 136u8, 105u8, 61u8, 251u8, 245u8, 164u8, 7u8, 45u8, 68u8, @@ -39800,7 +39670,7 @@ pub mod api { pub fn pending_swap_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::pending_swap::PendingSwap, (), (), @@ -39809,7 +39679,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Registrar", "PendingSwap", - vec![], + (), [ 75u8, 6u8, 68u8, 43u8, 108u8, 147u8, 220u8, 90u8, 190u8, 86u8, 209u8, 141u8, 9u8, 254u8, 103u8, 10u8, 94u8, 187u8, 155u8, 249u8, 140u8, @@ -39823,7 +39693,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::pending_swap::PendingSwap, ::subxt::storage::address::Yes, (), @@ -39832,9 +39702,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Registrar", "PendingSwap", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 75u8, 6u8, 68u8, 43u8, 108u8, 147u8, 220u8, 90u8, 190u8, 86u8, 209u8, 141u8, 9u8, 254u8, 103u8, 10u8, 94u8, 187u8, 155u8, 249u8, 140u8, @@ -39850,7 +39718,7 @@ pub mod api { pub fn paras_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::paras::Paras, (), (), @@ -39859,7 +39727,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Registrar", "Paras", - vec![], + (), [ 125u8, 62u8, 50u8, 209u8, 40u8, 170u8, 61u8, 62u8, 61u8, 246u8, 103u8, 229u8, 213u8, 94u8, 249u8, 49u8, 18u8, 90u8, 138u8, 14u8, 101u8, 133u8, @@ -39875,7 +39743,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::paras::Paras, ::subxt::storage::address::Yes, (), @@ -39884,9 +39752,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Registrar", "Paras", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 125u8, 62u8, 50u8, 209u8, 40u8, 170u8, 61u8, 62u8, 61u8, 246u8, 103u8, 229u8, 213u8, 94u8, 249u8, 49u8, 18u8, 90u8, 138u8, 14u8, 101u8, 133u8, @@ -39898,7 +39764,7 @@ pub mod api { pub fn next_free_para_id( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::next_free_para_id::NextFreeParaId, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -39907,7 +39773,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Registrar", "NextFreeParaId", - vec![], + (), [ 52u8, 14u8, 56u8, 196u8, 79u8, 221u8, 32u8, 14u8, 154u8, 247u8, 94u8, 219u8, 11u8, 11u8, 104u8, 137u8, 167u8, 195u8, 180u8, 101u8, 35u8, @@ -40222,7 +40088,7 @@ pub mod api { pub fn leases_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::leases::Leases, (), ::subxt::storage::address::Yes, @@ -40231,7 +40097,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Slots", "Leases", - vec![], + (), [ 233u8, 226u8, 181u8, 160u8, 216u8, 86u8, 238u8, 229u8, 31u8, 67u8, 200u8, 188u8, 134u8, 22u8, 88u8, 147u8, 204u8, 11u8, 34u8, 244u8, @@ -40260,7 +40126,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::leases::Leases, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -40269,9 +40135,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Slots", "Leases", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 233u8, 226u8, 181u8, 160u8, 216u8, 86u8, 238u8, 229u8, 31u8, 67u8, 200u8, 188u8, 134u8, 22u8, 88u8, 147u8, 204u8, 11u8, 34u8, 244u8, @@ -40733,7 +40597,7 @@ pub mod api { pub fn auction_counter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::auction_counter::AuctionCounter, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -40742,7 +40606,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Auctions", "AuctionCounter", - vec![], + (), [ 110u8, 243u8, 85u8, 4u8, 127u8, 111u8, 101u8, 167u8, 72u8, 129u8, 201u8, 250u8, 88u8, 9u8, 79u8, 14u8, 152u8, 132u8, 0u8, 204u8, 112u8, @@ -40758,7 +40622,7 @@ pub mod api { pub fn auction_info( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::auction_info::AuctionInfo, ::subxt::storage::address::Yes, (), @@ -40767,7 +40631,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Auctions", "AuctionInfo", - vec![], + (), [ 116u8, 81u8, 223u8, 26u8, 151u8, 103u8, 209u8, 182u8, 169u8, 173u8, 220u8, 234u8, 88u8, 191u8, 255u8, 75u8, 148u8, 75u8, 167u8, 37u8, 6u8, @@ -40780,7 +40644,7 @@ pub mod api { pub fn reserved_amounts_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::reserved_amounts::ReservedAmounts, (), (), @@ -40789,7 +40653,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Auctions", "ReservedAmounts", - vec![], + (), [ 77u8, 44u8, 116u8, 36u8, 189u8, 213u8, 126u8, 32u8, 42u8, 131u8, 108u8, 41u8, 147u8, 40u8, 247u8, 245u8, 161u8, 42u8, 152u8, 195u8, 28u8, @@ -40804,7 +40668,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::reserved_amounts::ReservedAmounts, (), (), @@ -40813,9 +40677,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Auctions", "ReservedAmounts", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 77u8, 44u8, 116u8, 36u8, 189u8, 213u8, 126u8, 32u8, 42u8, 131u8, 108u8, 41u8, 147u8, 40u8, 247u8, 245u8, 161u8, 42u8, 152u8, 195u8, 28u8, @@ -40831,7 +40693,14 @@ pub mod api { _0: impl ::std::borrow::Borrow, _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ( + ::subxt::storage::address::StaticStorageKey< + types::reserved_amounts::Param0, + >, + ::subxt::storage::address::StaticStorageKey< + types::reserved_amounts::Param1, + >, + ), types::reserved_amounts::ReservedAmounts, ::subxt::storage::address::Yes, (), @@ -40840,10 +40709,10 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Auctions", "ReservedAmounts", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + ( + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ), [ 77u8, 44u8, 116u8, 36u8, 189u8, 213u8, 126u8, 32u8, 42u8, 131u8, 108u8, 41u8, 147u8, 40u8, 247u8, 245u8, 161u8, 42u8, 152u8, 195u8, 28u8, @@ -40858,7 +40727,7 @@ pub mod api { pub fn winning_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::winning::Winning, (), (), @@ -40867,7 +40736,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Auctions", "Winning", - vec![], + (), [ 8u8, 136u8, 174u8, 152u8, 223u8, 1u8, 143u8, 45u8, 213u8, 5u8, 239u8, 163u8, 152u8, 99u8, 197u8, 109u8, 194u8, 140u8, 246u8, 10u8, 40u8, @@ -40882,7 +40751,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::winning::Winning, ::subxt::storage::address::Yes, (), @@ -40891,9 +40760,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Auctions", "Winning", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 8u8, 136u8, 174u8, 152u8, 223u8, 1u8, 143u8, 45u8, 213u8, 5u8, 239u8, 163u8, 152u8, 99u8, 197u8, 109u8, 194u8, 140u8, 246u8, 10u8, 40u8, @@ -41754,7 +41621,7 @@ pub mod api { pub fn funds_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::funds::Funds, (), (), @@ -41763,7 +41630,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Crowdloan", "Funds", - vec![], + (), [ 191u8, 255u8, 37u8, 49u8, 246u8, 246u8, 168u8, 178u8, 73u8, 238u8, 49u8, 76u8, 66u8, 246u8, 207u8, 12u8, 76u8, 233u8, 31u8, 218u8, 132u8, @@ -41777,7 +41644,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::funds::Funds, ::subxt::storage::address::Yes, (), @@ -41786,9 +41653,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Crowdloan", "Funds", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 191u8, 255u8, 37u8, 49u8, 246u8, 246u8, 168u8, 178u8, 73u8, 238u8, 49u8, 76u8, 66u8, 246u8, 207u8, 12u8, 76u8, 233u8, 31u8, 218u8, 132u8, @@ -41802,7 +41667,7 @@ pub mod api { pub fn new_raise( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::new_raise::NewRaise, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -41811,7 +41676,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Crowdloan", "NewRaise", - vec![], + (), [ 251u8, 31u8, 237u8, 22u8, 90u8, 248u8, 39u8, 66u8, 93u8, 81u8, 209u8, 209u8, 194u8, 42u8, 109u8, 208u8, 56u8, 75u8, 45u8, 247u8, 253u8, @@ -41824,7 +41689,7 @@ pub mod api { pub fn endings_count( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::endings_count::EndingsCount, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -41833,7 +41698,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Crowdloan", "EndingsCount", - vec![], + (), [ 106u8, 22u8, 229u8, 157u8, 118u8, 195u8, 11u8, 42u8, 5u8, 50u8, 44u8, 183u8, 72u8, 167u8, 95u8, 243u8, 234u8, 5u8, 200u8, 253u8, 127u8, @@ -41845,7 +41710,7 @@ pub mod api { pub fn next_fund_index( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::next_fund_index::NextFundIndex, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -41854,7 +41719,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Crowdloan", "NextFundIndex", - vec![], + (), [ 192u8, 21u8, 229u8, 234u8, 152u8, 224u8, 149u8, 44u8, 41u8, 9u8, 191u8, 128u8, 118u8, 11u8, 117u8, 245u8, 170u8, 116u8, 77u8, 216u8, 175u8, @@ -43786,7 +43651,7 @@ pub mod api { pub fn query_counter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::query_counter::QueryCounter, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -43795,7 +43660,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "XcmPallet", "QueryCounter", - vec![], + (), [ 216u8, 73u8, 160u8, 232u8, 60u8, 245u8, 218u8, 219u8, 152u8, 68u8, 146u8, 219u8, 255u8, 7u8, 86u8, 112u8, 83u8, 49u8, 94u8, 173u8, 64u8, @@ -43808,7 +43673,7 @@ pub mod api { pub fn queries_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::queries::Queries, (), (), @@ -43817,7 +43682,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "XcmPallet", "Queries", - vec![], + (), [ 246u8, 75u8, 240u8, 129u8, 106u8, 114u8, 99u8, 154u8, 176u8, 188u8, 146u8, 125u8, 244u8, 103u8, 187u8, 171u8, 60u8, 119u8, 4u8, 90u8, 58u8, @@ -43831,7 +43696,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::queries::Queries, ::subxt::storage::address::Yes, (), @@ -43840,9 +43705,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "XcmPallet", "Queries", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 246u8, 75u8, 240u8, 129u8, 106u8, 114u8, 99u8, 154u8, 176u8, 188u8, 146u8, 125u8, 244u8, 103u8, 187u8, 171u8, 60u8, 119u8, 4u8, 90u8, 58u8, @@ -43858,7 +43721,7 @@ pub mod api { pub fn asset_traps_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::asset_traps::AssetTraps, (), ::subxt::storage::address::Yes, @@ -43867,7 +43730,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "XcmPallet", "AssetTraps", - vec![], + (), [ 148u8, 41u8, 254u8, 134u8, 61u8, 172u8, 126u8, 146u8, 78u8, 178u8, 50u8, 77u8, 226u8, 8u8, 200u8, 78u8, 77u8, 91u8, 26u8, 133u8, 104u8, @@ -43883,7 +43746,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::asset_traps::AssetTraps, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -43892,9 +43755,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "XcmPallet", "AssetTraps", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 148u8, 41u8, 254u8, 134u8, 61u8, 172u8, 126u8, 146u8, 78u8, 178u8, 50u8, 77u8, 226u8, 8u8, 200u8, 78u8, 77u8, 91u8, 26u8, 133u8, 104u8, @@ -43907,7 +43768,7 @@ pub mod api { pub fn safe_xcm_version( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::safe_xcm_version::SafeXcmVersion, ::subxt::storage::address::Yes, (), @@ -43916,7 +43777,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "XcmPallet", "SafeXcmVersion", - vec![], + (), [ 187u8, 8u8, 74u8, 126u8, 80u8, 215u8, 177u8, 60u8, 223u8, 123u8, 196u8, 155u8, 166u8, 66u8, 25u8, 164u8, 191u8, 66u8, 116u8, 131u8, 116u8, @@ -43929,7 +43790,7 @@ pub mod api { pub fn supported_version_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::supported_version::SupportedVersion, (), (), @@ -43938,7 +43799,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "XcmPallet", "SupportedVersion", - vec![], + (), [ 144u8, 218u8, 177u8, 254u8, 210u8, 8u8, 84u8, 149u8, 163u8, 162u8, 238u8, 37u8, 157u8, 28u8, 140u8, 121u8, 201u8, 173u8, 204u8, 92u8, @@ -43952,7 +43813,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::supported_version::SupportedVersion, (), (), @@ -43961,9 +43822,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "XcmPallet", "SupportedVersion", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 144u8, 218u8, 177u8, 254u8, 210u8, 8u8, 84u8, 149u8, 163u8, 162u8, 238u8, 37u8, 157u8, 28u8, 140u8, 121u8, 201u8, 173u8, 204u8, 92u8, @@ -43978,7 +43837,14 @@ pub mod api { _0: impl ::std::borrow::Borrow, _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ( + ::subxt::storage::address::StaticStorageKey< + types::supported_version::Param0, + >, + ::subxt::storage::address::StaticStorageKey< + types::supported_version::Param1, + >, + ), types::supported_version::SupportedVersion, ::subxt::storage::address::Yes, (), @@ -43987,10 +43853,10 @@ pub mod api { ::subxt::storage::address::Address::new_static( "XcmPallet", "SupportedVersion", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + ( + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ), [ 144u8, 218u8, 177u8, 254u8, 210u8, 8u8, 84u8, 149u8, 163u8, 162u8, 238u8, 37u8, 157u8, 28u8, 140u8, 121u8, 201u8, 173u8, 204u8, 92u8, @@ -44003,7 +43869,7 @@ pub mod api { pub fn version_notifiers_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::version_notifiers::VersionNotifiers, (), (), @@ -44012,7 +43878,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "XcmPallet", "VersionNotifiers", - vec![], + (), [ 175u8, 206u8, 29u8, 14u8, 111u8, 123u8, 211u8, 109u8, 159u8, 131u8, 80u8, 149u8, 216u8, 196u8, 181u8, 105u8, 117u8, 138u8, 80u8, 69u8, @@ -44026,7 +43892,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::version_notifiers::VersionNotifiers, (), (), @@ -44035,9 +43901,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "XcmPallet", "VersionNotifiers", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 175u8, 206u8, 29u8, 14u8, 111u8, 123u8, 211u8, 109u8, 159u8, 131u8, 80u8, 149u8, 216u8, 196u8, 181u8, 105u8, 117u8, 138u8, 80u8, 69u8, @@ -44052,7 +43916,14 @@ pub mod api { _0: impl ::std::borrow::Borrow, _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ( + ::subxt::storage::address::StaticStorageKey< + types::version_notifiers::Param0, + >, + ::subxt::storage::address::StaticStorageKey< + types::version_notifiers::Param1, + >, + ), types::version_notifiers::VersionNotifiers, ::subxt::storage::address::Yes, (), @@ -44061,10 +43932,10 @@ pub mod api { ::subxt::storage::address::Address::new_static( "XcmPallet", "VersionNotifiers", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + ( + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ), [ 175u8, 206u8, 29u8, 14u8, 111u8, 123u8, 211u8, 109u8, 159u8, 131u8, 80u8, 149u8, 216u8, 196u8, 181u8, 105u8, 117u8, 138u8, 80u8, 69u8, @@ -44078,7 +43949,7 @@ pub mod api { pub fn version_notify_targets_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::version_notify_targets::VersionNotifyTargets, (), (), @@ -44087,7 +43958,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "XcmPallet", "VersionNotifyTargets", - vec![], + (), [ 113u8, 77u8, 150u8, 42u8, 82u8, 49u8, 195u8, 120u8, 96u8, 80u8, 152u8, 67u8, 27u8, 142u8, 10u8, 74u8, 66u8, 134u8, 35u8, 202u8, 77u8, 187u8, @@ -44101,7 +43972,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::version_notify_targets::Param0, + >, types::version_notify_targets::VersionNotifyTargets, (), (), @@ -44110,9 +43983,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "XcmPallet", "VersionNotifyTargets", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 113u8, 77u8, 150u8, 42u8, 82u8, 49u8, 195u8, 120u8, 96u8, 80u8, 152u8, 67u8, 27u8, 142u8, 10u8, 74u8, 66u8, 134u8, 35u8, 202u8, 77u8, 187u8, @@ -44127,7 +43998,14 @@ pub mod api { _0: impl ::std::borrow::Borrow, _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ( + ::subxt::storage::address::StaticStorageKey< + types::version_notify_targets::Param0, + >, + ::subxt::storage::address::StaticStorageKey< + types::version_notify_targets::Param1, + >, + ), types::version_notify_targets::VersionNotifyTargets, ::subxt::storage::address::Yes, (), @@ -44136,10 +44014,10 @@ pub mod api { ::subxt::storage::address::Address::new_static( "XcmPallet", "VersionNotifyTargets", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + ( + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ), [ 113u8, 77u8, 150u8, 42u8, 82u8, 49u8, 195u8, 120u8, 96u8, 80u8, 152u8, 67u8, 27u8, 142u8, 10u8, 74u8, 66u8, 134u8, 35u8, 202u8, 77u8, 187u8, @@ -44153,7 +44031,7 @@ pub mod api { pub fn version_discovery_queue( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::version_discovery_queue::VersionDiscoveryQueue, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -44162,7 +44040,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "XcmPallet", "VersionDiscoveryQueue", - vec![], + (), [ 95u8, 74u8, 97u8, 94u8, 40u8, 140u8, 175u8, 176u8, 224u8, 222u8, 83u8, 199u8, 170u8, 102u8, 3u8, 77u8, 127u8, 208u8, 155u8, 122u8, 176u8, @@ -44175,7 +44053,7 @@ pub mod api { pub fn current_migration( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::current_migration::CurrentMigration, ::subxt::storage::address::Yes, (), @@ -44184,7 +44062,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "XcmPallet", "CurrentMigration", - vec![], + (), [ 74u8, 138u8, 181u8, 162u8, 59u8, 251u8, 37u8, 28u8, 232u8, 51u8, 30u8, 152u8, 252u8, 133u8, 95u8, 195u8, 47u8, 127u8, 21u8, 44u8, 62u8, 143u8, @@ -44196,7 +44074,7 @@ pub mod api { pub fn remote_locked_fungibles_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::remote_locked_fungibles::RemoteLockedFungibles, (), (), @@ -44205,7 +44083,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "XcmPallet", "RemoteLockedFungibles", - vec![], + (), [ 247u8, 124u8, 77u8, 42u8, 208u8, 183u8, 99u8, 196u8, 50u8, 113u8, 250u8, 221u8, 222u8, 170u8, 10u8, 60u8, 143u8, 172u8, 149u8, 198u8, @@ -44219,7 +44097,9 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey< + types::remote_locked_fungibles::Param0, + >, types::remote_locked_fungibles::RemoteLockedFungibles, (), (), @@ -44228,9 +44108,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "XcmPallet", "RemoteLockedFungibles", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 247u8, 124u8, 77u8, 42u8, 208u8, 183u8, 99u8, 196u8, 50u8, 113u8, 250u8, 221u8, 222u8, 170u8, 10u8, 60u8, 143u8, 172u8, 149u8, 198u8, @@ -44245,7 +44123,14 @@ pub mod api { _0: impl ::std::borrow::Borrow, _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ( + ::subxt::storage::address::StaticStorageKey< + types::remote_locked_fungibles::Param0, + >, + ::subxt::storage::address::StaticStorageKey< + types::remote_locked_fungibles::Param1, + >, + ), types::remote_locked_fungibles::RemoteLockedFungibles, (), (), @@ -44254,10 +44139,10 @@ pub mod api { ::subxt::storage::address::Address::new_static( "XcmPallet", "RemoteLockedFungibles", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + ( + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ), [ 247u8, 124u8, 77u8, 42u8, 208u8, 183u8, 99u8, 196u8, 50u8, 113u8, 250u8, 221u8, 222u8, 170u8, 10u8, 60u8, 143u8, 172u8, 149u8, 198u8, @@ -44273,7 +44158,17 @@ pub mod api { _1: impl ::std::borrow::Borrow, _2: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ( + ::subxt::storage::address::StaticStorageKey< + types::remote_locked_fungibles::Param0, + >, + ::subxt::storage::address::StaticStorageKey< + types::remote_locked_fungibles::Param1, + >, + ::subxt::storage::address::StaticStorageKey< + types::remote_locked_fungibles::Param2, + >, + ), types::remote_locked_fungibles::RemoteLockedFungibles, ::subxt::storage::address::Yes, (), @@ -44282,11 +44177,11 @@ pub mod api { ::subxt::storage::address::Address::new_static( "XcmPallet", "RemoteLockedFungibles", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_2.borrow()), - ], + ( + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ::subxt::storage::address::StaticStorageKey::new(_2.borrow()), + ), [ 247u8, 124u8, 77u8, 42u8, 208u8, 183u8, 99u8, 196u8, 50u8, 113u8, 250u8, 221u8, 222u8, 170u8, 10u8, 60u8, 143u8, 172u8, 149u8, 198u8, @@ -44299,7 +44194,7 @@ pub mod api { pub fn locked_fungibles_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::locked_fungibles::LockedFungibles, (), (), @@ -44308,7 +44203,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "XcmPallet", "LockedFungibles", - vec![], + (), [ 254u8, 234u8, 1u8, 27u8, 27u8, 32u8, 217u8, 24u8, 47u8, 30u8, 62u8, 80u8, 86u8, 125u8, 120u8, 24u8, 143u8, 229u8, 161u8, 153u8, 240u8, @@ -44321,7 +44216,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::locked_fungibles::LockedFungibles, ::subxt::storage::address::Yes, (), @@ -44330,9 +44225,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "XcmPallet", "LockedFungibles", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 254u8, 234u8, 1u8, 27u8, 27u8, 32u8, 217u8, 24u8, 47u8, 30u8, 62u8, 80u8, 86u8, 125u8, 120u8, 24u8, 143u8, 229u8, 161u8, 153u8, 240u8, @@ -44344,7 +44237,7 @@ pub mod api { pub fn xcm_execution_suspended( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::xcm_execution_suspended::XcmExecutionSuspended, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -44353,7 +44246,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "XcmPallet", "XcmExecutionSuspended", - vec![], + (), [ 182u8, 54u8, 69u8, 68u8, 78u8, 76u8, 103u8, 79u8, 47u8, 136u8, 99u8, 104u8, 128u8, 129u8, 249u8, 54u8, 214u8, 136u8, 97u8, 48u8, 178u8, @@ -44588,7 +44481,7 @@ pub mod api { pub fn authorities( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::authorities::Authorities, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -44597,7 +44490,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Beefy", "Authorities", - vec![], + (), [ 53u8, 171u8, 94u8, 33u8, 46u8, 83u8, 105u8, 120u8, 123u8, 201u8, 141u8, 71u8, 131u8, 150u8, 51u8, 121u8, 67u8, 45u8, 249u8, 146u8, 85u8, 113u8, @@ -44609,7 +44502,7 @@ pub mod api { pub fn validator_set_id( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::validator_set_id::ValidatorSetId, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -44618,7 +44511,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Beefy", "ValidatorSetId", - vec![], + (), [ 168u8, 84u8, 23u8, 134u8, 153u8, 30u8, 183u8, 176u8, 206u8, 100u8, 109u8, 86u8, 109u8, 126u8, 146u8, 175u8, 173u8, 1u8, 253u8, 42u8, @@ -44631,7 +44524,7 @@ pub mod api { pub fn next_authorities( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::next_authorities::NextAuthorities, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -44640,7 +44533,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Beefy", "NextAuthorities", - vec![], + (), [ 87u8, 180u8, 0u8, 85u8, 209u8, 13u8, 131u8, 103u8, 8u8, 226u8, 42u8, 72u8, 38u8, 47u8, 190u8, 78u8, 62u8, 4u8, 161u8, 130u8, 87u8, 196u8, @@ -44661,7 +44554,7 @@ pub mod api { pub fn set_id_session_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::set_id_session::SetIdSession, (), (), @@ -44670,7 +44563,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Beefy", "SetIdSession", - vec![], + (), [ 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, @@ -44692,7 +44585,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::set_id_session::SetIdSession, ::subxt::storage::address::Yes, (), @@ -44701,9 +44594,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Beefy", "SetIdSession", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, @@ -44717,7 +44608,7 @@ pub mod api { pub fn genesis_block( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::genesis_block::GenesisBlock, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -44726,7 +44617,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Beefy", "GenesisBlock", - vec![], + (), [ 198u8, 155u8, 11u8, 240u8, 189u8, 245u8, 159u8, 127u8, 55u8, 33u8, 48u8, 29u8, 209u8, 119u8, 163u8, 24u8, 28u8, 22u8, 163u8, 163u8, 124u8, @@ -44820,7 +44711,7 @@ pub mod api { pub fn root_hash( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::root_hash::RootHash, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -44829,7 +44720,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Mmr", "RootHash", - vec![], + (), [ 111u8, 206u8, 173u8, 92u8, 67u8, 49u8, 150u8, 113u8, 90u8, 245u8, 38u8, 254u8, 76u8, 250u8, 167u8, 66u8, 130u8, 129u8, 251u8, 220u8, 172u8, @@ -44841,7 +44732,7 @@ pub mod api { pub fn number_of_leaves( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::number_of_leaves::NumberOfLeaves, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -44850,7 +44741,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Mmr", "NumberOfLeaves", - vec![], + (), [ 123u8, 58u8, 149u8, 174u8, 85u8, 45u8, 20u8, 115u8, 241u8, 0u8, 51u8, 174u8, 234u8, 60u8, 230u8, 59u8, 237u8, 144u8, 170u8, 32u8, 4u8, 0u8, @@ -44865,7 +44756,7 @@ pub mod api { pub fn nodes_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::nodes::Nodes, (), (), @@ -44874,7 +44765,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Mmr", "Nodes", - vec![], + (), [ 27u8, 84u8, 41u8, 195u8, 146u8, 81u8, 211u8, 189u8, 63u8, 125u8, 173u8, 206u8, 69u8, 198u8, 202u8, 213u8, 89u8, 31u8, 89u8, 177u8, 76u8, 154u8, @@ -44890,7 +44781,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::nodes::Nodes, ::subxt::storage::address::Yes, (), @@ -44899,9 +44790,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Mmr", "Nodes", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 27u8, 84u8, 41u8, 195u8, 146u8, 81u8, 211u8, 189u8, 63u8, 125u8, 173u8, 206u8, 69u8, 198u8, 202u8, 213u8, 89u8, 31u8, 89u8, 177u8, 76u8, 154u8, @@ -44940,7 +44829,7 @@ pub mod api { pub fn beefy_authorities( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::beefy_authorities::BeefyAuthorities, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -44949,7 +44838,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "MmrLeaf", "BeefyAuthorities", - vec![], + (), [ 128u8, 35u8, 176u8, 79u8, 224u8, 58u8, 214u8, 234u8, 231u8, 71u8, 227u8, 153u8, 180u8, 189u8, 66u8, 44u8, 47u8, 174u8, 0u8, 83u8, 121u8, @@ -44964,7 +44853,7 @@ pub mod api { pub fn beefy_next_authorities( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::beefy_next_authorities::BeefyNextAuthorities, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -44973,7 +44862,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "MmrLeaf", "BeefyNextAuthorities", - vec![], + (), [ 97u8, 71u8, 52u8, 111u8, 120u8, 251u8, 183u8, 155u8, 177u8, 100u8, 236u8, 142u8, 204u8, 117u8, 95u8, 40u8, 201u8, 36u8, 32u8, 82u8, 38u8, @@ -45782,7 +45671,7 @@ pub mod api { pub fn permanent_slots_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::permanent_slots::PermanentSlots, (), (), @@ -45791,7 +45680,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "AssignedSlots", "PermanentSlots", - vec![], + (), [ 133u8, 179u8, 221u8, 222u8, 50u8, 75u8, 158u8, 137u8, 167u8, 190u8, 19u8, 237u8, 201u8, 44u8, 86u8, 64u8, 57u8, 61u8, 96u8, 112u8, 218u8, @@ -45805,7 +45694,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::permanent_slots::PermanentSlots, ::subxt::storage::address::Yes, (), @@ -45814,9 +45703,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "AssignedSlots", "PermanentSlots", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 133u8, 179u8, 221u8, 222u8, 50u8, 75u8, 158u8, 137u8, 167u8, 190u8, 19u8, 237u8, 201u8, 44u8, 86u8, 64u8, 57u8, 61u8, 96u8, 112u8, 218u8, @@ -45829,7 +45716,7 @@ pub mod api { pub fn permanent_slot_count( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::permanent_slot_count::PermanentSlotCount, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -45838,7 +45725,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "AssignedSlots", "PermanentSlotCount", - vec![], + (), [ 57u8, 211u8, 19u8, 233u8, 105u8, 201u8, 166u8, 99u8, 53u8, 217u8, 23u8, 64u8, 216u8, 129u8, 21u8, 36u8, 234u8, 24u8, 57u8, 99u8, 13u8, 205u8, @@ -45850,7 +45737,7 @@ pub mod api { pub fn temporary_slots_iter( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::temporary_slots::TemporarySlots, (), (), @@ -45859,7 +45746,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "AssignedSlots", "TemporarySlots", - vec![], + (), [ 184u8, 245u8, 181u8, 90u8, 169u8, 232u8, 108u8, 3u8, 153u8, 4u8, 176u8, 170u8, 230u8, 163u8, 236u8, 111u8, 196u8, 218u8, 154u8, 125u8, 102u8, @@ -45873,7 +45760,7 @@ pub mod api { &self, _0: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + ::subxt::storage::address::StaticStorageKey, types::temporary_slots::TemporarySlots, ::subxt::storage::address::Yes, (), @@ -45882,9 +45769,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "AssignedSlots", "TemporarySlots", - vec![::subxt::storage::address::make_static_storage_map_key( - _0.borrow(), - )], + ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), [ 184u8, 245u8, 181u8, 90u8, 169u8, 232u8, 108u8, 3u8, 153u8, 4u8, 176u8, 170u8, 230u8, 163u8, 236u8, 111u8, 196u8, 218u8, 154u8, 125u8, 102u8, @@ -45897,7 +45782,7 @@ pub mod api { pub fn temporary_slot_count( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::temporary_slot_count::TemporarySlotCount, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -45906,7 +45791,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "AssignedSlots", "TemporarySlotCount", - vec![], + (), [ 218u8, 236u8, 69u8, 75u8, 224u8, 60u8, 9u8, 197u8, 217u8, 4u8, 210u8, 55u8, 125u8, 106u8, 239u8, 208u8, 115u8, 105u8, 94u8, 223u8, 219u8, @@ -45918,7 +45803,7 @@ pub mod api { pub fn active_temporary_slot_count( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::active_temporary_slot_count::ActiveTemporarySlotCount, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -45927,7 +45812,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "AssignedSlots", "ActiveTemporarySlotCount", - vec![], + (), [ 153u8, 99u8, 232u8, 164u8, 137u8, 10u8, 232u8, 172u8, 78u8, 4u8, 69u8, 178u8, 245u8, 220u8, 56u8, 251u8, 60u8, 238u8, 127u8, 246u8, 60u8, @@ -45940,7 +45825,7 @@ pub mod api { pub fn max_temporary_slots( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::max_temporary_slots::MaxTemporarySlots, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -45949,7 +45834,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "AssignedSlots", "MaxTemporarySlots", - vec![], + (), [ 129u8, 130u8, 136u8, 77u8, 149u8, 130u8, 130u8, 195u8, 150u8, 114u8, 199u8, 133u8, 86u8, 252u8, 149u8, 149u8, 131u8, 248u8, 70u8, 39u8, @@ -45962,7 +45847,7 @@ pub mod api { pub fn max_permanent_slots( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::max_permanent_slots::MaxPermanentSlots, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -45971,7 +45856,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "AssignedSlots", "MaxPermanentSlots", - vec![], + (), [ 20u8, 72u8, 203u8, 62u8, 120u8, 21u8, 97u8, 9u8, 138u8, 135u8, 67u8, 152u8, 131u8, 197u8, 59u8, 80u8, 226u8, 148u8, 159u8, 122u8, 34u8, @@ -46200,7 +46085,7 @@ pub mod api { pub fn validators_to_retire( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::validators_to_retire::ValidatorsToRetire, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -46209,7 +46094,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ValidatorManager", "ValidatorsToRetire", - vec![], + (), [ 137u8, 92u8, 99u8, 157u8, 254u8, 166u8, 190u8, 64u8, 111u8, 212u8, 37u8, 90u8, 164u8, 0u8, 31u8, 15u8, 83u8, 21u8, 225u8, 7u8, 57u8, @@ -46221,7 +46106,7 @@ pub mod api { pub fn validators_to_add( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::validators_to_add::ValidatorsToAdd, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -46230,7 +46115,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ValidatorManager", "ValidatorsToAdd", - vec![], + (), [ 168u8, 209u8, 123u8, 225u8, 168u8, 62u8, 18u8, 174u8, 164u8, 161u8, 228u8, 179u8, 251u8, 112u8, 210u8, 173u8, 24u8, 177u8, 111u8, 129u8, @@ -46727,7 +46612,7 @@ pub mod api { pub fn migration_process( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::migration_process::MigrationProcess, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -46736,7 +46621,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "StateTrieMigration", "MigrationProcess", - vec![], + (), [ 119u8, 172u8, 143u8, 118u8, 90u8, 3u8, 154u8, 185u8, 165u8, 165u8, 249u8, 230u8, 77u8, 14u8, 221u8, 146u8, 75u8, 243u8, 69u8, 209u8, 79u8, @@ -46750,7 +46635,7 @@ pub mod api { pub fn auto_limits( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::auto_limits::AutoLimits, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -46759,7 +46644,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "StateTrieMigration", "AutoLimits", - vec![], + (), [ 225u8, 29u8, 94u8, 66u8, 169u8, 230u8, 106u8, 20u8, 238u8, 81u8, 238u8, 183u8, 185u8, 74u8, 94u8, 58u8, 107u8, 174u8, 228u8, 10u8, 156u8, @@ -46773,7 +46658,7 @@ pub mod api { pub fn signed_migration_max_limits( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::signed_migration_max_limits::SignedMigrationMaxLimits, ::subxt::storage::address::Yes, (), @@ -46782,7 +46667,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "StateTrieMigration", "SignedMigrationMaxLimits", - vec![], + (), [ 121u8, 97u8, 145u8, 237u8, 10u8, 145u8, 206u8, 119u8, 15u8, 12u8, 200u8, 24u8, 231u8, 140u8, 248u8, 227u8, 202u8, 78u8, 93u8, 134u8, @@ -47275,7 +47160,7 @@ pub mod api { pub fn key( &self, ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, + (), types::key::Key, ::subxt::storage::address::Yes, (), @@ -47284,7 +47169,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Sudo", "Key", - vec![], + (), [ 72u8, 14u8, 225u8, 162u8, 205u8, 247u8, 227u8, 105u8, 116u8, 57u8, 4u8, 31u8, 84u8, 137u8, 227u8, 228u8, 133u8, 245u8, 206u8, 227u8, 117u8, diff --git a/testing/integration-tests/src/full_client/storage/mod.rs b/testing/integration-tests/src/full_client/storage/mod.rs index e1cec5f939..1d7dcd50d4 100644 --- a/testing/integration-tests/src/full_client/storage/mod.rs +++ b/testing/integration-tests/src/full_client/storage/mod.rs @@ -56,10 +56,6 @@ async fn storage_map_lookup() -> Result<(), subxt::Error> { Ok(()) } -// This fails until the fix in https://github.com/paritytech/subxt/pull/458 is introduced. -// Here we create a key that looks a bit like a StorageNMap key, but should in fact be -// treated as a StorageKey (ie we should hash both values together with one hasher, rather -// than hash both values separately, or ignore the second value). #[tokio::test] async fn storage_n_mapish_key_is_properly_created() -> Result<(), subxt::Error> { use codec::Encode; @@ -73,18 +69,21 @@ async fn storage_n_mapish_key_is_properly_created() -> Result<(), subxt::Error> .session() .key_owner(KeyTypeId([1, 2, 3, 4]), [5u8, 6, 7, 8]); let actual_key_bytes = api.storage().address_bytes(&actual_key)?; - // Let's manually hash to what we assume it should be and compare: let expected_key_bytes = { // Hash the prefix to the storage entry: let mut bytes = sp_core::twox_128("Session".as_bytes()).to_vec(); bytes.extend(&sp_core::twox_128("KeyOwner".as_bytes())[..]); - // twox64_concat a *tuple* of the args expected: - let suffix = (KeyTypeId([1, 2, 3, 4]), vec![5u8, 6, 7, 8]).encode(); - bytes.extend(sp_core::twox_64(&suffix)); - bytes.extend(&suffix); + // Both keys, use twox64_concat hashers: + let key1 = KeyTypeId([1, 2, 3, 4]).encode(); + let key2 = vec![5u8, 6, 7, 8].encode(); + bytes.extend(sp_core::twox_64(&key1)); + bytes.extend(&key1); + bytes.extend(sp_core::twox_64(&key2)); + bytes.extend(&key2); bytes }; + dbg!(&expected_key_bytes); assert_eq!(actual_key_bytes, expected_key_bytes); Ok(()) @@ -167,9 +166,9 @@ async fn storage_partial_lookup() -> Result<(), subxt::Error> { let addr_bytes = api.storage().address_bytes(&addr)?; let mut results = api.storage().at_latest().await?.iter(addr).await?; let mut approvals = Vec::new(); - while let Some(Ok((key, value))) = results.next().await { - assert!(key.starts_with(&addr_bytes)); - approvals.push(value); + while let Some(Ok(kv)) = results.next().await { + assert!(kv.key_bytes.starts_with(&addr_bytes)); + approvals.push(kv.value); } assert_eq!(approvals.len(), assets.len()); let mut amounts = approvals.iter().map(|a| a.amount).collect::>(); @@ -188,9 +187,10 @@ async fn storage_partial_lookup() -> Result<(), subxt::Error> { let mut results = api.storage().at_latest().await?.iter(addr).await?; let mut approvals = Vec::new(); - while let Some(Ok((key, value))) = results.next().await { - assert!(key.starts_with(&addr_bytes)); - approvals.push(value); + while let Some(Ok(kv)) = results.next().await { + assert!(kv.key_bytes.starts_with(&addr_bytes)); + assert!(kv.keys.decoded().is_ok()); + approvals.push(kv.value); } assert_eq!(approvals.len(), 1); assert_eq!(approvals[0].amount, amount); From dfd6e108cd08e88385f4c60f1798eac5c0ebcc1b Mon Sep 17 00:00:00 2001 From: Niklas Adolfsson Date: Tue, 12 Mar 2024 18:42:29 +0100 Subject: [PATCH 40/66] rpc v2: chainhead support multiple finalized block hashes in `FollowEvent::Initialized` (#1476) * chainhead rpc `block_hash -> finalized_block_hashs` * cleanup * address grumbles * address grumbles: inc this.rel_block_num * rel_block_num => rel_block_age for clarity --------- Co-authored-by: James Wilson --- subxt/src/backend/unstable/follow_stream.rs | 2 +- .../backend/unstable/follow_stream_driver.rs | 6 +- .../backend/unstable/follow_stream_unpin.rs | 85 +++++++++++-------- subxt/src/backend/unstable/mod.rs | 27 +++--- subxt/src/backend/unstable/rpc_methods.rs | 4 +- .../src/full_client/client/unstable_rpcs.rs | 14 +-- 6 files changed, 79 insertions(+), 59 deletions(-) diff --git a/subxt/src/backend/unstable/follow_stream.rs b/subxt/src/backend/unstable/follow_stream.rs index 9474f7a302..71af824831 100644 --- a/subxt/src/backend/unstable/follow_stream.rs +++ b/subxt/src/backend/unstable/follow_stream.rs @@ -243,7 +243,7 @@ pub(super) mod test_utils { /// An initialized event pub fn ev_initialized(n: u64) -> FollowEvent { FollowEvent::Initialized(Initialized { - finalized_block_hash: H256::from_low_u64_le(n), + finalized_block_hashes: vec![H256::from_low_u64_le(n)], finalized_block_runtime: None, }) } diff --git a/subxt/src/backend/unstable/follow_stream_driver.rs b/subxt/src/backend/unstable/follow_stream_driver.rs index d32c98a104..e85336c314 100644 --- a/subxt/src/backend/unstable/follow_stream_driver.rs +++ b/subxt/src/backend/unstable/follow_stream_driver.rs @@ -267,9 +267,9 @@ impl Shared { shared.seen_runtime_events.clear(); - if let Some(finalized) = finalized_ev.finalized_block_hashes.last() { - init_message.finalized_block_hash = finalized.clone(); - } + init_message.finalized_block_hashes = + finalized_ev.finalized_block_hashes.clone(); + if let Some(runtime_ev) = newest_runtime { init_message.finalized_block_runtime = Some(runtime_ev); } diff --git a/subxt/src/backend/unstable/follow_stream_unpin.rs b/subxt/src/backend/unstable/follow_stream_unpin.rs index ca00e37690..c128a86cf3 100644 --- a/subxt/src/backend/unstable/follow_stream_unpin.rs +++ b/subxt/src/backend/unstable/follow_stream_unpin.rs @@ -10,6 +10,7 @@ use crate::backend::unstable::rpc_methods::{ use crate::config::{BlockHash, Config}; use crate::error::Error; use futures::stream::{FuturesUnordered, Stream, StreamExt}; + use std::collections::{HashMap, HashSet}; use std::future::Future; use std::pin::Pin; @@ -34,9 +35,11 @@ pub struct FollowStreamUnpin { // Futures for sending unpin events that we'll poll to completion as // part of polling the stream as a whole. unpin_futs: FuturesUnordered, - // Each new finalized block increments this. Allows us to track - // the age of blocks so that we can unpin old ones. - rel_block_num: usize, + // Each time a new finalized block is seen, we give it an age of `next_rel_block_age`, + // and then increment this ready for the next finalized block. So, the first finalized + // block will have an age of 0, the next 1, 2, 3 and so on. We can then use `max_block_life` + // to say "unpin all blocks with an age < (next_rel_block_age-1) - max_block_life". + next_rel_block_age: usize, // The latest ID of the FollowStream subscription, which we can use // to unpin blocks. subscription_id: Option>, @@ -113,15 +116,23 @@ impl Stream for FollowStreamUnpin { FollowStreamMsg::Ready(subscription_id) } FollowStreamMsg::Event(FollowEvent::Initialized(details)) => { - // The first finalized block gets the starting block_num. - let rel_block_num = this.rel_block_num; - // Pin this block, but note that it can be unpinned any time since it won't show up again (except - // as a parent block, which we are ignoring at the moment). - let block_ref = - this.pin_unpinnable_block_at(rel_block_num, details.finalized_block_hash); + let mut finalized_block_hashes = + Vec::with_capacity(details.finalized_block_hashes.len()); + + // Pin each of the finalized blocks. None of them will show up again (except as a + // parent block), and so they can all be unpinned immediately at any time. Increment + // the block age for each one, so that older finalized blocks are pruned first. + for finalized_block in &details.finalized_block_hashes { + let rel_block_age = this.next_rel_block_age; + let block_ref = + this.pin_unpinnable_block_at(rel_block_age, *finalized_block); + + finalized_block_hashes.push(block_ref); + this.next_rel_block_age += 1; + } FollowStreamMsg::Event(FollowEvent::Initialized(Initialized { - finalized_block_hash: block_ref, + finalized_block_hashes, finalized_block_runtime: details.finalized_block_runtime, })) } @@ -129,15 +140,15 @@ impl Stream for FollowStreamUnpin { // One bigger than our parent, and if no parent seen (maybe it was // unpinned already), then one bigger than the last finalized block num // as a best guess. - let parent_rel_block_num = this + let parent_rel_block_age = this .pinned .get(&details.parent_block_hash) - .map(|p| p.rel_block_num) - .unwrap_or(this.rel_block_num); + .map(|p| p.rel_block_age) + .unwrap_or(this.next_rel_block_age.saturating_sub(1)); - let block_ref = this.pin_block_at(parent_rel_block_num + 1, details.block_hash); + let block_ref = this.pin_block_at(parent_rel_block_age + 1, details.block_hash); let parent_block_ref = - this.pin_block_at(parent_rel_block_num, details.parent_block_hash); + this.pin_block_at(parent_rel_block_age, details.parent_block_hash); FollowStreamMsg::Event(FollowEvent::NewBlock(NewBlock { block_hash: block_ref, @@ -148,8 +159,8 @@ impl Stream for FollowStreamUnpin { FollowStreamMsg::Event(FollowEvent::BestBlockChanged(details)) => { // We expect this block to already exist, so it'll keep its existing block_num, // but worst case it'll just get the current finalized block_num + 1. - let rel_block_num = this.rel_block_num + 1; - let block_ref = this.pin_block_at(rel_block_num, details.best_block_hash); + let rel_block_age = this.next_rel_block_age; + let block_ref = this.pin_block_at(rel_block_age, details.best_block_hash); FollowStreamMsg::Event(FollowEvent::BestBlockChanged(BestBlockChanged { best_block_hash: block_ref, @@ -167,14 +178,14 @@ impl Stream for FollowStreamUnpin { // // `pin_unpinnable_block_at` indicates that the block will not show up in future events // (They will show up as a parent block, but we don't care about that right now). - let rel_block_num = this.rel_block_num + idx + 1; - this.pin_unpinnable_block_at(rel_block_num, hash) + let rel_block_age = this.next_rel_block_age + idx; + this.pin_unpinnable_block_at(rel_block_age, hash) }) .collect(); // Our relative block height is increased by however many finalized // blocks we've seen. - this.rel_block_num += finalized_block_refs.len(); + this.next_rel_block_age += finalized_block_refs.len(); let pruned_block_refs: Vec<_> = details .pruned_block_hashes @@ -183,8 +194,8 @@ impl Stream for FollowStreamUnpin { // We should know about these, too, and if not we set their age to last_finalized + 1. // // `pin_unpinnable_block_at` indicates that the block will not show up in future events. - let rel_block_num = this.rel_block_num + 1; - this.pin_unpinnable_block_at(rel_block_num, hash) + let rel_block_age = this.next_rel_block_age; + this.pin_unpinnable_block_at(rel_block_age, hash) }) .collect(); @@ -208,7 +219,7 @@ impl Stream for FollowStreamUnpin { this.pinned.clear(); this.unpin_futs.clear(); this.unpin_flags.lock().unwrap().clear(); - this.rel_block_num = 0; + this.next_rel_block_age = 0; FollowStreamMsg::Event(FollowEvent::Stop) } @@ -255,7 +266,7 @@ impl FollowStreamUnpin { max_block_life, pinned: Default::default(), subscription_id: None, - rel_block_num: 0, + next_rel_block_age: 0, unpin_flags: Default::default(), unpin_futs: Default::default(), } @@ -287,21 +298,21 @@ impl FollowStreamUnpin { /// Pin a block, or return the reference to an already-pinned block. If the block has been registered to /// be unpinned, we'll clear those flags, so that it won't be unpinned. If the unpin request has already /// been sent though, then the block will be unpinned. - fn pin_block_at(&mut self, rel_block_num: usize, hash: Hash) -> BlockRef { - self.pin_block_at_setting_unpinnable_flag(rel_block_num, hash, false) + fn pin_block_at(&mut self, rel_block_age: usize, hash: Hash) -> BlockRef { + self.pin_block_at_setting_unpinnable_flag(rel_block_age, hash, false) } /// Pin a block, or return the reference to an already-pinned block. /// /// This is the same as [`Self::pin_block_at`], except that it also marks the block as being unpinnable now, /// which should be done for any block that will no longer be seen in future events. - fn pin_unpinnable_block_at(&mut self, rel_block_num: usize, hash: Hash) -> BlockRef { - self.pin_block_at_setting_unpinnable_flag(rel_block_num, hash, true) + fn pin_unpinnable_block_at(&mut self, rel_block_age: usize, hash: Hash) -> BlockRef { + self.pin_block_at_setting_unpinnable_flag(rel_block_age, hash, true) } fn pin_block_at_setting_unpinnable_flag( &mut self, - rel_block_num: usize, + rel_block_age: usize, hash: Hash, can_be_unpinned: bool, ) -> BlockRef { @@ -317,7 +328,7 @@ impl FollowStreamUnpin { }) // If there's not an entry already, make one and return it. .or_insert_with(|| PinnedDetails { - rel_block_num, + rel_block_age, block_ref: BlockRef { inner: Arc::new(BlockRefInner { hash, @@ -333,7 +344,9 @@ impl FollowStreamUnpin { /// Unpin any blocks that are either too old, or have the unpin flag set and are old enough. fn unpin_blocks(&mut self, waker: &Waker) { let mut unpin_flags = self.unpin_flags.lock().unwrap(); - let rel_block_num = self.rel_block_num; + + // This gets the age of the last finalized block. + let rel_block_age = self.next_rel_block_age.saturating_sub(1); // If we asked to unpin and there was no subscription_id, then there's nothing we can do, // and nothing will need unpinning now anyway. @@ -343,7 +356,7 @@ impl FollowStreamUnpin { let mut blocks_to_unpin = vec![]; for (hash, details) in &self.pinned { - if rel_block_num.saturating_sub(details.rel_block_num) >= self.max_block_life + if rel_block_age.saturating_sub(details.rel_block_age) >= self.max_block_life || (unpin_flags.contains(hash) && details.can_be_unpinned) { // The block is too old, or it's been flagged to be unpinned and won't be in a future @@ -381,8 +394,10 @@ type UnpinFlags = Arc>>; #[derive(Debug)] struct PinnedDetails { - /// How old is the block? - rel_block_num: usize, + /// Realtively speaking, how old is the block? When we start following + /// blocks, the first finalized block gets an age of 0, the second an age + /// of 1 and so on. + rel_block_age: usize, /// A block ref we can hand out to keep blocks pinned. /// Because we store one here until it's unpinned, the live count /// will only drop to 1 when no external refs are left. @@ -502,7 +517,7 @@ pub(super) mod test_utils { /// An initialized event containing a BlockRef (useful for comparisons) pub fn ev_initialized_ref(n: u64) -> FollowEvent> { FollowEvent::Initialized(Initialized { - finalized_block_hash: BlockRef::new(H256::from_low_u64_le(n)), + finalized_block_hashes: vec![BlockRef::new(H256::from_low_u64_le(n))], finalized_block_runtime: None, }) } diff --git a/subxt/src/backend/unstable/mod.rs b/subxt/src/backend/unstable/mod.rs index 21a9cca504..7095b90af1 100644 --- a/subxt/src/backend/unstable/mod.rs +++ b/subxt/src/backend/unstable/mod.rs @@ -321,7 +321,9 @@ impl Backend for UnstableBackend { .events() .filter_map(|ev| { let out = match ev { - FollowEvent::Initialized(init) => Some(init.finalized_block_hash.into()), + FollowEvent::Initialized(init) => { + init.finalized_block_hashes.last().map(|b| b.clone().into()) + } _ => None, }; std::future::ready(out) @@ -353,7 +355,10 @@ impl Backend for UnstableBackend { .filter_map(move |ev| { let output = match ev { FollowEvent::Initialized(ev) => { - runtimes.remove(&ev.finalized_block_hash.hash()); + for finalized_block in ev.finalized_block_hashes { + runtimes.remove(&finalized_block.hash()); + } + ev.finalized_block_runtime } FollowEvent::NewBlock(ev) => { @@ -422,9 +427,11 @@ impl Backend for UnstableBackend { &self, ) -> Result)>, Error> { self.stream_headers(|ev| match ev { - FollowEvent::Initialized(ev) => Some(ev.finalized_block_hash), - FollowEvent::NewBlock(ev) => Some(ev.block_hash), - _ => None, + FollowEvent::Initialized(init) => init.finalized_block_hashes, + FollowEvent::NewBlock(ev) => { + vec![ev.block_hash] + } + _ => vec![], }) .await } @@ -433,9 +440,9 @@ impl Backend for UnstableBackend { &self, ) -> Result)>, Error> { self.stream_headers(|ev| match ev { - FollowEvent::Initialized(ev) => Some(ev.finalized_block_hash), - FollowEvent::BestBlockChanged(ev) => Some(ev.best_block_hash), - _ => None, + FollowEvent::Initialized(init) => init.finalized_block_hashes, + FollowEvent::BestBlockChanged(ev) => vec![ev.best_block_hash], + _ => vec![], }) .await } @@ -444,9 +451,7 @@ impl Backend for UnstableBackend { &self, ) -> Result)>, Error> { self.stream_headers(|ev| match ev { - FollowEvent::Initialized(ev) => { - vec![ev.finalized_block_hash] - } + FollowEvent::Initialized(init) => init.finalized_block_hashes, FollowEvent::Finalized(ev) => ev.finalized_block_hashes, _ => vec![], }) diff --git a/subxt/src/backend/unstable/rpc_methods.rs b/subxt/src/backend/unstable/rpc_methods.rs index c51e5020cb..a1b04cad4a 100644 --- a/subxt/src/backend/unstable/rpc_methods.rs +++ b/subxt/src/backend/unstable/rpc_methods.rs @@ -359,8 +359,8 @@ pub enum FollowEvent { #[derive(Debug, Clone, PartialEq, Eq, Deserialize)] #[serde(rename_all = "camelCase")] pub struct Initialized { - /// The hash of the latest finalized block. - pub finalized_block_hash: Hash, + /// The hashes of the last finalized blocks. + pub finalized_block_hashes: Vec, /// The runtime version of the finalized block. /// /// # Note diff --git a/testing/integration-tests/src/full_client/client/unstable_rpcs.rs b/testing/integration-tests/src/full_client/client/unstable_rpcs.rs index 084c1223a8..66fcffdc9d 100644 --- a/testing/integration-tests/src/full_client/client/unstable_rpcs.rs +++ b/testing/integration-tests/src/full_client/client/unstable_rpcs.rs @@ -32,7 +32,7 @@ async fn chainhead_unstable_follow() { assert_eq!( event, FollowEvent::Initialized(Initialized { - finalized_block_hash, + finalized_block_hashes: vec![finalized_block_hash], finalized_block_runtime: None, }) ); @@ -47,7 +47,7 @@ async fn chainhead_unstable_follow() { assert_matches!( event, FollowEvent::Initialized(init) => { - assert_eq!(init.finalized_block_hash, finalized_block_hash); + assert_eq!(init.finalized_block_hashes, vec![finalized_block_hash]); if let Some(RuntimeEvent::Valid(RuntimeVersionEvent { spec })) = init.finalized_block_runtime { assert_eq!(spec.spec_version, runtime_version.spec_version); assert_eq!(spec.transaction_version, runtime_version.transaction_version); @@ -66,7 +66,7 @@ async fn chainhead_unstable_body() { let mut blocks = rpc.chainhead_unstable_follow(false).await.unwrap(); let event = blocks.next().await.unwrap().unwrap(); let hash = match event { - FollowEvent::Initialized(init) => init.finalized_block_hash, + FollowEvent::Initialized(init) => init.finalized_block_hashes.last().unwrap().clone(), _ => panic!("Unexpected event"), }; let sub_id = blocks.subscription_id().unwrap(); @@ -95,7 +95,7 @@ async fn chainhead_unstable_header() { let mut blocks = rpc.chainhead_unstable_follow(false).await.unwrap(); let event = blocks.next().await.unwrap().unwrap(); let hash = match event { - FollowEvent::Initialized(init) => init.finalized_block_hash, + FollowEvent::Initialized(init) => init.finalized_block_hashes.last().unwrap().clone(), _ => panic!("Unexpected event"), }; let sub_id = blocks.subscription_id().unwrap(); @@ -123,7 +123,7 @@ async fn chainhead_unstable_storage() { let mut blocks = rpc.chainhead_unstable_follow(false).await.unwrap(); let event = blocks.next().await.unwrap().unwrap(); let hash = match event { - FollowEvent::Initialized(init) => init.finalized_block_hash, + FollowEvent::Initialized(init) => init.finalized_block_hashes.last().unwrap().clone(), _ => panic!("Unexpected event"), }; let sub_id = blocks.subscription_id().unwrap(); @@ -168,7 +168,7 @@ async fn chainhead_unstable_call() { let mut blocks = rpc.chainhead_unstable_follow(true).await.unwrap(); let event = blocks.next().await.unwrap().unwrap(); let hash = match event { - FollowEvent::Initialized(init) => init.finalized_block_hash, + FollowEvent::Initialized(init) => init.finalized_block_hashes.last().unwrap().clone(), _ => panic!("Unexpected event"), }; let sub_id = blocks.subscription_id().unwrap(); @@ -205,7 +205,7 @@ async fn chainhead_unstable_unpin() { let mut blocks = rpc.chainhead_unstable_follow(true).await.unwrap(); let event = blocks.next().await.unwrap().unwrap(); let hash = match event { - FollowEvent::Initialized(init) => init.finalized_block_hash, + FollowEvent::Initialized(init) => init.finalized_block_hashes.last().unwrap().clone(), _ => panic!("Unexpected event"), }; let sub_id = blocks.subscription_id().unwrap(); From 8513ee158948be73b1c449004d8a35a26a3aad38 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Mar 2024 19:41:13 +0100 Subject: [PATCH 41/66] build(deps): bump js-sys from 0.3.68 to 0.3.69 (#1474) Bumps [js-sys](https://github.com/rustwasm/wasm-bindgen) from 0.3.68 to 0.3.69. - [Release notes](https://github.com/rustwasm/wasm-bindgen/releases) - [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/rustwasm/wasm-bindgen/commits) --- updated-dependencies: - dependency-name: js-sys dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Niklas Adolfsson --- Cargo.lock | 24 ++++++++++++------------ Cargo.toml | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 19dcfb3645..e5501a2594 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2314,9 +2314,9 @@ checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "js-sys" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] @@ -5331,9 +5331,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -5341,9 +5341,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", @@ -5368,9 +5368,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5378,9 +5378,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", @@ -5391,9 +5391,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "wasmi" diff --git a/Cargo.toml b/Cargo.toml index d7165f0dfc..e368336008 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -114,7 +114,7 @@ pin-project = "1.1.4" web-sys = { version = "0.3.67", features = ["BinaryType", "CloseEvent", "MessageEvent", "WebSocket"] } wasm-bindgen = "0.2.90" send_wrapper = "0.6.0" -js-sys = "0.3.68" +js-sys = "0.3.69" wasm-bindgen-futures = "0.4.38" futures-timer = "3" instant = { version = "0.1.12", default-features = false } From c988d25e0f4425c3ad3caa9b832bc099e504446a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Mar 2024 19:41:24 +0100 Subject: [PATCH 42/66] build(deps): bump clap from 4.5.1 to 4.5.2 (#1473) Bumps [clap](https://github.com/clap-rs/clap) from 4.5.1 to 4.5.2. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.1...v4.5.2) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Niklas Adolfsson --- Cargo.lock | 10 +++++----- Cargo.toml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e5501a2594..8797b9b986 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -854,9 +854,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.1" +version = "4.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da" +checksum = "b230ab84b0ffdf890d5a10abdbc8b83ae1c4918275daea1ab8801f71536b2651" dependencies = [ "clap_builder", "clap_derive", @@ -864,9 +864,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.1" +version = "4.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb" +checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" dependencies = [ "anstream", "anstyle", @@ -4545,7 +4545,7 @@ dependencies = [ name = "subxt-cli" version = "0.34.0" dependencies = [ - "clap 4.5.1", + "clap 4.5.2", "color-eyre", "frame-metadata 16.0.0", "heck", diff --git a/Cargo.toml b/Cargo.toml index e368336008..ddb3d2a6eb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -56,7 +56,7 @@ assert_matches = "1.5.0" base58 = { version = "0.2.0" } bitvec = { version = "1", default-features = false } blake2 = { version = "0.10.6", default-features = false } -clap = { version = "4.5.1", features = ["derive", "cargo"] } +clap = { version = "4.5.2", features = ["derive", "cargo"] } criterion = "0.4" codec = { package = "parity-scale-codec", version = "3.6.9", default-features = false } color-eyre = "0.6.1" From c9eba508adfe8f1b2f84da941cf494d0d613b9e5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Mar 2024 19:41:39 +0100 Subject: [PATCH 43/66] build(deps): bump wasm-bindgen from 0.2.91 to 0.2.92 (#1472) Bumps [wasm-bindgen](https://github.com/rustwasm/wasm-bindgen) from 0.2.91 to 0.2.92. - [Release notes](https://github.com/rustwasm/wasm-bindgen/releases) - [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/rustwasm/wasm-bindgen/compare/0.2.91...0.2.92) --- updated-dependencies: - dependency-name: wasm-bindgen dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Niklas Adolfsson --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index ddb3d2a6eb..af846b404f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -112,7 +112,7 @@ pin-project = "1.1.4" # Light client wasm: web-sys = { version = "0.3.67", features = ["BinaryType", "CloseEvent", "MessageEvent", "WebSocket"] } -wasm-bindgen = "0.2.90" +wasm-bindgen = "0.2.92" send_wrapper = "0.6.0" js-sys = "0.3.69" wasm-bindgen-futures = "0.4.38" From 8fc44ac7e4b51a23addcc06176c45002f89e6021 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Mar 2024 19:41:56 +0100 Subject: [PATCH 44/66] build(deps): bump pin-project from 1.1.4 to 1.1.5 (#1470) Bumps [pin-project](https://github.com/taiki-e/pin-project) from 1.1.4 to 1.1.5. - [Release notes](https://github.com/taiki-e/pin-project/releases) - [Changelog](https://github.com/taiki-e/pin-project/blob/main/CHANGELOG.md) - [Commits](https://github.com/taiki-e/pin-project/compare/v1.1.4...v1.1.5) --- updated-dependencies: - dependency-name: pin-project dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Niklas Adolfsson --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8797b9b986..d05ffebaae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2903,18 +2903,18 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index af846b404f..2d6f43c04f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -108,7 +108,7 @@ smoldot-light = { version = "0.14.0", default-features = false } tokio-stream = "0.1.14" futures-util = "0.3.30" rand = "0.8.5" -pin-project = "1.1.4" +pin-project = "1.1.5" # Light client wasm: web-sys = { version = "0.3.67", features = ["BinaryType", "CloseEvent", "MessageEvent", "WebSocket"] } From a44d28b26bd4ceaee6b719c45f947394885f633f Mon Sep 17 00:00:00 2001 From: "paritytech-subxt-pr-maker[bot]" <159533160+paritytech-subxt-pr-maker[bot]@users.noreply.github.com> Date: Tue, 12 Mar 2024 19:43:37 +0100 Subject: [PATCH 45/66] Update Artifacts (auto-generated) (#1469) Co-authored-by: tadeohepperle <62739623+tadeohepperle@users.noreply.github.com> Co-authored-by: Niklas Adolfsson --- artifacts/demo_chain_specs/polkadot.json | 8 ++-- artifacts/polkadot_metadata_full.scale | Bin 402123 -> 402202 bytes artifacts/polkadot_metadata_small.scale | Bin 69830 -> 69904 bytes artifacts/polkadot_metadata_tiny.scale | Bin 38035 -> 38109 bytes .../src/full_client/codegen/polkadot.rs | 41 ++++++++++-------- 5 files changed, 26 insertions(+), 23 deletions(-) diff --git a/artifacts/demo_chain_specs/polkadot.json b/artifacts/demo_chain_specs/polkadot.json index 6b715a7ac7..b4782a6900 100644 --- a/artifacts/demo_chain_specs/polkadot.json +++ b/artifacts/demo_chain_specs/polkadot.json @@ -43,10 +43,10 @@ }, "id": "polkadot", "lightSyncState": { - "babeEpochChanges": "0x04ad4c5d4ce4e7689598cb1a034e310d4b49a8d747570ffccc36ddfebcab9f2dac8f362d01013378fb10000000009381fb1000000000046a690e9e3ef109b31594ab8512ee6ab87516c7474c7561a6b8565d0e4e3a268ed23f2d01019381fb1000000000f38afb100000000008a39ffd114678a743574a02f96c4347c1ef02d4f3069aee13c08510c866cf98ae25492d0101f38afb10000000005394fb100000000000d11bad54f29791d523495959e233d6ed1ebc69a2547c7af45d98fe38b5c4c14c25492d0101f38afb10000000005394fb10000000000000106a690e9e3ef109b31594ab8512ee6ab87516c7474c7561a6b8565d0e4e3a268ed23f2d010148200000000000009381fb10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a54010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec2145417501000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b92001000000000000004ceef9b2b8e3b5cd971f7557c3a3ad02c9c7a7bbc7365c2db5622fa74853790d010000000000000034b9bf86acb3f518dd359690e3c47c50c7418fd2cb0ebd8c7cab6dfe2dea095b0100000000000000503cafb91c14eaa2931c4507090b27170b90a2a76d3cd4669f922202c781fc350100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b0100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a935010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e4775887897201000000000000008a2ad071bfcfa2e03d48baa21d9e6118e8ac1192495edb1d84872041bee490040100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000e4ba5ffce05c90e6a5eea52b15922b6b3a78d13ca98f53fdbe08e5c24ce3c84101000000000000003057a5ccdbce651c71b1ce9d48e9fa23e6720e8e2bbf52f65a0ed14e4a6f3f700100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f01000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b740100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc190100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a010000000000000080c4603361b35d83eb9195126bfd81d8f1c49182c48e8f18e7ea772ff2bfd9400100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f067877170100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf71010000000000000058ca41f3fb960be9f54fcbfba3961d37709552b4b248bcd1f7f820ae3aaabc07010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e70210100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf080100000000000000be03fe6bc03a7884524047567a8ccf43b3c988bf3b447ca9e1520d1c1f83c53901000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b01000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb5501000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000003635c55546f19bfe62d84a220c4396b1c9d71a1acdb2da917a82f0c1415a2b020100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b0100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d87081320100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a796260100000000000000344589372873125fd660e2ff3ad9bf67230f9306acccaea070aed322a8ede264010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d0301000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000e850ee212192b3a62e0fb81140333b45c16d4f18479388d4dee1ec38f9ee5234010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a0100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b35150100000000000000800dd25a7aea3fd7359065185cb35b4a2fad0b81b3d58de638e6764dc8a8211d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e638010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb1901000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f610010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000024190e384934261c444897054262813c65a73aaf371806db97762e995e5b350e010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f845010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c81360100000000000000e63a8ae6fad7457095d994ce2da05fc637122d2ca0c4cf7aa76a0f07192a3d6901000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f4953330100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea8400100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d7101000000000000004678cfe8b5ab7811861b19336b572f9c7175ad92efbd8a031e5fcdda58173f510100000000000000d878a4f7ee2b2bcd16621a1a7e7f05f85c769a45d2a84304d4a8c0237287c501010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d0100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000b2967e3480b89af39e38367f948fb287568f27bfdac4b65fbc9d97536c79c7000100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d4101000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e0100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d80666401000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e01000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c230100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e2529010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da7201000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c49142010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f0100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e82301000000000000006eebb90d453e3e26540730fe99339d907a0e46365f6f2c8e2bd1a2dc83c2897e010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac56101000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000003213885ba6fd707b0716aeaad959cd824ab2f854e55963d9e69af006d194d51f01000000000000009a5099f6a61d1742af35c996ea7dc209517bda54bb8bd73a1a3618e39959902b0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de320100000000000000b64ba96a10f5387463bc1d09b8fc05a810215959727960267a6ba046ecb32942010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a463010000000000000000ac029d5e4ce570bafb50b677fed13d43eefcf0075b3ae2520be959c9782f1201000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d0100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d6901000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f0100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a010000000000000078f6eabfa5ce5c858c1d0d378fea88e98bbad82c6c2acb6c587bde67066f695501000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad2102010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e01000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000007836f32cd0a6a6ba2448cc32c48b0434efa8c92073a139f305aae8e73d2c844901000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f076852010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc240100000000000000ca526faf8ee5263d4006452735885dce304cf724040fce84399254d9160d6f350100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c280100000000000000e05c7c7d82498be85294ee984e1f0caf23c53fa9a64cc7e6c5053304c4bb785101000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d61010000000000000048970bde717a65371534a2b878995c8bc6c230d556035fa003da1c523092332a01000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b30401000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000002e1c4e3a1474325086c1ebf51c0cb6d335242921c645b7d0e070d9aa092afa680100000000000000683ce8ca29f09be942c929571aaa188b89625f28569721b41eb48329dc1b4b0a01000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000a2259245fb5a7251b99ee8f307b97ec6e7f20081c1f75284aa9b433153d888160100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf0043010000000000000036cc7d2df6c7b0ff8b0ec254297b35a8d235f7086fb54a3f9013a3a38809ef770100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a18432201000000000000009d178b3894ab647ea01b24f37b7e08786bfc0fe3e2d6473ca018bb3f915989bf0100000000000000040000000000000002a39ffd114678a743574a02f96c4347c1ef02d4f3069aee13c08510c866cf98ae25492d01014920000000000000f38afb10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a54010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec2145417501000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b92001000000000000004ceef9b2b8e3b5cd971f7557c3a3ad02c9c7a7bbc7365c2db5622fa74853790d010000000000000034b9bf86acb3f518dd359690e3c47c50c7418fd2cb0ebd8c7cab6dfe2dea095b0100000000000000503cafb91c14eaa2931c4507090b27170b90a2a76d3cd4669f922202c781fc350100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b0100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a935010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e4775887897201000000000000008a2ad071bfcfa2e03d48baa21d9e6118e8ac1192495edb1d84872041bee490040100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000e4ba5ffce05c90e6a5eea52b15922b6b3a78d13ca98f53fdbe08e5c24ce3c84101000000000000003057a5ccdbce651c71b1ce9d48e9fa23e6720e8e2bbf52f65a0ed14e4a6f3f700100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f01000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b740100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc190100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a010000000000000080c4603361b35d83eb9195126bfd81d8f1c49182c48e8f18e7ea772ff2bfd9400100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f067877170100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf71010000000000000058ca41f3fb960be9f54fcbfba3961d37709552b4b248bcd1f7f820ae3aaabc07010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e70210100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf080100000000000000be03fe6bc03a7884524047567a8ccf43b3c988bf3b447ca9e1520d1c1f83c53901000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b01000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb5501000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000003635c55546f19bfe62d84a220c4396b1c9d71a1acdb2da917a82f0c1415a2b020100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b0100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d87081320100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a796260100000000000000344589372873125fd660e2ff3ad9bf67230f9306acccaea070aed322a8ede264010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d0301000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000e850ee212192b3a62e0fb81140333b45c16d4f18479388d4dee1ec38f9ee5234010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a0100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b35150100000000000000800dd25a7aea3fd7359065185cb35b4a2fad0b81b3d58de638e6764dc8a8211d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e638010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb1901000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f610010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000024190e384934261c444897054262813c65a73aaf371806db97762e995e5b350e010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f845010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c81360100000000000000e63a8ae6fad7457095d994ce2da05fc637122d2ca0c4cf7aa76a0f07192a3d6901000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f4953330100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea8400100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d7101000000000000004678cfe8b5ab7811861b19336b572f9c7175ad92efbd8a031e5fcdda58173f510100000000000000d878a4f7ee2b2bcd16621a1a7e7f05f85c769a45d2a84304d4a8c0237287c501010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d0100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000b2967e3480b89af39e38367f948fb287568f27bfdac4b65fbc9d97536c79c7000100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d4101000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e0100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d80666401000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e01000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c230100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e2529010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da7201000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c49142010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f0100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e82301000000000000006eebb90d453e3e26540730fe99339d907a0e46365f6f2c8e2bd1a2dc83c2897e010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac56101000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000003213885ba6fd707b0716aeaad959cd824ab2f854e55963d9e69af006d194d51f01000000000000009a5099f6a61d1742af35c996ea7dc209517bda54bb8bd73a1a3618e39959902b0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de320100000000000000b64ba96a10f5387463bc1d09b8fc05a810215959727960267a6ba046ecb32942010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a463010000000000000000ac029d5e4ce570bafb50b677fed13d43eefcf0075b3ae2520be959c9782f1201000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d0100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d6901000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f0100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a010000000000000078f6eabfa5ce5c858c1d0d378fea88e98bbad82c6c2acb6c587bde67066f695501000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad2102010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e01000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000007836f32cd0a6a6ba2448cc32c48b0434efa8c92073a139f305aae8e73d2c844901000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f076852010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc240100000000000000ca526faf8ee5263d4006452735885dce304cf724040fce84399254d9160d6f350100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c280100000000000000e05c7c7d82498be85294ee984e1f0caf23c53fa9a64cc7e6c5053304c4bb785101000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d61010000000000000048970bde717a65371534a2b878995c8bc6c230d556035fa003da1c523092332a01000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b30401000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000002e1c4e3a1474325086c1ebf51c0cb6d335242921c645b7d0e070d9aa092afa680100000000000000683ce8ca29f09be942c929571aaa188b89625f28569721b41eb48329dc1b4b0a01000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000a2259245fb5a7251b99ee8f307b97ec6e7f20081c1f75284aa9b433153d888160100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf0043010000000000000036cc7d2df6c7b0ff8b0ec254297b35a8d235f7086fb54a3f9013a3a38809ef770100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a18432201000000000000005e5bb43d13a2a07aeba5e7bb79c0d0e5c434cc1afb5c528be0c094b0b26762820100000000000000040000000000000002ad4c5d4ce4e7689598cb1a034e310d4b49a8d747570ffccc36ddfebcab9f2dac8f362d010147200000000000003378fb10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a54010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec2145417501000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b92001000000000000004ceef9b2b8e3b5cd971f7557c3a3ad02c9c7a7bbc7365c2db5622fa74853790d010000000000000034b9bf86acb3f518dd359690e3c47c50c7418fd2cb0ebd8c7cab6dfe2dea095b0100000000000000503cafb91c14eaa2931c4507090b27170b90a2a76d3cd4669f922202c781fc350100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b0100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a935010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e4775887897201000000000000008a2ad071bfcfa2e03d48baa21d9e6118e8ac1192495edb1d84872041bee490040100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000e4ba5ffce05c90e6a5eea52b15922b6b3a78d13ca98f53fdbe08e5c24ce3c84101000000000000003057a5ccdbce651c71b1ce9d48e9fa23e6720e8e2bbf52f65a0ed14e4a6f3f700100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f01000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b740100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc190100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a010000000000000080c4603361b35d83eb9195126bfd81d8f1c49182c48e8f18e7ea772ff2bfd9400100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f067877170100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf71010000000000000058ca41f3fb960be9f54fcbfba3961d37709552b4b248bcd1f7f820ae3aaabc07010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e70210100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf080100000000000000be03fe6bc03a7884524047567a8ccf43b3c988bf3b447ca9e1520d1c1f83c53901000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b01000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb5501000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000003635c55546f19bfe62d84a220c4396b1c9d71a1acdb2da917a82f0c1415a2b020100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b0100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d87081320100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a796260100000000000000344589372873125fd660e2ff3ad9bf67230f9306acccaea070aed322a8ede264010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d0301000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000e850ee212192b3a62e0fb81140333b45c16d4f18479388d4dee1ec38f9ee5234010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a0100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b35150100000000000000800dd25a7aea3fd7359065185cb35b4a2fad0b81b3d58de638e6764dc8a8211d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e638010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb1901000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f610010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000024190e384934261c444897054262813c65a73aaf371806db97762e995e5b350e010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f845010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c81360100000000000000e63a8ae6fad7457095d994ce2da05fc637122d2ca0c4cf7aa76a0f07192a3d6901000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f4953330100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea8400100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d7101000000000000004678cfe8b5ab7811861b19336b572f9c7175ad92efbd8a031e5fcdda58173f510100000000000000d878a4f7ee2b2bcd16621a1a7e7f05f85c769a45d2a84304d4a8c0237287c501010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d0100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000b2967e3480b89af39e38367f948fb287568f27bfdac4b65fbc9d97536c79c7000100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d4101000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e0100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d80666401000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e01000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c230100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e2529010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da7201000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c49142010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f0100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e82301000000000000006eebb90d453e3e26540730fe99339d907a0e46365f6f2c8e2bd1a2dc83c2897e010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac56101000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000003213885ba6fd707b0716aeaad959cd824ab2f854e55963d9e69af006d194d51f01000000000000009a5099f6a61d1742af35c996ea7dc209517bda54bb8bd73a1a3618e39959902b0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de320100000000000000b64ba96a10f5387463bc1d09b8fc05a810215959727960267a6ba046ecb32942010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a463010000000000000000ac029d5e4ce570bafb50b677fed13d43eefcf0075b3ae2520be959c9782f1201000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d0100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d6901000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f0100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a010000000000000078f6eabfa5ce5c858c1d0d378fea88e98bbad82c6c2acb6c587bde67066f695501000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad2102010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e01000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000007836f32cd0a6a6ba2448cc32c48b0434efa8c92073a139f305aae8e73d2c844901000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f076852010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc240100000000000000ca526faf8ee5263d4006452735885dce304cf724040fce84399254d9160d6f350100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c280100000000000000e05c7c7d82498be85294ee984e1f0caf23c53fa9a64cc7e6c5053304c4bb785101000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d61010000000000000048970bde717a65371534a2b878995c8bc6c230d556035fa003da1c523092332a01000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b30401000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000002e1c4e3a1474325086c1ebf51c0cb6d335242921c645b7d0e070d9aa092afa680100000000000000683ce8ca29f09be942c929571aaa188b89625f28569721b41eb48329dc1b4b0a01000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000a2259245fb5a7251b99ee8f307b97ec6e7f20081c1f75284aa9b433153d888160100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf0043010000000000000036cc7d2df6c7b0ff8b0ec254297b35a8d235f7086fb54a3f9013a3a38809ef770100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a1843220100000000000000977ec9303e296a197ae58c8ffc6e55679a99adf1b894d009dfd66d2b3f59a3d20100000000000000040000000000000002d11bad54f29791d523495959e233d6ed1ebc69a2547c7af45d98fe38b5c4c14c25492d01014920000000000000f38afb10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a54010000000000000072ab87b654d80294c876cbefb534b3344c2f64159b015b89221331ec2145417501000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b92001000000000000004ceef9b2b8e3b5cd971f7557c3a3ad02c9c7a7bbc7365c2db5622fa74853790d010000000000000034b9bf86acb3f518dd359690e3c47c50c7418fd2cb0ebd8c7cab6dfe2dea095b0100000000000000503cafb91c14eaa2931c4507090b27170b90a2a76d3cd4669f922202c781fc350100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b0100000000000000e07afc6e4b429df62183d1e1c417703cf8467e0f1bc61f7e33954d8336c7a935010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e4775887897201000000000000008a2ad071bfcfa2e03d48baa21d9e6118e8ac1192495edb1d84872041bee490040100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000e4ba5ffce05c90e6a5eea52b15922b6b3a78d13ca98f53fdbe08e5c24ce3c84101000000000000003057a5ccdbce651c71b1ce9d48e9fa23e6720e8e2bbf52f65a0ed14e4a6f3f700100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000007c5f58a83f8101943c089dba3ab906c07811e853444aa58dbcc986c4095fbe7c01000000000000005494142902284943201b7cf610306e8665eeeec87c014d607175c3f50f76103b010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f01000000000000004e2753547f6ec0a896bcbc55b9eeab875e8019acdeb10b979210af63f24c4b740100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc190100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a010000000000000080c4603361b35d83eb9195126bfd81d8f1c49182c48e8f18e7ea772ff2bfd9400100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f067877170100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000009a6223b8a7aac3a28f958d9f6c6abf55f87a38cd22fa563d6327a4d86da7b64d01000000000000006ca924ff8f8e69b8ea54dc988c67fbfc1d955f357f01e5ff4b8362ad7d756c3701000000000000009e280c8deea88069fe5118eefbb994d01373ff5dc213a65d06e6873b528f6c2f01000000000000002834c706b030a82a81ec43e2faf26a7d00392e1d8f2de8b7a876183ab612cb180100000000000000d0189a530b4048501596c4530054fe89f017360402da0ac197a8100ac693b06e010000000000000006ced0dafbe316bc507cfa57f506a58ad57ba7a69a8291ef87e8f0f5dceff6040100000000000000364360b4881f0f2831a226a422c79348776d43a2365dd636dea05a09381f8c2e01000000000000009092f9e937617716876caae2eee008bd44b0d0ed3f3af47073dcab55fcb1d5740100000000000000a86c7bdf11794e554439b09f9f294c8e0abaebf447c7bc54419434b8b95f864901000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf71010000000000000058ca41f3fb960be9f54fcbfba3961d37709552b4b248bcd1f7f820ae3aaabc07010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e70210100000000000000e8308668e9f16683cc739791a6dd530b819f45e4ade2113ee2f27eed1c51d1200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf080100000000000000be03fe6bc03a7884524047567a8ccf43b3c988bf3b447ca9e1520d1c1f83c53901000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b010000000000000026d421de2e7251020ac2f8b8c7e348aa904dcaf0b6d5d73fa0113b476f7dd9030100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000004e5b37f3ecd0fb3131aba488083c145d60b924ef98b286a0066e0ded309e886b01000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb5501000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b0100000000000000fe3b55d17e25c44a3568885d9d37276df81fa5225d9d73ee67321c7826581b5a0100000000000000faa52c51af82fe8fcdde5ffa213721a8395acf22e30bbd2aa420626571e6183d010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000003635c55546f19bfe62d84a220c4396b1c9d71a1acdb2da917a82f0c1415a2b020100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000009c1863aefa0b4d5f3d48275769ad0ed04e1428db9694d83b9bb8b5d833f1b41101000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b0100000000000000261ac3229b4bb7a376c37f17e287b2eb596d3b478370b722b6b41443d87081320100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a796260100000000000000344589372873125fd660e2ff3ad9bf67230f9306acccaea070aed322a8ede264010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a52010000000000000098cd0a4eae6f560a9e760f8b806b36861b805798b4ee0ada29f6841855d51d0301000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000e850ee212192b3a62e0fb81140333b45c16d4f18479388d4dee1ec38f9ee5234010000000000000004ba7eb24012b133b20a8021b603a1483c4a5b9ad3415a4d7ca2b1ad625719550100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a0100000000000000ea6acde5149e930af7bc3b17b7f0bdcf12dfd3dc3437f774f823bbeef420a97201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b35150100000000000000800dd25a7aea3fd7359065185cb35b4a2fad0b81b3d58de638e6764dc8a8211d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e638010000000000000014e2f25dd3376eb7978d413c14322704a2ff3d9c0c2971acdcdf9720c2c13d6b010000000000000014cf97e739cfd033c2828f25ad3f15e8f6ef62ba97dd74164e77e61eb85454260100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb1901000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c74450100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f610010000000000000020778d1b86af98ab30d7adea5f3a4f215d6d4a9fdc892d8999275b2c311fb05f0100000000000000b48cf50a4f94e83450a791d6de965c3e8127c1c915208f2b85df4c3a84b2042f0100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000024190e384934261c444897054262813c65a73aaf371806db97762e995e5b350e010000000000000086cca25ca588d995ba36f447a87ee00073a24190e8335247875e1bb25823f845010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c81360100000000000000e63a8ae6fad7457095d994ce2da05fc637122d2ca0c4cf7aa76a0f07192a3d6901000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f7601000000000000001cbfaf2b91ee79c6288ad01dd5787070b34d5e1b8253a1765904eaa7d0b93f020100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000608b753074d6a1fd8e099224a7495f61e3db2cb91e1e88553113057a5f4953330100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea8400100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d7101000000000000004678cfe8b5ab7811861b19336b572f9c7175ad92efbd8a031e5fcdda58173f510100000000000000d878a4f7ee2b2bcd16621a1a7e7f05f85c769a45d2a84304d4a8c0237287c501010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d0100000000000000e682cc2e71eeebb447a353fdf541b2ce7f9920ea1ad2d832bc35e3b49169bb6901000000000000008ec5856a5fd17617c0af76efea16a87d0c5e769eaad39e91c40dac93fb067d5d0100000000000000b2967e3480b89af39e38367f948fb287568f27bfdac4b65fbc9d97536c79c7000100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b01000000000000009e5b6a03be0ed1cb27d61340f02efd1a285cf73519dead55195f001ffa274d4101000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e0100000000000000a6cfacf0aff2d5c6e8eadf71f397a64f2863e5f0b8793e3068aebd5b3030e13101000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000469d81e8b43725a64da6b1ce10eb53eebe1aaebb9703f75ed452e12f45d262730100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d80666401000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e01000000000000001e9c3192d1c2e7e1d5aa731c1bd3ffac1b55bfff1cc1beb0745a6b54b4b32b180100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000382fb32d7c8868ce3765e9ccfb462c04071a3d70cab3382c796a9115ab0c310301000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c230100000000000000fe2848018ac215f72f551e58dd2d065d99b788b5a7aa59b9f9fe47a5bdbc046d0100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e2529010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000343a9649237a3b9ed165df5a8b6655996a9920091530b4896b0edfa3afefa60e0100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da7201000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c49142010000000000000056606b6532cdbf27358fd067d61c2a65e4b3e8934c266a857320ff18e5c7654c01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000105cd6ed1f55fde42f7c82d0667316a4f1e26e9e53d96f540e5aff8905897b5c01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f0100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e82301000000000000006eebb90d453e3e26540730fe99339d907a0e46365f6f2c8e2bd1a2dc83c2897e010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe08372156001000000000000001e2543674c697ffa09657ce9f9c4b610e46da5d73124410b327e6ba5d432263c010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000001ab9d2c814ed7a719ef2aa94dcf4db8aaa0315a59d4b5699e86656a6ee9ac56101000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000003213885ba6fd707b0716aeaad959cd824ab2f854e55963d9e69af006d194d51f01000000000000009a5099f6a61d1742af35c996ea7dc209517bda54bb8bd73a1a3618e39959902b0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e010000000000000042c56bdb09d52942b0fedb07045113a641e2fd64a428b1fa608b5adff9ff4d640100000000000000fab301ce05079af0f67a042f807cb17a770c0e1a2ceb3d956d569b44625df87d010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec172010000000000000012af78070e965616e16ab8cdceb871c02e09b180e3f0a69083419196c9ec665d0100000000000000f29cb4064a1cc3a79da2c9a9f336053cc69d50bcc737257ca2f071c37030510a0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de320100000000000000b64ba96a10f5387463bc1d09b8fc05a810215959727960267a6ba046ecb32942010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a010000000000000034caa67978c1a5280b5f58196edcdb5c864b02d0fd40af9c6e6b9716f3fb12680100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e010000000000000036ff2156d388346076b08a5c89aa760b714eb1bd293e2f3e4c4f35049cca9372010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a463010000000000000000ac029d5e4ce570bafb50b677fed13d43eefcf0075b3ae2520be959c9782f1201000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d0100000000000000526fdfd1d78345a1b2843d392122962cf89a4f157af2a3d0c99607f506175115010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b0100000000000000a6730d04d45ee4e7e25d3f7b80b4e2ac12a6644a4128127fbe97e97a1d690d6901000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000b6ad9df8c32a78e9481e75f484fd0b740554276c026736f0dbac0987db0885670100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f01000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f0100000000000000ec19137bec15ab7c3cd7625e029b026746f6a90d28bf28cfd61457c40a8f26660100000000000000cc60431feaf7f1bf42d805f0c12a1978ca9b3ec0a21397a71ecfc2bb7d52d20a010000000000000078f6eabfa5ce5c858c1d0d378fea88e98bbad82c6c2acb6c587bde67066f695501000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad2102010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e01000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000007836f32cd0a6a6ba2448cc32c48b0434efa8c92073a139f305aae8e73d2c844901000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f076852010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc240100000000000000ca526faf8ee5263d4006452735885dce304cf724040fce84399254d9160d6f350100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c280100000000000000e05c7c7d82498be85294ee984e1f0caf23c53fa9a64cc7e6c5053304c4bb785101000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d61010000000000000048970bde717a65371534a2b878995c8bc6c230d556035fa003da1c523092332a01000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b30401000000000000009a62ccaeef1677fa3fde2e172bcea58f695a34304ccf5594b74fc7a7ce9fdd0001000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c28674601000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000002e1c4e3a1474325086c1ebf51c0cb6d335242921c645b7d0e070d9aa092afa680100000000000000683ce8ca29f09be942c929571aaa188b89625f28569721b41eb48329dc1b4b0a01000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000a2259245fb5a7251b99ee8f307b97ec6e7f20081c1f75284aa9b433153d888160100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf0043010000000000000036cc7d2df6c7b0ff8b0ec254297b35a8d235f7086fb54a3f9013a3a38809ef770100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a18432201000000000000005e5bb43d13a2a07aeba5e7bb79c0d0e5c434cc1afb5c528be0c094b0b26762820100000000000000040000000000000002", - "babeFinalizedBlockWeight": 4930225, - "finalizedBlockHeader": "0xdc8bb9ae1cef343fdd3953b848edb19d610dc774944b22c15ec9ab7b5a0d9fa72e2bb504cd68b77582e8272036e0fa710eb66c65b573d856e1c187df518ec4508c10fa6a0f038624486fee388df78a7b1f4a825281444dd7daebb2210ba94b65f956c03e0c0642414245b50103dc0000003b83fb10000000001226f6ab7b885bb9fd819a16ec72d031107f5aa04437340b9ee29c0c1b4b4f16fb1406351fd2bb9f7e9113635058eb595111adf9f7e6603d7c8f0605030345038050138f0ffaf501e3c2066daefaa654f2a8bf379243e9d215ea2e6c8b547e0104424545468403655ade9f06258891acab40411195e76791e4043d71903203f70a7204e84a41660542414245010176889e9683a83c8df341db3622e4a75becb6fad5f2d7990a01b2d44c6dde9772e5c140580136ad0fa6cce8685f8127e02b46b4d37c5f36fbc2c13fd1467faa83", - "grandpaAuthoritySet": "0xa5046f706506065685b322054d22e8a1f23ca9df75c32a88dda5214ad58b553b4cca01000000000000008a239af78d4659897af698b5670533fa6d215864be8c41e3a2fc4309f9f83dcb0100000000000000e2b9e72d9202e99526fa626d9a6651dfd7c1daec8fc6ba1130af96f7d21a42da010000000000000047f940bc985355be7187c709ded2b689b66d69e61e293a507f1d4f90bdbeceee01000000000000004a3fc0fe1020c7f460c7bd23d0b657c03368552b2f0a12d80a1c406fd066e0db01000000000000009b992b5e9b99eb2cd3b2b648d6db81ed722a2feb4938d998b58dcb5d159fadfa0100000000000000aee9de3938173700b3e3f4fbf2b200ae296173a0854157f40de2598dd4cad8f101000000000000003255f477781804204f24ddfd080346b0e75c7c5a92b37cec1fbbe79fa93407b0010000000000000057c55b2bbb6b86d6e9aedef9b51904ec5b29d8c1271308aa625fa445532738320100000000000000ed70004b41d483626fb8080957192ded96e08afe38fd0d185ea02bbf3b2f6a760100000000000000243f110deac5efe8e963d794eb8706a1895ae1942523ab0fe9e1623515b7dea80100000000000000b61e9b13e849779be8f5378a670d61991875d8e091f359384d7be73d02d506930100000000000000426b2be4596a759a15028d84e08c5c56440e6cede68d088f47c671cc3387c3e6010000000000000070ba6e5985990ba1b1392713236f1b50df750f10f744cc6eb95fa7c5cfbc68760100000000000000d343862beda4cf485b4a3b7e9b62d3b7e6263b47f65a7c88c88f6e0f1350c7a50100000000000000e511d441d6d3c822cb276bb2a14b1c8071d9fe1995802383fb5dcf8a92edcfc20100000000000000a15896b8bbf01f757f120813bc2e78b21388eea66db4b0dc2e1afeabd3d46dc00100000000000000be2235b9d9c9164f494dd688000fb569a37d5c47912ef99b9ebda9318d13345e01000000000000000139b946b46bee4c61be50c986f2a9ef2e76917644e2ecd842c59d61a94ee612010000000000000019a9d56ea35496122fc44fcb5c29d27fbb43520556d6f8d97753767aaa0f228e0100000000000000a8dbfc6cb88ac105e25b9dc7f11e883631824647cd4d0c18014bb6239627b2900100000000000000a5b094ae7c156592baa68ce18dab6368d5b665e9a0f07dfc5f54f58309e086c10100000000000000c8579421534e4e52ba78c6ed533bf75fabfef7148b439a7585754a7cb0b89222010000000000000041ef4a31eb7dc1e01f4630604e1908e644d7cdee3f66a60f98d6d59605326f8b010000000000000097743d6364cdb6c4790cd37c4c2ab5fbc6c65e8bb606625e70a6ee04ed1650d9010000000000000008cc1d6c743da905511a39a6f0a68809a6bc32f8ac25e53bb2d6aca4f493fc9b0100000000000000f7e159462ec9dc0e54c6f6b8a83c4b551ee91613cad4208bbd563f16418328710100000000000000c442b92816b7325602d86354ffdb7dc272c56468f3bb8d6c659e47b31deaa2c40100000000000000acd71d4269b3ba2a9de822d494c4d841708e1519c08de41d7fc6153eaf48da810100000000000000d04d64a07f144638f20f081de122b88fed0cc8bda57e4810e7afb38036dd8bbf0100000000000000f26945a8a64032a1defa76e720a99649125b55751b6088205e7acab901de670b01000000000000005cba2c6f569da1edc3778308da406f266aa53140381dbb3f14f22909ba6e30040100000000000000dac2e90de824b109043f70818d53eabe05e79d518bda504e951d7f4056b0b2720100000000000000652f455eb3d30486151c716a4031bc02bd00254ef3e8290fd29f946d958a46b60100000000000000589fc35b132ef9d7ed9a6787a203e5a3a37f8cd6c775f47ac5e589d55d381a6401000000000000006f4855725ebb9eced957bae43ffa7d30657ce7d06b251ce20e2218bcf929e4050100000000000000dccafad8bba5affbc80095564afc9376881907073a060979fabbb962bef08d560100000000000000c1758f7cbffeb844419bc494a9dc65fb394259f01e9bf23789a75acc29d7d9620100000000000000c1c1ff5f66fefb5c0849e3b2333411d1f7e9dd4888600e334e7a33623f15fa360100000000000000fe240e80ff8a48a77947b394979cf361017cd906ddaab637d72cf72e729d79bf010000000000000006854c73f5703242d31d2576ac2297c93f0b5dc16ade0097c59d5dc0faa43c550100000000000000fa2c21f1a03638d4cb35202102240c2b85f5667924d5838cc503721117049da601000000000000005f1a6f53d3bc80af21811c76e22269c1d3dddf9b86c8b8d2faa3a1f92d830f8101000000000000008aabd4f6d7ecec7a749c83fc7be33f3b4818cca6f93a4927b4964900df9454e50100000000000000fcc0d954c7d519851e0094cd9a015b4789022a37091e3a04791d0731bd85f0d301000000000000003948bfd09bbbc2fe6ac5dfe53146e32df50828eecf7b2b18cdcff8dc385cbd750100000000000000a2a4af2a11ae7ba812fcc32845583d0354a0f2ffb1271a53c9a976a0f47fff44010000000000000058e304af91397247f704ce95d60845629aa59a50fba1c13896bb2300708db4720100000000000000070bae15860ce96e4a0cbdcc051c75e37a458c8e6c5ae59681d0ed938e588d4501000000000000003ec37919f9f43a9f85f539edfde3ceebea1b0e8279cb036641d588a9da81a6ad01000000000000005e48598ca89db19a4c279a251216d81e33f6b69e7d2ab4450968a1f9409df4a30100000000000000f510cb6c7032c9134dd3e50014ff6d391cfc91606d003fd4acd37e00f919d8350100000000000000cbd74a646a84b73518eadc73b1983dc9733839739576af9a98c698070a3a4b590100000000000000d2e72b0ab02a001b2e573c0d3b78404a7d3c600c3a9fd8ef38e823cad6ed3d6601000000000000003047f8f7e9c47fda9130ccd57d5dc8d407bd89b8dcf8ecbaccf00da184c73a570100000000000000024743c39cd9e151344dc23c65ee0346132d190a224b687be5c5ae31c5e7bb0a01000000000000004e3fb8c16ad624c1852777456805e5352d0221269de66949c95da4076206b35a01000000000000007ad55381f9de00220678c95a19489640fc61331e2a40d927e3d833555575c6fc01000000000000009b11703e71109c2f7e5d5ed6780e867236062929da90c70ea616af2e99e80f2d0100000000000000b98c920666586f392d129d480e78a965764ac82de45e691589b3aab7831a7f020100000000000000cb92ffeace78dbafe6fbf275741b4b38657fb81590712aa0bca7877931f6ad39010000000000000034a18d21097f479eecbe51b91c522a798582caafc787134bab6888854742406e010000000000000027791275ae7d4735aa45e70210663067f7d268aa57126a26044c8f6d8572a7d80100000000000000f7c9f4bc8669969246cfb748ac6996db6cd4c1fc634d981a1093b2c3d7a2eadf0100000000000000ba95f5d0e987305bb794dfeae69d7dd6a7987aa66cd7c9d42aca15e9160ec6a10100000000000000ffd82ddc49373448bed6feb0032744e20068f4e21adc4cb6d2cbf05ce73f4ce40100000000000000a9f24f0208a21e8cda4e450c72074f20d76a927bb80fa4418e480e0b59575c6b0100000000000000507b0289bfb2f55c7a62ec3c3298690909013c916dd5885b05b330fdc0caf127010000000000000016278af083f6d261762f8a97b6a09ff83e2f5927ce26c2e48f3c7e771dc7e6950100000000000000c49e3cd2c701bb845963c2870dcca12ed070c3f67ffc20144327a93aa6e896ec010000000000000081b1fce3ee9e31723f1023eaa9f8793e8663e72c50fbb0fbcea9bc78bacc491b01000000000000002dad5b2212ee688f2eeb9ca1fb6a90574f006dc1c6680ac3a8523363a248940b010000000000000067ccabbf18c035791cee9c748bea2ca03cf72c40f5ae786f297f84fb05973262010000000000000050f9fd6c0623020debb7843bcb832ee1d80db9b156d8e6083ccebd434fe979470100000000000000b8183b905f28b87c68c2d5b2f39f009f2ee22b47235f6c6d6cf6e63121b490300100000000000000b7c13f1239888cda5c8e6ac9ea10675df17633368906e66a487f91ddd3268ca601000000000000002cd51e09c3197e04155b78f3d97742ceffface390dc46f81f2613a94b2e483fd0100000000000000affb713ecdae328aa4436756f6a3e8add6b274d5ef1cc19d7aa69ab82c80e472010000000000000052912b3dfd0ccacd00586b97f1abe32431a2f6fa9c2b3bb17837a1ecde61728001000000000000008a2b50acd1a4955fc814bf6720c7427902a6ce709f3a2d7c17c55b67f6f1c06301000000000000003a511828c0cdc0fd257387843fdbf6f19d5ca1ef1c29ec7e971fc9f1195eb60c0100000000000000ee5605c1a9ed9484a70b8a591339830f24530eefc4599a7c6188a78896908e2c0100000000000000ad06042b85ed16ff4e46f5a68eba9ac12395366ab17c2da24b4f6747b2c8934f0100000000000000d1c146d2429a5a827660008721c7a880e71f44feaa3dc75524c1a9281bac48cd01000000000000005d2b07941a21adb6ba52298c2f0b0bdb6023e4a1713018762a5f61973b2fd1e80100000000000000e4b2cffd0b9cacfc500050b27ecae3c55b9b51bd9a416d62605118c8ad4fb09f0100000000000000b28ba3f09e3521f7d09f0098c6743bc218ee2970068adfa5d908d9d06e627ae50100000000000000f6d74de7b39455519a5d6480c8f12c93fc7a4cfc9af39154fc60857a39ad888b0100000000000000c8be78d05f652edd0a64a5865455de36d0fadb0d91c470fd344f8de23c8a6b9c01000000000000002bb7b11dfe79a12110b0370510ef20d40ba8a563f517310f8bf37cf7f0403de40100000000000000f5fef7a87c9f3917fd28640907ce59ad26f33e41baa25d8ead8033ae0b944d7901000000000000005d0124063ede3e49f037df33948477235e5a58f93f8b98bf7203f25e11d4f0b4010000000000000040533a786cd0be9618126633512666b1b1b9ab3b436fa653c93e2f65da9c196b0100000000000000be95095d93298171c6fb8a1847adfa173d127e13f53482dcb694f891d68f0c58010000000000000085b714accac0654ba57fac59b626dd35802269d2c1d995cea7c335cb05a88f7f01000000000000006a5f902cdeda2c2161d16bd21d586720c08c0bbb7b463d9c59147338d26a8a9601000000000000009c11e35911f023df6e4d218e53412ab4e4a20c17961d63ba381c913b51f394c001000000000000007448b6f6db7cfffd8650a1f3f08ddad1e114321ea770c9cfe6154882f586edb50100000000000000ffcca343512faeffe1cb3a8a7ce62fa4ee0c7f6a5f3e5ac883482846e132813d010000000000000037483029302a84623f0a8db165fbed905b0a4fc25e7cfb56e975a0e98336a59b0100000000000000ecc7b49598787520ef6336abaf798adbadd6406bb889d8bcefacbbc1a887a3fa010000000000000053b5918f72e73f92f32b578d1b602f0cc554d98bee8c4e131ef0ac7a63399fb4010000000000000063e935d23d285cec7b014cb7736d65b4acffc45ca589003d3231de8e6db8a8aa0100000000000000587473ac474bbd8c99d14bec88d614426944b5c84dbf2912abac7610741560ff01000000000000001935d43843c66ecf76a9f4c4229de9ed7c172f52aa53d1a279f2856a736661b80100000000000000293ec1101d6cc9df89a04ede0ac8ced7418803cc1d52a36ca8e45cca734388f90100000000000000c7d9cab0fb88dccd0cf4abbf5df9d7f36a3de439c5070c599d397e74133bdfed0100000000000000866fe4ae134938ccf4c5caf01358881c75cfde473b0bb8a2623cc231db2ea3b901000000000000005d202a011f023dfaa6713f16bfd4409dde8bfe594abd59e2be32484c73b97982010000000000000008cb5d0ff7f138698c9fb80a1383155cff65ec7e127c5b3614e2e17963969f100100000000000000fc555c014d927fe7838e840609916b9af5d93892ce6f394398858286802b8c6101000000000000006727561447ed474ff4e15645b952a37fa5008d4e694d4853bb55594fa34c4f340100000000000000af9c4c3cf1a3581ee22c9d1a648bfe92fe6d3a7ae39410f213ef25ce6daecffe0100000000000000ec295fb809e22c332aa36a57afe05f2c093b2d13e52b0971d8265c5514e4e9690100000000000000efb5f1e4c4ba37f8c159d452d897c607a58518b8355a8454620b3e3ccc3271230100000000000000099a9eb71f9cb1b7d15eae384790b4ec35045a19acea1730ba62f3e7caf31e8b0100000000000000d34560b879f8f4dd8d2fbd4f6d51b9b6f41b76656860646fcef4e1498859a19001000000000000008c3dbd5a1b928cb51e918452191e5328b0f6e8de0259517831a90b02dba3e6110100000000000000aa6fd06015b8309ea9103f4b0e29bfa7e21ab5bb1431c3a76433f591c739f8380100000000000000a892342c56149812a43e98c82b6a3dfee7eff384d9b6d832002ea63838f64900010000000000000081bbaa3313b09e3b0ea2817c3e968a33587ec8928539c3f3a6d0e65644612f49010000000000000023f07bcb8dade90cefd08732183d5fe32b89ad8a4f84987b9e4e7e767c2587560100000000000000c13b603b5fe774d98e59c26fac03f8096ccc42c57d0cbc6a443b4f07a3c077920100000000000000be6b59cb464fadec4e0b22a9f12857ba5cf7a14c4f9551439d36305d582dd7fb0100000000000000f916634f9fd7e54374e30ac6b722ad1793c13cb2d5f2ad38769eaca2f79d414b01000000000000007ba967a2dae0d8839cf44710591db994d18e53b25ec6d0f861da0037c4a4366a0100000000000000222ee6c6a6c62d56cadb4eaad5104d595fe962fbbdd551c81562d3b509212907010000000000000055ca63358082034ddaf76b75f41a396081dd4f39a61eff13f7575e506e10335601000000000000000aadf1b2009026f8f5dd75d532e91dc756fd47572aa0f3c15d26790e6d6b2f270100000000000000d0a196fdff4cbca9c7d8a893f9ed66d86038378d8faa1fd8543fcce60ff1cd8c0100000000000000d0b4aada93fb3d0b358e8d59f8914f5987acbc6f5b4f3e12a1ed8d962eded82701000000000000004f950be5bf61958a0ae6e6a036b85b33ba838de8bd5508b558cbe2602d341168010000000000000082e6b6bf1f275c59fbde0dad91393ae690d5e644d11d23898a9ccfdda025920a010000000000000074b60dfb12745236ba9dc8f925efa21482b50c870c567638ba3240a05fe363d90100000000000000d761043f405069ac01285f1ff258450aac675f08d906b1ae0a1ce54eabcb36d901000000000000000dfbc1b5757e1f0ba348f8af64fb631aaff86cd21fa0529e0bb1fbab2508792601000000000000004abc35969775726127370e3bef6da0c45c5e281ed03b11bc32eb5d736d197e380100000000000000b770208e14dc236c373cad93e19b092e9c6c7a90604d941c19ca19923d33013f0100000000000000de74612da9080d47be35bf4ded2094e23c1de14477114ddcd7b76b815456ec0c0100000000000000b9f54ca6fa0be84b1c7b42a426f37cb4218cc7840b9e1aea647e215739cf19540100000000000000d3b3d9703a265a51a137b9de348587c645a168981ef3e01c9dc482856751b8ef010000000000000003dd543dddd6ad00137ddf94a218bfa19d2f08b4365d696765dc25deef76598b0100000000000000cfb9f7f1fcf903a51af729ed1647aee928630e148990309f9dc9f3b14b114b760100000000000000a2ee8d9c22eba97998d63854409d99c87b21d079f5c888d863a81d41d6abf0110100000000000000d14a779884de1b2fbf079b8e47e8c0edb1c29e282996899a4eab5aaf1f4f41130100000000000000c2344c6fb787621295335b6b5acbab9531199901492d41e13a64dfb2927f83be01000000000000002ba5634557f15c4e9198d1ce0cc525e897d3fdecb0c18af8a53fe4e3384f4a1d01000000000000001ec0811cbe4f2ea1e5a714d3ba08c6d7fdec138bcc6406da3c6cd32f1686616d01000000000000005208fe27477acbc6750d0caa831c0b26801c58eca046a6cf9d4143f85d877e83010000000000000021a0865e3e99965f51edf95012ffd7d6ea460956c5ba029cdf1c8820376e51c801000000000000001468c7f6c2eb735d70a1226e3c0c9834e5994e34a57ce30c2633fbdab2a4886d010000000000000025ebbb2a00126545bbedf00318a78b6e61a0b52c81e30231ff45bd32e311472f01000000000000007bbd4f800c34110b6c739ff1e8913a36ab62f25641c4bb7413cd354894b602930100000000000000500a9e1ea37636c24ebf4e32668897dae936eef42b6da49027f606d4f24a7e96010000000000000055d7ad9e836af36e9553c49dbd25d703db296fe5f60099918a12bd1abaa2f7830100000000000000ddac76c2a61c9aef4a9b3247aa0953187533f346466f02840235662440d2945c0100000000000000055c25dcc9cf8a08ad007ed9c8afb0ba53cebd129a20f194d272535ca9fa064901000000000000001e1fe4a3c9f590aff5a70b9cae569605ac78531cc10d310436fe0c306cf2e36101000000000000004df6e4d7da2c11ddb9153c714699f9ab625bbcd5e8e38f1cdeee567dc04abc610100000000000000982d9e3cc8ef3f8d99638b6f9df32c82356e1cd88f123d1e586a604d1d4b0cb401000000000000009cfeed14dd2f96550a0e7edebd9c9a8c8b1d8f7efdd1abca01987654239f3c860100000000000000736925c31654df870fbc29437c9b2a488ac3262e5d80798534ad00c43a61e54701000000000000004c3b4b0a3acf902acec7f5d868f77d78b17fa4cfc5f785d393c9f3d15e04880501000000000000008404cabeb0674765bb77af690fa838ba28fa2045d602994a89f07680f4851c83010000000000000006b9e740c0a0e1f8fd31717438d5918ed8680eaccb70fdc9511931ce0d164ae50100000000000000b8cf76a8082d518016ea5588be57b64e156ed23b0f72248975522c23d15ef16101000000000000002565e04c6e0b665fac87f8238bee74837f8f621ed63409f3838d263603400a980100000000000000373b26b330a41547971874dd81c2cbbf8b7e3eda05b861c57205ad7e8c15bbcf01000000000000002a38a4dcdffc571d547ee3e59121fdd378335df7c65877f983f0957cdc9824130100000000000000620c78305072857b43dadced80ebc057dbfc82b58c14c7b63372ef02140867650100000000000000546ce2099b3863d2d75324d5866bfd5324d8ee4701a99dd53528f8a8c898ca4801000000000000004dc2e72680dbf0156818114fa34d3591f8e6948df25a128e191190c66f6ac35301000000000000005d50d6099c7c88f367568fa473b44785acccd030251627cb371de16e5fa704260100000000000000811038f59afeb084566271eb138b0106a8ca013f57e589d6f777bc7bb2219e760100000000000000f5e2c973d4ccbdd36d8ed4e3dae75d3b50002cc1c74eb0a1fe29ef1ef8e3f0cc0100000000000000258f23d60623fcb1d699a35f79776a9e81e979150ba5098dcc8e3a69a407ff9a0100000000000000b1f748c87b12edf7242b4719cfe68e6761acaa4329beee538d6ff740941d3cd301000000000000008b35aa0d212e4032ede352d5426696c260c9ecffa632a2e14e6a6629a6c9f637010000000000000072341ca1eb3a0fd4e790318b51ace114315573d5355c9d5336e39382ba0642560100000000000000a79cd2241bd68004641baac25c1900da3a9e6d83101aea3ef2a58d78c657272f0100000000000000b14911cb101f45b88c437a36bd82a5f8641b1c55052060ea46ea2baea570e8bf0100000000000000b66e24ea84d5e02a7b2b58e20bbf17a0f2a19c4654bf8b07669ba3b9fc4a468101000000000000003c1dcee818434058b7de26ee874ade21bd1149185d6dcba1f67048b931ec3dda01000000000000000d8e0ceb31d11634ff50f20c90d57239a9307602e221baa190c784b144a7eb980100000000000000290be52ae5259f3e8bd0cdf454004607867a97c1db86d0c9ff16c8c83625bc830100000000000000c91199db47b7591bf1a928534cdbd3e5979a0d09d6a464f2a9607ec444bd8a9701000000000000000428e3ccdba17d779ffba05c9ec7a6264187d13bf89b6009e97200474ad3439701000000000000004c43a374e6b3e6f7d6c5a6b8518ae0d0d232a1c46d63af8fbc800045a14cbe930100000000000000c34f62968a87b2e4a9340a75004029dff5777a020f60fb287f08038491881f220100000000000000f54bb82d58c665ce3289b8765c40e60d84f74da663c164c38e16784d5c142b2c01000000000000004d9b0bbfc6a294ee0492bdc595a5d8f7cf371c729c5c319a3822f0248bb4fef70100000000000000bbff79a9b92ef586f0be053cc01639b9a335ad8e2910146d070997e285007d830100000000000000ccc84b255e5e73b971f2e71d1903b5ef9bd6d0965ff3ce29c517c875bd7ab65701000000000000001babed13d56d28fdb937b07bce846689584099575382c273f7e425f822c8159f0100000000000000bdee8597e248688fddc627ad9c95cbebf7d3b5f248b9a742aa2d8e761fa365050100000000000000a128a73c5eaa1803618a75bc368c38e4c5cd40999cb72d615b8af1d30cb8cf1d010000000000000020270811c3dc453f37b27d958ef7ad7dd4c7f217c83f94bd0ecd84c60018a86601000000000000001887f7937a8ca4ec67ceaedebfad3d307b10f416219de1ed4f8646409eab730a0100000000000000d64083c00178b8dd224afade9792fed8076031bdfe9efc5b8128e6372a9261e201000000000000001c6842f07fb07b318a8d00ce6258844374f8e894853ae5fd4a85c867d3fc32e30100000000000000417e120dbfd0297d59458b48407b62570987f1e907dd6dfa9a20bfe64eb489d8010000000000000042f20843bf75f4916ade8eb2faad0ada3795b3cacd29b679f18805f2826367550100000000000000be724139e9bdd099b70f7edab7d1acf0d05fa1a4ca212f5e2958d31f4272dcda0100000000000000ee40b85aa515fdbe6e559f815edc7ec1e321e0d152dd54258382ba31b54e447a0100000000000000134cf4720486824c6a27fa7892c8d82e805653ba1d98480267ec284a76b792c20100000000000000c3150e4ca47e7bc6486f198bf0a742a18ab0871bb1efa34e82c4ce81f27926670100000000000000c2eb94269c5e5d2ab9a1a300387358679640763b053aca99ba5c1c9083ee717f0100000000000000316bafdefb60951da2738d6c9c2ef1866d139b34b5eab6944d6bae754dd3fb110100000000000000b65475766e6229c87ff34263f5ca58525ab133962bc599ca0eab096ff296f4e60100000000000000ebb1834a568ea7653bc66f394937a0aa4f2f617118d2161e2c11c0d7d2febb9d0100000000000000b6d7ac98d6667fe8f4a186ef12a66b017df05a54e11b45d3f2967cb3d6b6827f010000000000000042f47dad5949be7b7b8f81faaec17b1b53465b01b9f8f81e6a45f2fc74e12daf01000000000000007a1291795805dbe300425311ae50ed698450b1912b62e5b5a3264c68bfa970760100000000000000e0df5b2f299314d2d419b46d15c3c8a739182d91c3d4b98cd16c013c3a25c04b01000000000000000150276c1b3d28d42630801c1d4a738ae723887d9286e40ba48d10b0752f7dcc01000000000000003f2c01a2e1e996a73582943fd0749ec223b2ea8129513a2c5c4b52bedc1f75a6010000000000000098a6defcfeb3dfca36ec46eb373734627a2c395cdd2d886046a11788ed6467af0100000000000000853ba986f8785e8fc1a2ae2fb86f17cc91886d931182ccb8d148379a35cbf02701000000000000009bbc024bfe4f072b94735afda064dc3c7da2b4bc0c50cfad44722543583a372e01000000000000002b71a8a81bc2be65f3224ba3711d1bb243446d154369e209f97d8375b5fe8deb0100000000000000496826b538d97906e14d417b48598d7d591a483ab5f4c6786cd0b96239c2f4cf0100000000000000ef27d1d5573e6419ffcc7c4372668105118256b810ab2e2dbb5e7d8280ee94250100000000000000c7009be830fe78c42f12f0753923131d16300bac230650001636b6a546cf0aa30100000000000000ed3f97f83ee7799c4aeba9f40bd18134c862c1a30875fc1e038cd27bae3a739a0100000000000000348e8bacc2d40191a6a00e137c745a422ff8fb03148d2ff9cad75efbb7a67014010000000000000066b964258b3239799608ad4ffde6214a7b04ab3e0fd889fc7eb078548b3518ec01000000000000004201a9d54fc376fb7fad6e22bff58bba820f9f6a8318d812eb6578412293a9790100000000000000efb31c5039e45fda750af5d2ea31b3210a407b168adec8f98db1f3dbc4cd94380100000000000000bff74b6ff5ccdce9a659408871d486511938422a6e550fe0669ccd739f80108101000000000000009ac13f915431b39f99d8c0bed7e9c62d22e1e8b6daaee809920f491154ef6f8b01000000000000002ff9330a8c344ad3adf4d97db014a2d0891d4dd69f5c8369dad3e0b25566173e01000000000000008f44b6746d8d809da87915d6ec208a07ee63481d24b275c6424429e16ff4d25e0100000000000000e01d6eda8094e949bfbb05c819b509a12eb662a414b822f841d9555d58e1ce7601000000000000001262625cc59c0e4b7548904c31a02231a601305881a231d4dea45eec6cbbbdcc0100000000000000c3576342cbf99792896ee5329b04ff2eee2fc2bb6d53c5c03d52c8957ee793fb01000000000000006ad4bc289673029ab44f3045eb6fdd3589d05e0e5fd76ee017f650a662f898fb0100000000000000a82f563264d1892dd46873205d03c098d8b03f53e21c797839737e4e5f66a87e010000000000000062aca2798b15062d38b79faa681032eae9f6d465451fa864dcc1ac58eead4517010000000000000059dadf17dc0f84c1c334e6a815a04bdfcd0988a3f3bcb713c66ae29e17276cc60100000000000000297dc7cf28b3d40a42c5e8faac876bf7227c670e6e031dd0e0537f4fb70e6fbe010000000000000043601ae31cf5b03cb49395dda13809f7398d8670ee4d2172b14a1ab05986ac3b01000000000000000909c1eff97923f6bd47e6ec8b5dc163b32d5b675a3b13138d3599e5cc77ab9f0100000000000000a5f788e86ee2d311357b7aa4a128f063fa4ee36958baf10304c10bde7421aa2c0100000000000000290321d793b7dcb12ad148c2438bb60821bd938b7e9164a0c3d0fc82987f8b6301000000000000002ef11bc5ce1e7b53f788ba01ba581b9171ef36449719ff3eb20973342a4a82850100000000000000e3a73e5e042574299206b6520770553482e099d075bf00cbeb139b5f6737afed01000000000000003bb30832d06cdd3e081afef0cf2b7770bfe81dc58081d1886443e4e4547da8a101000000000000002832b59000d2027d2bf57fdb40da04bd8aac1498923397517181cc487a92815201000000000000000cd7067f96a2d63fa72065302432f48690485fa5f47c9afab17123e0482785230100000000000000d02d870053a31afc4984a7a9c5e458804d8f589eed67f2a6249d7787f1ea45670100000000000000f6f23ae9bb4c269a5959d51f9173270ddefcc354b63de77b672bce58cabe60c8010000000000000073dce1727ec50c50366378cd389246e19543d900d7e9dab8e323d04cf5b202a701000000000000002ada479e1fde7211de15900ed29035f6f07506cdbadc4c232aab96d62006b9de0100000000000000ee1a56541083b083f1a13b5f8aa4042a098de2cec4c43f3250baaba8f03a52ea010000000000000062a91ffda8611ffce3edeb628ea6d3b8b12e5b2448beda6da8334e77a9ecbdd701000000000000005246164c02e9e6bfb7a2dbf7ba8a5440a189f8048373678f5b1085f217464c050100000000000000dea69c3badff9b8d7571cb6c538cd099544da7460a19e1b8651c5c530a6dd53c01000000000000001889f1b031fa7d64c4b480a17cd2941be2c02681bca397c93607091f37bf5ee1010000000000000005062bede97a45c6e1c6b593675ee07ce969fae45136cc2b2afc6e705a77f4700100000000000000dc6e03f650e4304ca8d1598dde8d4faf45891987bfc49ef785ace47c4c0b5573010000000000000018ede59e820bcdd0ed2faf99a21bdc916d71577dd35117f90efe77b8513e631001000000000000008c258b4ca16dfb8e5afde4cf40fecf115307798117b4860475511b3b5d561584010000000000000034b7b6219ad085de72069d3eea14c419a637ae610ab55c6389aa10b2c22a5ec901000000000000000e7bc96895730726225e47e31c742fd44d3936f31ecd32658c694fc11df252240100000000000000b426ef68c50245a003dd068c5c086fc9012c08a7f9ec53fbf7df4318261c8c2c0100000000000000e7931a825260ba7d4fdb5f4990d39a71e2a8b215a776ebf770102ca772f103a3010000000000000095fde7b91441fae9d2a6360d30228392519293be5e78cf3305667595cb15e566010000000000000047ede3eca5f6c8f0a51f2d36d7d1c236aab07a8b2aaa6ab08c8ccf8d87ce3dd101000000000000008e82b9499c7d6ff25d62c88428d0b6a1d56e5f166dd46f0ad3d8d373465fa8840100000000000000a5d172126aadfe80d2b711776674d61df5a1cd1a0129761fb2d2de58ed9d48a00100000000000000e7eb7de26e0e24fd528fbbcecf837f26579784dfd4db512c9237e2811139738701000000000000009f677785cfbf44140bdf38770f3d8076f222aa1c9997842d89d580b0f256198f01000000000000009a0ea02dca493accceb975732f31c9d249d4c90ff1ca0bd86cbe00f1728146b401000000000000003adbd2d5abdb70ef56c2d8bd4a7c0d67882a1c2050a856937491e98496a496fe0100000000000000f7b6a82ff22dd13d5665015a8abec429d244f857d3d6dc78e3f3c65496e4a99f01000000000000002b07c366c1ed899a2ac9722b76e092828714a8177368e51ca05ec05c565866b301000000000000008e3d1c8c0261e193e87403c8959919ef035ba39175d3ba22f31190303601412e0100000000000000e2cbfcc26562b49e656aed7d837a26fe0f9802db088b10330227b6147e150012010000000000000094416582fe359e0a310da59bf93df8ff9665b89071d4977a9a9f3390b75c0c4501000000000000001ac44a1e32a5aabcb2bd23d6586da06e7d97d49a36cd670acaee574df1b912210100000000000000ac5230e4338aa51c44ab6a0fb903e6fd914fd029dab8f7ca447be54ceba74934010000000000000032bbff551f7ed51452d264d796315e578d982e942eebb60e519ca648935d8b0c01000000000000003a4bfd825ccd308def4a61bac80c579db42b02ea5f1a0768656a326e83a0dd880100000000000000d2f1b3b5f7eb1b0d8328911d9ec920327d7a30729e80c1238f86dfe27c4fa347010000000000000078a2957fa87dcd755360693156976dc31d1ca27a869e032fb1a2d46ae06fd8d10100000000000000068f911f5ffd2e94be67762e2eb02e792b79ac8983720f40615e27ad203e03c50100000000000000841584e602ab975c936fe7c2025fcea2b5a0061e839b1ad96528942b33d0974b0100000000000000f33b53556f28f27d250585317cd57a18f37c5d5f2b3c1bd00a0c91ea54f1636f0100000000000000e056900cabddb471de9e1846d7efdddd8b5ad400b02fc54b4402ba725c78bf9a0100000000000000e3686e9ce1551a491d0b0a1a1c7f66d8f1910d33d5e6f4b873807e37c96c4fb8010000000000000098763eb72b3f7dbb7a793bd1d4367af5f072ff45a1a6eae0e002e1eaa24c5d55010000000000000079f73931b31ce353119fb4063412e844b16cb3eb92e592ebd822a8c21303554801000000000000002929dacc53614cea1848e7ba20fdeed7cb0bd81571aa72dfb63dfc84d3965d2b010000000000000030afa9ef79458f844a27a3881655b6eafb90b3912737f1bcddb95e78eb098c1d010000000000000053bbc598c69604e82050d2008b95b491ce8c826dc39a2e300437ffacc86d52ef010000000000000031a46e639e57d1a11119b17f76617a35b3606d206fb5c3e87710f464f7a57de50100000000000000ed25d7114e2aef2f0e57dc2be1401a4994d8aaafb30223162634a512604a2366010000000000000045070000000000000001cb4a2d0100151d00000000000000002904050001000000000000002a0d050002000000000000002f16050003000000000000008e1f05000400000000000000ee28050005000000000000004d32050006000000000000009d3b05000700000000000000fd44050008000000000000005c4e05000900000000000000b75705000a00000000000000176105000b00000000000000766a05000c00000000000000d67305000d00000000000000357d05000e00000000000000958605000f00000000000000f58f0500100000000000000055990500110000000000000095a205001200000000000000d8ab050013000000000000000db50500140000000000000024da05001500000000000000aaec05001600000000000000f4f5050017000000000000003bff050018000000000000008b0806001900000000000000992406001a00000000000000f92d06001b000000000000000d4a06001c00000000000000685306001d00000000000000b65c06001e00000000000000f76506001f00000000000000308b060020000000000000007b940600210000000000000025a70600220000000000000033c3060023000000000000007fcc06002400000000000000c3d50600250000000000000011df060026000000000000005ae806002700000000000000a0f106002800000000000000410407002900000000000000880d07002a000000000000001b3c07002b00000000000000764507002c00000000000000357407002d00000000000000239907002e000000000000006fa207002f00000000000000c3ab070030000000000000006abe07003100000000000000bdc7070032000000000000000fd107003300000000000000b2e3070034000000000000000aed07003500000000000000971b080036000000000000009d24080037000000000000009c4008003800000000000000255308003900000000000000735c08003a000000000000000c6f08003b00000000000000048b08003c00000000000000589408003d00000000000000d3c208003e00000000000000e4de08003f000000000000003fe808004000000000000000f7fa08004100000000000000aa0d09004200000000000000153309004300000000000000fc6a090044000000000000003e74090045000000000000009a7d0900460000000000000000a30900470000000000000014db0900480000000000000020130a004900000000000000791c0a004a00000000000000364b0a004b0000000000000043830a004c00000000000000e5950a004d0000000000000045bb0a004e0000000000000059f30a004f000000000000000e060b005000000000000000812b0b005100000000000000dc340b005200000000000000ef500b005300000000000000a3630b005400000000000000b69b0b005500000000000000c7d30b005600000000000000dd0b0c005700000000000000f3430c005800000000000000087c0c00590000000000000052b30c005a0000000000000060eb0c005b00000000000000baf40c005c0000000000000072230d005d00000000000000805b0d005e000000000000007e930d005f000000000000007ccb0d00600000000000000076030e006100000000000000793b0e00620000000000000088730e00630000000000000092ab0e00640000000000000083e30e006500000000000000731b0f00660000000000000079530f006700000000000000748b0f0068000000000000001fc30f006900000000000000d0fa0f006a00000000000000633210006b00000000000000826a10006c0000000000000028a210006d0000000000000005b310006e0000000000000055d810006f000000000000004810110070000000000000006548110071000000000000008e8011007200000000000000bfb811007300000000000000bbf011007400000000000000e828120075000000000000001561120076000000000000003b991200770000000000000058d112007800000000000000770913007900000000000000944113007a00000000000000c07913007b00000000000000e7b113007c000000000000000cea13007d0000000000000067f313007e00000000000000d31814007f000000000000002e22140080000000000000008c2b14008100000000000000545a14008200000000000000ad63140083000000000000000e89140084000000000000006892140085000000000000008dca14008600000000000000b00215008700000000000000d03a15008800000000000000f3721500890000000000000015ab15008a000000000000003be315008b000000000000005d1b16008c00000000000000855316008d00000000000000b18b16008e00000000000000d3c316008f00000000000000e9fb16009000000000000000073417009100000000000000bf4617009200000000000000286c1700930000000000000029a41700940000000000000041dc17009500000000000000591418009600000000000000bf3918009700000000000000704c18009800000000000000948418009900000000000000f28d18009a00000000000000bcbc18009b00000000000000e4f418009c000000000000000b2d19009d000000000000002c6519009e00000000000000896e19009f00000000000000519d1900a00000000000000075d51900a100000000000000920d1a00a200000000000000ec161a00a300000000000000b6451a00a400000000000000887d1a00a50000000000000077b51a00a600000000000000cdbe1a00a70000000000000070ed1a00a80000000000000083091b00a9000000000000004e251b00aa00000000000000fe371b00ab00000000000000065d1b00ac000000000000005f661b00ad00000000000000bd6f1b00ae00000000000000de941b00af00000000000000fecc1b00b0000000000000001f041c00b1000000000000000c321c00b2000000000000002f3b1c00b3000000000000002e721c00b4000000000000000ca01c00b50000000000000044a91c00b60000000000000022e11c00b70000000000000044191d00b8000000000000000c481d00b9000000000000006b511d00ba000000000000008b891d00bb00000000000000a5c11d00bc0000000000000053f91d00bd00000000000000ff301e00be00000000000000054d1e00bf0000000000000002691e00c000000000000000d1a01e00c100000000000000c5d81e00c200000000000000cf101f00c30000000000000083481f00c400000000000000af801f00c500000000000000d0b81f00c600000000000000f0f01f00c7000000000000001b292000c80000000000000039612000c90000000000000054992000ca000000000000004fd12000cb000000000000004c092100cc00000000000000031c2100cd000000000000006d412100ce00000000000000cc4a2100cf0000000000000098792100d000000000000000c4b12100d100000000000000eee92100d20000000000000011222200d300000000000000325a2200d40000000000000055922200d50000000000000075ca2200d6000000000000008f022300d700000000000000b13a2300d800000000000000cd722300d90000000000000078852300da00000000000000ce8e2300db00000000000000bdaa2300dc00000000000000abe22300dd0000000000000012112400de00000000000000501a2400df0000000000000045512400e000000000000000a1882400e1000000000000005fc02400e20000000000000013f82400e30000000000000007302500e40000000000000013682500e500000000000000c37a2500e600000000000000a8962500e700000000000000fb9f2500e80000000000000000d82500e90000000000000019102600ea000000000000002b482600eb0000000000000028802600ec000000000000002eb82600ed0000000000000044d42600ee0000000000000058f02600ef00000000000000b3f92600f00000000000000065282700f10000000000000057602700f20000000000000064982700f3000000000000008dd02700f400000000000000a7ec2700f500000000000000b9082800f600000000000000e0402800f700000000000000f6782800f80000000000000019b12800f90000000000000040e92800fa000000000000006c212900fb00000000000000a0592900fc00000000000000107f2900fd00000000000000bc912900fe00000000000000eac92900ff00000000000000fd012a000001000000000000ff1d2a0001010000000000000c3a2a0002010000000000002b722a00030100000000000005aa2a000401000000000000fce12a0005010000000000004ceb2a000601000000000000e0fd2a000701000000000000c3192b000801000000000000be512b0009010000000000000a772b000a01000000000000ae892b000b01000000000000b0a52b000c01000000000000abc12b000d010000000000009bf92b000e0100000000000093312c000f0100000000000087692c00100100000000000075a12c00110100000000000074d92c00120100000000000089112d00130100000000000099492d001401000000000000b0812d001501000000000000c3b92d001601000000000000d1f12d001701000000000000d6292e001801000000000000e9612e001901000000000000ea992e001a01000000000000efd12e001b01000000000000f8092f001c01000000000000f0412f001d01000000000000e9792f001e0100000000000036832f001f01000000000000b2b12f002001000000000000a9cd2f00210100000000000094e92f0022010000000000007121300023010000000000003b5930002401000000000000089130002501000000000000599a30002601000000000000f6c830002701000000000000e30031002801000000000000c03831002901000000000000a17031002a01000000000000f27931002b010000000000007fa831002c010000000000005de031002d01000000000000aae931002e01000000000000441832002f01000000000000295032003001000000000000fe8732003101000000000000aa9a3200320100000000000010c0320033010000000000003af8320034010000000000005f303300350100000000000059683300360100000000000078a0330037010000000000009bd833003801000000000000cb1034003901000000000000f44834003a010000000000001c8134003b0100000000000044b934003c0100000000000055f134003d010000000000009dfa34003e01000000000000302935003f01000000000000c6573500400100000000000023613500410100000000000053993500420100000000000080d135004301000000000000560036004401000000000000b10936004501000000000000ce4136004601000000000000037a3600470100000000000031b2360048010000000000005fea360049010000000000007b2237004a01000000000000995a37004b01000000000000f56337004c01000000000000c69237004d01000000000000feca37004e01000000000000340338004f01000000000000683b380050010000000000009e7338005101000000000000c9ab38005201000000000000dcc7380053010000000000003cd138005401000000000000f8e338005501000000000000b0f6380056010000000000001c1c390057010000000000007a2539005801000000000000da2e39005901000000000000525439005a01000000000000878c39005b01000000000000bbc439005c01000000000000f3fc39005d0100000000000028353a005e010000000000005f6d3a005f0100000000000098a53a006001000000000000cedd3a0061010000000000000c163b006201000000000000404e3b00630100000000000019853b006401000000000000608e3b006501000000000000b8973b0066010000000000000fa13b006701000000000000a7b33b006801000000000000fabc3b00690100000000000049c63b006a010000000000009ccf3b006b01000000000000eed83b006c01000000000000c1f43b006d0100000000000014fe3b006e0100000000000066073c006f01000000000000b7103c0070010000000000009e2c3c007101000000000000ee353c00720100000000000094483c007301000000000000e0513c0074010000000000007c643c0075010000000000001d773c0076010000000000004b9c3c00770100000000000010d43c007801000000000000d80b3d0079010000000000001a153d007a0100000000000053433d007b01000000000000ea553d007c01000000000000225f3d007d0100000000000072683d007e01000000000000b4713d007f01000000000000fb7a3d0080010000000000007a8d3d008101000000000000b8963d00820100000000000006a03d00830100000000000088b23d008401000000000000c8bb3d0085010000000000000bc53d0086010000000000001dea3d008701000000000000e9053e008801000000000000b5213e0089010000000000003b343e008a01000000000000843d3e008b010000000000005e593e008c010000000000001f913e008d0100000000000065c83e008e010000000000006bed3e008f01000000000000a9f63e009001000000000000f6ff3e009101000000000000c1373f0092010000000000005c4a3f0093010000000000003b663f009401000000000000856f3f009501000000000000cf783f0096010000000000003ea73f009701000000000000ccde3f0098010000000000008516400099010000000000001e2940009a010000000000006e4e40009b01000000000000c35740009c010000000000009b8640009d01000000000000cebe40009e0100000000000001f740009f01000000000000372f4100a00100000000000097384100a10100000000000070674100a201000000000000a99f4100a30100000000000065b24100a401000000000000ddd74100a50100000000000096ea4100a6010000000000000b104200a70100000000000044484200a8010000000000009c514200a9010000000000003b804200aa0100000000000051b84200ab010000000000006fd44200ac010000000000005ef04200ad01000000000000b9f94200ae010000000000006a284300af0100000000000078604300b00100000000000077984300b101000000000000abd04300b20100000000000064e34300b30100000000000072ff4300b401000000000000d2084400b50100000000000008414400b6010000000000002e794400b7010000000000005eb14400b8010000000000007de94400b9010000000000009e214500ba010000000000005d344500bb01000000000000d0594500bc0100000000000006924500bd010000000000001aca4500be010000000000004a024600bf01000000000000603a4600c00100000000000084724600c101000000000000abaa4600c20100000000000047bd4600c3010000000000009ec64600c401000000000000a0e24600c5010000000000005df54600c601000000000000bf1a4700c701000000000000d1524700c8010000000000007f814700c901000000000000dd8a4700ca0100000000000039944700cb01000000000000f2c24700cc0100000000000010fb4700cd01000000000000d5294800ce010000000000002c334800cf01000000000000f9614800d001000000000000596b4800d10100000000000078874800d2010000000000008da34800d301000000000000aadb4800d401000000000000c6134900d501000000000000eb4b4900d601000000000000e7834900d701000000000000f9bb4900d801000000000000b6ce4900d9010000000000001bf44900da010000000000004a2c4a00db0100000000000066644a00dc010000000000002f7d4a00dd0100000000000019994a00de01000000000000c0ab4a00df01000000000000aec74a00e001000000000000fed04a00e101000000000000bbff4a00e20100000000000019094b00e301000000000000902e4b00e40100000000000041414b00e50100000000000010704b00e6010000000000006e794b00e7010000000000002b8c4b00e80100000000000094b14b00e901000000000000a4e94b00ea01000000000000d4214c00eb01000000000000d7594c00ec01000000000000e8914c00ed0100000000000004ae4c00ee01000000000000ebc94c00ef0100000000000014024d00f001000000000000fe394d00f1010000000000000a724d00f201000000000000667b4d00f30100000000000013aa4d00f40100000000000031c64d00f50100000000000037e24d00f6010000000000004afe4d00f7010000000000002c1a4e00f801000000000000ea2c4e00f90100000000000049364e00fa010000000000004e524e00fb01000000000000628a4e00fc0100000000000079a64e00fd010000000000001ab94e00fe0100000000000079c24e00ff0100000000000094de4e000002000000000000aafa4e00010200000000000059324f00020200000000000004654f000302000000000000ff764f0004020000000000000d804f0005020000000000007e924f000602000000000000c29b4f000702000000000000f4d34f000802000000000000160c50000902000000000000504450000a02000000000000877c50000b02000000000000b6b450000c02000000000000e7ec50000d0200000000000046f650000e02000000000000b61b51000f020000000000001625510010020000000000004f5d510011020000000000000f7051001202000000000000889551001302000000000000b5cd5100140200000000000014d751001502000000000000e605520016020000000000001f3e5200170200000000000053765200180200000000000089ae52001902000000000000e8b752001a02000000000000b7e652001b0200000000000074f952001c02000000000000e81e53001d020000000000001a5753001e02000000000000558f53001f020000000000008ac753002002000000000000b9ff53002102000000000000f13754002202000000000000277054002302000000000000418c54002402000000000000d1a354002502000000000000d9c8540026020000000000007edb54002702000000000000b81355002802000000000000e34b55002902000000000000c58355002a02000000000000d6bb55002b0200000000000007f455002c02000000000000c30656002d020000000000002c2c56002e020000000000005d6456002f020000000000008f9c56003002000000000000c9d456003102000000000000070d570032020000000000004345570033020000000000007a7d570034020000000000007d99570035020000000000009ab557003602000000000000b4ed57003702000000000000f225580038020000000000002f5e580039020000000000006b9658003a02000000000000a6ce58003b02000000000000e30659003c02000000000000183f59003d02000000000000517759003e02000000000000ad8059003f020000000000008baf59004002000000000000e9b859004102000000000000c5e75900420200000000000002205a0043020000000000003f585a0044020000000000007c905a004502000000000000bcc85a004602000000000000f1005b004702000000000000111d5b00480200000000000030395b0049020000000000006f715b004a02000000000000aca95b004b02000000000000e9e15b004c02000000000000251a5c004d0200000000000060525c004e020000000000009f8a5c004f02000000000000dbc25c00500200000000000019fb5c00510200000000000058335d005202000000000000956b5d005302000000000000c7a35d005402000000000000f7db5d00550200000000000031145e0056020000000000006f4c5e005702000000000000a7845e005802000000000000e0bc5e0059020000000000003fc65e005a020000000000001cf55e005b02000000000000582d5f005c0200000000000093655f005d02000000000000cf9d5f005e0200000000000005d65f005f02000000000000440e600060020000000000008346600061020000000000006a7e6000620200000000000056b46000630200000000000000ec60006402000000000000a72361006502000000000000e25b61006602000000000000f293610067020000000000001bcc61006802000000000000dade61006902000000000000590462006a02000000000000963c62006b02000000000000cc7462006c020000000000008c8762006d02000000000000ffac62006e020000000000003ae562006f02000000000000731d63007002000000000000b05563007102000000000000e98d630072020000000000001dc6630073020000000000005dfe63007402000000000000993664007502000000000000d86e6400760200000000000017a76400770200000000000051df640078020000000000008a1765007902000000000000c34f65007a02000000000000018865007b020000000000003ec065007c020000000000007af865007d02000000000000b63066007e02000000000000f06866007f0200000000000004a16600800200000000000041d966008102000000000000711167008202000000000000ac4967008302000000000000de8167008402000000000000f8b967008502000000000000b8cc6700860200000000000035f2670087020000000000006e2a680088020000000000001c3d680089020000000000007f6268008a02000000000000ba9a68008b02000000000000f3d268008c02000000000000310b69008d02000000000000704369008e02000000000000ae7b69008f02000000000000eeb3690090020000000000002bec6900910200000000000065246a009202000000000000a45c6a009302000000000000e0946a0094020000000000001dcd6a009502000000000000dbdf6a00960200000000000059056b00970200000000000018186b009802000000000000923d6b009902000000000000b0756b009a02000000000000e6ad6b009b0200000000000021e66b009c020000000000005e1e6c009d0200000000000096566c009e02000000000000d28e6c009f020000000000000ac76c00a00200000000000047ff6c00a10200000000000077376d00a202000000000000876f6d00a3020000000000000fa76d00a40200000000000059dc6d00a50200000000000022146e00a602000000000000464c6e00a70200000000000071846e00a802000000000000eea96e00a902000000000000aabc6e00aa0200000000000085eb6e00ab02000000000000e4f46e00ac020000000000001c2d6f00ad02000000000000da3f6f00ae0200000000000053656f00af020000000000008c9d6f00b002000000000000c4d56f00b102000000000000d90d7000b202000000000000d7457000b302000000000000f67d7000b402000000000000deb57000b502000000000000b2ed7000b602000000000000a9257100b702000000000000975d7100b802000000000000338c7100b9020000000000007e957100ba0200000000000068b17100bb0200000000000050cd7100bc020000000000001c057200bd02000000000000610e7200be02000000000000c13c7200bf020000000000006b747200c0020000000000005aac7200c10200000000000032e47200c202000000000000dcf67200c302000000000000321c7300c4020000000000002b547300c5020000000000007d8b7300c60200000000000020c37300c702000000000000cefa7300c8020000000000003c327400c9020000000000009b697400ca02000000000000eda07400cb0200000000000056d87400cc0200000000000090107500cd02000000000000ad2c7500ce020000000000000b367500cf02000000000000c7487500d002000000000000fe807500d10200000000000039b97500d20200000000000073f17500d30200000000000030047600d4020000000000004b207600d502000000000000a9297600d60200000000000006337600d702000000000000d3617600d80200000000000090747600d902000000000000089a7600da020000000000002fd27600db020000000000001a0a7700dc0200000000000022427700dd02000000000000007a7700de02000000000000d2b17700df02000000000000f8e97700e0020000000000002b227800e102000000000000635a7800e202000000000000a0927800e302000000000000daca7800e40200000000000011037900e502000000000000483b7900e60200000000000085737900e702000000000000b1ab7900e802000000000000dae37900e902000000000000121c7a00ea0200000000000049547a00eb02000000000000878c7a00ec02000000000000bfc47a00ed02000000000000edfc7a00ee0200000000000026357b00ef02000000000000606d7b00f0020000000000009da57b00f102000000000000cddd7b00f20200000000000006167c00f3020000000000003f4e7c00f402000000000000fb607c00f50200000000000077867c00f602000000000000b4be7c00f70200000000000014c87c00f802000000000000e0f67c00f9020000000000001b2f7d00fa0200000000000058677d00fb02000000000000959f7d00fc02000000000000d2d77d00fd02000000000000ec0f7e00fe0200000000000025487e00ff020000000000005f807e0000030000000000009ab87e000103000000000000d3f07e000203000000000000ee0c7f0003030000000000000a297f000403000000000000c53b7f00050300000000000043617f0006030000000000007b997f000703000000000000b9d17f000803000000000000f20980000903000000000000284280000a030000000000005e7a80000b0300000000000099b280000c03000000000000d2ea80000d03000000000000082381000e030000000000003e5b81000f030000000000007b9381001003000000000000b8cb81001103000000000000f30382001203000000000000313c82001303000000000000697482001403000000000000a6ac82001503000000000000c4c882001603000000000000e0e482001703000000000000ff00830018030000000000001e1d83001903000000000000dd2f83001a030000000000005b5583001b03000000000000988d83001c03000000000000d5c583001d0300000000000010fe83001e030000000000004e3684001f03000000000000826e84002003000000000000bba684002103000000000000f5de840022030000000000006f0485002303000000000000cc0d850024030000000000002c1785002503000000000000ea2985002603000000000000634f850027030000000000007e6b850028030000000000009a878500290300000000000017ad85002a03000000000000d2bf85002b0300000000000031c985002c030000000000000ef885002d030000000000004a3086002e03000000000000866886002f03000000000000bea086003003000000000000f2d8860031030000000000002a1187003203000000000000871a870033030000000000006449870034030000000000001d5c87003503000000000000998187003603000000000000cfb987003703000000000000eed5870038030000000000000cf2870039030000000000004a2a88003a03000000000000a83388003b03000000000000826288003c03000000000000b69a88003d03000000000000efd288003e030000000000002d0b89003f030000000000004d27890040030000000000006c4389004103000000000000ab7b89004203000000000000eab38900430300000000000028ec8900440300000000000068248a004503000000000000a05c8a004603000000000000b4948a004703000000000000f4cc8a00480300000000000030058b0049030000000000006f3d8b004a030000000000008e598b004b03000000000000ae758b004c03000000000000ecad8b004d0300000000000028e68b004e03000000000000331e8c004f030000000000004f568c0050030000000000008e8e8c005103000000000000c7c68c00520300000000000005ff8c00530300000000000041378d005403000000000000746f8d005503000000000000a4a78d00560300000000000064ba8d005703000000000000e4df8d0058030000000000000a188e00590300000000000023508e005a0300000000000027888e005b03000000000000d89a8e005c0300000000000043c08e005d0300000000000082f88e005e03000000000000c0308f005f03000000000000ff688f0060030000000000001ba18f00610300000000000059d98f006203000000000000981190006303000000000000d64990006403000000000000f56590006503000000000000158290006603000000000000758b9000670300000000000053ba9000680300000000000092f290006903000000000000d22a91006a03000000000000106391006b03000000000000489b91006c03000000000000a2a491006d030000000000001bd391006e03000000000000530992006f03000000000000d32e9200700300000000000090419200710300000000000074799200720300000000000094b19200730300000000000072e092007403000000000000d2e992007503000000000000b21893007603000000000000122293007703000000000000445a93007803000000000000739293007903000000000000f3b793007a03000000000000abca93007b030000000000005ddd93007c03000000000000c40294007d03000000000000e13a94007e03000000000000217394007f0300000000000059ab9400800300000000000090e394008103000000000000c31b95008203000000000000ea53950083030000000000009866950084030000000000000b8c9500850300000000000046c49500860300000000000057fc950087030000000000008f3496008803000000000000cf6c960089030000000000000ba596008a0300000000000045dd96008b03000000000000a3e696008c03000000000000801597008d03000000000000bc4d97008e03000000000000f78597008f030000000000002ebe9700900300000000000030f6970091030000000000005a2e98009203000000000000956698009303000000000000d49e9800940300000000000014d7980095030000000000003b0f990096030000000000006c4799009703000000000000ac7f9900980300000000000078b79900990300000000000026ca99009a030000000000007cef99009b0300000000000085279a009c03000000000000be5f9a009d03000000000000fd979a009e03000000000000b9aa9a009f0300000000000022d09a00a0030000000000003dec9a00a10300000000000058089b00a20300000000000074249b00a3030000000000008b409b00a403000000000000e4499b00a50300000000000038789b00a60300000000000076819b00a703000000000000e4af9b00a803000000000000b7e79b00a903000000000000731f9c00aa03000000000000a6289c00ab030000000000002f3b9c00ac0300000000000012579c00ad030000000000005d609c00ae03000000000000cb8e9c00af0300000000000057a19c00b00300000000000086c69c00b1030000000000005afe9c00b20300000000000002369d00b303000000000000bc6d9d00b40300000000000099a59d00b5030000000000004edd9d00b603000000000000db149e00b703000000000000e0399e00b803000000000000724c9e00b9030000000000002a849e00ba03000000000000ee9f9e00bb03000000000000d1bb9e00bc030000000000007df39e00bd03000000000000f02a9f00be030000000000006a629f00bf03000000000000ff999f00c0030000000000002ed19f00c1030000000000004608a000c203000000000000893fa000c303000000000000a476a000c403000000000000dfada000c5030000000000001cb7a000c6030000000000003ce5a000c703000000000000921ca100c8030000000000008c53a100c903000000000000988aa100ca0300000000000010a6a100cb03000000000000a0c1a100cc03000000000000e5d3a100cd0300000000000072f8a100ce030000000000007c2fa200cf030000000000003766a200d003000000000000389da200d10300000000000056a6a200d203000000000000a9b8a200d303000000000000cac1a200d4030000000000001ad4a200d503000000000000200ba300d6030000000000002714a300d703000000000000bc41a300d8030000000000006778a300d9030000000000000aafa300da0300000000000046dca300db0300000000000065e5a300dc03000000000000a81ba400dd03000000000000d72da400de030000000000002352a400df030000000000006288a400e003000000000000c1bea400e103000000000000f8f4a400e203000000000000212ba500e3030000000000003f61a500e403000000000000656aa500e503000000000000e497a500e60300000000000040cea500e703000000000000b204a600e803000000000000fc3aa600e9030000000000009471a600ea0300000000000037a8a600eb030000000000001adfa600ec03000000000000ea0ca700ed030000000000000e16a700ee030000000000005228a700ef030000000000007d31a700f003000000000000034da700f1030000000000002084a700f2030000000000004a8da700f303000000000000a99fa700f403000000000000f6baa700f503000000000000c1f1a700f603000000000000be28a800f703000000000000a65fa800f8030000000000003e7ba800f903000000000000c296a800fa03000000000000c3cda800fb03000000000000d504a900fc03000000000000f83ba900fd030000000000005f73a900fe03000000000000ceaaa900ff030000000000000bb4a900000400000000000005e2a90001040000000000005e19aa000204000000000000c12baa0003040000000000008e50aa000404000000000000fd62aa0005040000000000008175aa000604000000000000fa87aa0007040000000000002f91aa0008040000000000005dbfaa000904000000000000a3c8aa000a04000000000000e5f6aa000b04000000000000e41bab000c040000000000005b2eab000d04000000000000e765ab000e040000000000004c9dab000f0400000000000085a6ab001004000000000000b8d4ab001104000000000000fdddab0012040000000000003b0cac001304000000000000d043ac001404000000000000827bac001504000000000000b8a0ac0016040000000000005bb3ac00170400000000000029ebac0018040000000000006af4ac0019040000000000000e07ad001a04000000000000f422ad001b04000000000000432cad001c040000000000009935ad001d04000000000000ee3ead001e04000000000000d55aad001f04000000000000bd76ad002004000000000000a592ad00210400000000000076caad002204000000000000f6dcad002304000000000000e001ae0024040000000000004f39ae0025040000000000001371ae0026040000000000005f7aae002704000000000000fc8cae002804000000000000cda8ae0029040000000000005ebbae002a0400000000000081e0ae002b040000000000004f18af002c040000000000001e50af002d04000000000000e687af002e04000000000000a0bfaf002f040000000000005ff7af003004000000000000042fb0003104000000000000da66b00032040000000000009a9eb000330400000000000063d6b0003404000000000000300eb1003504000000000000da45b10036040000000000009a7db100370400000000000050b5b100380400000000000029edb1003904000000000000971bb2003a04000000000000e024b2003b04000000000000995cb2003c040000000000006694b2003d0400000000000048b0b2003e040000000000002eccb2003f0400000000000075d5b200400400000000000008e8b2004104000000000000e703b3004204000000000000ce1fb3004304000000000000b63bb30044040000000000000d45b30045040000000000009f57b30046040000000000007573b3004704000000000000c67cb30048040000000000003aabb3004904000000000000e4e2b3004a04000000000000651ab4004b04000000000000f951b4004c040000000000009389b4004d0400000000000025c1b4004e04000000000000f6f8b4004f04000000000000241eb5005004000000000000b130b50051040000000000007068b500520400000000000040a0b5005304000000000000ecd7b50054040000000000000510b60055040000000000003e48b60056040000000000007a80b6005704000000000000b7b8b6005804000000000000f3f0b60059040000000000002f29b7005a04000000000000ae4eb7005b040000000000006861b7005c04000000000000a599b7005d04000000000000ded1b7005e040000000000005cf7b7005f04000000000000160ab80060040000000000005042b8006104000000000000964bb8006204000000000000687ab8006304000000000000a6b2b800640400000000000066c5b8006504000000000000e5eab80066040000000000000423b90067040000000000003f5bb90068040000000000005d77b90069040000000000007b93b9006a04000000000000b7cbb9006b04000000000000ef03ba006c04000000000000133cba006d040000000000003358ba006e040000000000005174ba006f0400000000000042acba0070040000000000006ce4ba007104000000000000a21cbb007204000000000000e054bb007304000000000000405ebb0074040000000000001b8dbb0075040000000000002ec5bb0076040000000000006dfdbb007704000000000000a435bc007804000000000000d06dbc0079040000000000000ca6bc007a040000000000004adebc007b040000000000008716bd007c04000000000000c34ebd007d04000000000000fc86bd007e040000000000003bbfbd007f040000000000007af7bd008004000000000000d500be008104000000000000b32fbe008204000000000000ea67be00830400000000000027a0be00840400000000000065d8be008504000000000000a410bf008604000000000000dd48bf0087040000000000003b52bf0088040000000000001881bf0089040000000000008fb8bf008a04000000000000cbc1bf008b04000000000000f8efbf008c040000000000007602c0008d040000000000008327c0008e04000000000000075fc0008f040000000000005d96c000900400000000000009cec00091040000000000003b06c10092040000000000002d3ec10093040000000000006476c10094040000000000007aaec1009504000000000000b9e6c1009604000000000000ef1ec20097040000000000002c57c2009804000000000000698fc20099040000000000008cc7c2009a040000000000009effc2009b04000000000000da37c3009c04000000000000ee6fc3009d0400000000000029a8c3009e0400000000000067e0c3009f04000000000000240fc400a0040000000000008218c400a104000000000000b150c400a204000000000000c088c400a304000000000000d2c0c400a404000000000000f6f8c400a5040000000000001231c500a604000000000000d143c500a7040000000000004d69c500a80400000000000089a1c500a904000000000000c4d9c500aa040000000000000112c600ab040000000000005c1bc600ac040000000000003a4ac600ad040000000000007482c600ae04000000000000abbac600af04000000000000e4f2c600b0040000000000001d2bc700b1040000000000002e47c700b2040000000000004863c700b304000000000000687fc700b404000000000000829bc700b5040000000000009bd3c700b604000000000000d80bc800b7040000000000001144c800b804000000000000704dc800b904000000000000d056c800ba040000000000004e7cc800bb0400000000000080b4c800bc04000000000000b1ecc800bd040000000000009808c900be040000000000008d24c900bf04000000000000c75cc900c004000000000000df94c900c104000000000000feb0c900c2040000000000001dcdc900c3040000000000004605ca00c4040000000000006e3dca00c5040000000000009e75ca00c604000000000000029bca00c704000000000000aeadca00c8040000000000008adcca00c904000000000000eae5ca00ca04000000000000251ecb00cb04000000000000fa55cb00cc04000000000000778ccb00cd04000000000000eec3cb00ce0400000000000005fccb00cf040000000000004134cc00d004000000000000716ccc00d10400000000000096a4cc00d204000000000000d3dccc00d30400000000000086efcc00d4040000000000000215cd00d504000000000000ac27cd00d604000000000000264dcd00d7040000000000008656cd00d8040000000000006385cd00d9040000000000003bb4cd00da0400000000000099bdcd00db04000000000000d8f5cd00dc04000000000000172ece00dd040000000000005366ce00de04000000000000909ece00df04000000000000b7d6ce00e00400000000000068e9ce00e104000000000000cc0ecf00e2040000000000000547cf00e304000000000000427fcf00e40400000000000079b7cf00e504000000000000b8efcf00e604000000000000f427d000e7040000000000000b60d000e8040000000000004698d000e90400000000000083d0d000ea04000000000000c008d100eb04000000000000fa40d100ec040000000000003679d100ed0400000000000073b1d100ee0400000000000087cdd100ef04000000000000a6e9d100f004000000000000e521d200f1040000000000001e5ad200f2040000000000005692d200f30400000000000092cad200f40400000000000052ddd200f504000000000000ce02d300f604000000000000e13ad300f7040000000000003444d300f804000000000000dc56d300f904000000000000ef72d300fa040000000000004d7cd300fb0400000000000024abd300fc04000000000000a1d0d300fd040000000000005be3d300fe04000000000000901bd400ff04000000000000ce53d40000050000000000000a8cd40001050000000000003ac4d40002050000000000004ae0d400030500000000000069fcd4000405000000000000a134d50005050000000000006047d5000605000000000000de6cd50007050000000000001ba5d500080500000000000058ddd50009050000000000009415d6000a05000000000000d24dd6000b05000000000000f085d6000c050000000000001ebed6000d05000000000000fbecd6000e050000000000005bf6d6000f050000000000008b2ed7001005000000000000c566d7001105000000000000029fd700120500000000000036d7d70013050000000000006f0fd80014050000000000009f47d8001505000000000000c97fd8001605000000000000e4b7d80017050000000000001ff0d80018050000000000005928d90019050000000000009560d9001a050000000000005473d9001b05000000000000718fd9001c05000000000000d198d9001d0500000000000031a2d9001e050000000000000fd1d9001f05000000000000cfe3d90020050000000000004f09da0021050000000000008941da002205000000000000b979da002305000000000000edb1da00240500000000000047bbda00250500000000000054d7da00260500000000000007eada00270500000000000067f3da0028050000000000003a22db0029050000000000005e5adb002a050000000000007892db002b05000000000000b0cadb002c05000000000000e702dc002d05000000000000183bdc002e050000000000007644dc002f050000000000002773dc003005000000000000dd85dc0031050000000000004dabdc00320500000000000086e3dc003305000000000000bb1bdd003405000000000000944add003505000000000000f453dd003605000000000000ad66dd003705000000000000298cdd00380500000000000060c4dd0039050000000000009cfcdd003a05000000000000fa05de003b05000000000000d734de003c05000000000000b56cde003d0500000000000045a4de003e05000000000000a1d2de003f05000000000000e4dbde0040050000000000002fe5de0041050000000000003c05df004205000000000000d81adf004305000000000000d636df0044050000000000002840df004505000000000000d252df004605000000000000cf6edf004705000000000000a9a6df004805000000000000eeafdf00490500000000000047b9df004a05000000000000b1dedf004b050000000000000de8df004c050000000000006e0de0004d05000000000000cb16e0004e05000000000000d84ee0004f050000000000007886e0005005000000000000b3bee0005105000000000000c3f6e0005205000000000000fe2ee10053050000000000002c67e1005405000000000000e679e1005505000000000000a68ce1005605000000000000629fe10057050000000000009bd7e10058050000000000005806e2005905000000000000b10fe2005a05000000000000e647e2005b050000000000001880e2005c050000000000007689e2005d050000000000004cb8e2005e050000000000007ef0e2005f05000000000000b228e3006005000000000000e760e30061050000000000002499e300620500000000000060d1e30063050000000000009c09e4006405000000000000d441e4006505000000000000334be40066050000000000000a7ae4006705000000000000e0a8e400680500000000000040b2e40069050000000000006feae4006a05000000000000a022e5006b05000000000000de5ae5006c050000000000001a93e5006d0500000000000055cbe5006e050000000000000bdee5006f050000000000008203e6007005000000000000db0ce6007105000000000000b53be6007205000000000000f073e60073050000000000004e7de60074050000000000002cace60075050000000000008cb5e60076050000000000006be4e6007705000000000000a51ce7007805000000000000dc54e7007905000000000000168de7007a050000000000004ac5e7007b0500000000000057fde7007c050000000000009335e8007d05000000000000d06de8007e050000000000002e77e8007f0500000000000004a6e80080050000000000003fdee80081050000000000007b16e9008205000000000000b74ee9008305000000000000e886e900840500000000000015bfe900850500000000000046f7e9008605000000000000602fea0087050000000000000442ea0088050000000000005a4bea0089050000000000006a67ea008a05000000000000889fea008b05000000000000daa8ea008c0500000000000079d7ea008d050000000000009f0feb008e050000000000005c22eb008f050000000000001c35eb009005000000000000d847eb0091050000000000000e80eb0092050000000000003eb8eb00930500000000000076f0eb009405000000000000ad28ec009505000000000000e660ec0096050000000000002399ec00970500000000000060d1ec0098050000000000009e09ed0099050000000000005e1ced009a05000000000000da41ed009b050000000000009654ed009c050000000000005567ed009d05000000000000127aed009e050000000000004ab2ed009f0500000000000082eaed00a005000000000000e1f3ed00a105000000000000bd22ee00a205000000000000fa5aee00a3050000000000003493ee00a405000000000000929cee00a50500000000000070cbee00a605000000000000ac03ef00a705000000000000eb3bef00a805000000000000fb73ef00a905000000000000feabef00aa05000000000000bebeef00ab0500000000000038e4ef00ac050000000000004e1cf000ad050000000000008854f000ae05000000000000958cf000af05000000000000c5c4f000b005000000000000fffcf000b1050000000000002e35f100b205000000000000de47f100b305000000000000466df100b4050000000000005da5f100b50500000000000094ddf100b605000000000000c115f200b705000000000000fa4df200b8050000000000002d86f200b90500000000000067bef200ba05000000000000a0f6f200bb05000000000000b52ef300bc050000000000003254f300bd05000000000000ef66f300be05000000000000239ff300bf0500000000000032d7f300c005000000000000dde9f300c1050000000000001e0ff400c2050000000000004f47f400c3050000000000008d7ff400c4050000000000006bb7f400c5050000000000009beff400c605000000000000c927f500c705000000000000ff5ff500c8050000000000003198f500c90500000000000063d0f500ca050000000000008908f600cb05000000000000c240f600cc050000000000001d66f600cd05000000000000ca78f600ce05000000000000fbb0f600cf0500000000000031e9f600d0050000000000006021f700d1050000000000009e59f700d205000000000000d891f700d3050000000000000acaf700d4050000000000004402f800d5050000000000007b3af800d605000000000000fa5ff800d705000000000000b672f800d805000000000000ebaaf800d90500000000000048b4f800da0500000000000024e3f800db05000000000000601bf900dc050000000000009753f900dd05000000000000ac8bf900de05000000000000e3c3f900df050000000000001cfcf900e0050000000000005934fa00e105000000000000936cfa00e205000000000000a7a4fa00e305000000000000dfdcfa00e4050000000000001a15fb00e5050000000000004d4dfb00e605000000000000a656fb00e7050000000000007b85fb00e805000000000000a2bdfb00e905000000000000dff5fb00ea050000000000005f1bfc00eb050000000000001e2efc00ec050000000000005266fc00ed050000000000000c79fc00ee05000000000000cc8bfc00ef050000000000002995fc00f005000000000000899efc00f105000000000000c1d6fc00f2050000000000007ee9fc00f3050000000000003dfcfc00f405000000000000f00efd00f5050000000000004c18fd00f6050000000000001a47fd00f7050000000000004a7ffd00f80500000000000086b7fd00f905000000000000beeffd00fa050000000000001ef9fd00fb05000000000000ee27fe00fc050000000000000944fe00fd050000000000002560fe00fe05000000000000307cfe00ff050000000000002798fe000006000000000000e2aafe00010600000000000042b4fe0002060000000000005dd0fe0003060000000000009a08ff000406000000000000ca40ff000506000000000000244aff000606000000000000f278ff0007060000000000002db1ff00080600000000000063e9ff000906000000000000712100010a06000000000000313400010b060000000000004c5000010c06000000000000ac5900010d06000000000000b49100010e06000000000000e3c900010f06000000000000f60101011006000000000000103a010111060000000000003056010112060000000000004c720101130600000000000084aa01011406000000000000c2e201011506000000000000fe1a02011606000000000000235302011706000000000000618b020118060000000000009dc3020119060000000000005ad602011a06000000000000badf02011b06000000000000d7fb02011c06000000000000370503011d06000000000000f71703011e06000000000000133403011f06000000000000516c03012006000000000000107f030121060000000000008da403012206000000000000cadc03012306000000000000f81404012406000000000000324d0401250600000000000070850401260600000000000080bd040127060000000000008bf504012806000000000000842d05012906000000000000d73605012a060000000000008b6505012b06000000000000c19d05012c06000000000000f9d505012d060000000000002e0e06012e06000000000000664606012f060000000000009d7e06013006000000000000d7b60601310600000000000011ef06013206000000000000442707013306000000000000725f07013406000000000000af9707013506000000000000e7cf070136060000000000001f0808013706000000000000372408013806000000000000544008013906000000000000917808013a06000000000000c8b008013b0600000000000001e908013c060000000000000f2109013d06000000000000085909013e06000000000000a99009013f06000000000000b5c809014006000000000000c5000a014106000000000000d2380a01420600000000000006710a014306000000000000f5a80a0144060000000000002be10a01450600000000000012190b01460600000000000048510b01470600000000000086890b014806000000000000e5920b014906000000000000c4c10b014a0600000000000000fa0b014b060000000000001d320c014c060000000000000b6a0c014d06000000000000c5980c014e060000000000001aa20c014f06000000000000d7d00c0150060000000000002dda0c01510600000000000069120d015206000000000000a44a0d015306000000000000df820d0154060000000000001dbb0d01550600000000000055f30d015606000000000000852b0e01570600000000000083630e015806000000000000c39b0e0159060000000000001ba50e015a060000000000007bae0e015b06000000000000f7d30e015c06000000000000afe60e015d06000000000000290c0f015e0600000000000065440f015f06000000000000db690f016006000000000000977c0f016106000000000000d2b40f016206000000000000ecec0f016306000000000000062510016406000000000000ea5c10016506000000000000f49410016606000000000000ffcc100167060000000000005ed610016806000000000000d6fb10016906000000000000340511016a06000000000000613d11016b060000000000008b7511016c06000000000000919111016d06000000000000abad11016e06000000000000e0e511016f060000000000001d1e120170060000000000005556120171060000000000006c8e120172060000000000008aaa12017306000000000000a3c612017406000000000000bdfe12017506000000000000f83613017606000000000000126f130177060000000000006c9413017806000000000000c99d1301790600000000000029a713017a060000000000005bdf13017b06000000000000b8e813017c0600000000000016f213017d060000000000008d1714017e06000000000000ec2014017f06000000000000a43314018006000000000000bc4f14018106000000000000d58714018206000000000000919a1401830600000000000005c0140184060000000000005fc914018506000000000000f8f714018606000000000000a10a15018706000000000000fa1315018806000000000000561d15018906000000000000fa2f15018a06000000000000513915018b06000000000000aa4215018c06000000000000106815018d060000000000002f8415018e060000000000004ba015018f060000000000002cbc15019006000000000000ccce1501910600000000000019d81501920600000000000076e115019306000000000000331016019406000000000000664816019506000000000000998016019606000000000000d5b81601970600000000000093cb16019806000000000000f3d4160199060000000000000ff116019a06000000000000cd0317019b06000000000000492917019c06000000000000a33217019d06000000000000444517019e060000000000003a6117019f06000000000000117d1701a0060000000000001c991701a10600000000000059d11701a2060000000000008c091801a306000000000000c2411801a4060000000000001e4b1801a50600000000000037671801a606000000000000f2791801a7060000000000001fb21801a806000000000000dec41801a90600000000000056ea1801aa0600000000000005fd1801ab0600000000000079221901ac06000000000000b25a1901ad06000000000000e5921901ae06000000000000f9ca1901af060000000000005df01901b00600000000000017031a01b1060000000000003a3b1a01b206000000000000e64d1a01b30600000000000044731a01b406000000000000a37c1a01b50600000000000078ab1a01b6060000000000006ee31a01b706000000000000921b1b01b806000000000000be531b01b9060000000000001d5d1b01ba06000000000000ec8b1b01bb0600000000000009c41b01bc06000000000000e5fb1b01bd06000000000000f1331c01be06000000000000ef6b1c01bf06000000000000a39a1c01c006000000000000fba31c01c106000000000000f2db1c01c206000000000000f8131d01c306000000000000df4b1d01c40600000000000075831d01c506000000000000aaa81d01c6060000000000003bbb1d01c7060000000000002fd71d01c80600000000000017f31d01c90600000000000067fc1d01ca06000000000000ad211e01cb06000000000000fb2a1e01cc0600000000000052341e01cd06000000000000da621e01ce06000000000000c87e1e01cf06000000000000b09a1e01d00600000000000089d21e01d1060000000000000fe51e01d2060000000000005fee1e01d3060000000000003b0a1f01d406000000000000f8411f01d50600000000000098541f01d606000000000000ac5d1f01d70600000000000094791f01d8060000000000006eb11f01d90600000000000038e91f01da060000000000000b212001db06000000000000e6582001dc06000000000000c8902001dd0600000000000062a32001de060000000000007ac82001df060000000000001cdb2001e0060000000000005d002101e10600000000000021382101e206000000000000f76f2101e3060000000000003d792101e406000000000000cea72101e50600000000000095df2101e6060000000000006e172201e706000000000000334f2201e80600000000000085582201e90600000000000010872201ea06000000000000eea22201eb06000000000000cbbe2201ec06000000000000a9da2201ed060000000000009ef62201ee060000000000003d092301ef06000000000000782e2301f0060000000000000c412301f1060000000000005e4a2301f20600000000000045662301f3060000000000003b822301f406000000000000299e2301f506000000000000fed52301f606000000000000990d2401f7060000000000002c202401f806000000000000173c2401f90600000000000063452401fa06000000000000fd572401fb060000000000002a7d2401fc0600000000000000b52401fd06000000000000b8ec2401fe0600000000000037242501ff06000000000000155c25010007000000000000e69325010107000000000000a6cb25010207000000000000630326010307000000000000b30c260104070000000000000916260105070000000000005b1f26010607000000000000523b260107070000000000004857260108070000000000002d732601090700000000000018ab26010a07000000000000fdc626010b07000000000000ede226010c070000000000008d1127010d07000000000000e31a27010e07000000000000cc5227010f07000000000000ac8a270110070000000000004b9d2701110700000000000090c22701120700000000000087fa27011307000000000000583228011407000000000000fe6928011507000000000000557328011607000000000000f4a128011707000000000000ced9280118070000000000007d1129011907000000000000414929011a070000000000001a8129011b07000000000000deb829011c07000000000000bff029011d07000000000000a8282a011e070000000000008b602a011f07000000000000dc692a0120070000000000002d732a0121070000000000007a7c2a012207000000000000198f2a01230700000000000069982a01240700000000000003ab2a0125070000000000004ab42a0126070000000000009ebd2a01270700000000000041d02a012807000000000000e7e22a01290700000000000089f52a012a0700000000000023082b012b07000000000000cb1a2b012c0700000000000018242b012d070000000000006b2d2b012e07000000000000ba362b012f070000000000000e402b013007000000000000af522b013107000000000000035c2b0132070000000000004c652b0133070000000000009b6e2b013407000000000000e4772b013507000000000000abaf2b013607000000000000f8b82b01370700000000000052c22b013807000000000000f0d42b0139070000000000008de72b013a0700000000000081032c013b070000000000005e1f2c013c070000000000004a3b2c013d0700000000000037572c013e070000000000000a8f2c013f070000000000005e982c014007000000000000eeaa2c0141070000000000007fbd2c014207000000000000d2c62c014307000000000000b6fe2c0144070000000000008f362d01" + "babeEpochChanges": "0x0427a472c969e80bbe698119203450b6c323153c8592f04211bad4a9fd6c631a04e0bc2e0101f301fd1000000000530bfd100000000004d6aad9a24d0897740b65705a98b2199ce1a01b4a8dad21d7246f1d0596bbd3b230c62e0101530bfd1000000000b314fd100000000004fc8b9d6789138f7293dd6277bc5f9b1182d31d87615036668fc4b5078dff425181cf2e0101b314fd1000000000131efd100000000000000c27a472c969e80bbe698119203450b6c323153c8592f04211bad4a9fd6c631a04e0bc2e01017120000000000000f301fd10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e010000000000000026db7c5786fddc15f7e96905024905d877537451ed444cb97d3786361a59f64b0100000000000000c67b1b3084dc3eb2cc7a3cc4f742defc21b733e787737cbaf3b146a052633e0f01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000948ee778b8ce0aeed5bbbe8c449f7801a27efa67adecb66470d0dd53a7fe6a6e0100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc35310010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f010000000000000024532b17fc5fb786660c52aeb03150799165dd05e88ce359189189a4b771f51e0100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b01000000000000004c50abd9279d48439dc8f93aaf679e47981f25372b63d838786dcaf7a3f8d074010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e093601000000000000002803ef26679fce0495aa4066e053c4fa9cda5bfb54e24497fcb1bcef2902cb400100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc190100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f0678771701000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f510100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e010000000000000088f9a16886165d00612032cb1b36669ad62b7325536f499191e711134c71b6070100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c560100000000000000c65c0a74887e9fe5cc56696fac7e7f5f1cd4a68f9661c8384b300bcdfbe67a1801000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf71010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e702101000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf080100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c39070100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d707600501000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb5501000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b010000000000000020bedd48a5965e2fc0e221bd164deecdee849eb69cb8dc63a37df80b50a3093b010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e51010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000003635c55546f19bfe62d84a220c4396b1c9d71a1acdb2da917a82f0c1415a2b020100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa7401000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c0100000000000000c473d994ae0f9b8532523f5ebc52014bb3fad20e68770fceaf80fa105cbefd0d0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a5201000000000000004e8cc21504fda961cf1cfe78e651d033b10f8ab1a4a0c757bd4848a7f2827f0601000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000944ad19383a9ae136f4f11c15687923b9b21319efab021336a3e8f2bd5b5ca200100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a01000000000000005c252543704920d6bea67453cdd61b464b001badf73a3ea3b9e9fb35b224947201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b3515010000000000000004734733edcd9cf662389208fb8ccb5f274a7db8187ccc53dc84250f8599d54d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e6380100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb1901000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c744501000000000000004e047857f2ec0c7cf295a0673fcc750d4c268cf852711196c4f05bd9dc6414260100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f61001000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c8400100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000044f8580dad3559a76d0b66af3ddddd0dfbf32c9e4dfa034b318ae6157d9f6544010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd8780100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f76010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000be0f11aba12d189f0764fc31bec37f741583c50dee7a3a6d017d3d8154b8227f010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a2520100000000000000767cb742c94b22fff80da70a4ea77069aecde7ded53fbf5d957b01196924cd2d0100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea8400100000000000000785ff29a12ee4e45687943f0ad146f683703f064c35fc8118f5d239bdfe54c6e0100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d710100000000000000c6ac76a6bb70dfe6f7bf1e96793c011842148482eb1320b8deeaf0a8d1f1c121010000000000000070c6b18b49bc84d45bb78c292fbecf7715821a0e7d71281b1cf9de18f8027f21010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e660100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd0401000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b0100000000000000d85e8d408d9d5a3afa74bd441bbac60d440727a0c26c77b1bca5ff5332b56b4101000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000076fa252aeca5b108fe76ce12e395ed8105d5c98e4abae38bfc7cb4fbd4d43d5501000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000fa30595578d5e253a0a3701616665cb205fc02eb560c023454c280bfc6cd8d090100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a5240100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000fe24bd4f4b0e75ff21dcf16a3ccba49556cfa9586348a8f939df8def8a214c0d0100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000feebe707a9a5eb136d04e5b3b2124627fa76129c1e33cba1d1323047f76b3f22010000000000000062c6c1f6f2478ee092c958842ac4351973bfeb49f55e33b8415ac0296a967b5f01000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c230100000000000000b2ddb9eab0545b9ac7a46e37d6fc4605c34227d848416bd3637da7156efe61260100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e2529010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e7630100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da7201000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c4914201000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b2001000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f0100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000002001d47fbff7291a50650047b27cc47f1d22a0bdfbbfb0b8b7a6e8bbf350bf620100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000005c3615a5e2072a618f0e434f7c572f4e4b1a89348dfe0f7939c99de095d54a5501000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe083721560010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000006ca32996225021dadb0b3f22460db6ce243faa3a0df7b33ef28e5fbcb9cf6f2f01000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f0100000000000000f4ed2eb79bd9daf9391a340eb452db9890c60d98b97c4cfe17560367f422a85401000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e67010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec17201000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f53343010000000000000032fdd22fdc3662f97008fbb6f52d0fbe7b62c24956849fe04f9b023007a8932301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de320100000000000000148f1be467808e1cc693cf74ddf2e61ef1c13aa351b201835558f7284137995b010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b010000000000000088542443998d88a092cf75e7784388c6cf71c71ceab04f16fc0114b2bf2dc1320100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a5003010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d01000000000000000469db5710f30dc9ed7411417170efd62ce8bbe36ccab6df758a94aa7b7f720b010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b01000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf460100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f0100000000000000d636bcd260e36a2bea4bb1667bbc86285967381ad5822f8cd98ff7d5c88c743001000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b010000000000000078f6eabfa5ce5c858c1d0d378fea88e98bbad82c6c2acb6c587bde67066f695501000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a010000000000000054a672d14f2d201c99ca725fae26f20cee76af6cc7f1113feeb82e837bc59c4d0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad2102010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e01000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f076852010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc24010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e0100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c280100000000000000e05c7c7d82498be85294ee984e1f0caf23c53fa9a64cc7e6c5053304c4bb785101000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b30401000000000000001e1c88ee34c1421a7c937eb2260647ae799d842855f8eae5850a805dd2693c000100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c010000000000000076311c1a3fefd3236e3977ef9f78ad450ca34945e72a4e80f66cd1ed29301e61010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000a2259245fb5a7251b99ee8f307b97ec6e7f20081c1f75284aa9b433153d88816010000000000000038ab6c4b18e1c86176cf53301ea990f1cdddcdc3f2c3e0f8dde126fa59f60b2f010000000000000010bca2541c1c9dba105e28facbed65e6e76bbf8924b248b597cdeb122cff1d730100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b010000000000000096776e9dad14b2ece6fcddc7ee29a19c27f7d7baddf3e02a493a332d90b4020c0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a1843220100000000000000c35d0f86b19c350505bddb3764f91fc662546eb0d254cdcf51ee541c8d20463c0100000000000000040000000000000002d6aad9a24d0897740b65705a98b2199ce1a01b4a8dad21d7246f1d0596bbd3b230c62e01017220000000000000530bfd10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e010000000000000026db7c5786fddc15f7e96905024905d877537451ed444cb97d3786361a59f64b0100000000000000c67b1b3084dc3eb2cc7a3cc4f742defc21b733e787737cbaf3b146a052633e0f01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000948ee778b8ce0aeed5bbbe8c449f7801a27efa67adecb66470d0dd53a7fe6a6e0100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc35310010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f010000000000000024532b17fc5fb786660c52aeb03150799165dd05e88ce359189189a4b771f51e0100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b01000000000000004c50abd9279d48439dc8f93aaf679e47981f25372b63d838786dcaf7a3f8d074010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e093601000000000000002803ef26679fce0495aa4066e053c4fa9cda5bfb54e24497fcb1bcef2902cb400100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc190100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f0678771701000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f510100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e010000000000000088f9a16886165d00612032cb1b36669ad62b7325536f499191e711134c71b6070100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c560100000000000000c65c0a74887e9fe5cc56696fac7e7f5f1cd4a68f9661c8384b300bcdfbe67a1801000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf71010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e702101000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf080100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c39070100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d707600501000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb5501000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b010000000000000020bedd48a5965e2fc0e221bd164deecdee849eb69cb8dc63a37df80b50a3093b010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e51010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000003635c55546f19bfe62d84a220c4396b1c9d71a1acdb2da917a82f0c1415a2b020100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa7401000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c0100000000000000c473d994ae0f9b8532523f5ebc52014bb3fad20e68770fceaf80fa105cbefd0d0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a5201000000000000004e8cc21504fda961cf1cfe78e651d033b10f8ab1a4a0c757bd4848a7f2827f0601000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000944ad19383a9ae136f4f11c15687923b9b21319efab021336a3e8f2bd5b5ca200100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a01000000000000005c252543704920d6bea67453cdd61b464b001badf73a3ea3b9e9fb35b224947201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b3515010000000000000004734733edcd9cf662389208fb8ccb5f274a7db8187ccc53dc84250f8599d54d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e6380100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb1901000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c744501000000000000004e047857f2ec0c7cf295a0673fcc750d4c268cf852711196c4f05bd9dc6414260100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f61001000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c8400100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000044f8580dad3559a76d0b66af3ddddd0dfbf32c9e4dfa034b318ae6157d9f6544010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd8780100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f76010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000be0f11aba12d189f0764fc31bec37f741583c50dee7a3a6d017d3d8154b8227f010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a2520100000000000000767cb742c94b22fff80da70a4ea77069aecde7ded53fbf5d957b01196924cd2d0100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea8400100000000000000785ff29a12ee4e45687943f0ad146f683703f064c35fc8118f5d239bdfe54c6e0100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d710100000000000000c6ac76a6bb70dfe6f7bf1e96793c011842148482eb1320b8deeaf0a8d1f1c121010000000000000070c6b18b49bc84d45bb78c292fbecf7715821a0e7d71281b1cf9de18f8027f21010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e660100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd0401000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b0100000000000000d85e8d408d9d5a3afa74bd441bbac60d440727a0c26c77b1bca5ff5332b56b4101000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000076fa252aeca5b108fe76ce12e395ed8105d5c98e4abae38bfc7cb4fbd4d43d5501000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000fa30595578d5e253a0a3701616665cb205fc02eb560c023454c280bfc6cd8d090100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a5240100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000fe24bd4f4b0e75ff21dcf16a3ccba49556cfa9586348a8f939df8def8a214c0d0100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000feebe707a9a5eb136d04e5b3b2124627fa76129c1e33cba1d1323047f76b3f22010000000000000062c6c1f6f2478ee092c958842ac4351973bfeb49f55e33b8415ac0296a967b5f01000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c230100000000000000b2ddb9eab0545b9ac7a46e37d6fc4605c34227d848416bd3637da7156efe61260100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e2529010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e7630100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da7201000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c4914201000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b2001000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f0100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000002001d47fbff7291a50650047b27cc47f1d22a0bdfbbfb0b8b7a6e8bbf350bf620100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000005c3615a5e2072a618f0e434f7c572f4e4b1a89348dfe0f7939c99de095d54a5501000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe083721560010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000006ca32996225021dadb0b3f22460db6ce243faa3a0df7b33ef28e5fbcb9cf6f2f01000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f0100000000000000f4ed2eb79bd9daf9391a340eb452db9890c60d98b97c4cfe17560367f422a85401000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e67010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec17201000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f53343010000000000000032fdd22fdc3662f97008fbb6f52d0fbe7b62c24956849fe04f9b023007a8932301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de320100000000000000148f1be467808e1cc693cf74ddf2e61ef1c13aa351b201835558f7284137995b010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b010000000000000088542443998d88a092cf75e7784388c6cf71c71ceab04f16fc0114b2bf2dc1320100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a5003010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d01000000000000000469db5710f30dc9ed7411417170efd62ce8bbe36ccab6df758a94aa7b7f720b010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b01000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf460100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f0100000000000000d636bcd260e36a2bea4bb1667bbc86285967381ad5822f8cd98ff7d5c88c743001000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b010000000000000078f6eabfa5ce5c858c1d0d378fea88e98bbad82c6c2acb6c587bde67066f695501000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a010000000000000054a672d14f2d201c99ca725fae26f20cee76af6cc7f1113feeb82e837bc59c4d0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad2102010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e01000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f076852010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc24010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e0100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c280100000000000000e05c7c7d82498be85294ee984e1f0caf23c53fa9a64cc7e6c5053304c4bb785101000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b30401000000000000001e1c88ee34c1421a7c937eb2260647ae799d842855f8eae5850a805dd2693c000100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c010000000000000076311c1a3fefd3236e3977ef9f78ad450ca34945e72a4e80f66cd1ed29301e61010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000a2259245fb5a7251b99ee8f307b97ec6e7f20081c1f75284aa9b433153d88816010000000000000038ab6c4b18e1c86176cf53301ea990f1cdddcdc3f2c3e0f8dde126fa59f60b2f010000000000000010bca2541c1c9dba105e28facbed65e6e76bbf8924b248b597cdeb122cff1d730100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b010000000000000096776e9dad14b2ece6fcddc7ee29a19c27f7d7baddf3e02a493a332d90b4020c0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a18432201000000000000003e308e38630d3be8e1f7398819e245fb86eef24d0344a2e04626f42ce72872e80100000000000000040000000000000002fc8b9d6789138f7293dd6277bc5f9b1182d31d87615036668fc4b5078dff425181cf2e01017320000000000000b314fd10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e010000000000000026db7c5786fddc15f7e96905024905d877537451ed444cb97d3786361a59f64b0100000000000000c67b1b3084dc3eb2cc7a3cc4f742defc21b733e787737cbaf3b146a052633e0f01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000948ee778b8ce0aeed5bbbe8c449f7801a27efa67adecb66470d0dd53a7fe6a6e0100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc35310010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f010000000000000024532b17fc5fb786660c52aeb03150799165dd05e88ce359189189a4b771f51e0100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b01000000000000004c50abd9279d48439dc8f93aaf679e47981f25372b63d838786dcaf7a3f8d074010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e093601000000000000002803ef26679fce0495aa4066e053c4fa9cda5bfb54e24497fcb1bcef2902cb400100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc190100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f0678771701000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f510100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e010000000000000088f9a16886165d00612032cb1b36669ad62b7325536f499191e711134c71b6070100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c560100000000000000c65c0a74887e9fe5cc56696fac7e7f5f1cd4a68f9661c8384b300bcdfbe67a1801000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf71010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e702101000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf080100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c39070100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d707600501000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb5501000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b010000000000000020bedd48a5965e2fc0e221bd164deecdee849eb69cb8dc63a37df80b50a3093b010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e51010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000003635c55546f19bfe62d84a220c4396b1c9d71a1acdb2da917a82f0c1415a2b020100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa7401000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c0100000000000000c473d994ae0f9b8532523f5ebc52014bb3fad20e68770fceaf80fa105cbefd0d0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a5201000000000000004e8cc21504fda961cf1cfe78e651d033b10f8ab1a4a0c757bd4848a7f2827f0601000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000944ad19383a9ae136f4f11c15687923b9b21319efab021336a3e8f2bd5b5ca200100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a01000000000000005c252543704920d6bea67453cdd61b464b001badf73a3ea3b9e9fb35b224947201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b3515010000000000000004734733edcd9cf662389208fb8ccb5f274a7db8187ccc53dc84250f8599d54d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e6380100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb1901000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c744501000000000000004e047857f2ec0c7cf295a0673fcc750d4c268cf852711196c4f05bd9dc6414260100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f61001000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c8400100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000044f8580dad3559a76d0b66af3ddddd0dfbf32c9e4dfa034b318ae6157d9f6544010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd8780100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f76010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000be0f11aba12d189f0764fc31bec37f741583c50dee7a3a6d017d3d8154b8227f010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a2520100000000000000767cb742c94b22fff80da70a4ea77069aecde7ded53fbf5d957b01196924cd2d0100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea8400100000000000000785ff29a12ee4e45687943f0ad146f683703f064c35fc8118f5d239bdfe54c6e0100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d710100000000000000c6ac76a6bb70dfe6f7bf1e96793c011842148482eb1320b8deeaf0a8d1f1c121010000000000000070c6b18b49bc84d45bb78c292fbecf7715821a0e7d71281b1cf9de18f8027f21010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e660100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd0401000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b0100000000000000d85e8d408d9d5a3afa74bd441bbac60d440727a0c26c77b1bca5ff5332b56b4101000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000076fa252aeca5b108fe76ce12e395ed8105d5c98e4abae38bfc7cb4fbd4d43d5501000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000fa30595578d5e253a0a3701616665cb205fc02eb560c023454c280bfc6cd8d090100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a5240100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000fe24bd4f4b0e75ff21dcf16a3ccba49556cfa9586348a8f939df8def8a214c0d0100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000feebe707a9a5eb136d04e5b3b2124627fa76129c1e33cba1d1323047f76b3f22010000000000000062c6c1f6f2478ee092c958842ac4351973bfeb49f55e33b8415ac0296a967b5f01000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c230100000000000000b2ddb9eab0545b9ac7a46e37d6fc4605c34227d848416bd3637da7156efe61260100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e2529010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e7630100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da7201000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c4914201000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b2001000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f0100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000002001d47fbff7291a50650047b27cc47f1d22a0bdfbbfb0b8b7a6e8bbf350bf620100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000005c3615a5e2072a618f0e434f7c572f4e4b1a89348dfe0f7939c99de095d54a5501000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe083721560010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000006ca32996225021dadb0b3f22460db6ce243faa3a0df7b33ef28e5fbcb9cf6f2f01000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f0100000000000000f4ed2eb79bd9daf9391a340eb452db9890c60d98b97c4cfe17560367f422a85401000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e67010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec17201000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f53343010000000000000032fdd22fdc3662f97008fbb6f52d0fbe7b62c24956849fe04f9b023007a8932301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de320100000000000000148f1be467808e1cc693cf74ddf2e61ef1c13aa351b201835558f7284137995b010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b010000000000000088542443998d88a092cf75e7784388c6cf71c71ceab04f16fc0114b2bf2dc1320100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a5003010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d01000000000000000469db5710f30dc9ed7411417170efd62ce8bbe36ccab6df758a94aa7b7f720b010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b01000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf460100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f0100000000000000d636bcd260e36a2bea4bb1667bbc86285967381ad5822f8cd98ff7d5c88c743001000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b010000000000000078f6eabfa5ce5c858c1d0d378fea88e98bbad82c6c2acb6c587bde67066f695501000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a010000000000000054a672d14f2d201c99ca725fae26f20cee76af6cc7f1113feeb82e837bc59c4d0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad2102010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e01000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f076852010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc24010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e0100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c280100000000000000e05c7c7d82498be85294ee984e1f0caf23c53fa9a64cc7e6c5053304c4bb785101000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b30401000000000000001e1c88ee34c1421a7c937eb2260647ae799d842855f8eae5850a805dd2693c000100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c010000000000000076311c1a3fefd3236e3977ef9f78ad450ca34945e72a4e80f66cd1ed29301e61010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000a2259245fb5a7251b99ee8f307b97ec6e7f20081c1f75284aa9b433153d88816010000000000000038ab6c4b18e1c86176cf53301ea990f1cdddcdc3f2c3e0f8dde126fa59f60b2f010000000000000010bca2541c1c9dba105e28facbed65e6e76bbf8924b248b597cdeb122cff1d730100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b010000000000000096776e9dad14b2ece6fcddc7ee29a19c27f7d7baddf3e02a493a332d90b4020c0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a1843220100000000000000faad21e4520f4aaf9a42b3de6bde5514c2765cd00966a29a5250a9730b77ccad0100000000000000040000000000000002", + "babeFinalizedBlockWeight": 4955219, + "finalizedBlockHeader": "0x5435edbdba45a77c84543da5acf1d33768bc8bc4dd0009f73ec1d688c25348a18a44bb04357ec4253a63ae4feff90da30e9e43beb401ead1602e00ebc60b2e62c39aad22a08f7bc526e9153946677c86a61f45f417665121d990605b569a72b4a57caea80c0642414245b50103e7000000f60cfd1000000000248ba492ec1bbd2112d27af68ee579719e8acd5e57cd8cffa00fc412ed791942dbb7ab7f830398e1f49d7cb9f4f39b4f71379251eeb40177cffa60f6b904ce0bbf7c63dc846f42e8d46114c6c598a3660305c5953ca7b90393626185595b31090442454546840384251bc93e996986867d387b0ead8158ec5205a4ee8e3ffbba5045db4e5f1f850542414245010158479f6bef3b8303a993b2542a7e5f1c9ee69a31dc6f99c57cfb321dee24fc60759b0cdb354e8f5abda09f858fc7dcec32592ed5b3d61335b5102296354bef83", + "grandpaAuthoritySet": "0xa5046f706506065685b322054d22e8a1f23ca9df75c32a88dda5214ad58b553b4cca01000000000000008a239af78d4659897af698b5670533fa6d215864be8c41e3a2fc4309f9f83dcb0100000000000000e2b9e72d9202e99526fa626d9a6651dfd7c1daec8fc6ba1130af96f7d21a42da010000000000000056b838dd2005e499be47ceef086df4ca9c5fbc1f81968391c31af062a8a8bef301000000000000004a3fc0fe1020c7f460c7bd23d0b657c03368552b2f0a12d80a1c406fd066e0db01000000000000009b992b5e9b99eb2cd3b2b648d6db81ed722a2feb4938d998b58dcb5d159fadfa0100000000000000aee9de3938173700b3e3f4fbf2b200ae296173a0854157f40de2598dd4cad8f10100000000000000243f110deac5efe8e963d794eb8706a1895ae1942523ab0fe9e1623515b7dea80100000000000000b61e9b13e849779be8f5378a670d61991875d8e091f359384d7be73d02d506930100000000000000426b2be4596a759a15028d84e08c5c56440e6cede68d088f47c671cc3387c3e6010000000000000070ba6e5985990ba1b1392713236f1b50df750f10f744cc6eb95fa7c5cfbc68760100000000000000d343862beda4cf485b4a3b7e9b62d3b7e6263b47f65a7c88c88f6e0f1350c7a50100000000000000116768c765c7ce5a5e895a5342d1f56f1a118901d8d36fe584bab325506f3b2801000000000000007d09df0a629a0eee12da27d7fad8b18833a7d1edc7c6c8b7701e425ae449fa820100000000000000e511d441d6d3c822cb276bb2a14b1c8071d9fe1995802383fb5dcf8a92edcfc20100000000000000be2235b9d9c9164f494dd688000fb569a37d5c47912ef99b9ebda9318d13345e01000000000000000139b946b46bee4c61be50c986f2a9ef2e76917644e2ecd842c59d61a94ee612010000000000000019a9d56ea35496122fc44fcb5c29d27fbb43520556d6f8d97753767aaa0f228e010000000000000032b5e70f48897c333d520934f656ac3cafc040ebb356eee1b9081179d99abf990100000000000000a8dbfc6cb88ac105e25b9dc7f11e883631824647cd4d0c18014bb6239627b2900100000000000000a5b094ae7c156592baa68ce18dab6368d5b665e9a0f07dfc5f54f58309e086c1010000000000000041ef4a31eb7dc1e01f4630604e1908e644d7cdee3f66a60f98d6d59605326f8b010000000000000097743d6364cdb6c4790cd37c4c2ab5fbc6c65e8bb606625e70a6ee04ed1650d9010000000000000008cc1d6c743da905511a39a6f0a68809a6bc32f8ac25e53bb2d6aca4f493fc9b0100000000000000acd71d4269b3ba2a9de822d494c4d841708e1519c08de41d7fc6153eaf48da8101000000000000007c1024f3b93e54cb1cdde0d2f685e2e16cadabe59e407ebc45eabb07efebca6101000000000000000f42866aa6927f1c5916a8a1a5a5cba2d88e1fff957d80df701617d93ee6407801000000000000005cba2c6f569da1edc3778308da406f266aa53140381dbb3f14f22909ba6e30040100000000000000dac2e90de824b109043f70818d53eabe05e79d518bda504e951d7f4056b0b2720100000000000000652f455eb3d30486151c716a4031bc02bd00254ef3e8290fd29f946d958a46b60100000000000000589fc35b132ef9d7ed9a6787a203e5a3a37f8cd6c775f47ac5e589d55d381a640100000000000000a34b3f8e84aa86be3b47260f67720030795fc96379e5b31cc6c87c2f4d1cc3e00100000000000000dccafad8bba5affbc80095564afc9376881907073a060979fabbb962bef08d56010000000000000078774f4f6130efaa55b5a06d1ef94ca420739dff79cbc24074bba841053e0aa20100000000000000c1758f7cbffeb844419bc494a9dc65fb394259f01e9bf23789a75acc29d7d9620100000000000000c1c1ff5f66fefb5c0849e3b2333411d1f7e9dd4888600e334e7a33623f15fa360100000000000000f23b0362de32f952573d64c1f52ac4b8db0a7e15e7ad49a0c81d8f15b1f2ca8e0100000000000000fe240e80ff8a48a77947b394979cf361017cd906ddaab637d72cf72e729d79bf010000000000000006854c73f5703242d31d2576ac2297c93f0b5dc16ade0097c59d5dc0faa43c550100000000000000fa2c21f1a03638d4cb35202102240c2b85f5667924d5838cc503721117049da601000000000000008aabd4f6d7ecec7a749c83fc7be33f3b4818cca6f93a4927b4964900df9454e50100000000000000fcc0d954c7d519851e0094cd9a015b4789022a37091e3a04791d0731bd85f0d301000000000000003948bfd09bbbc2fe6ac5dfe53146e32df50828eecf7b2b18cdcff8dc385cbd750100000000000000a2a4af2a11ae7ba812fcc32845583d0354a0f2ffb1271a53c9a976a0f47fff4401000000000000002385953f1ac49461b9c243159d9668b26e7322e19fff7bc18d90634f0f767ce8010000000000000058e304af91397247f704ce95d60845629aa59a50fba1c13896bb2300708db47201000000000000008663371a5899d5e7a8bc99b9a6ce24c8c3f5f1149c1e70accf9560405c1a5bf201000000000000003d28789c6d574f3aa6d14360471901c5bf8255d072c2209fa22ac773bd32e5bf010000000000000041763df8284ae8248ee0f649982ffc7d4f613e07c7bb83cd554aca5dcf8f56250100000000000000cc0c6a91c7971438b621cd9a3bd37a67f52ec4093336585d1e2c73416195e28a0100000000000000de52bfa88c4a76bb22fbebb0f078dfcc5a327034e0044e8f8034f2a96e7adfef0100000000000000bf3fd3d4065b306638662c3e789d830a63d9b343cef5f863d346058387844b58010000000000000005197187ac7eb8d0a3cfadd32f1a7fb662e7e4a16ea718af3f1e4437b865205b0100000000000000c84074bb67af84cdf84b9df1dadc1188cd75709a8d11bba65f2835d76f38c47301000000000000007ad55381f9de00220678c95a19489640fc61331e2a40d927e3d833555575c6fc0100000000000000b98c920666586f392d129d480e78a965764ac82de45e691589b3aab7831a7f020100000000000000cb92ffeace78dbafe6fbf275741b4b38657fb81590712aa0bca7877931f6ad39010000000000000034a18d21097f479eecbe51b91c522a798582caafc787134bab6888854742406e010000000000000027791275ae7d4735aa45e70210663067f7d268aa57126a26044c8f6d8572a7d80100000000000000f7c9f4bc8669969246cfb748ac6996db6cd4c1fc634d981a1093b2c3d7a2eadf0100000000000000f001e2e99b378fa4f2d1a50b28c3fcefcd7da3a66314af1280fb7f9cb429dd380100000000000000ffd82ddc49373448bed6feb0032744e20068f4e21adc4cb6d2cbf05ce73f4ce40100000000000000c8185ca8ae6330a1e03490e132163adf517f76402ecac6881a51c8a14ed62f940100000000000000c49e3cd2c701bb845963c2870dcca12ed070c3f67ffc20144327a93aa6e896ec010000000000000081b1fce3ee9e31723f1023eaa9f8793e8663e72c50fbb0fbcea9bc78bacc491b01000000000000002dad5b2212ee688f2eeb9ca1fb6a90574f006dc1c6680ac3a8523363a248940b01000000000000004bb953c285fc6de7ef27baf835e8d905e60d86fb1bca0e52af8323e9d1ff219d010000000000000050f9fd6c0623020debb7843bcb832ee1d80db9b156d8e6083ccebd434fe979470100000000000000b7c13f1239888cda5c8e6ac9ea10675df17633368906e66a487f91ddd3268ca601000000000000002cd51e09c3197e04155b78f3d97742ceffface390dc46f81f2613a94b2e483fd0100000000000000affb713ecdae328aa4436756f6a3e8add6b274d5ef1cc19d7aa69ab82c80e472010000000000000052912b3dfd0ccacd00586b97f1abe32431a2f6fa9c2b3bb17837a1ecde61728001000000000000008a2b50acd1a4955fc814bf6720c7427902a6ce709f3a2d7c17c55b67f6f1c06301000000000000003a511828c0cdc0fd257387843fdbf6f19d5ca1ef1c29ec7e971fc9f1195eb60c0100000000000000fd856413411b2e50cf1d32f8253c9bf7b055df259c42fc3a501ced6850173f8f01000000000000006565187c86eca2aaf37db6d59405535a5e6dd85e2743a07ebf50e55c2b7fbc890100000000000000d1c146d2429a5a827660008721c7a880e71f44feaa3dc75524c1a9281bac48cd01000000000000005d2b07941a21adb6ba52298c2f0b0bdb6023e4a1713018762a5f61973b2fd1e80100000000000000e4b2cffd0b9cacfc500050b27ecae3c55b9b51bd9a416d62605118c8ad4fb09f0100000000000000f42c2e2a4157d51d22d5997dea1342f65e1882e207fd0e64e8e5d44330857eef0100000000000000f6d74de7b39455519a5d6480c8f12c93fc7a4cfc9af39154fc60857a39ad888b0100000000000000c8be78d05f652edd0a64a5865455de36d0fadb0d91c470fd344f8de23c8a6b9c01000000000000006ad5224d5c8f7fb3ae15dcb3766c0956ca627a6c91e93c4e770a2908e8f5901501000000000000006faa2a994a276a5d8d029db32b4c05375412db8844ec0a1ecbbcce729f308e9c0100000000000000f5fef7a87c9f3917fd28640907ce59ad26f33e41baa25d8ead8033ae0b944d7901000000000000005d0124063ede3e49f037df33948477235e5a58f93f8b98bf7203f25e11d4f0b4010000000000000040533a786cd0be9618126633512666b1b1b9ab3b436fa653c93e2f65da9c196b0100000000000000be95095d93298171c6fb8a1847adfa173d127e13f53482dcb694f891d68f0c58010000000000000085b714accac0654ba57fac59b626dd35802269d2c1d995cea7c335cb05a88f7f01000000000000006a5f902cdeda2c2161d16bd21d586720c08c0bbb7b463d9c59147338d26a8a9601000000000000009c11e35911f023df6e4d218e53412ab4e4a20c17961d63ba381c913b51f394c001000000000000007448b6f6db7cfffd8650a1f3f08ddad1e114321ea770c9cfe6154882f586edb50100000000000000ffcca343512faeffe1cb3a8a7ce62fa4ee0c7f6a5f3e5ac883482846e132813d010000000000000037483029302a84623f0a8db165fbed905b0a4fc25e7cfb56e975a0e98336a59b010000000000000053b5918f72e73f92f32b578d1b602f0cc554d98bee8c4e131ef0ac7a63399fb40100000000000000178838772f4eb26785673a57c8365e98a21ede2ed8d1ca3aeccbf7ef2631da110100000000000000587473ac474bbd8c99d14bec88d614426944b5c84dbf2912abac7610741560ff01000000000000001935d43843c66ecf76a9f4c4229de9ed7c172f52aa53d1a279f2856a736661b80100000000000000501c3978722a089f663f75c7865626a43d13ce19bd924583e43a46720584ed140100000000000000866fe4ae134938ccf4c5caf01358881c75cfde473b0bb8a2623cc231db2ea3b901000000000000005d202a011f023dfaa6713f16bfd4409dde8bfe594abd59e2be32484c73b97982010000000000000008cb5d0ff7f138698c9fb80a1383155cff65ec7e127c5b3614e2e17963969f100100000000000000a7ae34bd517afa9f7563b73483435a14c56d9901a78f9459566355ec60a7cc8501000000000000006727561447ed474ff4e15645b952a37fa5008d4e694d4853bb55594fa34c4f340100000000000000c05f72a55f91f613b2da541ae27eb6053e80f267c906c135a4ebd848ecfb49db0100000000000000ec295fb809e22c332aa36a57afe05f2c093b2d13e52b0971d8265c5514e4e9690100000000000000efb5f1e4c4ba37f8c159d452d897c607a58518b8355a8454620b3e3ccc3271230100000000000000099a9eb71f9cb1b7d15eae384790b4ec35045a19acea1730ba62f3e7caf31e8b0100000000000000d34560b879f8f4dd8d2fbd4f6d51b9b6f41b76656860646fcef4e1498859a190010000000000000061914b4dba0a1e42e692016cb74943266b257339008ffed4644231a2b48df21a0100000000000000a703a37bd5d93619bfb6ad72c24840b396b2ddb8700db2e1d372a82363ec7d580100000000000000a892342c56149812a43e98c82b6a3dfee7eff384d9b6d832002ea63838f64900010000000000000081bbaa3313b09e3b0ea2817c3e968a33587ec8928539c3f3a6d0e65644612f49010000000000000023f07bcb8dade90cefd08732183d5fe32b89ad8a4f84987b9e4e7e767c2587560100000000000000a81425a86503d911cf060b51310f0bb796f5ce2cb656e524d23f7fac3c9c48000100000000000000c13b603b5fe774d98e59c26fac03f8096ccc42c57d0cbc6a443b4f07a3c077920100000000000000be6b59cb464fadec4e0b22a9f12857ba5cf7a14c4f9551439d36305d582dd7fb0100000000000000f916634f9fd7e54374e30ac6b722ad1793c13cb2d5f2ad38769eaca2f79d414b01000000000000007ba967a2dae0d8839cf44710591db994d18e53b25ec6d0f861da0037c4a4366a0100000000000000222ee6c6a6c62d56cadb4eaad5104d595fe962fbbdd551c81562d3b509212907010000000000000055ca63358082034ddaf76b75f41a396081dd4f39a61eff13f7575e506e10335601000000000000000aadf1b2009026f8f5dd75d532e91dc756fd47572aa0f3c15d26790e6d6b2f27010000000000000050e16d897010823670148ef157d77933bc1721d82c45e80eb73b46b12b5daab601000000000000000228d7fc42b304906518cbd91d73a5384c4893de6cbfe1e7346999df642d3d0001000000000000004f950be5bf61958a0ae6e6a036b85b33ba838de8bd5508b558cbe2602d341168010000000000000082e6b6bf1f275c59fbde0dad91393ae690d5e644d11d23898a9ccfdda025920a010000000000000074b60dfb12745236ba9dc8f925efa21482b50c870c567638ba3240a05fe363d90100000000000000d761043f405069ac01285f1ff258450aac675f08d906b1ae0a1ce54eabcb36d90100000000000000f3e3c09e028fa2d5fdeeba91ab0f427d48fa60a1eacf2b97bd62753c53bd0e5601000000000000000dfbc1b5757e1f0ba348f8af64fb631aaff86cd21fa0529e0bb1fbab250879260100000000000000d791b58285e2c4f17c82a518e099812d2a3f63e1090f1cb2576e2c7695ee24970100000000000000de74612da9080d47be35bf4ded2094e23c1de14477114ddcd7b76b815456ec0c0100000000000000d3b3d9703a265a51a137b9de348587c645a168981ef3e01c9dc482856751b8ef010000000000000003dd543dddd6ad00137ddf94a218bfa19d2f08b4365d696765dc25deef76598b0100000000000000cfb9f7f1fcf903a51af729ed1647aee928630e148990309f9dc9f3b14b114b7601000000000000005216ff912251cd2bcf9db256b3927e737cf909e4b53a375586dad21bb7b907ef0100000000000000d14a779884de1b2fbf079b8e47e8c0edb1c29e282996899a4eab5aaf1f4f41130100000000000000c2344c6fb787621295335b6b5acbab9531199901492d41e13a64dfb2927f83be0100000000000000cb296825e8680ab46fbbda3b1769fb078b9c744084ca9e1c60245836ad93b44101000000000000004bf6037c3820cb7468601051701164948b7f7cbbe1ac8cad97e809c76170dddf010000000000000061f8830d235dc8b50288a606b3570c8335eefac47874c26a45f170cd29a5dd3301000000000000001ec0811cbe4f2ea1e5a714d3ba08c6d7fdec138bcc6406da3c6cd32f1686616d0100000000000000bb6257aa9b0faedd25d9974dee1f3f5dbd5cf41d15e1fca80aec3ea8540c568201000000000000005208fe27477acbc6750d0caa831c0b26801c58eca046a6cf9d4143f85d877e830100000000000000ff5d4070a8a7798cd22dbc7a7e2a909b697e738683e701aeff696af26ebff0720100000000000000f3f09f9f2fb8f99da74f3a846d1b2b030c19b0e52ab1ff78ef65140e5bc2a9ac010000000000000025ebbb2a00126545bbedf00318a78b6e61a0b52c81e30231ff45bd32e311472f01000000000000008b7baa89dbac95969a0042fa876a37eaccfcecd3591c4d7ed0e8051aea814cfa01000000000000004715211e268489d1eeccfbd8a5e67235244322c17127226184448741ae332ba10100000000000000ddac76c2a61c9aef4a9b3247aa0953187533f346466f02840235662440d2945c0100000000000000055c25dcc9cf8a08ad007ed9c8afb0ba53cebd129a20f194d272535ca9fa06490100000000000000cc8db7467349129a20ab4ba7e705044216651c0eba9d39f1054849edbcd677af01000000000000004df6e4d7da2c11ddb9153c714699f9ab625bbcd5e8e38f1cdeee567dc04abc610100000000000000982d9e3cc8ef3f8d99638b6f9df32c82356e1cd88f123d1e586a604d1d4b0cb401000000000000008c066bcef24248ee0bea6f9487c522569ab887542df4c07d37f1cb578064503e01000000000000009cfeed14dd2f96550a0e7edebd9c9a8c8b1d8f7efdd1abca01987654239f3c860100000000000000736925c31654df870fbc29437c9b2a488ac3262e5d80798534ad00c43a61e5470100000000000000e08ce24248f3f8c0cdd313a5d46e6d491fccf6711788b6aca2de82f6700ced5101000000000000008404cabeb0674765bb77af690fa838ba28fa2045d602994a89f07680f4851c83010000000000000006b9e740c0a0e1f8fd31717438d5918ed8680eaccb70fdc9511931ce0d164ae50100000000000000b8cf76a8082d518016ea5588be57b64e156ed23b0f72248975522c23d15ef16101000000000000002565e04c6e0b665fac87f8238bee74837f8f621ed63409f3838d263603400a980100000000000000373b26b330a41547971874dd81c2cbbf8b7e3eda05b861c57205ad7e8c15bbcf0100000000000000362589a96b0adb6b0d48e51e0870986ff75719ac8f348fc7b906dabf616531090100000000000000620c78305072857b43dadced80ebc057dbfc82b58c14c7b63372ef02140867650100000000000000546ce2099b3863d2d75324d5866bfd5324d8ee4701a99dd53528f8a8c898ca4801000000000000004dc2e72680dbf0156818114fa34d3591f8e6948df25a128e191190c66f6ac35301000000000000001ebe41ca4cd399901ffe5f6f52642630820500e4a96cbef4c80c560cae38d2c601000000000000005d50d6099c7c88f367568fa473b44785acccd030251627cb371de16e5fa704260100000000000000301b983e5e1320b7c9ff0f2525121b9f3007f68c273ba8ff662b7244f1f95f210100000000000000f5e2c973d4ccbdd36d8ed4e3dae75d3b50002cc1c74eb0a1fe29ef1ef8e3f0cc01000000000000000349eedde437fbbe2d174500d1de344a9a906946d311aeb499f46debf70158600100000000000000258f23d60623fcb1d699a35f79776a9e81e979150ba5098dcc8e3a69a407ff9a0100000000000000b1f748c87b12edf7242b4719cfe68e6761acaa4329beee538d6ff740941d3cd30100000000000000eedd48a4e6e202e92845fc2fb09da5e1eb2b839e48227f2531142e5fdeb44b2b010000000000000014a3f3f45d0bc1352f8665d1e24cb13d72d95b48c595913cc985dcf58e63c123010000000000000072341ca1eb3a0fd4e790318b51ace114315573d5355c9d5336e39382ba0642560100000000000000a79cd2241bd68004641baac25c1900da3a9e6d83101aea3ef2a58d78c657272f0100000000000000b14911cb101f45b88c437a36bd82a5f8641b1c55052060ea46ea2baea570e8bf0100000000000000b66e24ea84d5e02a7b2b58e20bbf17a0f2a19c4654bf8b07669ba3b9fc4a468101000000000000003c1dcee818434058b7de26ee874ade21bd1149185d6dcba1f67048b931ec3dda01000000000000000d8e0ceb31d11634ff50f20c90d57239a9307602e221baa190c784b144a7eb980100000000000000d1f73fb97dc0b0c3244c8d879f134dc90f614eb30505e8f27eff58e558d221f50100000000000000c91199db47b7591bf1a928534cdbd3e5979a0d09d6a464f2a9607ec444bd8a9701000000000000000428e3ccdba17d779ffba05c9ec7a6264187d13bf89b6009e97200474ad3439701000000000000004c43a374e6b3e6f7d6c5a6b8518ae0d0d232a1c46d63af8fbc800045a14cbe930100000000000000c34f62968a87b2e4a9340a75004029dff5777a020f60fb287f08038491881f220100000000000000f54bb82d58c665ce3289b8765c40e60d84f74da663c164c38e16784d5c142b2c0100000000000000607737116e62ba11852c68515933afb8165f3174d594eef6d01dd7eaddb60ec30100000000000000bbff79a9b92ef586f0be053cc01639b9a335ad8e2910146d070997e285007d830100000000000000ccc84b255e5e73b971f2e71d1903b5ef9bd6d0965ff3ce29c517c875bd7ab65701000000000000001babed13d56d28fdb937b07bce846689584099575382c273f7e425f822c8159f0100000000000000bdee8597e248688fddc627ad9c95cbebf7d3b5f248b9a742aa2d8e761fa365050100000000000000a128a73c5eaa1803618a75bc368c38e4c5cd40999cb72d615b8af1d30cb8cf1d010000000000000020270811c3dc453f37b27d958ef7ad7dd4c7f217c83f94bd0ecd84c60018a866010000000000000020869a63e7a343094ad0b4ffaa3d83344ffec8c7fb9b177008f78d17eda7dcbf0100000000000000d64083c00178b8dd224afade9792fed8076031bdfe9efc5b8128e6372a9261e201000000000000001c6842f07fb07b318a8d00ce6258844374f8e894853ae5fd4a85c867d3fc32e30100000000000000417e120dbfd0297d59458b48407b62570987f1e907dd6dfa9a20bfe64eb489d80100000000000000443bd12fcb944a0e19b2f76ddd066a713a99d2dd3530a5f39275300d11ac96590100000000000000be724139e9bdd099b70f7edab7d1acf0d05fa1a4ca212f5e2958d31f4272dcda0100000000000000ee40b85aa515fdbe6e559f815edc7ec1e321e0d152dd54258382ba31b54e447a0100000000000000134cf4720486824c6a27fa7892c8d82e805653ba1d98480267ec284a76b792c20100000000000000f701f07489e11959ace47ce003808f4248a6c64b35f51f0551f4a69aa0572e2f0100000000000000c2eb94269c5e5d2ab9a1a300387358679640763b053aca99ba5c1c9083ee717f0100000000000000316bafdefb60951da2738d6c9c2ef1866d139b34b5eab6944d6bae754dd3fb110100000000000000b65475766e6229c87ff34263f5ca58525ab133962bc599ca0eab096ff296f4e60100000000000000ebb1834a568ea7653bc66f394937a0aa4f2f617118d2161e2c11c0d7d2febb9d0100000000000000c1b58624231cd77b450e0be515a576e8863cf47822e19b1bdf89bccfe65d41410100000000000000b6d7ac98d6667fe8f4a186ef12a66b017df05a54e11b45d3f2967cb3d6b6827f010000000000000042f47dad5949be7b7b8f81faaec17b1b53465b01b9f8f81e6a45f2fc74e12daf01000000000000007a1291795805dbe300425311ae50ed698450b1912b62e5b5a3264c68bfa970760100000000000000e0df5b2f299314d2d419b46d15c3c8a739182d91c3d4b98cd16c013c3a25c04b01000000000000000150276c1b3d28d42630801c1d4a738ae723887d9286e40ba48d10b0752f7dcc010000000000000098a6defcfeb3dfca36ec46eb373734627a2c395cdd2d886046a11788ed6467af0100000000000000853ba986f8785e8fc1a2ae2fb86f17cc91886d931182ccb8d148379a35cbf02701000000000000009bbc024bfe4f072b94735afda064dc3c7da2b4bc0c50cfad44722543583a372e0100000000000000496826b538d97906e14d417b48598d7d591a483ab5f4c6786cd0b96239c2f4cf0100000000000000c4b54db8b5dc6346d0367c6c69a191cc826a90643d93c6230763a9e92806a33f0100000000000000c7009be830fe78c42f12f0753923131d16300bac230650001636b6a546cf0aa30100000000000000ed3f97f83ee7799c4aeba9f40bd18134c862c1a30875fc1e038cd27bae3a739a0100000000000000348e8bacc2d40191a6a00e137c745a422ff8fb03148d2ff9cad75efbb7a670140100000000000000efb31c5039e45fda750af5d2ea31b3210a407b168adec8f98db1f3dbc4cd94380100000000000000d227434a77cd7b7127c039eb9995aeb025a242c36ca7116372c7c8fe5bc921b501000000000000005c0ce76a2fbef3a0df89ae8c2bedac4e288c3679c33701980624c9ffcca9103b0100000000000000510a0c61dca3e1044d3540c08272054462c6353aac4dc06cda265753b126b38501000000000000002ff9330a8c344ad3adf4d97db014a2d0891d4dd69f5c8369dad3e0b25566173e0100000000000000761ce3eef4bd0d15601aef70728f54ca72a9859e90841c3d02d5060201671878010000000000000000132d9e682cf8d45ce8efd4bef165a26da5d1349ea1fe9f51abd6dc7622720201000000000000001262625cc59c0e4b7548904c31a02231a601305881a231d4dea45eec6cbbbdcc0100000000000000f9689a7ea3f40ee757bd99cf1ba166ec2211f1999dd4fec28c44a6f69e253b6c0100000000000000c3576342cbf99792896ee5329b04ff2eee2fc2bb6d53c5c03d52c8957ee793fb01000000000000006ad4bc289673029ab44f3045eb6fdd3589d05e0e5fd76ee017f650a662f898fb0100000000000000a82f563264d1892dd46873205d03c098d8b03f53e21c797839737e4e5f66a87e010000000000000004655b8a8e7f4e3532b7aa5e461d25ca6d5af49e0557da59654d15fe1d1eda4c010000000000000059dadf17dc0f84c1c334e6a815a04bdfcd0988a3f3bcb713c66ae29e17276cc60100000000000000297dc7cf28b3d40a42c5e8faac876bf7227c670e6e031dd0e0537f4fb70e6fbe010000000000000043601ae31cf5b03cb49395dda13809f7398d8670ee4d2172b14a1ab05986ac3b0100000000000000e7f57bd0bc756f24574e3a77c90616adb393e9d4ffceb2c63df19f605cb6a02401000000000000001773a9984bd619d4469608aeeb38a98e688474cf0870a45ced8d297ba56275be0100000000000000a5f788e86ee2d311357b7aa4a128f063fa4ee36958baf10304c10bde7421aa2c0100000000000000290321d793b7dcb12ad148c2438bb60821bd938b7e9164a0c3d0fc82987f8b6301000000000000002ef11bc5ce1e7b53f788ba01ba581b9171ef36449719ff3eb20973342a4a82850100000000000000ab45f730dd495f657b61b2777091fa8cd11b5a626bea2b514e5e61180210379701000000000000003bb30832d06cdd3e081afef0cf2b7770bfe81dc58081d1886443e4e4547da8a101000000000000002832b59000d2027d2bf57fdb40da04bd8aac1498923397517181cc487a92815201000000000000000cd7067f96a2d63fa72065302432f48690485fa5f47c9afab17123e0482785230100000000000000f6f23ae9bb4c269a5959d51f9173270ddefcc354b63de77b672bce58cabe60c801000000000000007a1df073f4a474faa4616f9a6f5d93cedf25716cbe8d05a08afafb570b6e6f9501000000000000002ada479e1fde7211de15900ed29035f6f07506cdbadc4c232aab96d62006b9de0100000000000000be223d49fdccd102646c9b0d62130fbc8e7f0324d55a3eabaaffb5ed1616795a010000000000000062a91ffda8611ffce3edeb628ea6d3b8b12e5b2448beda6da8334e77a9ecbdd7010000000000000071893ca83ebe6ee06c3eb10dcbfaf70d8267959f6159b4ca36929a69604cadbc0100000000000000dea69c3badff9b8d7571cb6c538cd099544da7460a19e1b8651c5c530a6dd53c01000000000000007e05f9592cac9232e17c222d076c6abdb6f5f5b8175d5b3858ffdae0324b411f01000000000000001889f1b031fa7d64c4b480a17cd2941be2c02681bca397c93607091f37bf5ee1010000000000000005062bede97a45c6e1c6b593675ee07ce969fae45136cc2b2afc6e705a77f4700100000000000000dc6e03f650e4304ca8d1598dde8d4faf45891987bfc49ef785ace47c4c0b5573010000000000000026cdfb88461d7125f438c599e062799219b385bacca93f3cdbe5418c9d4d499301000000000000000f19c3ed807ad5f2b7546f5e6c5e9bb934835d54ed1f4f989540b86a2ca02b55010000000000000034b7b6219ad085de72069d3eea14c419a637ae610ab55c6389aa10b2c22a5ec901000000000000000e7bc96895730726225e47e31c742fd44d3936f31ecd32658c694fc11df25224010000000000000084c5f583e29d8aa4b794bf3142cca87f1f82cf83c0a36e5bdf97b363299336ac0100000000000000b426ef68c50245a003dd068c5c086fc9012c08a7f9ec53fbf7df4318261c8c2c0100000000000000e7931a825260ba7d4fdb5f4990d39a71e2a8b215a776ebf770102ca772f103a3010000000000000095fde7b91441fae9d2a6360d30228392519293be5e78cf3305667595cb15e566010000000000000047ede3eca5f6c8f0a51f2d36d7d1c236aab07a8b2aaa6ab08c8ccf8d87ce3dd10100000000000000a5d172126aadfe80d2b711776674d61df5a1cd1a0129761fb2d2de58ed9d48a00100000000000000e7eb7de26e0e24fd528fbbcecf837f26579784dfd4db512c9237e2811139738701000000000000009f677785cfbf44140bdf38770f3d8076f222aa1c9997842d89d580b0f256198f01000000000000009a0ea02dca493accceb975732f31c9d249d4c90ff1ca0bd86cbe00f1728146b401000000000000003adbd2d5abdb70ef56c2d8bd4a7c0d67882a1c2050a856937491e98496a496fe0100000000000000716a181407939b3ea68289e09265d3b9d8a8f21ba7d9f50d8ef8a86fa3c0fd0301000000000000002b07c366c1ed899a2ac9722b76e092828714a8177368e51ca05ec05c565866b301000000000000008e3d1c8c0261e193e87403c8959919ef035ba39175d3ba22f31190303601412e0100000000000000e2cbfcc26562b49e656aed7d837a26fe0f9802db088b10330227b6147e150012010000000000000094416582fe359e0a310da59bf93df8ff9665b89071d4977a9a9f3390b75c0c450100000000000000ac5230e4338aa51c44ab6a0fb903e6fd914fd029dab8f7ca447be54ceba749340100000000000000ee47e05a65a6174fe68fe813b92c23422c44e3e9109fea3724b2c875b91bb6180100000000000000a76b32c8c28cce206ddf70ff3ad591ed01a0067f9f9baa77f9052ce938d359c701000000000000003a4bfd825ccd308def4a61bac80c579db42b02ea5f1a0768656a326e83a0dd8801000000000000007fab4769c41af85b9de8e784d3b1cda093fc0a8dffcdff21e914c62f131c77580100000000000000d2f1b3b5f7eb1b0d8328911d9ec920327d7a30729e80c1238f86dfe27c4fa3470100000000000000841584e602ab975c936fe7c2025fcea2b5a0061e839b1ad96528942b33d0974b01000000000000001a6cdb9906d5861bf1101aa5a8816a25be63b460843c13065760d0e9bd5a2f600100000000000000f33b53556f28f27d250585317cd57a18f37c5d5f2b3c1bd00a0c91ea54f1636f0100000000000000e056900cabddb471de9e1846d7efdddd8b5ad400b02fc54b4402ba725c78bf9a0100000000000000e3686e9ce1551a491d0b0a1a1c7f66d8f1910d33d5e6f4b873807e37c96c4fb801000000000000001a02012d8a476cc43998b10fd5c8f5174ba2a2eedebf27fab9831c0d812b052801000000000000001b512304b9b7ad1f18a8d02eb7e3525b9818e1e451459a0fb318ad39398694f8010000000000000098763eb72b3f7dbb7a793bd1d4367af5f072ff45a1a6eae0e002e1eaa24c5d55010000000000000079f73931b31ce353119fb4063412e844b16cb3eb92e592ebd822a8c21303554801000000000000006b637efb1db7c91b689a3dc0a5e42b0f528e5f31d55b1c264452dda3aa2d83d901000000000000002929dacc53614cea1848e7ba20fdeed7cb0bd81571aa72dfb63dfc84d3965d2b010000000000000030afa9ef79458f844a27a3881655b6eafb90b3912737f1bcddb95e78eb098c1d010000000000000031a46e639e57d1a11119b17f76617a35b3606d206fb5c3e87710f464f7a57de50100000000000000ed25d7114e2aef2f0e57dc2be1401a4994d8aaafb30223162634a512604a236601000000000000005207000000000000000122d12e0100491d00000000000000002904050001000000000000002a0d050002000000000000002f16050003000000000000008e1f05000400000000000000ee28050005000000000000004d32050006000000000000009d3b05000700000000000000fd44050008000000000000005c4e05000900000000000000b75705000a00000000000000176105000b00000000000000766a05000c00000000000000d67305000d00000000000000357d05000e00000000000000958605000f00000000000000f58f0500100000000000000055990500110000000000000095a205001200000000000000d8ab050013000000000000000db50500140000000000000024da05001500000000000000aaec05001600000000000000f4f5050017000000000000003bff050018000000000000008b0806001900000000000000992406001a00000000000000f92d06001b000000000000000d4a06001c00000000000000685306001d00000000000000b65c06001e00000000000000f76506001f00000000000000308b060020000000000000007b940600210000000000000025a70600220000000000000033c3060023000000000000007fcc06002400000000000000c3d50600250000000000000011df060026000000000000005ae806002700000000000000a0f106002800000000000000410407002900000000000000880d07002a000000000000001b3c07002b00000000000000764507002c00000000000000357407002d00000000000000239907002e000000000000006fa207002f00000000000000c3ab070030000000000000006abe07003100000000000000bdc7070032000000000000000fd107003300000000000000b2e3070034000000000000000aed07003500000000000000971b080036000000000000009d24080037000000000000009c4008003800000000000000255308003900000000000000735c08003a000000000000000c6f08003b00000000000000048b08003c00000000000000589408003d00000000000000d3c208003e00000000000000e4de08003f000000000000003fe808004000000000000000f7fa08004100000000000000aa0d09004200000000000000153309004300000000000000fc6a090044000000000000003e74090045000000000000009a7d0900460000000000000000a30900470000000000000014db0900480000000000000020130a004900000000000000791c0a004a00000000000000364b0a004b0000000000000043830a004c00000000000000e5950a004d0000000000000045bb0a004e0000000000000059f30a004f000000000000000e060b005000000000000000812b0b005100000000000000dc340b005200000000000000ef500b005300000000000000a3630b005400000000000000b69b0b005500000000000000c7d30b005600000000000000dd0b0c005700000000000000f3430c005800000000000000087c0c00590000000000000052b30c005a0000000000000060eb0c005b00000000000000baf40c005c0000000000000072230d005d00000000000000805b0d005e000000000000007e930d005f000000000000007ccb0d00600000000000000076030e006100000000000000793b0e00620000000000000088730e00630000000000000092ab0e00640000000000000083e30e006500000000000000731b0f00660000000000000079530f006700000000000000748b0f0068000000000000001fc30f006900000000000000d0fa0f006a00000000000000633210006b00000000000000826a10006c0000000000000028a210006d0000000000000005b310006e0000000000000055d810006f000000000000004810110070000000000000006548110071000000000000008e8011007200000000000000bfb811007300000000000000bbf011007400000000000000e828120075000000000000001561120076000000000000003b991200770000000000000058d112007800000000000000770913007900000000000000944113007a00000000000000c07913007b00000000000000e7b113007c000000000000000cea13007d0000000000000067f313007e00000000000000d31814007f000000000000002e22140080000000000000008c2b14008100000000000000545a14008200000000000000ad63140083000000000000000e89140084000000000000006892140085000000000000008dca14008600000000000000b00215008700000000000000d03a15008800000000000000f3721500890000000000000015ab15008a000000000000003be315008b000000000000005d1b16008c00000000000000855316008d00000000000000b18b16008e00000000000000d3c316008f00000000000000e9fb16009000000000000000073417009100000000000000bf4617009200000000000000286c1700930000000000000029a41700940000000000000041dc17009500000000000000591418009600000000000000bf3918009700000000000000704c18009800000000000000948418009900000000000000f28d18009a00000000000000bcbc18009b00000000000000e4f418009c000000000000000b2d19009d000000000000002c6519009e00000000000000896e19009f00000000000000519d1900a00000000000000075d51900a100000000000000920d1a00a200000000000000ec161a00a300000000000000b6451a00a400000000000000887d1a00a50000000000000077b51a00a600000000000000cdbe1a00a70000000000000070ed1a00a80000000000000083091b00a9000000000000004e251b00aa00000000000000fe371b00ab00000000000000065d1b00ac000000000000005f661b00ad00000000000000bd6f1b00ae00000000000000de941b00af00000000000000fecc1b00b0000000000000001f041c00b1000000000000000c321c00b2000000000000002f3b1c00b3000000000000002e721c00b4000000000000000ca01c00b50000000000000044a91c00b60000000000000022e11c00b70000000000000044191d00b8000000000000000c481d00b9000000000000006b511d00ba000000000000008b891d00bb00000000000000a5c11d00bc0000000000000053f91d00bd00000000000000ff301e00be00000000000000054d1e00bf0000000000000002691e00c000000000000000d1a01e00c100000000000000c5d81e00c200000000000000cf101f00c30000000000000083481f00c400000000000000af801f00c500000000000000d0b81f00c600000000000000f0f01f00c7000000000000001b292000c80000000000000039612000c90000000000000054992000ca000000000000004fd12000cb000000000000004c092100cc00000000000000031c2100cd000000000000006d412100ce00000000000000cc4a2100cf0000000000000098792100d000000000000000c4b12100d100000000000000eee92100d20000000000000011222200d300000000000000325a2200d40000000000000055922200d50000000000000075ca2200d6000000000000008f022300d700000000000000b13a2300d800000000000000cd722300d90000000000000078852300da00000000000000ce8e2300db00000000000000bdaa2300dc00000000000000abe22300dd0000000000000012112400de00000000000000501a2400df0000000000000045512400e000000000000000a1882400e1000000000000005fc02400e20000000000000013f82400e30000000000000007302500e40000000000000013682500e500000000000000c37a2500e600000000000000a8962500e700000000000000fb9f2500e80000000000000000d82500e90000000000000019102600ea000000000000002b482600eb0000000000000028802600ec000000000000002eb82600ed0000000000000044d42600ee0000000000000058f02600ef00000000000000b3f92600f00000000000000065282700f10000000000000057602700f20000000000000064982700f3000000000000008dd02700f400000000000000a7ec2700f500000000000000b9082800f600000000000000e0402800f700000000000000f6782800f80000000000000019b12800f90000000000000040e92800fa000000000000006c212900fb00000000000000a0592900fc00000000000000107f2900fd00000000000000bc912900fe00000000000000eac92900ff00000000000000fd012a000001000000000000ff1d2a0001010000000000000c3a2a0002010000000000002b722a00030100000000000005aa2a000401000000000000fce12a0005010000000000004ceb2a000601000000000000e0fd2a000701000000000000c3192b000801000000000000be512b0009010000000000000a772b000a01000000000000ae892b000b01000000000000b0a52b000c01000000000000abc12b000d010000000000009bf92b000e0100000000000093312c000f0100000000000087692c00100100000000000075a12c00110100000000000074d92c00120100000000000089112d00130100000000000099492d001401000000000000b0812d001501000000000000c3b92d001601000000000000d1f12d001701000000000000d6292e001801000000000000e9612e001901000000000000ea992e001a01000000000000efd12e001b01000000000000f8092f001c01000000000000f0412f001d01000000000000e9792f001e0100000000000036832f001f01000000000000b2b12f002001000000000000a9cd2f00210100000000000094e92f0022010000000000007121300023010000000000003b5930002401000000000000089130002501000000000000599a30002601000000000000f6c830002701000000000000e30031002801000000000000c03831002901000000000000a17031002a01000000000000f27931002b010000000000007fa831002c010000000000005de031002d01000000000000aae931002e01000000000000441832002f01000000000000295032003001000000000000fe8732003101000000000000aa9a3200320100000000000010c0320033010000000000003af8320034010000000000005f303300350100000000000059683300360100000000000078a0330037010000000000009bd833003801000000000000cb1034003901000000000000f44834003a010000000000001c8134003b0100000000000044b934003c0100000000000055f134003d010000000000009dfa34003e01000000000000302935003f01000000000000c6573500400100000000000023613500410100000000000053993500420100000000000080d135004301000000000000560036004401000000000000b10936004501000000000000ce4136004601000000000000037a3600470100000000000031b2360048010000000000005fea360049010000000000007b2237004a01000000000000995a37004b01000000000000f56337004c01000000000000c69237004d01000000000000feca37004e01000000000000340338004f01000000000000683b380050010000000000009e7338005101000000000000c9ab38005201000000000000dcc7380053010000000000003cd138005401000000000000f8e338005501000000000000b0f6380056010000000000001c1c390057010000000000007a2539005801000000000000da2e39005901000000000000525439005a01000000000000878c39005b01000000000000bbc439005c01000000000000f3fc39005d0100000000000028353a005e010000000000005f6d3a005f0100000000000098a53a006001000000000000cedd3a0061010000000000000c163b006201000000000000404e3b00630100000000000019853b006401000000000000608e3b006501000000000000b8973b0066010000000000000fa13b006701000000000000a7b33b006801000000000000fabc3b00690100000000000049c63b006a010000000000009ccf3b006b01000000000000eed83b006c01000000000000c1f43b006d0100000000000014fe3b006e0100000000000066073c006f01000000000000b7103c0070010000000000009e2c3c007101000000000000ee353c00720100000000000094483c007301000000000000e0513c0074010000000000007c643c0075010000000000001d773c0076010000000000004b9c3c00770100000000000010d43c007801000000000000d80b3d0079010000000000001a153d007a0100000000000053433d007b01000000000000ea553d007c01000000000000225f3d007d0100000000000072683d007e01000000000000b4713d007f01000000000000fb7a3d0080010000000000007a8d3d008101000000000000b8963d00820100000000000006a03d00830100000000000088b23d008401000000000000c8bb3d0085010000000000000bc53d0086010000000000001dea3d008701000000000000e9053e008801000000000000b5213e0089010000000000003b343e008a01000000000000843d3e008b010000000000005e593e008c010000000000001f913e008d0100000000000065c83e008e010000000000006bed3e008f01000000000000a9f63e009001000000000000f6ff3e009101000000000000c1373f0092010000000000005c4a3f0093010000000000003b663f009401000000000000856f3f009501000000000000cf783f0096010000000000003ea73f009701000000000000ccde3f0098010000000000008516400099010000000000001e2940009a010000000000006e4e40009b01000000000000c35740009c010000000000009b8640009d01000000000000cebe40009e0100000000000001f740009f01000000000000372f4100a00100000000000097384100a10100000000000070674100a201000000000000a99f4100a30100000000000065b24100a401000000000000ddd74100a50100000000000096ea4100a6010000000000000b104200a70100000000000044484200a8010000000000009c514200a9010000000000003b804200aa0100000000000051b84200ab010000000000006fd44200ac010000000000005ef04200ad01000000000000b9f94200ae010000000000006a284300af0100000000000078604300b00100000000000077984300b101000000000000abd04300b20100000000000064e34300b30100000000000072ff4300b401000000000000d2084400b50100000000000008414400b6010000000000002e794400b7010000000000005eb14400b8010000000000007de94400b9010000000000009e214500ba010000000000005d344500bb01000000000000d0594500bc0100000000000006924500bd010000000000001aca4500be010000000000004a024600bf01000000000000603a4600c00100000000000084724600c101000000000000abaa4600c20100000000000047bd4600c3010000000000009ec64600c401000000000000a0e24600c5010000000000005df54600c601000000000000bf1a4700c701000000000000d1524700c8010000000000007f814700c901000000000000dd8a4700ca0100000000000039944700cb01000000000000f2c24700cc0100000000000010fb4700cd01000000000000d5294800ce010000000000002c334800cf01000000000000f9614800d001000000000000596b4800d10100000000000078874800d2010000000000008da34800d301000000000000aadb4800d401000000000000c6134900d501000000000000eb4b4900d601000000000000e7834900d701000000000000f9bb4900d801000000000000b6ce4900d9010000000000001bf44900da010000000000004a2c4a00db0100000000000066644a00dc010000000000002f7d4a00dd0100000000000019994a00de01000000000000c0ab4a00df01000000000000aec74a00e001000000000000fed04a00e101000000000000bbff4a00e20100000000000019094b00e301000000000000902e4b00e40100000000000041414b00e50100000000000010704b00e6010000000000006e794b00e7010000000000002b8c4b00e80100000000000094b14b00e901000000000000a4e94b00ea01000000000000d4214c00eb01000000000000d7594c00ec01000000000000e8914c00ed0100000000000004ae4c00ee01000000000000ebc94c00ef0100000000000014024d00f001000000000000fe394d00f1010000000000000a724d00f201000000000000667b4d00f30100000000000013aa4d00f40100000000000031c64d00f50100000000000037e24d00f6010000000000004afe4d00f7010000000000002c1a4e00f801000000000000ea2c4e00f90100000000000049364e00fa010000000000004e524e00fb01000000000000628a4e00fc0100000000000079a64e00fd010000000000001ab94e00fe0100000000000079c24e00ff0100000000000094de4e000002000000000000aafa4e00010200000000000059324f00020200000000000004654f000302000000000000ff764f0004020000000000000d804f0005020000000000007e924f000602000000000000c29b4f000702000000000000f4d34f000802000000000000160c50000902000000000000504450000a02000000000000877c50000b02000000000000b6b450000c02000000000000e7ec50000d0200000000000046f650000e02000000000000b61b51000f020000000000001625510010020000000000004f5d510011020000000000000f7051001202000000000000889551001302000000000000b5cd5100140200000000000014d751001502000000000000e605520016020000000000001f3e5200170200000000000053765200180200000000000089ae52001902000000000000e8b752001a02000000000000b7e652001b0200000000000074f952001c02000000000000e81e53001d020000000000001a5753001e02000000000000558f53001f020000000000008ac753002002000000000000b9ff53002102000000000000f13754002202000000000000277054002302000000000000418c54002402000000000000d1a354002502000000000000d9c8540026020000000000007edb54002702000000000000b81355002802000000000000e34b55002902000000000000c58355002a02000000000000d6bb55002b0200000000000007f455002c02000000000000c30656002d020000000000002c2c56002e020000000000005d6456002f020000000000008f9c56003002000000000000c9d456003102000000000000070d570032020000000000004345570033020000000000007a7d570034020000000000007d99570035020000000000009ab557003602000000000000b4ed57003702000000000000f225580038020000000000002f5e580039020000000000006b9658003a02000000000000a6ce58003b02000000000000e30659003c02000000000000183f59003d02000000000000517759003e02000000000000ad8059003f020000000000008baf59004002000000000000e9b859004102000000000000c5e75900420200000000000002205a0043020000000000003f585a0044020000000000007c905a004502000000000000bcc85a004602000000000000f1005b004702000000000000111d5b00480200000000000030395b0049020000000000006f715b004a02000000000000aca95b004b02000000000000e9e15b004c02000000000000251a5c004d0200000000000060525c004e020000000000009f8a5c004f02000000000000dbc25c00500200000000000019fb5c00510200000000000058335d005202000000000000956b5d005302000000000000c7a35d005402000000000000f7db5d00550200000000000031145e0056020000000000006f4c5e005702000000000000a7845e005802000000000000e0bc5e0059020000000000003fc65e005a020000000000001cf55e005b02000000000000582d5f005c0200000000000093655f005d02000000000000cf9d5f005e0200000000000005d65f005f02000000000000440e600060020000000000008346600061020000000000006a7e6000620200000000000056b46000630200000000000000ec60006402000000000000a72361006502000000000000e25b61006602000000000000f293610067020000000000001bcc61006802000000000000dade61006902000000000000590462006a02000000000000963c62006b02000000000000cc7462006c020000000000008c8762006d02000000000000ffac62006e020000000000003ae562006f02000000000000731d63007002000000000000b05563007102000000000000e98d630072020000000000001dc6630073020000000000005dfe63007402000000000000993664007502000000000000d86e6400760200000000000017a76400770200000000000051df640078020000000000008a1765007902000000000000c34f65007a02000000000000018865007b020000000000003ec065007c020000000000007af865007d02000000000000b63066007e02000000000000f06866007f0200000000000004a16600800200000000000041d966008102000000000000711167008202000000000000ac4967008302000000000000de8167008402000000000000f8b967008502000000000000b8cc6700860200000000000035f2670087020000000000006e2a680088020000000000001c3d680089020000000000007f6268008a02000000000000ba9a68008b02000000000000f3d268008c02000000000000310b69008d02000000000000704369008e02000000000000ae7b69008f02000000000000eeb3690090020000000000002bec6900910200000000000065246a009202000000000000a45c6a009302000000000000e0946a0094020000000000001dcd6a009502000000000000dbdf6a00960200000000000059056b00970200000000000018186b009802000000000000923d6b009902000000000000b0756b009a02000000000000e6ad6b009b0200000000000021e66b009c020000000000005e1e6c009d0200000000000096566c009e02000000000000d28e6c009f020000000000000ac76c00a00200000000000047ff6c00a10200000000000077376d00a202000000000000876f6d00a3020000000000000fa76d00a40200000000000059dc6d00a50200000000000022146e00a602000000000000464c6e00a70200000000000071846e00a802000000000000eea96e00a902000000000000aabc6e00aa0200000000000085eb6e00ab02000000000000e4f46e00ac020000000000001c2d6f00ad02000000000000da3f6f00ae0200000000000053656f00af020000000000008c9d6f00b002000000000000c4d56f00b102000000000000d90d7000b202000000000000d7457000b302000000000000f67d7000b402000000000000deb57000b502000000000000b2ed7000b602000000000000a9257100b702000000000000975d7100b802000000000000338c7100b9020000000000007e957100ba0200000000000068b17100bb0200000000000050cd7100bc020000000000001c057200bd02000000000000610e7200be02000000000000c13c7200bf020000000000006b747200c0020000000000005aac7200c10200000000000032e47200c202000000000000dcf67200c302000000000000321c7300c4020000000000002b547300c5020000000000007d8b7300c60200000000000020c37300c702000000000000cefa7300c8020000000000003c327400c9020000000000009b697400ca02000000000000eda07400cb0200000000000056d87400cc0200000000000090107500cd02000000000000ad2c7500ce020000000000000b367500cf02000000000000c7487500d002000000000000fe807500d10200000000000039b97500d20200000000000073f17500d30200000000000030047600d4020000000000004b207600d502000000000000a9297600d60200000000000006337600d702000000000000d3617600d80200000000000090747600d902000000000000089a7600da020000000000002fd27600db020000000000001a0a7700dc0200000000000022427700dd02000000000000007a7700de02000000000000d2b17700df02000000000000f8e97700e0020000000000002b227800e102000000000000635a7800e202000000000000a0927800e302000000000000daca7800e40200000000000011037900e502000000000000483b7900e60200000000000085737900e702000000000000b1ab7900e802000000000000dae37900e902000000000000121c7a00ea0200000000000049547a00eb02000000000000878c7a00ec02000000000000bfc47a00ed02000000000000edfc7a00ee0200000000000026357b00ef02000000000000606d7b00f0020000000000009da57b00f102000000000000cddd7b00f20200000000000006167c00f3020000000000003f4e7c00f402000000000000fb607c00f50200000000000077867c00f602000000000000b4be7c00f70200000000000014c87c00f802000000000000e0f67c00f9020000000000001b2f7d00fa0200000000000058677d00fb02000000000000959f7d00fc02000000000000d2d77d00fd02000000000000ec0f7e00fe0200000000000025487e00ff020000000000005f807e0000030000000000009ab87e000103000000000000d3f07e000203000000000000ee0c7f0003030000000000000a297f000403000000000000c53b7f00050300000000000043617f0006030000000000007b997f000703000000000000b9d17f000803000000000000f20980000903000000000000284280000a030000000000005e7a80000b0300000000000099b280000c03000000000000d2ea80000d03000000000000082381000e030000000000003e5b81000f030000000000007b9381001003000000000000b8cb81001103000000000000f30382001203000000000000313c82001303000000000000697482001403000000000000a6ac82001503000000000000c4c882001603000000000000e0e482001703000000000000ff00830018030000000000001e1d83001903000000000000dd2f83001a030000000000005b5583001b03000000000000988d83001c03000000000000d5c583001d0300000000000010fe83001e030000000000004e3684001f03000000000000826e84002003000000000000bba684002103000000000000f5de840022030000000000006f0485002303000000000000cc0d850024030000000000002c1785002503000000000000ea2985002603000000000000634f850027030000000000007e6b850028030000000000009a878500290300000000000017ad85002a03000000000000d2bf85002b0300000000000031c985002c030000000000000ef885002d030000000000004a3086002e03000000000000866886002f03000000000000bea086003003000000000000f2d8860031030000000000002a1187003203000000000000871a870033030000000000006449870034030000000000001d5c87003503000000000000998187003603000000000000cfb987003703000000000000eed5870038030000000000000cf2870039030000000000004a2a88003a03000000000000a83388003b03000000000000826288003c03000000000000b69a88003d03000000000000efd288003e030000000000002d0b89003f030000000000004d27890040030000000000006c4389004103000000000000ab7b89004203000000000000eab38900430300000000000028ec8900440300000000000068248a004503000000000000a05c8a004603000000000000b4948a004703000000000000f4cc8a00480300000000000030058b0049030000000000006f3d8b004a030000000000008e598b004b03000000000000ae758b004c03000000000000ecad8b004d0300000000000028e68b004e03000000000000331e8c004f030000000000004f568c0050030000000000008e8e8c005103000000000000c7c68c00520300000000000005ff8c00530300000000000041378d005403000000000000746f8d005503000000000000a4a78d00560300000000000064ba8d005703000000000000e4df8d0058030000000000000a188e00590300000000000023508e005a0300000000000027888e005b03000000000000d89a8e005c0300000000000043c08e005d0300000000000082f88e005e03000000000000c0308f005f03000000000000ff688f0060030000000000001ba18f00610300000000000059d98f006203000000000000981190006303000000000000d64990006403000000000000f56590006503000000000000158290006603000000000000758b9000670300000000000053ba9000680300000000000092f290006903000000000000d22a91006a03000000000000106391006b03000000000000489b91006c03000000000000a2a491006d030000000000001bd391006e03000000000000530992006f03000000000000d32e9200700300000000000090419200710300000000000074799200720300000000000094b19200730300000000000072e092007403000000000000d2e992007503000000000000b21893007603000000000000122293007703000000000000445a93007803000000000000739293007903000000000000f3b793007a03000000000000abca93007b030000000000005ddd93007c03000000000000c40294007d03000000000000e13a94007e03000000000000217394007f0300000000000059ab9400800300000000000090e394008103000000000000c31b95008203000000000000ea53950083030000000000009866950084030000000000000b8c9500850300000000000046c49500860300000000000057fc950087030000000000008f3496008803000000000000cf6c960089030000000000000ba596008a0300000000000045dd96008b03000000000000a3e696008c03000000000000801597008d03000000000000bc4d97008e03000000000000f78597008f030000000000002ebe9700900300000000000030f6970091030000000000005a2e98009203000000000000956698009303000000000000d49e9800940300000000000014d7980095030000000000003b0f990096030000000000006c4799009703000000000000ac7f9900980300000000000078b79900990300000000000026ca99009a030000000000007cef99009b0300000000000085279a009c03000000000000be5f9a009d03000000000000fd979a009e03000000000000b9aa9a009f0300000000000022d09a00a0030000000000003dec9a00a10300000000000058089b00a20300000000000074249b00a3030000000000008b409b00a403000000000000e4499b00a50300000000000038789b00a60300000000000076819b00a703000000000000e4af9b00a803000000000000b7e79b00a903000000000000731f9c00aa03000000000000a6289c00ab030000000000002f3b9c00ac0300000000000012579c00ad030000000000005d609c00ae03000000000000cb8e9c00af0300000000000057a19c00b00300000000000086c69c00b1030000000000005afe9c00b20300000000000002369d00b303000000000000bc6d9d00b40300000000000099a59d00b5030000000000004edd9d00b603000000000000db149e00b703000000000000e0399e00b803000000000000724c9e00b9030000000000002a849e00ba03000000000000ee9f9e00bb03000000000000d1bb9e00bc030000000000007df39e00bd03000000000000f02a9f00be030000000000006a629f00bf03000000000000ff999f00c0030000000000002ed19f00c1030000000000004608a000c203000000000000893fa000c303000000000000a476a000c403000000000000dfada000c5030000000000001cb7a000c6030000000000003ce5a000c703000000000000921ca100c8030000000000008c53a100c903000000000000988aa100ca0300000000000010a6a100cb03000000000000a0c1a100cc03000000000000e5d3a100cd0300000000000072f8a100ce030000000000007c2fa200cf030000000000003766a200d003000000000000389da200d10300000000000056a6a200d203000000000000a9b8a200d303000000000000cac1a200d4030000000000001ad4a200d503000000000000200ba300d6030000000000002714a300d703000000000000bc41a300d8030000000000006778a300d9030000000000000aafa300da0300000000000046dca300db0300000000000065e5a300dc03000000000000a81ba400dd03000000000000d72da400de030000000000002352a400df030000000000006288a400e003000000000000c1bea400e103000000000000f8f4a400e203000000000000212ba500e3030000000000003f61a500e403000000000000656aa500e503000000000000e497a500e60300000000000040cea500e703000000000000b204a600e803000000000000fc3aa600e9030000000000009471a600ea0300000000000037a8a600eb030000000000001adfa600ec03000000000000ea0ca700ed030000000000000e16a700ee030000000000005228a700ef030000000000007d31a700f003000000000000034da700f1030000000000002084a700f2030000000000004a8da700f303000000000000a99fa700f403000000000000f6baa700f503000000000000c1f1a700f603000000000000be28a800f703000000000000a65fa800f8030000000000003e7ba800f903000000000000c296a800fa03000000000000c3cda800fb03000000000000d504a900fc03000000000000f83ba900fd030000000000005f73a900fe03000000000000ceaaa900ff030000000000000bb4a900000400000000000005e2a90001040000000000005e19aa000204000000000000c12baa0003040000000000008e50aa000404000000000000fd62aa0005040000000000008175aa000604000000000000fa87aa0007040000000000002f91aa0008040000000000005dbfaa000904000000000000a3c8aa000a04000000000000e5f6aa000b04000000000000e41bab000c040000000000005b2eab000d04000000000000e765ab000e040000000000004c9dab000f0400000000000085a6ab001004000000000000b8d4ab001104000000000000fdddab0012040000000000003b0cac001304000000000000d043ac001404000000000000827bac001504000000000000b8a0ac0016040000000000005bb3ac00170400000000000029ebac0018040000000000006af4ac0019040000000000000e07ad001a04000000000000f422ad001b04000000000000432cad001c040000000000009935ad001d04000000000000ee3ead001e04000000000000d55aad001f04000000000000bd76ad002004000000000000a592ad00210400000000000076caad002204000000000000f6dcad002304000000000000e001ae0024040000000000004f39ae0025040000000000001371ae0026040000000000005f7aae002704000000000000fc8cae002804000000000000cda8ae0029040000000000005ebbae002a0400000000000081e0ae002b040000000000004f18af002c040000000000001e50af002d04000000000000e687af002e04000000000000a0bfaf002f040000000000005ff7af003004000000000000042fb0003104000000000000da66b00032040000000000009a9eb000330400000000000063d6b0003404000000000000300eb1003504000000000000da45b10036040000000000009a7db100370400000000000050b5b100380400000000000029edb1003904000000000000971bb2003a04000000000000e024b2003b04000000000000995cb2003c040000000000006694b2003d0400000000000048b0b2003e040000000000002eccb2003f0400000000000075d5b200400400000000000008e8b2004104000000000000e703b3004204000000000000ce1fb3004304000000000000b63bb30044040000000000000d45b30045040000000000009f57b30046040000000000007573b3004704000000000000c67cb30048040000000000003aabb3004904000000000000e4e2b3004a04000000000000651ab4004b04000000000000f951b4004c040000000000009389b4004d0400000000000025c1b4004e04000000000000f6f8b4004f04000000000000241eb5005004000000000000b130b50051040000000000007068b500520400000000000040a0b5005304000000000000ecd7b50054040000000000000510b60055040000000000003e48b60056040000000000007a80b6005704000000000000b7b8b6005804000000000000f3f0b60059040000000000002f29b7005a04000000000000ae4eb7005b040000000000006861b7005c04000000000000a599b7005d04000000000000ded1b7005e040000000000005cf7b7005f04000000000000160ab80060040000000000005042b8006104000000000000964bb8006204000000000000687ab8006304000000000000a6b2b800640400000000000066c5b8006504000000000000e5eab80066040000000000000423b90067040000000000003f5bb90068040000000000005d77b90069040000000000007b93b9006a04000000000000b7cbb9006b04000000000000ef03ba006c04000000000000133cba006d040000000000003358ba006e040000000000005174ba006f0400000000000042acba0070040000000000006ce4ba007104000000000000a21cbb007204000000000000e054bb007304000000000000405ebb0074040000000000001b8dbb0075040000000000002ec5bb0076040000000000006dfdbb007704000000000000a435bc007804000000000000d06dbc0079040000000000000ca6bc007a040000000000004adebc007b040000000000008716bd007c04000000000000c34ebd007d04000000000000fc86bd007e040000000000003bbfbd007f040000000000007af7bd008004000000000000d500be008104000000000000b32fbe008204000000000000ea67be00830400000000000027a0be00840400000000000065d8be008504000000000000a410bf008604000000000000dd48bf0087040000000000003b52bf0088040000000000001881bf0089040000000000008fb8bf008a04000000000000cbc1bf008b04000000000000f8efbf008c040000000000007602c0008d040000000000008327c0008e04000000000000075fc0008f040000000000005d96c000900400000000000009cec00091040000000000003b06c10092040000000000002d3ec10093040000000000006476c10094040000000000007aaec1009504000000000000b9e6c1009604000000000000ef1ec20097040000000000002c57c2009804000000000000698fc20099040000000000008cc7c2009a040000000000009effc2009b04000000000000da37c3009c04000000000000ee6fc3009d0400000000000029a8c3009e0400000000000067e0c3009f04000000000000240fc400a0040000000000008218c400a104000000000000b150c400a204000000000000c088c400a304000000000000d2c0c400a404000000000000f6f8c400a5040000000000001231c500a604000000000000d143c500a7040000000000004d69c500a80400000000000089a1c500a904000000000000c4d9c500aa040000000000000112c600ab040000000000005c1bc600ac040000000000003a4ac600ad040000000000007482c600ae04000000000000abbac600af04000000000000e4f2c600b0040000000000001d2bc700b1040000000000002e47c700b2040000000000004863c700b304000000000000687fc700b404000000000000829bc700b5040000000000009bd3c700b604000000000000d80bc800b7040000000000001144c800b804000000000000704dc800b904000000000000d056c800ba040000000000004e7cc800bb0400000000000080b4c800bc04000000000000b1ecc800bd040000000000009808c900be040000000000008d24c900bf04000000000000c75cc900c004000000000000df94c900c104000000000000feb0c900c2040000000000001dcdc900c3040000000000004605ca00c4040000000000006e3dca00c5040000000000009e75ca00c604000000000000029bca00c704000000000000aeadca00c8040000000000008adcca00c904000000000000eae5ca00ca04000000000000251ecb00cb04000000000000fa55cb00cc04000000000000778ccb00cd04000000000000eec3cb00ce0400000000000005fccb00cf040000000000004134cc00d004000000000000716ccc00d10400000000000096a4cc00d204000000000000d3dccc00d30400000000000086efcc00d4040000000000000215cd00d504000000000000ac27cd00d604000000000000264dcd00d7040000000000008656cd00d8040000000000006385cd00d9040000000000003bb4cd00da0400000000000099bdcd00db04000000000000d8f5cd00dc04000000000000172ece00dd040000000000005366ce00de04000000000000909ece00df04000000000000b7d6ce00e00400000000000068e9ce00e104000000000000cc0ecf00e2040000000000000547cf00e304000000000000427fcf00e40400000000000079b7cf00e504000000000000b8efcf00e604000000000000f427d000e7040000000000000b60d000e8040000000000004698d000e90400000000000083d0d000ea04000000000000c008d100eb04000000000000fa40d100ec040000000000003679d100ed0400000000000073b1d100ee0400000000000087cdd100ef04000000000000a6e9d100f004000000000000e521d200f1040000000000001e5ad200f2040000000000005692d200f30400000000000092cad200f40400000000000052ddd200f504000000000000ce02d300f604000000000000e13ad300f7040000000000003444d300f804000000000000dc56d300f904000000000000ef72d300fa040000000000004d7cd300fb0400000000000024abd300fc04000000000000a1d0d300fd040000000000005be3d300fe04000000000000901bd400ff04000000000000ce53d40000050000000000000a8cd40001050000000000003ac4d40002050000000000004ae0d400030500000000000069fcd4000405000000000000a134d50005050000000000006047d5000605000000000000de6cd50007050000000000001ba5d500080500000000000058ddd50009050000000000009415d6000a05000000000000d24dd6000b05000000000000f085d6000c050000000000001ebed6000d05000000000000fbecd6000e050000000000005bf6d6000f050000000000008b2ed7001005000000000000c566d7001105000000000000029fd700120500000000000036d7d70013050000000000006f0fd80014050000000000009f47d8001505000000000000c97fd8001605000000000000e4b7d80017050000000000001ff0d80018050000000000005928d90019050000000000009560d9001a050000000000005473d9001b05000000000000718fd9001c05000000000000d198d9001d0500000000000031a2d9001e050000000000000fd1d9001f05000000000000cfe3d90020050000000000004f09da0021050000000000008941da002205000000000000b979da002305000000000000edb1da00240500000000000047bbda00250500000000000054d7da00260500000000000007eada00270500000000000067f3da0028050000000000003a22db0029050000000000005e5adb002a050000000000007892db002b05000000000000b0cadb002c05000000000000e702dc002d05000000000000183bdc002e050000000000007644dc002f050000000000002773dc003005000000000000dd85dc0031050000000000004dabdc00320500000000000086e3dc003305000000000000bb1bdd003405000000000000944add003505000000000000f453dd003605000000000000ad66dd003705000000000000298cdd00380500000000000060c4dd0039050000000000009cfcdd003a05000000000000fa05de003b05000000000000d734de003c05000000000000b56cde003d0500000000000045a4de003e05000000000000a1d2de003f05000000000000e4dbde0040050000000000002fe5de0041050000000000003c05df004205000000000000d81adf004305000000000000d636df0044050000000000002840df004505000000000000d252df004605000000000000cf6edf004705000000000000a9a6df004805000000000000eeafdf00490500000000000047b9df004a05000000000000b1dedf004b050000000000000de8df004c050000000000006e0de0004d05000000000000cb16e0004e05000000000000d84ee0004f050000000000007886e0005005000000000000b3bee0005105000000000000c3f6e0005205000000000000fe2ee10053050000000000002c67e1005405000000000000e679e1005505000000000000a68ce1005605000000000000629fe10057050000000000009bd7e10058050000000000005806e2005905000000000000b10fe2005a05000000000000e647e2005b050000000000001880e2005c050000000000007689e2005d050000000000004cb8e2005e050000000000007ef0e2005f05000000000000b228e3006005000000000000e760e30061050000000000002499e300620500000000000060d1e30063050000000000009c09e4006405000000000000d441e4006505000000000000334be40066050000000000000a7ae4006705000000000000e0a8e400680500000000000040b2e40069050000000000006feae4006a05000000000000a022e5006b05000000000000de5ae5006c050000000000001a93e5006d0500000000000055cbe5006e050000000000000bdee5006f050000000000008203e6007005000000000000db0ce6007105000000000000b53be6007205000000000000f073e60073050000000000004e7de60074050000000000002cace60075050000000000008cb5e60076050000000000006be4e6007705000000000000a51ce7007805000000000000dc54e7007905000000000000168de7007a050000000000004ac5e7007b0500000000000057fde7007c050000000000009335e8007d05000000000000d06de8007e050000000000002e77e8007f0500000000000004a6e80080050000000000003fdee80081050000000000007b16e9008205000000000000b74ee9008305000000000000e886e900840500000000000015bfe900850500000000000046f7e9008605000000000000602fea0087050000000000000442ea0088050000000000005a4bea0089050000000000006a67ea008a05000000000000889fea008b05000000000000daa8ea008c0500000000000079d7ea008d050000000000009f0feb008e050000000000005c22eb008f050000000000001c35eb009005000000000000d847eb0091050000000000000e80eb0092050000000000003eb8eb00930500000000000076f0eb009405000000000000ad28ec009505000000000000e660ec0096050000000000002399ec00970500000000000060d1ec0098050000000000009e09ed0099050000000000005e1ced009a05000000000000da41ed009b050000000000009654ed009c050000000000005567ed009d05000000000000127aed009e050000000000004ab2ed009f0500000000000082eaed00a005000000000000e1f3ed00a105000000000000bd22ee00a205000000000000fa5aee00a3050000000000003493ee00a405000000000000929cee00a50500000000000070cbee00a605000000000000ac03ef00a705000000000000eb3bef00a805000000000000fb73ef00a905000000000000feabef00aa05000000000000bebeef00ab0500000000000038e4ef00ac050000000000004e1cf000ad050000000000008854f000ae05000000000000958cf000af05000000000000c5c4f000b005000000000000fffcf000b1050000000000002e35f100b205000000000000de47f100b305000000000000466df100b4050000000000005da5f100b50500000000000094ddf100b605000000000000c115f200b705000000000000fa4df200b8050000000000002d86f200b90500000000000067bef200ba05000000000000a0f6f200bb05000000000000b52ef300bc050000000000003254f300bd05000000000000ef66f300be05000000000000239ff300bf0500000000000032d7f300c005000000000000dde9f300c1050000000000001e0ff400c2050000000000004f47f400c3050000000000008d7ff400c4050000000000006bb7f400c5050000000000009beff400c605000000000000c927f500c705000000000000ff5ff500c8050000000000003198f500c90500000000000063d0f500ca050000000000008908f600cb05000000000000c240f600cc050000000000001d66f600cd05000000000000ca78f600ce05000000000000fbb0f600cf0500000000000031e9f600d0050000000000006021f700d1050000000000009e59f700d205000000000000d891f700d3050000000000000acaf700d4050000000000004402f800d5050000000000007b3af800d605000000000000fa5ff800d705000000000000b672f800d805000000000000ebaaf800d90500000000000048b4f800da0500000000000024e3f800db05000000000000601bf900dc050000000000009753f900dd05000000000000ac8bf900de05000000000000e3c3f900df050000000000001cfcf900e0050000000000005934fa00e105000000000000936cfa00e205000000000000a7a4fa00e305000000000000dfdcfa00e4050000000000001a15fb00e5050000000000004d4dfb00e605000000000000a656fb00e7050000000000007b85fb00e805000000000000a2bdfb00e905000000000000dff5fb00ea050000000000005f1bfc00eb050000000000001e2efc00ec050000000000005266fc00ed050000000000000c79fc00ee05000000000000cc8bfc00ef050000000000002995fc00f005000000000000899efc00f105000000000000c1d6fc00f2050000000000007ee9fc00f3050000000000003dfcfc00f405000000000000f00efd00f5050000000000004c18fd00f6050000000000001a47fd00f7050000000000004a7ffd00f80500000000000086b7fd00f905000000000000beeffd00fa050000000000001ef9fd00fb05000000000000ee27fe00fc050000000000000944fe00fd050000000000002560fe00fe05000000000000307cfe00ff050000000000002798fe000006000000000000e2aafe00010600000000000042b4fe0002060000000000005dd0fe0003060000000000009a08ff000406000000000000ca40ff000506000000000000244aff000606000000000000f278ff0007060000000000002db1ff00080600000000000063e9ff000906000000000000712100010a06000000000000313400010b060000000000004c5000010c06000000000000ac5900010d06000000000000b49100010e06000000000000e3c900010f06000000000000f60101011006000000000000103a010111060000000000003056010112060000000000004c720101130600000000000084aa01011406000000000000c2e201011506000000000000fe1a02011606000000000000235302011706000000000000618b020118060000000000009dc3020119060000000000005ad602011a06000000000000badf02011b06000000000000d7fb02011c06000000000000370503011d06000000000000f71703011e06000000000000133403011f06000000000000516c03012006000000000000107f030121060000000000008da403012206000000000000cadc03012306000000000000f81404012406000000000000324d0401250600000000000070850401260600000000000080bd040127060000000000008bf504012806000000000000842d05012906000000000000d73605012a060000000000008b6505012b06000000000000c19d05012c06000000000000f9d505012d060000000000002e0e06012e06000000000000664606012f060000000000009d7e06013006000000000000d7b60601310600000000000011ef06013206000000000000442707013306000000000000725f07013406000000000000af9707013506000000000000e7cf070136060000000000001f0808013706000000000000372408013806000000000000544008013906000000000000917808013a06000000000000c8b008013b0600000000000001e908013c060000000000000f2109013d06000000000000085909013e06000000000000a99009013f06000000000000b5c809014006000000000000c5000a014106000000000000d2380a01420600000000000006710a014306000000000000f5a80a0144060000000000002be10a01450600000000000012190b01460600000000000048510b01470600000000000086890b014806000000000000e5920b014906000000000000c4c10b014a0600000000000000fa0b014b060000000000001d320c014c060000000000000b6a0c014d06000000000000c5980c014e060000000000001aa20c014f06000000000000d7d00c0150060000000000002dda0c01510600000000000069120d015206000000000000a44a0d015306000000000000df820d0154060000000000001dbb0d01550600000000000055f30d015606000000000000852b0e01570600000000000083630e015806000000000000c39b0e0159060000000000001ba50e015a060000000000007bae0e015b06000000000000f7d30e015c06000000000000afe60e015d06000000000000290c0f015e0600000000000065440f015f06000000000000db690f016006000000000000977c0f016106000000000000d2b40f016206000000000000ecec0f016306000000000000062510016406000000000000ea5c10016506000000000000f49410016606000000000000ffcc100167060000000000005ed610016806000000000000d6fb10016906000000000000340511016a06000000000000613d11016b060000000000008b7511016c06000000000000919111016d06000000000000abad11016e06000000000000e0e511016f060000000000001d1e120170060000000000005556120171060000000000006c8e120172060000000000008aaa12017306000000000000a3c612017406000000000000bdfe12017506000000000000f83613017606000000000000126f130177060000000000006c9413017806000000000000c99d1301790600000000000029a713017a060000000000005bdf13017b06000000000000b8e813017c0600000000000016f213017d060000000000008d1714017e06000000000000ec2014017f06000000000000a43314018006000000000000bc4f14018106000000000000d58714018206000000000000919a1401830600000000000005c0140184060000000000005fc914018506000000000000f8f714018606000000000000a10a15018706000000000000fa1315018806000000000000561d15018906000000000000fa2f15018a06000000000000513915018b06000000000000aa4215018c06000000000000106815018d060000000000002f8415018e060000000000004ba015018f060000000000002cbc15019006000000000000ccce1501910600000000000019d81501920600000000000076e115019306000000000000331016019406000000000000664816019506000000000000998016019606000000000000d5b81601970600000000000093cb16019806000000000000f3d4160199060000000000000ff116019a06000000000000cd0317019b06000000000000492917019c06000000000000a33217019d06000000000000444517019e060000000000003a6117019f06000000000000117d1701a0060000000000001c991701a10600000000000059d11701a2060000000000008c091801a306000000000000c2411801a4060000000000001e4b1801a50600000000000037671801a606000000000000f2791801a7060000000000001fb21801a806000000000000dec41801a90600000000000056ea1801aa0600000000000005fd1801ab0600000000000079221901ac06000000000000b25a1901ad06000000000000e5921901ae06000000000000f9ca1901af060000000000005df01901b00600000000000017031a01b1060000000000003a3b1a01b206000000000000e64d1a01b30600000000000044731a01b406000000000000a37c1a01b50600000000000078ab1a01b6060000000000006ee31a01b706000000000000921b1b01b806000000000000be531b01b9060000000000001d5d1b01ba06000000000000ec8b1b01bb0600000000000009c41b01bc06000000000000e5fb1b01bd06000000000000f1331c01be06000000000000ef6b1c01bf06000000000000a39a1c01c006000000000000fba31c01c106000000000000f2db1c01c206000000000000f8131d01c306000000000000df4b1d01c40600000000000075831d01c506000000000000aaa81d01c6060000000000003bbb1d01c7060000000000002fd71d01c80600000000000017f31d01c90600000000000067fc1d01ca06000000000000ad211e01cb06000000000000fb2a1e01cc0600000000000052341e01cd06000000000000da621e01ce06000000000000c87e1e01cf06000000000000b09a1e01d00600000000000089d21e01d1060000000000000fe51e01d2060000000000005fee1e01d3060000000000003b0a1f01d406000000000000f8411f01d50600000000000098541f01d606000000000000ac5d1f01d70600000000000094791f01d8060000000000006eb11f01d90600000000000038e91f01da060000000000000b212001db06000000000000e6582001dc06000000000000c8902001dd0600000000000062a32001de060000000000007ac82001df060000000000001cdb2001e0060000000000005d002101e10600000000000021382101e206000000000000f76f2101e3060000000000003d792101e406000000000000cea72101e50600000000000095df2101e6060000000000006e172201e706000000000000334f2201e80600000000000085582201e90600000000000010872201ea06000000000000eea22201eb06000000000000cbbe2201ec06000000000000a9da2201ed060000000000009ef62201ee060000000000003d092301ef06000000000000782e2301f0060000000000000c412301f1060000000000005e4a2301f20600000000000045662301f3060000000000003b822301f406000000000000299e2301f506000000000000fed52301f606000000000000990d2401f7060000000000002c202401f806000000000000173c2401f90600000000000063452401fa06000000000000fd572401fb060000000000002a7d2401fc0600000000000000b52401fd06000000000000b8ec2401fe0600000000000037242501ff06000000000000155c25010007000000000000e69325010107000000000000a6cb25010207000000000000630326010307000000000000b30c260104070000000000000916260105070000000000005b1f26010607000000000000523b260107070000000000004857260108070000000000002d732601090700000000000018ab26010a07000000000000fdc626010b07000000000000ede226010c070000000000008d1127010d07000000000000e31a27010e07000000000000cc5227010f07000000000000ac8a270110070000000000004b9d2701110700000000000090c22701120700000000000087fa27011307000000000000583228011407000000000000fe6928011507000000000000557328011607000000000000f4a128011707000000000000ced9280118070000000000007d1129011907000000000000414929011a070000000000001a8129011b07000000000000deb829011c07000000000000bff029011d07000000000000a8282a011e070000000000008b602a011f07000000000000dc692a0120070000000000002d732a0121070000000000007a7c2a012207000000000000198f2a01230700000000000069982a01240700000000000003ab2a0125070000000000004ab42a0126070000000000009ebd2a01270700000000000041d02a012807000000000000e7e22a01290700000000000089f52a012a0700000000000023082b012b07000000000000cb1a2b012c0700000000000018242b012d070000000000006b2d2b012e07000000000000ba362b012f070000000000000e402b013007000000000000af522b013107000000000000035c2b0132070000000000004c652b0133070000000000009b6e2b013407000000000000e4772b013507000000000000abaf2b013607000000000000f8b82b01370700000000000052c22b013807000000000000f0d42b0139070000000000008de72b013a0700000000000081032c013b070000000000005e1f2c013c070000000000004a3b2c013d0700000000000037572c013e070000000000000a8f2c013f070000000000005e982c014007000000000000eeaa2c0141070000000000007fbd2c014207000000000000d2c62c014307000000000000b6fe2c0144070000000000008f362d014507000000000000426e2d014607000000000000d9a52d014707000000000000a0dd2d0148070000000000003df02d0149070000000000004f152e014a07000000000000971e2e014b07000000000000e2272e014c0700000000000035312e014d07000000000000cb432e014e07000000000000174d2e014f07000000000000a57b2e015007000000000000f8842e015107000000000000e0bc2e01" }, "name": "Polkadot", "properties": { diff --git a/artifacts/polkadot_metadata_full.scale b/artifacts/polkadot_metadata_full.scale index 070797601ace8ba50f323a28614bb73c82350cdb..ab048a265dfe01b84085c760de93ed954a760fc7 100644 GIT binary patch delta 302 zcmX?oRASaKi4Es|^Ts5E6eZ>rCnlF<=I1qE``v!+HzN=;ZNK)LIc5c;!F1y#EDNPW zJo8dgOHzw+GxHKlQay7Eax#-MOBlEr7&cDVTgIZa{l^lP<681e6%pA$K?Sds7a4{B zL&2g`PGSs<+!3<=)9;;UQQ(5{moA*nae+mb1;lT+yuh;E@&c=iKcnXKI(as6_MpWE{)ZyxZ65knjPS;Rkvw({wD6ttbzL?(6#U=(9TcO0J3;>g%aO?m8 delta 244 zcmbPrOycxWi4Es|b9f{KXQt<+rZnIF-G2KwBM>ufzx|szW(A|pbc-b{3%7q-!tz>6 zzUf>`G6Oe*g4fE6jKcq+py_6|I0Ga1f}1SU|D0!0;DYfJ!>6lVV9{j(@!P{Muxt;% z!0O^J!ON)NT$Gwvl3J`#l98&AlA4xSnp2{XFnyOin;zrF=`ZEkw5CfbusJg}PLESy z3!1)NflZAomr=o~G&3g!sIE|vO=LQgBAWx_+Ud@UZ0aC^?~HS&XDYE-OkbhIW+;9} f!7;#7p(I}+Gp{7IC^5N2p**uBLt*-NB{pRMHbh-snaL$GU_p&oxY!!QHvcW_L7&;nQ`uPT|UMj zxL7?OqncnRqk>auW=;x1`+7dc5XO_!S@;>%;Yzjn8NV~`oUSauXaN_C7GN}#d!gVM d;HglOuaKDs^lV~si9&g1NrnQ<+QkBl$^dc^W=H@4 delta 194 zcmbQRh~?NqmJRw-77`TYu9Fm7V_SwP&)S_jg7C3qPXoQqNuOHzv!N-|OvQc}|rOLIyT z5~gq9Wz=KbIQ>2^qt(jJKd6> kQGI$kKjU}CxzpnX7%isH6JRuCJTv`*0HfISw*rjH07hO$wEzGB diff --git a/artifacts/polkadot_metadata_tiny.scale b/artifacts/polkadot_metadata_tiny.scale index c3525c9aa2757474cc48f5b6bde777f4955a1d70..da976768595ca173827c299de3a3ded2e8c2181c 100644 GIT binary patch delta 217 zcmbQdlIiYBrVU^87!4+W)mtbX;+dC{T9R6no0*qblIodTkdv95S;D~0z_4-hKSQO> zyYzb!scDI&IVB1SL8W;mnYpQx<0k4co}Jt~QHvcWvVEd6 zrJGfOfQVAd5*Q33$4j#i`q delta 95 zcmV-l0HFWfsREO!0d$K BC@cT~ diff --git a/testing/integration-tests/src/full_client/codegen/polkadot.rs b/testing/integration-tests/src/full_client/codegen/polkadot.rs index 43a705fc31..261935ed9f 100644 --- a/testing/integration-tests/src/full_client/codegen/polkadot.rs +++ b/testing/integration-tests/src/full_client/codegen/polkadot.rs @@ -451,9 +451,10 @@ pub mod api { "apply_extrinsic", types::ApplyExtrinsic { extrinsic }, [ - 72u8, 54u8, 139u8, 3u8, 118u8, 136u8, 65u8, 47u8, 6u8, 105u8, 125u8, - 223u8, 160u8, 29u8, 103u8, 74u8, 79u8, 149u8, 48u8, 90u8, 237u8, 2u8, - 97u8, 201u8, 123u8, 34u8, 167u8, 37u8, 187u8, 35u8, 176u8, 97u8, + 119u8, 150u8, 250u8, 167u8, 191u8, 251u8, 112u8, 205u8, 40u8, 18u8, + 97u8, 199u8, 147u8, 238u8, 199u8, 51u8, 241u8, 37u8, 192u8, 206u8, + 89u8, 168u8, 252u8, 234u8, 129u8, 58u8, 61u8, 52u8, 92u8, 41u8, 226u8, + 14u8, ], ) } @@ -639,9 +640,9 @@ pub mod api { block_hash, }, [ - 196u8, 50u8, 90u8, 49u8, 109u8, 251u8, 200u8, 35u8, 23u8, 150u8, 140u8, - 143u8, 232u8, 164u8, 133u8, 89u8, 32u8, 240u8, 115u8, 39u8, 95u8, 70u8, - 162u8, 76u8, 122u8, 73u8, 151u8, 144u8, 234u8, 120u8, 100u8, 29u8, + 235u8, 222u8, 8u8, 154u8, 179u8, 166u8, 234u8, 29u8, 236u8, 33u8, 31u8, + 143u8, 137u8, 187u8, 5u8, 34u8, 217u8, 75u8, 237u8, 190u8, 236u8, 76u8, + 243u8, 16u8, 163u8, 25u8, 99u8, 34u8, 72u8, 228u8, 150u8, 173u8, ], ) } @@ -3439,13 +3440,13 @@ pub mod api { pub mod genesis_builder { use super::root_mod; use super::runtime_types; - #[doc = " API to interact with GenesisConfig for the runtime"] + #[doc = " API to interact with RuntimeGenesisConfig for the runtime"] pub struct GenesisBuilder; impl GenesisBuilder { - #[doc = " Creates the default `GenesisConfig` and returns it as a JSON blob."] + #[doc = " Creates the default `RuntimeGenesisConfig` and returns it as a JSON blob."] #[doc = ""] - #[doc = " This function instantiates the default `GenesisConfig` struct for the runtime and serializes it into a JSON"] - #[doc = " blob. It returns a `Vec` containing the JSON representation of the default `GenesisConfig`."] + #[doc = " This function instantiates the default `RuntimeGenesisConfig` struct for the runtime and serializes it into a JSON"] + #[doc = " blob. It returns a `Vec` containing the JSON representation of the default `RuntimeGenesisConfig`."] pub fn create_default_config( &self, ) -> ::subxt::runtime_api::Payload< @@ -3463,13 +3464,13 @@ pub mod api { ], ) } - #[doc = " Build `GenesisConfig` from a JSON blob not using any defaults and store it in the storage."] + #[doc = " Build `RuntimeGenesisConfig` from a JSON blob not using any defaults and store it in the storage."] #[doc = ""] - #[doc = " This function deserializes the full `GenesisConfig` from the given JSON blob and puts it into the storage."] + #[doc = " This function deserializes the full `RuntimeGenesisConfig` from the given JSON blob and puts it into the storage."] #[doc = " If the provided JSON blob is incorrect or incomplete or the deserialization fails, an error is returned."] #[doc = " It is recommended to log any errors encountered during the process."] #[doc = ""] - #[doc = " Please note that provided json blob must contain all `GenesisConfig` fields, no defaults will be used."] + #[doc = " Please note that provided json blob must contain all `RuntimeGenesisConfig` fields, no defaults will be used."] pub fn build_config( &self, json: types::build_config::Json, @@ -4008,9 +4009,9 @@ pub mod api { .hash(); runtime_metadata_hash == [ - 156u8, 238u8, 89u8, 253u8, 131u8, 142u8, 74u8, 227u8, 39u8, 8u8, 168u8, 223u8, - 105u8, 129u8, 225u8, 253u8, 181u8, 1u8, 91u8, 107u8, 103u8, 177u8, 147u8, 165u8, - 10u8, 219u8, 72u8, 215u8, 120u8, 62u8, 229u8, 179u8, + 207u8, 245u8, 15u8, 185u8, 222u8, 184u8, 8u8, 57u8, 116u8, 4u8, 188u8, 174u8, 89u8, + 125u8, 183u8, 99u8, 96u8, 209u8, 149u8, 19u8, 90u8, 184u8, 164u8, 245u8, 65u8, + 86u8, 244u8, 191u8, 30u8, 101u8, 221u8, 209u8, ] } pub mod system { @@ -15766,7 +15767,7 @@ pub mod api { #[doc = "Attest to a statement, needed to finalize the claims process."] #[doc = ""] #[doc = "WARNING: Insecure unless your chain includes `PrevalidateAttests` as a"] - #[doc = "`SignedExtension`."] + #[doc = "`TransactionExtension`."] #[doc = ""] #[doc = "Unsigned Validation:"] #[doc = "A call to attest is deemed valid if the sender has a `Preclaim` registered"] @@ -15954,7 +15955,7 @@ pub mod api { #[doc = "Attest to a statement, needed to finalize the claims process."] #[doc = ""] #[doc = "WARNING: Insecure unless your chain includes `PrevalidateAttests` as a"] - #[doc = "`SignedExtension`."] + #[doc = "`TransactionExtension`."] #[doc = ""] #[doc = "Unsigned Validation:"] #[doc = "A call to attest is deemed valid if the sender has a `Preclaim` registered"] @@ -57896,7 +57897,7 @@ pub mod api { #[doc = "Attest to a statement, needed to finalize the claims process."] #[doc = ""] #[doc = "WARNING: Insecure unless your chain includes `PrevalidateAttests` as a"] - #[doc = "`SignedExtension`."] + #[doc = "`TransactionExtension`."] #[doc = ""] #[doc = "Unsigned Validation:"] #[doc = "A call to attest is deemed valid if the sender has a `Preclaim` registered"] @@ -62162,6 +62163,8 @@ pub mod api { MandatoryValidation, #[codec(index = 10)] BadSigner, + #[codec(index = 11)] + IndeterminateImplicit, } #[derive( :: subxt :: ext :: codec :: Decode, From 952cde3f79380ff1b8cca0caff772354ff6f9904 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Mar 2024 20:30:36 +0100 Subject: [PATCH 46/66] build(deps): bump jsonrpsee from 0.22.1 to 0.22.2 (#1471) * build(deps): bump jsonrpsee from 0.22.1 to 0.22.2 Bumps [jsonrpsee](https://github.com/paritytech/jsonrpsee) from 0.22.1 to 0.22.2. - [Release notes](https://github.com/paritytech/jsonrpsee/releases) - [Changelog](https://github.com/paritytech/jsonrpsee/blob/master/CHANGELOG.md) - [Commits](https://github.com/paritytech/jsonrpsee/compare/v0.22.1...v0.22.2) --- updated-dependencies: - dependency-name: jsonrpsee dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Update Cargo.lock --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Niklas Adolfsson --- Cargo.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d05ffebaae..978945901b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2323,9 +2323,9 @@ dependencies = [ [[package]] name = "jsonrpsee" -version = "0.22.1" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16fcc9dd231e72d22993f1643d5f7f0db785737dbe3c3d7ca222916ab4280795" +checksum = "87f3ae45a64cfc0882934f963be9431b2a165d667f53140358181f262aca0702" dependencies = [ "jsonrpsee-client-transport", "jsonrpsee-core", @@ -2336,9 +2336,9 @@ dependencies = [ [[package]] name = "jsonrpsee-client-transport" -version = "0.22.1" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0476c96eb741b40d39dcb39d0124e3b9be9840ec77653c42a0996563ae2a53f7" +checksum = "455fc882e56f58228df2aee36b88a1340eafd707c76af2fa68cf94b37d461131" dependencies = [ "futures-channel", "futures-util", @@ -2359,9 +2359,9 @@ dependencies = [ [[package]] name = "jsonrpsee-core" -version = "0.22.1" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b974d8f6139efbe8425f32cb33302aba6d5e049556b5bfc067874e7a0da54a2e" +checksum = "b75568f4f9696e3a47426e1985b548e1a9fcb13372a5e320372acaf04aca30d1" dependencies = [ "anyhow", "async-lock 3.3.0", @@ -2384,9 +2384,9 @@ dependencies = [ [[package]] name = "jsonrpsee-http-client" -version = "0.22.1" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19dc795a277cff37f27173b3ca790d042afcc0372c34a7ca068d2e76de2cb6d1" +checksum = "9e7a95e346f55df84fb167b7e06470e196e7d5b9488a21d69c5d9732043ba7ba" dependencies = [ "async-trait", "hyper", @@ -2404,9 +2404,9 @@ dependencies = [ [[package]] name = "jsonrpsee-types" -version = "0.22.1" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b13dac43c1a9fc2648b37f306b0a5b0e29b2a6e1c36a33b95c1948da2494e9c5" +checksum = "3467fd35feeee179f71ab294516bdf3a81139e7aeebdd860e46897c12e1a3368" dependencies = [ "anyhow", "beef", @@ -2417,9 +2417,9 @@ dependencies = [ [[package]] name = "jsonrpsee-ws-client" -version = "0.22.1" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1bbaaf4ce912654081d997ade417c3155727db106c617c0612e85f504c2f744" +checksum = "68ca71e74983f624c0cb67828e480a981586074da8ad3a2f214c6a3f884edab9" dependencies = [ "http", "jsonrpsee-client-transport", From 8bdd276d2fd6ba6de6f9b730a2629ddbc66ac99d Mon Sep 17 00:00:00 2001 From: Tadeo Hepperle <62739623+tadeohepperle@users.noreply.github.com> Date: Wed, 13 Mar 2024 14:48:11 +0100 Subject: [PATCH 47/66] `scale-type-resolver` integration (#1460) * start migrating, broken * first iteration of updating * fmt and clippy * add Composite decoding via scale value patch * bump scale type gen versions * fix decoding with new scale decode * fix js-sys versions * add nit comments --- Cargo.lock | 49 +++++---- Cargo.toml | 21 ++-- cli/src/commands/explore/pallets/constants.rs | 7 +- cli/src/commands/explore/pallets/storage.rs | 2 +- cli/src/commands/explore/runtime_apis/mod.rs | 5 +- examples/wasm-example/Cargo.lock | 101 ++++++++++-------- examples/wasm-example/Cargo.toml | 4 +- subxt/Cargo.toml | 2 +- subxt/src/blocks/extrinsic_types.rs | 42 ++++---- subxt/src/dynamic.rs | 8 +- subxt/src/error/dispatch_error.rs | 24 +++-- subxt/src/error/mod.rs | 6 ++ subxt/src/events/events_type.rs | 22 ++-- subxt/src/metadata/decode_encode_traits.rs | 4 +- subxt/src/runtime_api/runtime_payload.rs | 2 +- subxt/src/storage/storage_key.rs | 18 ++-- subxt/src/tx/mod.rs | 2 +- subxt/src/tx/tx_payload.rs | 21 +--- subxt/src/utils/bits.rs | 39 ++++--- subxt/src/utils/static_type.rs | 21 ++-- subxt/src/utils/unchecked_extrinsic.rs | 29 ++--- subxt/src/utils/wrapper_opaque.rs | 66 +++++------- 22 files changed, 256 insertions(+), 239 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 978945901b..467dd253fe 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3471,38 +3471,38 @@ dependencies = [ [[package]] name = "scale-bits" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "036575c29af9b6e4866ffb7fa055dbf623fe7a9cc159b33786de6013a6969d89" +checksum = "662d10dcd57b1c2a3c41c9cf68f71fb09747ada1ea932ad961aca7e2ca28315f" dependencies = [ "parity-scale-codec", "scale-info", + "scale-type-resolver", "serde", ] [[package]] name = "scale-decode" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7caaf753f8ed1ab4752c6afb20174f03598c664724e0e32628e161c21000ff76" +checksum = "afc79ba56a1c742f5aeeed1f1801f3edf51f7e818f0a54582cac6f131364ea7b" dependencies = [ "derive_more", "parity-scale-codec", "primitive-types", "scale-bits", "scale-decode-derive", - "scale-info", + "scale-type-resolver", "smallvec", ] [[package]] name = "scale-decode-derive" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3475108a1b62c7efd1b5c65974f30109a598b2f45f23c9ae030acb9686966db" +checksum = "5398fdb3c7bea3cb419bac4983aadacae93fe1a7b5f693f4ebd98c3821aad7a5" dependencies = [ "darling 0.14.4", - "proc-macro-crate 1.3.1", "proc-macro2", "quote", "syn 1.0.109", @@ -3510,24 +3510,24 @@ dependencies = [ [[package]] name = "scale-encode" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d70cb4b29360105483fac1ed567ff95d65224a14dd275b6303ed0a654c78de5" +checksum = "628800925a33794fb5387781b883b5e14d130fece9af5a63613867b8de07c5c7" dependencies = [ "derive_more", "parity-scale-codec", "primitive-types", "scale-bits", "scale-encode-derive", - "scale-info", + "scale-type-resolver", "smallvec", ] [[package]] name = "scale-encode-derive" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "995491f110efdc6bea96d6a746140e32bfceb4ea47510750a5467295a4707a25" +checksum = "7a304e1af7cdfbe7a24e08b012721456cc8cecdedadc14b3d10513eada63233c" dependencies = [ "darling 0.14.4", "proc-macro-crate 1.3.1", @@ -3563,10 +3563,20 @@ dependencies = [ ] [[package]] -name = "scale-typegen" +name = "scale-type-resolver" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00860983481ac590ac87972062909bef0d6a658013b592ccc0f2feb272feab11" +checksum = "10b800069bfd43374e0f96f653e0d46882a2cb16d6d961ac43bea80f26c76843" +dependencies = [ + "scale-info", + "smallvec", +] + +[[package]] +name = "scale-typegen" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d6108609f017741c78d35967c7afe4aeaa3999b848282581041428e10d23b63" dependencies = [ "proc-macro2", "quote", @@ -3577,9 +3587,9 @@ dependencies = [ [[package]] name = "scale-typegen-description" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae69c1dfd81e9859a5fb42c1b560369e6ed82d2c5b5cb4cac3bba1962a73f017" +checksum = "479f0b8b0d75cce8d284ace5a9b7f5a12c523c94387c710835695e8b194a17bb" dependencies = [ "anyhow", "peekmore", @@ -3595,9 +3605,9 @@ dependencies = [ [[package]] name = "scale-value" -version = "0.13.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58223c7691bf0bd46b43c9aea6f0472d1067f378d574180232358d7c6e0a8089" +checksum = "c07ccfee963104335c971aaf8b7b0e749be8569116322df23f1f75c4ca9e4a28" dependencies = [ "base58", "blake2", @@ -3609,6 +3619,7 @@ dependencies = [ "scale-decode", "scale-encode", "scale-info", + "scale-type-resolver", "serde", "yap", ] diff --git a/Cargo.toml b/Cargo.toml index 2d6f43c04f..4fe151c2ad 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,7 +18,14 @@ members = [ # We exclude any crates that would depend on non mutually # exclusive feature flags and thus can't compile with the # workspace: -exclude = ["testing/no-std-tests", "testing/wasm-rpc-tests", "testing/wasm-lightclient-tests", "signer/wasm-tests", "examples/wasm-example", "examples/parachain-example"] +exclude = [ + "testing/no-std-tests", + "testing/wasm-rpc-tests", + "testing/wasm-lightclient-tests", + "signer/wasm-tests", + "examples/wasm-example", + "examples/parachain-example" +] resolver = "2" [workspace.package] @@ -81,10 +88,10 @@ proc-macro2 = "1.0.78" quote = "1.0.35" regex = "1.10.3" scale-info = { version = "2.10.0", default-features = false } -scale-value = "0.13.0" -scale-bits = "0.4.0" -scale-decode = "0.10.0" -scale-encode = "0.5.0" +scale-value = "0.14.1" +scale-bits = "0.5.0" +scale-decode = "0.11.1" +scale-encode = "0.6.0" serde = { version = "1.0.197" } serde_json = { version = "1.0.114" } syn = { version = "2.0.15", features = ["full", "extra-traits"] } @@ -98,8 +105,8 @@ url = "2.5.0" wabt = "0.10.0" wasm-bindgen-test = "0.3.24" which = "5.0.0" -scale-typegen-description = "0.1.0" -scale-typegen = "0.1.1" +scale-typegen-description = "0.2.0" +scale-typegen = "0.2.0" strip-ansi-escapes = "0.2.0" # Light client support: diff --git a/cli/src/commands/explore/pallets/constants.rs b/cli/src/commands/explore/pallets/constants.rs index dd5e5faddc..a267c401f8 100644 --- a/cli/src/commands/explore/pallets/constants.rs +++ b/cli/src/commands/explore/pallets/constants.rs @@ -64,8 +64,11 @@ pub fn explore_constants( .highlight(); // value - let value = - scale_value::scale::decode_as_type(&mut constant.value(), constant.ty(), metadata.types())?; + let value = scale_value::scale::decode_as_type( + &mut constant.value(), + &constant.ty(), + metadata.types(), + )?; let value = format_scale_value(&value).indent(4); writedoc!( diff --git a/cli/src/commands/explore/pallets/storage.rs b/cli/src/commands/explore/pallets/storage.rs index 0c932c8f1a..543406bd57 100644 --- a/cli/src/commands/explore/pallets/storage.rs +++ b/cli/src/commands/explore/pallets/storage.rs @@ -169,7 +169,7 @@ pub async fn explore_storage( {value_str} "}?; - let key_bytes = value.encode_as_type(type_id, metadata.types())?; + let key_bytes = value.encode_as_type(&type_id, metadata.types())?; let bytes_composite = Value::from_bytes(key_bytes); vec![bytes_composite] } diff --git a/cli/src/commands/explore/runtime_apis/mod.rs b/cli/src/commands/explore/runtime_apis/mod.rs index cdd5681e26..e3fed9ac01 100644 --- a/cli/src/commands/explore/runtime_apis/mod.rs +++ b/cli/src/commands/explore/runtime_apis/mod.rs @@ -161,9 +161,8 @@ pub async fn run<'a>( {value_str} "}?; // encode, then decode. This ensures that the scale value is of the correct shape for the param: - let bytes = value.encode_as_type(ty.ty, metadata.types())?; - let value = Value::decode_as_type(&mut &bytes[..], ty.ty, metadata.types())? - .map_context(|_| ()); + let bytes = value.encode_as_type(&ty.ty, metadata.types())?; + let value = Value::decode_as_type(&mut &bytes[..], &ty.ty, metadata.types())?; Ok(value) }) .collect::>>()?; diff --git a/examples/wasm-example/Cargo.lock b/examples/wasm-example/Cargo.lock index f46412c7b8..69aa797f9a 100644 --- a/examples/wasm-example/Cargo.lock +++ b/examples/wasm-example/Cargo.lock @@ -476,12 +476,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.6" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c376d08ea6aa96aafe61237c7200d1241cb177b7d3a542d791f2d118e9cbb955" +checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" dependencies = [ - "darling_core 0.20.6", - "darling_macro 0.20.6", + "darling_core 0.20.8", + "darling_macro 0.20.8", ] [[package]] @@ -500,9 +500,9 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.6" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33043dcd19068b8192064c704b3f83eb464f91f1ff527b44a4e2b08d9cdb8855" +checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" dependencies = [ "fnv", "ident_case", @@ -525,11 +525,11 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.6" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5a91391accf613803c2a9bf9abccdbaa07c54b4244a5b64883f9c3c137c86be" +checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" dependencies = [ - "darling_core 0.20.6", + "darling_core 0.20.8", "quote", "syn 2.0.48", ] @@ -1329,9 +1329,9 @@ checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "js-sys" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] @@ -1713,18 +1713,18 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", @@ -2084,38 +2084,38 @@ checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" [[package]] name = "scale-bits" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "036575c29af9b6e4866ffb7fa055dbf623fe7a9cc159b33786de6013a6969d89" +checksum = "662d10dcd57b1c2a3c41c9cf68f71fb09747ada1ea932ad961aca7e2ca28315f" dependencies = [ "parity-scale-codec", "scale-info", + "scale-type-resolver", "serde", ] [[package]] name = "scale-decode" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7caaf753f8ed1ab4752c6afb20174f03598c664724e0e32628e161c21000ff76" +checksum = "afc79ba56a1c742f5aeeed1f1801f3edf51f7e818f0a54582cac6f131364ea7b" dependencies = [ "derive_more", "parity-scale-codec", "primitive-types", "scale-bits", "scale-decode-derive", - "scale-info", + "scale-type-resolver", "smallvec", ] [[package]] name = "scale-decode-derive" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3475108a1b62c7efd1b5c65974f30109a598b2f45f23c9ae030acb9686966db" +checksum = "5398fdb3c7bea3cb419bac4983aadacae93fe1a7b5f693f4ebd98c3821aad7a5" dependencies = [ "darling 0.14.4", - "proc-macro-crate 1.3.1", "proc-macro2", "quote", "syn 1.0.109", @@ -2123,24 +2123,24 @@ dependencies = [ [[package]] name = "scale-encode" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d70cb4b29360105483fac1ed567ff95d65224a14dd275b6303ed0a654c78de5" +checksum = "628800925a33794fb5387781b883b5e14d130fece9af5a63613867b8de07c5c7" dependencies = [ "derive_more", "parity-scale-codec", "primitive-types", "scale-bits", "scale-encode-derive", - "scale-info", + "scale-type-resolver", "smallvec", ] [[package]] name = "scale-encode-derive" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "995491f110efdc6bea96d6a746140e32bfceb4ea47510750a5467295a4707a25" +checksum = "7a304e1af7cdfbe7a24e08b012721456cc8cecdedadc14b3d10513eada63233c" dependencies = [ "darling 0.14.4", "proc-macro-crate 1.3.1", @@ -2176,10 +2176,20 @@ dependencies = [ ] [[package]] -name = "scale-typegen" +name = "scale-type-resolver" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00860983481ac590ac87972062909bef0d6a658013b592ccc0f2feb272feab11" +checksum = "10b800069bfd43374e0f96f653e0d46882a2cb16d6d961ac43bea80f26c76843" +dependencies = [ + "scale-info", + "smallvec", +] + +[[package]] +name = "scale-typegen" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d6108609f017741c78d35967c7afe4aeaa3999b848282581041428e10d23b63" dependencies = [ "proc-macro2", "quote", @@ -2190,9 +2200,9 @@ dependencies = [ [[package]] name = "scale-value" -version = "0.13.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58223c7691bf0bd46b43c9aea6f0472d1067f378d574180232358d7c6e0a8089" +checksum = "c07ccfee963104335c971aaf8b7b0e749be8569116322df23f1f75c4ca9e4a28" dependencies = [ "base58", "blake2", @@ -2204,6 +2214,7 @@ dependencies = [ "scale-decode", "scale-encode", "scale-info", + "scale-type-resolver", "serde", "yap", ] @@ -2659,7 +2670,7 @@ dependencies = [ name = "subxt-macro" version = "0.34.0" dependencies = [ - "darling 0.20.6", + "darling 0.20.8", "parity-scale-codec", "proc-macro-error", "quote", @@ -3011,9 +3022,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3021,9 +3032,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", @@ -3048,9 +3059,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3058,9 +3069,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", @@ -3071,9 +3082,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "wasm-example" @@ -3135,9 +3146,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.67" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", diff --git a/examples/wasm-example/Cargo.toml b/examples/wasm-example/Cargo.toml index 80d3be6ce7..6aaf175b54 100644 --- a/examples/wasm-example/Cargo.toml +++ b/examples/wasm-example/Cargo.toml @@ -9,10 +9,10 @@ edition = "2021" futures = "0.3.28" subxt = { path = "../../subxt", default-features = false, features = ["jsonrpsee", "web"], target_arch = "wasm32" } yew = { version = "0.20.0", features = ["csr"] } -web-sys = "0.3.63" +web-sys = "0.3.69" hex = "0.4.3" yew-router = "0.17.0" -js-sys = "0.3.63" +js-sys = "0.3.69" wasm-bindgen = "0.2.86" wasm-bindgen-futures = "0.4.36" anyhow = "1.0.71" diff --git a/subxt/Cargo.toml b/subxt/Cargo.toml index 4a18bb2b41..67c553fa50 100644 --- a/subxt/Cargo.toml +++ b/subxt/Cargo.toml @@ -154,4 +154,4 @@ features = ["default", "substrate-compat", "unstable-light-client"] rustdoc-args = ["--cfg", "docsrs"] [package.metadata.playground] -features = ["default", "substrate-compat", "unstable-light-client"] +features = ["default", "substrate-compat", "unstable-light-client"] \ No newline at end of file diff --git a/subxt/src/blocks/extrinsic_types.rs b/subxt/src/blocks/extrinsic_types.rs index 333ee5bfe8..32bdb057e9 100644 --- a/subxt/src/blocks/extrinsic_types.rs +++ b/subxt/src/blocks/extrinsic_types.rs @@ -245,27 +245,27 @@ where // Skip over the address, signature and extra fields. scale_decode::visitor::decode_with_visitor( cursor, - ids.address, + &ids.address, metadata.types(), - scale_decode::visitor::IgnoreVisitor, + scale_decode::visitor::IgnoreVisitor::new(), ) .map_err(scale_decode::Error::from)?; let address_end_idx = bytes.len() - cursor.len(); scale_decode::visitor::decode_with_visitor( cursor, - ids.signature, + &ids.signature, metadata.types(), - scale_decode::visitor::IgnoreVisitor, + scale_decode::visitor::IgnoreVisitor::new(), ) .map_err(scale_decode::Error::from)?; let signature_end_idx = bytes.len() - cursor.len(); scale_decode::visitor::decode_with_visitor( cursor, - ids.extra, + &ids.extra, metadata.types(), - scale_decode::visitor::IgnoreVisitor, + scale_decode::visitor::IgnoreVisitor::new(), ) .map_err(scale_decode::Error::from)?; let extra_end_idx = bytes.len() - cursor.len(); @@ -420,9 +420,7 @@ where /// Decode and provide the extrinsic fields back in the form of a [`scale_value::Composite`] /// type which represents the named or unnamed fields that were present in the extrinsic. - pub fn field_values( - &self, - ) -> Result, Error> { + pub fn field_values(&self) -> Result, Error> { let bytes = &mut self.field_bytes(); let extrinsic_metadata = self.extrinsic_metadata()?; @@ -430,12 +428,9 @@ where .variant .fields .iter() - .map(|f| scale_decode::Field::new(f.ty.id, f.name.as_deref())); - let decoded = >::decode_as_fields( - bytes, - &mut fields, - self.metadata.types(), - )?; + .map(|f| scale_decode::Field::new(&f.ty.id, f.name.as_deref())); + let decoded = + scale_value::scale::decode_as_fields(bytes, &mut fields, self.metadata.types())?; Ok(decoded) } @@ -451,7 +446,7 @@ where .variant .fields .iter() - .map(|f| scale_decode::Field::new(f.ty.id, f.name.as_deref())); + .map(|f| scale_decode::Field::new(&f.ty.id, f.name.as_deref())); let decoded = E::decode_as_fields(&mut self.field_bytes(), &mut fields, self.metadata.types())?; Ok(Some(decoded)) @@ -466,7 +461,7 @@ where pub fn as_root_extrinsic(&self) -> Result { let decoded = E::decode_as_type( &mut &self.call_bytes()[..], - self.metadata.outer_enums().call_enum_ty(), + &self.metadata.outer_enums().call_enum_ty(), self.metadata.types(), )?; @@ -651,9 +646,9 @@ impl<'a, T: Config> ExtrinsicSignedExtensions<'a, T> { let cursor = &mut &bytes[byte_start_idx..]; if let Err(err) = scale_decode::visitor::decode_with_visitor( cursor, - ty_id, + &ty_id, metadata.types(), - scale_decode::visitor::IgnoreVisitor, + scale_decode::visitor::IgnoreVisitor::new(), ) .map_err(|e| Error::Decode(e.into())) { @@ -748,7 +743,12 @@ impl<'a, T: Config> ExtrinsicSignedExtension<'a, T> { /// Signed Extension as a [`scale_value::Value`] pub fn value(&self) -> Result { - self.as_type() + let value = scale_value::scale::decode_as_type( + &mut &self.bytes[..], + &self.ty_id, + self.metadata.types(), + )?; + Ok(value) } /// Decodes the bytes of this Signed Extension into its associated `Decoded` type. @@ -762,7 +762,7 @@ impl<'a, T: Config> ExtrinsicSignedExtension<'a, T> { } fn as_type(&self) -> Result { - let value = E::decode_as_type(&mut &self.bytes[..], self.ty_id, self.metadata.types())?; + let value = E::decode_as_type(&mut &self.bytes[..], &self.ty_id, self.metadata.types())?; Ok(value) } } diff --git a/subxt/src/dynamic.rs b/subxt/src/dynamic.rs index 2801feb683..c405450481 100644 --- a/subxt/src/dynamic.rs +++ b/subxt/src/dynamic.rs @@ -17,7 +17,7 @@ pub use scale_value::{At, Value}; /// regarding what type was used to decode each part of it. This implements /// [`crate::metadata::DecodeWithMetadata`], and is used as a return type /// for dynamic requests. -pub type DecodedValue = scale_value::Value; +pub type DecodedValue = scale_value::Value; // Submit dynamic transactions. pub use crate::tx::dynamic as tx; @@ -68,9 +68,9 @@ impl DecodedValueThunk { } /// Decode the SCALE encoded storage entry into a dynamic [`DecodedValue`] type. pub fn to_value(&self) -> Result { - let val = DecodedValue::decode_as_type( + let val = scale_value::scale::decode_as_type( &mut &*self.scale_bytes, - self.type_id, + &self.type_id, self.metadata.types(), )?; Ok(val) @@ -79,7 +79,7 @@ impl DecodedValueThunk { pub fn as_type(&self) -> Result { T::decode_as_type( &mut &self.scale_bytes[..], - self.type_id, + &self.type_id, self.metadata.types(), ) } diff --git a/subxt/src/error/dispatch_error.rs b/subxt/src/error/dispatch_error.rs index 3f0c54db56..6de0792dc0 100644 --- a/subxt/src/error/dispatch_error.rs +++ b/subxt/src/error/dispatch_error.rs @@ -7,8 +7,9 @@ use crate::metadata::{DecodeWithMetadata, Metadata}; use core::fmt::Debug; -use scale_decode::{visitor::DecodeAsTypeResult, DecodeAsType}; -use std::borrow::Cow; +use scale_decode::{visitor::DecodeAsTypeResult, DecodeAsType, TypeResolver}; + +use std::{borrow::Cow, marker::PhantomData}; use super::{Error, MetadataError}; @@ -209,7 +210,7 @@ impl ModuleError { pub fn as_root_error(&self) -> Result { let decoded = E::decode_as_type( &mut &self.bytes[..], - self.metadata.outer_enums().error_enum_ty(), + &self.metadata.outer_enums().error_enum_ty(), self.metadata.types(), )?; @@ -262,24 +263,27 @@ impl DispatchError { // a legacy format of 2 bytes, or a newer format of 5 bytes. So, just grab the bytes // out when decoding to manually work with them. struct DecodedModuleErrorBytes(Vec); - struct DecodedModuleErrorBytesVisitor; - impl scale_decode::Visitor for DecodedModuleErrorBytesVisitor { + struct DecodedModuleErrorBytesVisitor(PhantomData); + impl scale_decode::Visitor for DecodedModuleErrorBytesVisitor { type Error = scale_decode::Error; type Value<'scale, 'info> = DecodedModuleErrorBytes; + type TypeResolver = R; + fn unchecked_decode_as_type<'scale, 'info>( self, input: &mut &'scale [u8], - _type_id: scale_decode::visitor::TypeId, - _types: &'info scale_info::PortableRegistry, + _type_id: &R::TypeId, + _types: &'info R, ) -> DecodeAsTypeResult, Self::Error>> { DecodeAsTypeResult::Decoded(Ok(DecodedModuleErrorBytes(input.to_vec()))) } } + impl scale_decode::IntoVisitor for DecodedModuleErrorBytes { - type Visitor = DecodedModuleErrorBytesVisitor; - fn into_visitor() -> Self::Visitor { - DecodedModuleErrorBytesVisitor + type AnyVisitor = DecodedModuleErrorBytesVisitor; + fn into_visitor() -> DecodedModuleErrorBytesVisitor { + DecodedModuleErrorBytesVisitor(PhantomData) } } diff --git a/subxt/src/error/mod.rs b/subxt/src/error/mod.rs index 4534585efc..5dbf1c5897 100644 --- a/subxt/src/error/mod.rs +++ b/subxt/src/error/mod.rs @@ -99,6 +99,12 @@ impl From for Error { } } +impl From for Error { + fn from(value: scale_decode::visitor::DecodeError) -> Self { + Error::Decode(value.into()) + } +} + impl Error { /// Checks whether the error was caused by a RPC re-connection. pub fn is_disconnected_will_reconnect(&self) -> bool { diff --git a/subxt/src/events/events_type.rs b/subxt/src/events/events_type.rs index 831268ad00..6818a84815 100644 --- a/subxt/src/events/events_type.rs +++ b/subxt/src/events/events_type.rs @@ -228,9 +228,9 @@ impl EventDetails { // Skip over the bytes for this field: scale_decode::visitor::decode_with_visitor( input, - field_metadata.ty.id, + &field_metadata.ty.id, metadata.types(), - scale_decode::visitor::IgnoreVisitor, + scale_decode::visitor::IgnoreVisitor::new(), ) .map_err(scale_decode::Error::from)?; } @@ -321,9 +321,7 @@ impl EventDetails { /// Decode and provide the event fields back in the form of a [`scale_value::Composite`] /// type which represents the named or unnamed fields that were present in the event. - pub fn field_values( - &self, - ) -> Result, Error> { + pub fn field_values(&self) -> Result, Error> { let bytes = &mut self.field_bytes(); let event_metadata = self.event_metadata(); @@ -331,14 +329,10 @@ impl EventDetails { .variant .fields .iter() - .map(|f| scale_decode::Field::new(f.ty.id, f.name.as_deref())); + .map(|f| scale_decode::Field::new(&f.ty.id, f.name.as_deref())); - use scale_decode::DecodeAsFields; - let decoded = >::decode_as_fields( - bytes, - &mut fields, - self.metadata.types(), - )?; + let decoded = + scale_value::scale::decode_as_fields(bytes, &mut fields, self.metadata.types())?; Ok(decoded) } @@ -352,7 +346,7 @@ impl EventDetails { .variant .fields .iter() - .map(|f| scale_decode::Field::new(f.ty.id, f.name.as_deref())); + .map(|f| scale_decode::Field::new(&f.ty.id, f.name.as_deref())); let decoded = E::decode_as_fields(&mut self.field_bytes(), &mut fields, self.metadata.types())?; Ok(Some(decoded)) @@ -369,7 +363,7 @@ impl EventDetails { let decoded = E::decode_as_type( &mut &bytes[..], - self.metadata.outer_enums().event_enum_ty(), + &self.metadata.outer_enums().event_enum_ty(), self.metadata.types(), )?; diff --git a/subxt/src/metadata/decode_encode_traits.rs b/subxt/src/metadata/decode_encode_traits.rs index 81dbaea131..8b8d4077fa 100644 --- a/subxt/src/metadata/decode_encode_traits.rs +++ b/subxt/src/metadata/decode_encode_traits.rs @@ -21,7 +21,7 @@ impl DecodeWithMetadata for T { type_id: u32, metadata: &Metadata, ) -> Result { - let val = T::decode_as_type(bytes, type_id, metadata.types())?; + let val = T::decode_as_type(bytes, &type_id, metadata.types())?; Ok(val) } } @@ -45,7 +45,7 @@ impl EncodeWithMetadata for T { metadata: &Metadata, bytes: &mut Vec, ) -> Result<(), Error> { - self.encode_as_type_to(type_id, metadata.types(), bytes)?; + self.encode_as_type_to(&type_id, metadata.types(), bytes)?; Ok(()) } } diff --git a/subxt/src/runtime_api/runtime_payload.rs b/subxt/src/runtime_api/runtime_payload.rs index ff776eb14f..128440b98d 100644 --- a/subxt/src/runtime_api/runtime_payload.rs +++ b/subxt/src/runtime_api/runtime_payload.rs @@ -103,7 +103,7 @@ impl RuntimeApiPayload .ok_or_else(|| MetadataError::RuntimeMethodNotFound((*self.method_name).to_owned()))?; let mut fields = api_method .inputs() - .map(|input| scale_encode::Field::named(input.ty, &input.name)); + .map(|input| scale_encode::Field::named(&input.ty, &input.name)); self.args_data .encode_as_fields_to(&mut fields, metadata.types(), out)?; diff --git a/subxt/src/storage/storage_key.rs b/subxt/src/storage/storage_key.rs index a8bffab329..71ecafde9d 100644 --- a/subxt/src/storage/storage_key.rs +++ b/subxt/src/storage/storage_key.rs @@ -2,7 +2,7 @@ use crate::{ error::{Error, MetadataError, StorageAddressError}, utils::{Encoded, Static}, }; -use scale_decode::{visitor::IgnoreVisitor, DecodeAsType}; +use scale_decode::visitor::IgnoreVisitor; use scale_encode::EncodeAsType; use scale_info::{PortableRegistry, TypeDef}; use scale_value::Value; @@ -203,7 +203,7 @@ impl StorageKey for StaticStorageKey { types: &PortableRegistry, ) -> Result<(), Error> { let (hasher, ty_id) = hashers.next_or_err()?; - let encoded_value = self.bytes.encode_as_type(ty_id, types)?; + let encoded_value = self.bytes.encode_as_type(&ty_id, types)?; hash_bytes(&encoded_value, hasher, bytes); Ok(()) } @@ -242,7 +242,7 @@ impl StorageKey for Vec { ) -> Result<(), Error> { for value in self.iter() { let (hasher, ty_id) = hashers.next_or_err()?; - let encoded_value = value.encode_as_type(ty_id, types)?; + let encoded_value = value.encode_as_type(&ty_id, types)?; hash_bytes(&encoded_value, hasher, bytes); } Ok(()) @@ -260,7 +260,8 @@ impl StorageKey for Vec { for (hasher, ty_id) in hashers.by_ref() { match consume_hash_returning_key_bytes(bytes, hasher, ty_id, types)? { Some(value_bytes) => { - let value = Value::decode_as_type(&mut &*value_bytes, ty_id, types)?; + let value = + scale_value::scale::decode_as_type(&mut &*value_bytes, &ty_id, types)?; result.push(value.remove_context()); } None => { @@ -296,8 +297,13 @@ fn consume_hash_returning_key_bytes<'a>( // Now, find the bytes representing the key, consuming them. let before_key = *bytes; if hasher.ends_with_key() { - scale_decode::visitor::decode_with_visitor(bytes, ty_id, types, IgnoreVisitor) - .map_err(|err| Error::Decode(err.into()))?; + scale_decode::visitor::decode_with_visitor( + bytes, + &ty_id, + types, + IgnoreVisitor::::new(), + ) + .map_err(|err| Error::Decode(err.into()))?; // Return the key bytes, having advanced the input cursor past them. let key_bytes = &before_key[..before_key.len() - bytes.len()]; diff --git a/subxt/src/tx/mod.rs b/subxt/src/tx/mod.rs index 0bb2d9f3eb..c48cf1382b 100644 --- a/subxt/src/tx/mod.rs +++ b/subxt/src/tx/mod.rs @@ -28,6 +28,6 @@ pub use self::{ PartialExtrinsic, SubmittableExtrinsic, TransactionInvalid, TransactionUnknown, TxClient, ValidationResult, }, - tx_payload::{dynamic, BoxedPayload, DynamicPayload, Payload, TxPayload}, + tx_payload::{dynamic, DynamicPayload, Payload, TxPayload}, tx_progress::{TxInBlock, TxProgress, TxStatus}, }; diff --git a/subxt/src/tx/tx_payload.rs b/subxt/src/tx/tx_payload.rs index ff9c71fd21..c2a1dbe65c 100644 --- a/subxt/src/tx/tx_payload.rs +++ b/subxt/src/tx/tx_payload.rs @@ -14,7 +14,7 @@ use codec::Encode; use derivative::Derivative; use scale_encode::EncodeAsFields; use scale_value::{Composite, ValueDef, Variant}; -use std::{borrow::Cow, sync::Arc}; +use std::borrow::Cow; /// This represents a transaction payload that can be submitted /// to a node. @@ -65,10 +65,6 @@ pub struct Payload { validation_hash: Option<[u8; 32]>, } -/// A boxed transaction payload. -// Dev Note: Arc used to enable easy cloning (given that we can't have dyn Clone). -pub type BoxedPayload = Payload>; - /// The type of a payload typically used for dynamic transaction payloads. pub type DynamicPayload = Payload>; @@ -104,19 +100,6 @@ impl Payload { } } - /// Box the payload. - pub fn boxed(self) -> BoxedPayload - where - CallData: EncodeAsFields + Send + Sync + 'static, - { - BoxedPayload { - pallet_name: self.pallet_name, - call_name: self.call_name, - call_data: Arc::new(self.call_data), - validation_hash: self.validation_hash, - } - } - /// Do not validate this call prior to submitting it. pub fn unvalidated(self) -> Self { Self { @@ -174,7 +157,7 @@ impl TxPayload for Payload { let mut fields = call .fields .iter() - .map(|f| scale_encode::Field::new(f.ty.id, f.name.as_deref())); + .map(|f| scale_encode::Field::new(&f.ty.id, f.name.as_deref())); self.call_data .encode_as_fields_to(&mut fields, metadata.types(), out)?; diff --git a/subxt/src/utils/bits.rs b/subxt/src/utils/bits.rs index ed830a0dea..6c334d701c 100644 --- a/subxt/src/utils/bits.rs +++ b/subxt/src/utils/bits.rs @@ -9,7 +9,8 @@ use scale_bits::{ scale::format::{Format, OrderFormat, StoreFormat}, Bits, }; -use scale_decode::IntoVisitor; +use scale_decode::{IntoVisitor, TypeResolver}; + use std::marker::PhantomData; /// Associates `bitvec::store::BitStore` trait with corresponding, type-erased `scale_bits::StoreFormat` enum. @@ -144,45 +145,43 @@ impl codec::Encode for DecodedBits(std::marker::PhantomData<(S, O)>); -impl scale_decode::Visitor for DecodedBitsVisitor { +pub struct DecodedBitsVisitor(std::marker::PhantomData<(S, O, R)>); + +impl scale_decode::Visitor for DecodedBitsVisitor { type Value<'scale, 'info> = DecodedBits; type Error = scale_decode::Error; + type TypeResolver = R; fn unchecked_decode_as_type<'scale, 'info>( self, input: &mut &'scale [u8], - type_id: scale_decode::visitor::TypeId, - types: &'info scale_info::PortableRegistry, + type_id: &R::TypeId, + types: &'info R, ) -> scale_decode::visitor::DecodeAsTypeResult< Self, Result, Self::Error>, > { - let res = scale_decode::visitor::decode_with_visitor( - input, - type_id.0, - types, - Bits::into_visitor(), - ) - .map(|bits| DecodedBits { - bits, - _marker: PhantomData, - }); + let res = + scale_decode::visitor::decode_with_visitor(input, type_id, types, Bits::into_visitor()) + .map(|bits| DecodedBits { + bits, + _marker: PhantomData, + }); scale_decode::visitor::DecodeAsTypeResult::Decoded(res) } } impl scale_decode::IntoVisitor for DecodedBits { - type Visitor = DecodedBitsVisitor; - fn into_visitor() -> Self::Visitor { + type AnyVisitor = DecodedBitsVisitor; + fn into_visitor() -> DecodedBitsVisitor { DecodedBitsVisitor(PhantomData) } } impl scale_encode::EncodeAsType for DecodedBits { - fn encode_as_type_to( + fn encode_as_type_to( &self, - type_id: u32, - types: &scale_info::PortableRegistry, + type_id: &R::TypeId, + types: &R, out: &mut Vec, ) -> Result<(), scale_encode::Error> { self.bits.encode_as_type_to(type_id, types, out) diff --git a/subxt/src/utils/static_type.rs b/subxt/src/utils/static_type.rs index 2d13e61eba..6cf1285f8b 100644 --- a/subxt/src/utils/static_type.rs +++ b/subxt/src/utils/static_type.rs @@ -3,7 +3,7 @@ // see LICENSE for license details. use codec::{Decode, Encode}; -use scale_decode::{visitor::DecodeAsTypeResult, IntoVisitor, Visitor}; +use scale_decode::{visitor::DecodeAsTypeResult, IntoVisitor, TypeResolver, Visitor}; use scale_encode::EncodeAsType; /// If the type inside this implements [`Encode`], this will implement [`scale_encode::EncodeAsType`]. @@ -18,10 +18,10 @@ use scale_encode::EncodeAsType; pub struct Static(pub T); impl EncodeAsType for Static { - fn encode_as_type_to( + fn encode_as_type_to( &self, - _type_id: u32, - _types: &scale_decode::PortableRegistry, + _type_id: &R::TypeId, + _types: &R, out: &mut Vec, ) -> Result<(), scale_encode::Error> { self.0.encode_to(out); @@ -29,17 +29,18 @@ impl EncodeAsType for Static { } } -pub struct StaticDecodeAsTypeVisitor(std::marker::PhantomData); +pub struct StaticDecodeAsTypeVisitor(std::marker::PhantomData<(T, R)>); -impl Visitor for StaticDecodeAsTypeVisitor { +impl Visitor for StaticDecodeAsTypeVisitor { type Value<'scale, 'info> = Static; type Error = scale_decode::Error; + type TypeResolver = R; fn unchecked_decode_as_type<'scale, 'info>( self, input: &mut &'scale [u8], - _type_id: scale_decode::visitor::TypeId, - _types: &'info scale_info::PortableRegistry, + _type_id: &R::TypeId, + _types: &'info R, ) -> DecodeAsTypeResult, Self::Error>> { use scale_decode::{visitor::DecodeError, Error}; let decoded = T::decode(input) @@ -50,8 +51,8 @@ impl Visitor for StaticDecodeAsTypeVisitor { } impl IntoVisitor for Static { - type Visitor = StaticDecodeAsTypeVisitor; - fn into_visitor() -> Self::Visitor { + type AnyVisitor = StaticDecodeAsTypeVisitor; + fn into_visitor() -> StaticDecodeAsTypeVisitor { StaticDecodeAsTypeVisitor(std::marker::PhantomData) } } diff --git a/subxt/src/utils/unchecked_extrinsic.rs b/subxt/src/utils/unchecked_extrinsic.rs index 882b490bed..14ad39e790 100644 --- a/subxt/src/utils/unchecked_extrinsic.rs +++ b/subxt/src/utils/unchecked_extrinsic.rs @@ -12,7 +12,7 @@ use std::marker::PhantomData; use codec::{Decode, Encode}; -use scale_decode::{visitor::DecodeAsTypeResult, DecodeAsType, IntoVisitor, Visitor}; +use scale_decode::{visitor::DecodeAsTypeResult, DecodeAsType, IntoVisitor, TypeResolver, Visitor}; use super::{Encoded, Static}; @@ -52,10 +52,10 @@ impl Decode impl scale_encode::EncodeAsType for UncheckedExtrinsic { - fn encode_as_type_to( + fn encode_as_type_to( &self, - type_id: u32, - types: &scale_info::PortableRegistry, + type_id: &R::TypeId, + types: &R, out: &mut Vec, ) -> Result<(), scale_encode::Error> { self.0.encode_as_type_to(type_id, types, out) @@ -78,32 +78,35 @@ impl From( - PhantomData<(Address, Call, Signature, Extra)>, +pub struct UncheckedExtrinsicDecodeAsTypeVisitor( + PhantomData<(Address, Call, Signature, Extra, R)>, ); -impl Visitor - for UncheckedExtrinsicDecodeAsTypeVisitor +impl Visitor + for UncheckedExtrinsicDecodeAsTypeVisitor { type Value<'scale, 'info> = UncheckedExtrinsic; type Error = scale_decode::Error; + type TypeResolver = R; fn unchecked_decode_as_type<'scale, 'info>( self, input: &mut &'scale [u8], - type_id: scale_decode::visitor::TypeId, - types: &'info scale_info::PortableRegistry, + type_id: &R::TypeId, + types: &'info R, ) -> DecodeAsTypeResult, Self::Error>> { - DecodeAsTypeResult::Decoded(Self::Value::decode_as_type(input, type_id.0, types)) + DecodeAsTypeResult::Decoded(Self::Value::decode_as_type(input, type_id, types)) } } impl IntoVisitor for UncheckedExtrinsic { - type Visitor = UncheckedExtrinsicDecodeAsTypeVisitor; + type AnyVisitor = + UncheckedExtrinsicDecodeAsTypeVisitor; - fn into_visitor() -> Self::Visitor { + fn into_visitor( + ) -> UncheckedExtrinsicDecodeAsTypeVisitor { UncheckedExtrinsicDecodeAsTypeVisitor(PhantomData) } } diff --git a/subxt/src/utils/wrapper_opaque.rs b/subxt/src/utils/wrapper_opaque.rs index 9257405715..7888dee47f 100644 --- a/subxt/src/utils/wrapper_opaque.rs +++ b/subxt/src/utils/wrapper_opaque.rs @@ -5,7 +5,7 @@ use super::PhantomDataSendSync; use codec::{Compact, Decode, DecodeAll, Encode}; use derivative::Derivative; -use scale_decode::{IntoVisitor, Visitor}; +use scale_decode::{ext::scale_type_resolver::visitor, IntoVisitor, TypeResolver, Visitor}; use scale_encode::EncodeAsType; /// A wrapper for any type `T` which implement encode/decode in a way compatible with `Vec`. @@ -74,57 +74,47 @@ impl WrapperKeepOpaque { } impl EncodeAsType for WrapperKeepOpaque { - fn encode_as_type_to( + fn encode_as_type_to( &self, - type_id: u32, - types: &scale_info::PortableRegistry, + type_id: &R::TypeId, + types: &R, out: &mut Vec, ) -> Result<(), scale_encode::Error> { use scale_encode::error::{Error, ErrorKind, Kind}; - let Some(ty) = types.resolve(type_id) else { - return Err(Error::new(ErrorKind::TypeNotFound(type_id))); - }; - - // Do a basic check that the target shape lines up. - let scale_info::TypeDef::Composite(_) = &ty.type_def else { - return Err(Error::new(ErrorKind::WrongShape { + let visitor = visitor::new(out, |_, _| { + // Check that the target shape lines up: any other shape but the composite is wrong. + Err(Error::new(ErrorKind::WrongShape { actual: Kind::Struct, - expected: type_id, - })); - }; + expected_id: format!("{:?}", type_id), + })) + }) + .visit_composite(|out, _fields| { + self.data.encode_to(out); + Ok(()) + }); - // Check that the name also lines up. - if ty.path.ident().as_deref() != Some("WrapperKeepOpaque") { - return Err(Error::new(ErrorKind::WrongShape { - actual: Kind::Struct, - expected: type_id, - })); - } - - // Just blat the bytes out. - self.data.encode_to(out); - Ok(()) + types + .resolve_type(type_id, visitor) + .map_err(|_| Error::new(ErrorKind::TypeNotFound(format!("{:?}", type_id))))? } } -pub struct WrapperKeepOpaqueVisitor(std::marker::PhantomData); -impl Visitor for WrapperKeepOpaqueVisitor { +pub struct WrapperKeepOpaqueVisitor(std::marker::PhantomData<(T, R)>); +impl Visitor for WrapperKeepOpaqueVisitor { type Value<'scale, 'info> = WrapperKeepOpaque; type Error = scale_decode::Error; + type TypeResolver = R; fn visit_composite<'scale, 'info>( self, - value: &mut scale_decode::visitor::types::Composite<'scale, 'info>, - _type_id: scale_decode::visitor::TypeId, + value: &mut scale_decode::visitor::types::Composite<'scale, 'info, R>, + _type_id: &R::TypeId, ) -> Result, Self::Error> { use scale_decode::error::{Error, ErrorKind}; - if value.path().ident().as_deref() != Some("WrapperKeepOpaque") { - return Err(Error::custom_str( - "Type to decode is not 'WrapperTypeKeepOpaque'", - )); - } + // TODO: When `scale-type-resolver` [provides struct names](https://github.com/paritytech/scale-type-resolver/issues/4), check that this struct name is `WrapperKeepOpaque` + if value.remaining() != 2 { return Err(Error::new(ErrorKind::WrongLength { actual_len: value.remaining(), @@ -151,8 +141,8 @@ impl Visitor for WrapperKeepOpaqueVisitor { } impl IntoVisitor for WrapperKeepOpaque { - type Visitor = WrapperKeepOpaqueVisitor; - fn into_visitor() -> Self::Visitor { + type AnyVisitor = WrapperKeepOpaqueVisitor; + fn into_visitor() -> WrapperKeepOpaqueVisitor { WrapperKeepOpaqueVisitor(std::marker::PhantomData) } } @@ -205,7 +195,7 @@ mod test { let (type_id, types) = make_type::(); let scale_codec_encoded = t.encode(); - let encode_as_type_encoded = t.encode_as_type(type_id, &types).unwrap(); + let encode_as_type_encoded = t.encode_as_type(&type_id, &types).unwrap(); assert_eq!( scale_codec_encoded, encode_as_type_encoded, @@ -213,7 +203,7 @@ mod test { ); let decode_as_type_bytes = &mut &*scale_codec_encoded; - let decoded_as_type = T::decode_as_type(decode_as_type_bytes, type_id, &types) + let decoded_as_type = T::decode_as_type(decode_as_type_bytes, &type_id, &types) .expect("decode-as-type decodes"); let decode_scale_codec_bytes = &mut &*scale_codec_encoded; From 4831f816f21b1dc55bfc28296e60b989e3486136 Mon Sep 17 00:00:00 2001 From: Tadeo Hepperle <62739623+tadeohepperle@users.noreply.github.com> Date: Thu, 14 Mar 2024 11:04:27 +0100 Subject: [PATCH 48/66] `no_std` compatibility for `subxt-signer` (#1477) * subxt-signer no-std * impl error * address james comments * fix signer wasm tests * error impl for secret uri error --- Cargo.lock | 15 +- Cargo.toml | 39 ++-- cli/src/commands/explore/runtime_apis/mod.rs | 2 +- codegen/Cargo.toml | 2 +- examples/wasm-example/Cargo.lock | 104 +--------- lightclient/Cargo.toml | 2 +- signer/Cargo.toml | 15 +- signer/src/crypto/secret_uri.rs | 13 +- signer/src/crypto/seed_from_entropy.rs | 1 + signer/src/ecdsa.rs | 44 ++-- signer/src/lib.rs | 9 +- signer/src/sr25519.rs | 29 ++- signer/src/utils.rs | 27 +-- signer/wasm-tests/Cargo.toml | 5 +- subxt/Cargo.toml | 16 +- testing/no-std-tests/Cargo.lock | 204 +++++++++++++++++++ testing/no-std-tests/Cargo.toml | 1 + testing/no-std-tests/src/main.rs | 21 +- 18 files changed, 353 insertions(+), 196 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 467dd253fe..891d3e986b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2865,6 +2865,17 @@ dependencies = [ "windows-targets 0.48.5", ] +[[package]] +name = "password-hash" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" +dependencies = [ + "base64ct", + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "paste" version = "1.0.14" @@ -2887,6 +2898,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" dependencies = [ "digest 0.10.7", + "password-hash", ] [[package]] @@ -4660,6 +4672,8 @@ name = "subxt-signer" version = "0.34.0" dependencies = [ "bip39", + "cfg-if", + "derive_more", "getrandom", "hex", "hmac 0.12.1", @@ -4674,7 +4688,6 @@ dependencies = [ "sp-core-hashing", "sp-keyring", "subxt", - "thiserror", "zeroize", ] diff --git a/Cargo.toml b/Cargo.toml index 4fe151c2ad..c0d7e7f348 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -64,6 +64,7 @@ base58 = { version = "0.2.0" } bitvec = { version = "1", default-features = false } blake2 = { version = "0.10.6", default-features = false } clap = { version = "4.5.2", features = ["derive", "cargo"] } +cfg-if = "1.0.0" criterion = "0.4" codec = { package = "parity-scale-codec", version = "3.6.9", default-features = false } color-eyre = "0.6.1" @@ -71,33 +72,33 @@ console_error_panic_hook = "0.1.7" darling = "0.20.8" derivative = "2.2.0" derive_more = "0.99.17" -either = "1.10.0" +either = { version = "1.10.0", default-features = false } frame-metadata = { version = "16.0.0", default-features = false } futures = { version = "0.3.30", default-features = false, features = ["std"] } getrandom = { version = "0.2", default-features = false } hashbrown = "0.14.3" -hex = "0.4.3" +hex = { version = "0.4.3", default-features = false } heck = "0.4.1" -impl-serde = { version = "0.4.0" } +impl-serde = { version = "0.4.0", default-features = false } indoc = "2" jsonrpsee = { version = "0.22" } pretty_assertions = "1.4.0" -primitive-types = { version = "0.12.2", default-features = false, features = ["codec", "scale-info", "serde"] } +primitive-types = { version = "0.12.2", default-features = false } proc-macro-error = "1.0.4" proc-macro2 = "1.0.78" quote = "1.0.35" -regex = "1.10.3" +regex = { version = "1.10.3", default-features = false } scale-info = { version = "2.10.0", default-features = false } -scale-value = "0.14.1" -scale-bits = "0.5.0" -scale-decode = "0.11.1" -scale-encode = "0.6.0" -serde = { version = "1.0.197" } -serde_json = { version = "1.0.114" } +scale-value = { version = "0.14.1", default-features = false } +scale-bits = { version = "0.5.0", default-features = false } +scale-decode = { version = "0.11.1", default-features = false } +scale-encode = { version = "0.6.0", default-features = false } +serde = { version = "1.0.197", default-features = false, features = ["derive"] } +serde_json = { version = "1.0.114", default-features = false } syn = { version = "2.0.15", features = ["full", "extra-traits"] } thiserror = "1.0.57" tokio = { version = "1.36", default-features = false } -tracing = "0.1.40" +tracing = { version = "0.1.40", default-features = false } tracing-wasm = "0.2.1" tracing-subscriber = "0.3.18" trybuild = "1.0.89" @@ -136,21 +137,21 @@ sp-keyring = "31.0.0" # Subxt workspace crates: subxt = { version = "0.34.0", path = "subxt", default-features = false } subxt-macro = { version = "0.34.0", path = "macro" } -subxt-metadata = { version = "0.34.0", path = "metadata" } +subxt-metadata = { version = "0.34.0", path = "metadata", default-features = false } subxt-codegen = { version = "0.34.0", path = "codegen" } -subxt-signer = { version = "0.34.0", path = "signer" } +subxt-signer = { version = "0.34.0", path = "signer", default-features = false } subxt-lightclient = { version = "0.34.0", path = "lightclient", default-features = false } test-runtime = { path = "testing/test-runtime" } substrate-runner = { path = "testing/substrate-runner" } # subxt-signer deps that I expect aren't useful anywhere else: -bip39 = "2.0.0" -hmac = "0.12.1" +bip39 = { version = "2.0.0", default-features = false } +hmac = { version = "0.12.1", default-features = false } pbkdf2 = { version = "0.12.2", default-features = false } -schnorrkel = "0.11.4" -secp256k1 = "0.28.2" +schnorrkel = { version = "0.11.4", default-features = false } +secp256k1 = { version = "0.28.2", default-features = false } secrecy = "0.8.0" -sha2 = "0.10.8" +sha2 = { version = "0.10.8", default-features = false } zeroize = { version = "1", default-features = false } [profile.dev.package.smoldot-light] diff --git a/cli/src/commands/explore/runtime_apis/mod.rs b/cli/src/commands/explore/runtime_apis/mod.rs index e3fed9ac01..cd233f068a 100644 --- a/cli/src/commands/explore/runtime_apis/mod.rs +++ b/cli/src/commands/explore/runtime_apis/mod.rs @@ -19,7 +19,7 @@ use subxt_metadata::RuntimeApiMetadata; /// Runs for a specified runtime API trait. /// Cases to consider: -/// ```norun +/// ```txt /// method is: /// None => Show pallet docs + available methods /// Some (invalid) => Show Error + available methods diff --git a/codegen/Cargo.toml b/codegen/Cargo.toml index 1cf9638bae..5ffde7e92f 100644 --- a/codegen/Cargo.toml +++ b/codegen/Cargo.toml @@ -26,7 +26,7 @@ syn = { workspace = true } scale-info = { workspace = true } subxt-metadata = { workspace = true } jsonrpsee = { workspace = true, features = ["async-client", "client-ws-transport-native-tls", "http-client"], optional = true } -hex = { workspace = true } +hex = { workspace = true, features = ["std"] } tokio = { workspace = true, features = ["rt-multi-thread"], optional = true } thiserror = { workspace = true } scale-typegen = { workspace = true } diff --git a/examples/wasm-example/Cargo.lock b/examples/wasm-example/Cargo.lock index 69aa797f9a..003fb839bc 100644 --- a/examples/wasm-example/Cargo.lock +++ b/examples/wasm-example/Cargo.lock @@ -464,38 +464,14 @@ dependencies = [ "syn 2.0.48", ] -[[package]] -name = "darling" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" -dependencies = [ - "darling_core 0.14.4", - "darling_macro 0.14.4", -] - [[package]] name = "darling" version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" dependencies = [ - "darling_core 0.20.8", - "darling_macro 0.20.8", -] - -[[package]] -name = "darling_core" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 1.0.109", + "darling_core", + "darling_macro", ] [[package]] @@ -512,24 +488,13 @@ dependencies = [ "syn 2.0.48", ] -[[package]] -name = "darling_macro" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" -dependencies = [ - "darling_core 0.14.4", - "quote", - "syn 1.0.109", -] - [[package]] name = "darling_macro" version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" dependencies = [ - "darling_core 0.20.8", + "darling_core", "quote", "syn 2.0.48", ] @@ -653,9 +618,6 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" dependencies = [ - "byteorder", - "rand", - "rustc-hex", "static_assertions", ] @@ -694,7 +656,6 @@ dependencies = [ "cfg-if", "parity-scale-codec", "scale-info", - "serde", ] [[package]] @@ -1227,15 +1188,6 @@ dependencies = [ "unicode-normalization", ] -[[package]] -name = "impl-codec" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" -dependencies = [ - "parity-scale-codec", -] - [[package]] name = "impl-serde" version = "0.4.0" @@ -1794,9 +1746,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ "fixed-hash", - "impl-codec", - "impl-serde", - "scale-info", "uint", ] @@ -1947,12 +1896,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" -[[package]] -name = "rustc-hex" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" - [[package]] name = "rustc_version" version = "0.4.0" @@ -2102,25 +2045,11 @@ checksum = "afc79ba56a1c742f5aeeed1f1801f3edf51f7e818f0a54582cac6f131364ea7b" dependencies = [ "derive_more", "parity-scale-codec", - "primitive-types", "scale-bits", - "scale-decode-derive", "scale-type-resolver", "smallvec", ] -[[package]] -name = "scale-decode-derive" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5398fdb3c7bea3cb419bac4983aadacae93fe1a7b5f693f4ebd98c3821aad7a5" -dependencies = [ - "darling 0.14.4", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "scale-encode" version = "0.6.0" @@ -2129,26 +2058,11 @@ checksum = "628800925a33794fb5387781b883b5e14d130fece9af5a63613867b8de07c5c7" dependencies = [ "derive_more", "parity-scale-codec", - "primitive-types", "scale-bits", - "scale-encode-derive", "scale-type-resolver", "smallvec", ] -[[package]] -name = "scale-encode-derive" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a304e1af7cdfbe7a24e08b012721456cc8cecdedadc14b3d10513eada63233c" -dependencies = [ - "darling 0.14.4", - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "scale-info" version = "2.10.0" @@ -2204,8 +2118,6 @@ version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c07ccfee963104335c971aaf8b7b0e749be8569116322df23f1f75c4ca9e4a28" dependencies = [ - "base58", - "blake2", "derive_more", "either", "frame-metadata 15.1.0", @@ -2215,8 +2127,6 @@ dependencies = [ "scale-encode", "scale-info", "scale-type-resolver", - "serde", - "yap", ] [[package]] @@ -2670,7 +2580,7 @@ dependencies = [ name = "subxt-macro" version = "0.34.0" dependencies = [ - "darling 0.20.8", + "darling", "parity-scale-codec", "proc-macro-error", "quote", @@ -3316,12 +3226,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "yap" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff4524214bc4629eba08d78ceb1d6507070cc0bcbbed23af74e19e6e924a24cf" - [[package]] name = "yew" version = "0.20.0" diff --git a/lightclient/Cargo.toml b/lightclient/Cargo.toml index eb079b3e90..22475b75b9 100644 --- a/lightclient/Cargo.toml +++ b/lightclient/Cargo.toml @@ -58,7 +58,7 @@ web = [ [dependencies] futures = { workspace = true } serde = { workspace = true, features = ["derive"] } -serde_json = { workspace = true, features = ["raw_value"] } +serde_json = { workspace = true, features = ["default", "raw_value"] } thiserror = { workspace = true } tracing = { workspace = true } diff --git a/signer/Cargo.toml b/signer/Cargo.toml index 226237c315..7678256460 100644 --- a/signer/Cargo.toml +++ b/signer/Cargo.toml @@ -15,7 +15,8 @@ description = "Sign extrinsics to be submitted by Subxt" keywords = ["parity", "subxt", "extrinsic", "signer"] [features] -default = ["sr25519", "ecdsa", "subxt", "native"] +default = ["sr25519", "ecdsa", "subxt", "std", "native"] +std = ["regex/std", "sp-core-hashing/std", "pbkdf2/std", "sha2/std", "hmac/std", "bip39/std", "schnorrkel/std", "secp256k1/std", "sp-core/std"] # Pick the signer implementation(s) you need by enabling the # corresponding features. Note: I had more difficulties getting @@ -34,26 +35,28 @@ web = ["getrandom/js", "subxt?/web"] native = ["subxt?/native"] [dependencies] -subxt = { workspace = true, optional = true, default-features = false } -regex = { workspace = true } +subxt = { workspace = true, optional = true } +regex = { workspace = true, features = ["unicode"] } hex = { workspace = true } +cfg-if = { workspace = true } codec = { package = "parity-scale-codec", workspace = true, features = ["derive"] } sp-core-hashing = { workspace = true } -thiserror = { workspace = true } +derive_more = { workspace = true } pbkdf2 = { workspace = true } sha2 = { workspace = true } hmac = { workspace = true } zeroize = { workspace = true } bip39 = { workspace = true } schnorrkel = { workspace = true, optional = true } -secp256k1 = { workspace = true, features = ["recovery", "global-context"], optional = true } +secp256k1 = { workspace = true, optional = true, features = ["alloc", "recovery"] } secrecy = { workspace = true } + # We only pull this in to enable the JS flag for schnorrkel to use. getrandom = { workspace = true, optional = true } [dev-dependencies] -sp-core = { workspace = true, features = ["std"] } +sp-core = { workspace = true } sp-keyring = { workspace = true } [package.metadata.cargo-machete] diff --git a/signer/src/crypto/secret_uri.rs b/signer/src/crypto/secret_uri.rs index 7be43b8286..5148311795 100644 --- a/signer/src/crypto/secret_uri.rs +++ b/signer/src/crypto/secret_uri.rs @@ -3,6 +3,8 @@ // see LICENSE for license details. use super::DeriveJunction; +use alloc::vec::Vec; +use derive_more::Display; use regex::Regex; use secrecy::SecretString; @@ -88,7 +90,7 @@ pub struct SecretUri { pub junctions: Vec, } -impl std::str::FromStr for SecretUri { +impl core::str::FromStr for SecretUri { type Err = SecretUriError; fn from_str(s: &str) -> Result { @@ -115,14 +117,17 @@ impl std::str::FromStr for SecretUri { } /// This is returned if `FromStr` cannot parse a string into a `SecretUri`. -#[derive(Debug, Copy, Clone, PartialEq, thiserror::Error)] +#[derive(Debug, Copy, Clone, PartialEq, Display)] pub enum SecretUriError { /// Parsing the secret URI from a string failed; wrong format. - #[error("Invalid secret phrase format")] + #[display(fmt = "Invalid secret phrase format")] InvalidFormat, } -once_static! { +#[cfg(feature = "std")] +impl std::error::Error for SecretUriError {} + +once_static_cloned! { /// Interpret a phrase like: /// /// ```text diff --git a/signer/src/crypto/seed_from_entropy.rs b/signer/src/crypto/seed_from_entropy.rs index 7643ff7835..e665c132ab 100644 --- a/signer/src/crypto/seed_from_entropy.rs +++ b/signer/src/crypto/seed_from_entropy.rs @@ -2,6 +2,7 @@ // This file is dual-licensed as Apache-2.0 or GPL-3.0. // see LICENSE for license details. +use alloc::string::String; use hmac::Hmac; use pbkdf2::pbkdf2; use sha2::Sha512; diff --git a/signer/src/ecdsa.rs b/signer/src/ecdsa.rs index a76054abf1..a25c8cc776 100644 --- a/signer/src/ecdsa.rs +++ b/signer/src/ecdsa.rs @@ -6,8 +6,10 @@ use codec::Encode; use crate::crypto::{seed_from_entropy, DeriveJunction, SecretUri}; +use core::str::FromStr; +use derive_more::{Display, From}; use hex::FromHex; -use secp256k1::{ecdsa::RecoverableSignature, Message, SecretKey, SECP256K1}; +use secp256k1::{ecdsa::RecoverableSignature, Message, Secp256k1, SecretKey}; use secrecy::ExposeSecret; const SEED_LENGTH: usize = 32; @@ -68,7 +70,7 @@ impl Keypair { let seed = Seed::from_hex(hex_str)?; Self::from_seed(seed)? } else { - let phrase = bip39::Mnemonic::parse(phrase.expose_secret().as_str())?; + let phrase = bip39::Mnemonic::from_str(phrase.expose_secret().as_str())?; let pass_str = password.as_ref().map(|p| p.expose_secret().as_str()); Self::from_phrase(&phrase, pass_str)? }; @@ -91,8 +93,9 @@ impl Keypair { /// keypair.sign(b"Hello world!"); /// ``` pub fn from_phrase(mnemonic: &bip39::Mnemonic, password: Option<&str>) -> Result { - let big_seed = seed_from_entropy(&mnemonic.to_entropy(), password.unwrap_or("")) - .ok_or(Error::InvalidSeed)?; + let (arr, len) = mnemonic.to_entropy_array(); + let big_seed = + seed_from_entropy(&arr[0..len], password.unwrap_or("")).ok_or(Error::InvalidSeed)?; let seed: Seed = big_seed[..SEED_LENGTH] .try_into() @@ -109,7 +112,8 @@ impl Keypair { pub fn from_seed(seed: Seed) -> Result { let secret = SecretKey::from_slice(&seed).map_err(|_| Error::InvalidSeed)?; Ok(Self(secp256k1::Keypair::from_secret_key( - SECP256K1, &secret, + &Secp256k1::signing_only(), + &secret, ))) } @@ -161,9 +165,9 @@ impl Keypair { // From sp_core::ecdsa::sign_prehashed: let wrapped = Message::from_digest_slice(&message_hash).expect("Message is 32 bytes; qed"); let recsig: RecoverableSignature = - SECP256K1.sign_ecdsa_recoverable(&wrapped, &self.0.secret_key()); + Secp256k1::signing_only().sign_ecdsa_recoverable(&wrapped, &self.0.secret_key()); // From sp_core::ecdsa's `impl From for Signature`: - let (recid, sig) = recsig.serialize_compact(); + let (recid, sig): (_, [u8; 64]) = recsig.serialize_compact(); let mut signature_bytes: [u8; 65] = [0; 65]; signature_bytes[..64].copy_from_slice(&sig); signature_bytes[64] = (recid.to_i32() & 0xFF) as u8; @@ -192,31 +196,39 @@ pub fn verify>(sig: &Signature, message: M, pubkey: &PublicKey) - }; let message_hash = sp_core_hashing::blake2_256(message.as_ref()); let wrapped = Message::from_digest_slice(&message_hash).expect("Message is 32 bytes; qed"); - signature.verify(&wrapped, &public).is_ok() + + Secp256k1::verification_only() + .verify_ecdsa(&wrapped, &signature, &public) + .is_ok() } /// An error handed back if creating a keypair fails. -#[derive(Debug, PartialEq, thiserror::Error)] +#[derive(Debug, PartialEq, Display, From)] pub enum Error { /// Invalid seed. - #[error("Invalid seed (was it the wrong length?)")] + #[display(fmt = "Invalid seed (was it the wrong length?)")] + #[from(ignore)] InvalidSeed, /// Invalid seed. - #[error("Invalid seed for ECDSA, contained soft junction")] + #[display(fmt = "Invalid seed for ECDSA, contained soft junction")] + #[from(ignore)] SoftJunction, /// Invalid phrase. - #[error("Cannot parse phrase: {0}")] - Phrase(#[from] bip39::Error), + #[display(fmt = "Cannot parse phrase: {_0}")] + Phrase(bip39::Error), /// Invalid hex. - #[error("Cannot parse hex string: {0}")] - Hex(#[from] hex::FromHexError), + #[display(fmt = "Cannot parse hex string: {_0}")] + Hex(hex::FromHexError), } +#[cfg(feature = "std")] +impl std::error::Error for Error {} + /// Dev accounts, helpful for testing but not to be used in production, /// since the secret keys are known. pub mod dev { use super::*; - use std::str::FromStr; + use core::str::FromStr; once_static_cloned! { /// Equivalent to `{DEV_PHRASE}//Alice`. diff --git a/signer/src/lib.rs b/signer/src/lib.rs index 2c79d6a1ec..db13732327 100644 --- a/signer/src/lib.rs +++ b/signer/src/lib.rs @@ -14,6 +14,9 @@ //! subxt transactions for chains supporting sr25519 signatures. #![cfg_attr(docsrs, feature(doc_cfg))] +#![cfg_attr(not(feature = "std"), no_std)] + +extern crate alloc; #[macro_use] mod utils; @@ -40,9 +43,3 @@ pub use secrecy::{ExposeSecret, SecretString}; // SecretUri's can be parsed from strings and used to generate key pairs. // DeriveJunctions are the "path" part of these SecretUris. pub use crypto::{DeriveJunction, SecretUri, SecretUriError, DEV_PHRASE}; - -#[cfg(any( - all(feature = "web", feature = "native"), - not(any(feature = "web", feature = "native")) -))] -compile_error!("subxt-signer: exactly one of the 'web' and 'native' features should be used."); diff --git a/signer/src/sr25519.rs b/signer/src/sr25519.rs index 01e6cc84b1..344e7b2655 100644 --- a/signer/src/sr25519.rs +++ b/signer/src/sr25519.rs @@ -4,7 +4,11 @@ //! An sr25519 keypair implementation. +use core::str::FromStr; + use crate::crypto::{seed_from_entropy, DeriveJunction, SecretUri}; + +use derive_more::{Display, From}; use hex::FromHex; use schnorrkel::{ derive::{ChainCode, Derivation}, @@ -72,7 +76,7 @@ impl Keypair { let seed = Seed::from_hex(hex_str)?; Self::from_seed(seed)? } else { - let phrase = bip39::Mnemonic::parse(phrase.expose_secret().as_str())?; + let phrase = bip39::Mnemonic::from_str(phrase.expose_secret().as_str())?; let pass_str = password.as_ref().map(|p| p.expose_secret().as_str()); Self::from_phrase(&phrase, pass_str)? }; @@ -95,8 +99,9 @@ impl Keypair { /// keypair.sign(b"Hello world!"); /// ``` pub fn from_phrase(mnemonic: &bip39::Mnemonic, password: Option<&str>) -> Result { - let big_seed = seed_from_entropy(&mnemonic.to_entropy(), password.unwrap_or("")) - .ok_or(Error::InvalidSeed)?; + let (arr, len) = mnemonic.to_entropy_array(); + let big_seed = + seed_from_entropy(&arr[0..len], password.unwrap_or("")).ok_or(Error::InvalidSeed)?; let seed: Seed = big_seed[..SEED_LENGTH] .try_into() @@ -187,24 +192,28 @@ pub fn verify>(sig: &Signature, message: M, pubkey: &PublicKey) - } /// An error handed back if creating a keypair fails. -#[derive(Debug, thiserror::Error)] +#[derive(Debug, Display, From)] pub enum Error { /// Invalid seed. - #[error("Invalid seed (was it the wrong length?)")] + #[display(fmt = "Invalid seed (was it the wrong length?)")] + #[from(ignore)] InvalidSeed, /// Invalid phrase. - #[error("Cannot parse phrase: {0}")] - Phrase(#[from] bip39::Error), + #[display(fmt = "Cannot parse phrase: {_0}")] + Phrase(bip39::Error), /// Invalid hex. - #[error("Cannot parse hex string: {0}")] - Hex(#[from] hex::FromHexError), + #[display(fmt = "Cannot parse hex string: {_0}")] + Hex(hex::FromHexError), } +#[cfg(feature = "std")] +impl std::error::Error for Error {} + /// Dev accounts, helpful for testing but not to be used in production, /// since the secret keys are known. pub mod dev { use super::*; - use std::str::FromStr; + use core::str::FromStr; once_static_cloned! { /// Equivalent to `{DEV_PHRASE}//Alice`. diff --git a/signer/src/utils.rs b/signer/src/utils.rs index 2e12665419..e3cea3cfc8 100644 --- a/signer/src/utils.rs +++ b/signer/src/utils.rs @@ -7,34 +7,29 @@ /// Use like: /// /// ```rust,ignore -/// once_static!{ +/// once_static_cloned!{ /// /// Some documentation. /// fn foo() -> Vec { /// vec![1,2,3,4] /// } /// } /// ``` -macro_rules! once_static { - ($($(#[$attr:meta])* $vis:vis fn $name:ident() -> $ty:ty { $expr:expr } )+) => { - $( - $(#[$attr])* - $vis fn $name() -> &'static $ty { - static VAR: std::sync::OnceLock<$ty> = std::sync::OnceLock::new(); - VAR.get_or_init(|| { $expr }) - } - )+ - }; -} - -/// Like `once_static!` but clones the item out of static storage. Useful if it +/// +/// Clones the item out of static storage. Useful if it /// takes a while to create the item but cloning it is fairly cheap. macro_rules! once_static_cloned { ($($(#[$attr:meta])* $vis:vis fn $name:ident() -> $ty:ty { $expr:expr } )+) => { $( $(#[$attr])* $vis fn $name() -> $ty { - static VAR: std::sync::OnceLock<$ty> = std::sync::OnceLock::new(); - VAR.get_or_init(|| { $expr }).clone() + cfg_if::cfg_if! { + if #[cfg(feature = "std")] { + static VAR: std::sync::OnceLock<$ty> = std::sync::OnceLock::new(); + VAR.get_or_init(|| { $expr }).clone() + } else { + { $expr } + } + } } )+ }; diff --git a/signer/wasm-tests/Cargo.toml b/signer/wasm-tests/Cargo.toml index 008dc84018..5bf218a4c2 100644 --- a/signer/wasm-tests/Cargo.toml +++ b/signer/wasm-tests/Cargo.toml @@ -8,14 +8,13 @@ publish = false wasm-bindgen-test = "0.3.24" tracing-wasm = "0.2.1" console_error_panic_hook = "0.1.7" -serde_json = "1" # This crate is not a part of the workspace, because we want to # enable the "web" feature here but don't want it enabled as part # of workspace builds. Also disable the "subxt" feature here because # we want to ensure it works in isolation of that. -subxt-signer = { path = "..", default-features = false, features = ["web", "sr25519", "ecdsa"] } +subxt-signer = { path = "..", default-features = false, features = ["web", "sr25519", "ecdsa", "std"] } # this shouldn't be needed, it's in workspace.exclude, but still # I get the complaint unless I add it... -[workspace] \ No newline at end of file +[workspace] diff --git a/subxt/Cargo.toml b/subxt/Cargo.toml index 67c553fa50..9bba68432b 100644 --- a/subxt/Cargo.toml +++ b/subxt/Cargo.toml @@ -66,15 +66,15 @@ unstable-light-client = ["subxt-lightclient", "tokio-stream"] [dependencies] async-trait = { workspace = true } codec = { package = "parity-scale-codec", workspace = true, features = ["derive"] } -scale-info = { workspace = true } -scale-value = { workspace = true } -scale-bits = { workspace = true } -scale-decode = { workspace = true } -scale-encode = { workspace = true } +scale-info = { workspace = true, features = ["default"] } +scale-value = { workspace = true, features = ["default"] } +scale-bits = { workspace = true, features = ["default"] } +scale-decode = { workspace = true, features = ["default"] } +scale-encode = { workspace = true, features = ["default"] } futures = { workspace = true } hex = { workspace = true } serde = { workspace = true, features = ["derive"] } -serde_json = { workspace = true, features = ["raw_value"] } +serde_json = { workspace = true, features = ["default", "raw_value"] } thiserror = { workspace = true } tracing = { workspace = true } frame-metadata = { workspace = true } @@ -84,7 +84,7 @@ instant = { workspace = true } # Provides some deserialization, types like U256/H256 and hashing impls like twox/blake256: impl-serde = { workspace = true } -primitive-types = { workspace = true } +primitive-types = { workspace = true, features = ["codec", "scale-info", "serde"] } sp-core-hashing = { workspace = true } # For ss58 encoding AccountId32 to serialize them properly: @@ -100,7 +100,7 @@ sp-runtime = { workspace = true, optional = true } # Other subxt crates we depend on. subxt-macro = { workspace = true } -subxt-metadata = { workspace = true } +subxt-metadata = { workspace = true, features = ["std"] } subxt-lightclient = { workspace = true, optional = true, default-features = false } # Light client support: diff --git a/testing/no-std-tests/Cargo.lock b/testing/no-std-tests/Cargo.lock index ee4afadfe7..c04633ecae 100644 --- a/testing/no-std-tests/Cargo.lock +++ b/testing/no-std-tests/Cargo.lock @@ -32,6 +32,21 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +[[package]] +name = "bip39" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93f2635620bf0b9d4576eb7bb9a38a55df78bd1205d26fa994b25911a69f212f" +dependencies = [ + "bitcoin_hashes", +] + +[[package]] +name = "bitcoin_hashes" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90064b8dee6815a6470d60bad07bbbaee885c0e12d04177138fa3291a01b7bc4" + [[package]] name = "blake2b_simd" version = "1.0.2" @@ -101,6 +116,34 @@ dependencies = [ "typenum", ] +[[package]] +name = "curve25519-dalek" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a677b8922c94e01bdbb12126b0bc852f00447528dee1782229af9c720c3f348" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest", + "fiat-crypto", + "platforms", + "rustc_version", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + [[package]] name = "derive_more" version = "0.99.17" @@ -122,6 +165,7 @@ checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", "crypto-common", + "subtle", ] [[package]] @@ -130,6 +174,12 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +[[package]] +name = "fiat-crypto" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1676f435fc1dadde4d03e43f5d62b259e1ce5f40bd4ffb21db2b42ebe59c1382" + [[package]] name = "frame-metadata" version = "16.0.0" @@ -151,6 +201,15 @@ dependencies = [ "version_check", ] +[[package]] +name = "getrandom_or_panic" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea1015b5a70616b688dc230cfe50c8af89d972cb132d5a622814d29773b10b9" +dependencies = [ + "rand_core", +] + [[package]] name = "hashbrown" version = "0.14.3" @@ -161,6 +220,21 @@ dependencies = [ "allocator-api2", ] +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + [[package]] name = "impl-trait-for-tuples" version = "0.2.2" @@ -209,6 +283,18 @@ version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +[[package]] +name = "merlin" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak", + "rand_core", + "zeroize", +] + [[package]] name = "once_cell" version = "1.19.0" @@ -239,6 +325,21 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest", +] + +[[package]] +name = "platforms" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "626dec3cac7cc0e1577a2ec3fc496277ec2baa084bebad95bb6fdbfae235f84c" + [[package]] name = "proc-macro-crate" version = "1.3.1" @@ -277,6 +378,37 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + +[[package]] +name = "regex" +version = "1.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +dependencies = [ + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +dependencies = [ + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + [[package]] name = "rustc_version" version = "0.4.0" @@ -310,6 +442,32 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "schnorrkel" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de18f6d8ba0aad7045f5feae07ec29899c1112584a38509a84ad7b04451eaa0" +dependencies = [ + "arrayref", + "arrayvec", + "curve25519-dalek", + "getrandom_or_panic", + "merlin", + "rand_core", + "sha2", + "subtle", + "zeroize", +] + +[[package]] +name = "secrecy" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" +dependencies = [ + "zeroize", +] + [[package]] name = "semver" version = "1.0.21" @@ -357,6 +515,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + [[package]] name = "subxt-core-no-std-tests" version = "0.0.0" @@ -364,6 +528,7 @@ dependencies = [ "libc_alloc", "parity-scale-codec", "subxt-metadata", + "subxt-signer", ] [[package]] @@ -378,6 +543,25 @@ dependencies = [ "sp-core-hashing", ] +[[package]] +name = "subxt-signer" +version = "0.34.0" +dependencies = [ + "bip39", + "cfg-if", + "derive_more", + "hex", + "hmac", + "parity-scale-codec", + "pbkdf2", + "regex", + "schnorrkel", + "secrecy", + "sha2", + "sp-core-hashing", + "zeroize", +] + [[package]] name = "syn" version = "1.0.109" @@ -485,3 +669,23 @@ dependencies = [ "quote", "syn 2.0.48", ] + +[[package]] +name = "zeroize" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] diff --git a/testing/no-std-tests/Cargo.toml b/testing/no-std-tests/Cargo.toml index 503326d5b5..8e53afbb0a 100644 --- a/testing/no-std-tests/Cargo.toml +++ b/testing/no-std-tests/Cargo.toml @@ -7,6 +7,7 @@ resolver = "2" [dependencies] subxt-metadata = { path = "../../metadata", default-features = false } +subxt-signer = { path = "../../signer", default-features = false, features = ["sr25519"] } codec = { package = "parity-scale-codec", version = "3.6.9", default-features = false, features = ["derive"] } libc_alloc = { version = "1.0.6" } diff --git a/testing/no-std-tests/src/main.rs b/testing/no-std-tests/src/main.rs index 09d8775fc5..479ff581b3 100644 --- a/testing/no-std-tests/src/main.rs +++ b/testing/no-std-tests/src/main.rs @@ -34,14 +34,27 @@ extern crate alloc; /// Including code here makes sure it is not pruned. /// We want all code included to compile fine for the `thumbv7em-none-eabi` target. fn compile_test() { - subxt_metadata_compiles(); -} - -fn subxt_metadata_compiles() { + // Subxt Metadata compiles: use codec::Decode; let bytes: alloc::vec::Vec = alloc::vec![0, 1, 2, 3, 4]; subxt_metadata::Metadata::decode(&mut &bytes[..]).expect_err("invalid byte sequence"); const METADATA: &[u8] = include_bytes!("../../../artifacts/polkadot_metadata_small.scale"); subxt_metadata::Metadata::decode(&mut &METADATA[..]).expect("should be valid metadata"); + + // Subxt Signer compiles: + use subxt_signer::sr25519; + let keypair = sr25519::dev::alice(); + let message = b"Hello!"; + let _signature = keypair.sign(message); + let _public_key = keypair.public_key(); + + // Note: `ecdsa` is not compiling for the `thumbv7em-none-eabi` target. + // + // use subxt_signer::ecdsa; + // let keypair = ecdsa::dev::alice(); + // let message = b"Hello!"; + // let _signature = keypair.sign(message); + // let _public_key = keypair.public_key(); + // } From b069c4425a38cdfe6c84997834f5cd2f5cdba7f9 Mon Sep 17 00:00:00 2001 From: James Wilson Date: Fri, 15 Mar 2024 15:21:06 +0000 Subject: [PATCH 49/66] Rework light client (#1475) * WIP second pass over light client code for simpler API * First pass new light client * pub(crate) LightClientRpc::new_raw(), and fmt * Update examples and add back a way to configure boot nodes and fetch chainspec from a URL * Fix light client examples * remove unused deps and tidy lightclient feature flags * fix wasm error * LightClientRpc can be cloned * update light client tests * Other small fixes * exclude mod unless jsonrpsee * Fix wasm-lightclient-tests * add back docsrs bit and web+native feature flag compile error * update book and light client example names * fix docs --- Cargo.lock | 2 - lightclient/Cargo.toml | 28 +- lightclient/src/background.rs | 693 +++++++++--------- lightclient/src/chain_config.rs | 71 ++ lightclient/src/client.rs | 212 ------ lightclient/src/lib.rs | 271 ++++++- lightclient/src/platform/mod.rs | 10 +- lightclient/src/rpc.rs | 132 ++++ lightclient/src/shared_client.rs | 47 ++ subxt/Cargo.toml | 33 +- subxt/examples/light_client_basic.rs | 47 ++ ...tx_basic.rs => light_client_local_node.rs} | 29 +- subxt/examples/light_client_parachains.rs | 102 --- subxt/src/backend/legacy/mod.rs | 4 +- subxt/src/backend/rpc/lightclient_impl.rs | 53 ++ subxt/src/backend/rpc/mod.rs | 4 + subxt/src/backend/rpc/rpc_client.rs | 6 + subxt/src/backend/unstable/mod.rs | 7 +- subxt/src/book/usage/light_client.rs | 37 +- subxt/src/client/light_client/builder.rs | 336 --------- subxt/src/client/light_client/mod.rs | 194 ----- subxt/src/client/light_client/rpc.rs | 162 ---- subxt/src/client/mod.rs | 8 - subxt/src/client/online_client.rs | 8 +- subxt/src/error/mod.rs | 2 +- subxt/src/lib.rs | 5 + subxt/src/utils/fetch_chain_spec.rs | 113 +++ subxt/src/utils/mod.rs | 6 + .../integration-tests/src/light_client/mod.rs | 15 +- .../integration-tests/src/utils/node_proc.rs | 46 +- testing/wasm-lightclient-tests/Cargo.lock | 124 ++-- testing/wasm-lightclient-tests/tests/wasm.rs | 19 +- 32 files changed, 1236 insertions(+), 1590 deletions(-) create mode 100644 lightclient/src/chain_config.rs delete mode 100644 lightclient/src/client.rs create mode 100644 lightclient/src/rpc.rs create mode 100644 lightclient/src/shared_client.rs create mode 100644 subxt/examples/light_client_basic.rs rename subxt/examples/{light_client_tx_basic.rs => light_client_local_node.rs} (60%) delete mode 100644 subxt/examples/light_client_parachains.rs create mode 100644 subxt/src/backend/rpc/lightclient_impl.rs delete mode 100644 subxt/src/client/light_client/builder.rs delete mode 100644 subxt/src/client/light_client/mod.rs delete mode 100644 subxt/src/client/light_client/rpc.rs create mode 100644 subxt/src/utils/fetch_chain_spec.rs diff --git a/Cargo.lock b/Cargo.lock index 891d3e986b..6704da008d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4557,7 +4557,6 @@ dependencies = [ "subxt-signer", "thiserror", "tokio", - "tokio-stream", "tokio-util", "tracing", "tracing-subscriber 0.3.18", @@ -4617,7 +4616,6 @@ dependencies = [ name = "subxt-lightclient" version = "0.34.0" dependencies = [ - "either", "futures", "futures-timer", "futures-util", diff --git a/lightclient/Cargo.toml b/lightclient/Cargo.toml index 22475b75b9..d7abdf87f6 100644 --- a/lightclient/Cargo.toml +++ b/lightclient/Cargo.toml @@ -24,23 +24,14 @@ default = ["native"] # Exactly 1 of "web" and "native" is expected. native = [ "smoldot-light/std", - "tokio-stream", - "tokio/sync", "tokio/rt", - "futures-util", ] # Enable this for web/wasm builds. # Exactly 1 of "web" and "native" is expected. web = [ "getrandom/js", - - "smoldot", "smoldot/std", - "smoldot-light", - "tokio-stream", - "tokio/sync", - "futures-util", # For the light-client platform. "wasm-bindgen-futures", @@ -56,29 +47,26 @@ web = [ ] [dependencies] -futures = { workspace = true } +futures = { workspace = true, features = ["async-await"] } serde = { workspace = true, features = ["derive"] } serde_json = { workspace = true, features = ["default", "raw_value"] } thiserror = { workspace = true } tracing = { workspace = true } +smoldot-light = { workspace = true } +tokio-stream = { workspace = true } +tokio = { workspace = true, features = ["sync"] } +futures-util = { workspace = true } -# Light client support: -smoldot = { workspace = true, optional = true } -smoldot-light = { workspace = true, optional = true } -either = { workspace = true, optional = true } -tokio = { workspace = true, optional = true } -tokio-stream = { workspace = true, optional = true } -futures-util = { workspace = true, optional = true } +# Only needed for web js-sys = { workspace = true, optional = true } send_wrapper = { workspace = true, optional = true } web-sys = { workspace = true, optional = true } wasm-bindgen = { workspace = true, optional = true } wasm-bindgen-futures = { workspace = true, optional = true } +smoldot = { workspace = true, optional = true } +pin-project = { workspace = true, optional = true } futures-timer = { workspace = true, optional = true } instant = { workspace = true, optional = true } -pin-project = { workspace = true, optional = true } - -# Included if "web" feature is enabled, to enable its js feature. getrandom = { workspace = true, optional = true } [package.metadata.docs.rs] diff --git a/lightclient/src/background.rs b/lightclient/src/background.rs index b755b383b7..e9bd9424e3 100644 --- a/lightclient/src/background.rs +++ b/lightclient/src/background.rs @@ -1,43 +1,47 @@ -// Copyright 2019-2023 Parity Technologies (UK) Ltd. +// Copyright 2019-2024 Parity Technologies (UK) Ltd. // This file is dual-licensed as Apache-2.0 or GPL-3.0. // see LICENSE for license details. -use futures::stream::StreamExt; -use futures_util::future::{self, Either}; -use serde::Deserialize; +use crate::rpc::RpcResponse; +use crate::shared_client::SharedClient; +use crate::{JsonRpcError, LightClientRpcError}; +use futures::{stream::StreamExt, FutureExt}; use serde_json::value::RawValue; use smoldot_light::platform::PlatformRef; use std::{collections::HashMap, str::FromStr}; use tokio::sync::{mpsc, oneshot}; +use tokio_stream::wrappers::UnboundedReceiverStream; -use crate::client::AddedChain; +const LOG_TARGET: &str = "subxt-light-client-background-task"; -use super::LightClientRpcError; -use smoldot_light::ChainId; - -const LOG_TARGET: &str = "subxt-light-client-background"; - -/// The response of an RPC method. +/// Response from [`BackgroundTaskHandle::request()`]. pub type MethodResponse = Result, LightClientRpcError>; +/// Response from [`BackgroundTaskHandle::subscribe()`]. +pub type SubscriptionResponse = Result< + ( + SubscriptionId, + mpsc::UnboundedReceiver, JsonRpcError>>, + ), + LightClientRpcError, +>; + +/// Type of subscription IDs we can get back. +pub type SubscriptionId = String; + /// Message protocol between the front-end client that submits the RPC requests -/// and the backend handler that produces responses from the chain. -/// -/// The light client uses a single object [`smoldot_light::JsonRpcResponses`] to -/// handle all requests and subscriptions from a chain. A background task is spawned -/// to multiplex the rpc responses and to provide them back to their rightful submitters. +/// and the background task which fetches responses from Smoldot. Hidden behind +/// the [`BackgroundTaskHandle`]. #[derive(Debug)] -pub enum FromSubxt { +enum Message { /// The RPC method request. Request { /// The method of the request. method: String, /// The parameters of the request. - params: String, - /// Channel used to send back the result. + params: Option>, + /// Channel used to send back the method response. sender: oneshot::Sender, - /// The ID of the chain used to identify the chain. - chain_id: ChainId, }, /// The RPC subscription (pub/sub) request. Subscription { @@ -46,29 +50,160 @@ pub enum FromSubxt { /// The method to unsubscribe. unsubscribe_method: String, /// The parameters of the request. - params: String, - /// Channel used to send back the subscription ID if successful. - sub_id: oneshot::Sender, - /// Channel used to send back the notifications. - sender: mpsc::UnboundedSender>, - /// The ID of the chain used to identify the chain. - chain_id: ChainId, + params: Option>, + /// Channel used to send back the subscription response. + sender: oneshot::Sender, }, } -/// Background task data. -#[allow(clippy::type_complexity)] -pub struct BackgroundTask { - /// Smoldot light client implementation that leverages the exposed platform. - client: smoldot_light::Client, - /// Per-chain data. - chain_data: HashMap, +/// A handle to communicate with the background task. +#[derive(Clone, Debug)] +pub struct BackgroundTaskHandle { + to_backend: mpsc::UnboundedSender, } -/// The data that we store for each chain. -#[derive(Default)] -struct ChainData { - /// Generates an unique monotonically increasing ID for each chain. +impl BackgroundTaskHandle { + /// Make an RPC request via the background task. + pub async fn request(&self, method: String, params: Option>) -> MethodResponse { + let (tx, rx) = oneshot::channel(); + self.to_backend + .send(Message::Request { + method, + params, + sender: tx, + }) + .map_err(|_e| LightClientRpcError::BackgroundTaskDropped)?; + + match rx.await { + Err(_e) => Err(LightClientRpcError::BackgroundTaskDropped), + Ok(response) => response, + } + } + + /// Subscribe to some RPC method via the background task. + pub async fn subscribe( + &self, + method: String, + params: Option>, + unsubscribe_method: String, + ) -> SubscriptionResponse { + let (tx, rx) = oneshot::channel(); + self.to_backend + .send(Message::Subscription { + method, + params, + unsubscribe_method, + sender: tx, + }) + .map_err(|_e| LightClientRpcError::BackgroundTaskDropped)?; + + match rx.await { + Err(_e) => Err(LightClientRpcError::BackgroundTaskDropped), + Ok(response) => response, + } + } +} + +/// A background task which runs with [`BackgroundTask::run()`] and manages messages +/// coming to/from Smoldot. +#[allow(clippy::type_complexity)] +pub struct BackgroundTask { + channels: BackgroundTaskChannels, + data: BackgroundTaskData, +} + +impl BackgroundTask { + /// Constructs a new [`BackgroundTask`]. + pub(crate) fn new( + client: SharedClient, + chain_id: smoldot_light::ChainId, + from_back: smoldot_light::JsonRpcResponses, + ) -> (BackgroundTask, BackgroundTaskHandle) { + let (tx, rx) = mpsc::unbounded_channel(); + + let bg_task = BackgroundTask { + channels: BackgroundTaskChannels { + from_front: UnboundedReceiverStream::new(rx), + from_back, + }, + data: BackgroundTaskData { + client, + chain_id, + last_request_id: 0, + pending_subscriptions: HashMap::new(), + requests: HashMap::new(), + subscriptions: HashMap::new(), + }, + }; + + let bg_handle = BackgroundTaskHandle { to_backend: tx }; + + (bg_task, bg_handle) + } + + /// Run the background task, which: + /// - Forwards messages/subscription requests to Smoldot from the front end. + /// - Forwards responses back from Smoldot to the front end. + pub async fn run(self) { + let chain_id = self.data.chain_id; + let mut channels = self.channels; + let mut data = self.data; + + loop { + tokio::pin! { + let from_front_fut = channels.from_front.next().fuse(); + let from_back_fut = channels.from_back.next().fuse(); + } + + futures::select! { + // Message coming from the front end/client. + front_message = from_front_fut => { + let Some(message) = front_message else { + tracing::trace!(target: LOG_TARGET, "Subxt channel closed"); + break; + }; + tracing::trace!( + target: LOG_TARGET, + "Received register message {:?}", + message + ); + + data.handle_requests(message).await; + }, + // Message coming from Smoldot. + back_message = from_back_fut => { + let Some(back_message) = back_message else { + tracing::trace!(target: LOG_TARGET, "Smoldot RPC responses channel closed"); + break; + }; + tracing::trace!( + target: LOG_TARGET, + "Received smoldot RPC chain {:?} result {:?}", + chain_id, back_message + ); + + data.handle_rpc_response(back_message); + } + } + } + + tracing::trace!(target: LOG_TARGET, "Task closed"); + } +} + +struct BackgroundTaskChannels { + /// Messages sent into this background task from the front end. + from_front: UnboundedReceiverStream, + /// Messages sent into the background task from Smoldot. + from_back: smoldot_light::JsonRpcResponses, +} + +struct BackgroundTaskData { + /// A smoldot light client that can be shared. + client: SharedClient, + /// Knowing the chain ID helps with debugging, but isn't overwise necessary. + chain_id: smoldot_light::ChainId, + /// Know which Id to use next for new requests/subscriptions. last_request_id: usize, /// Map the request ID of a RPC method to the frontend `Sender`. requests: HashMap>, @@ -78,20 +213,12 @@ struct ChainData { /// The RPC method request is made in the background and the response should /// not be sent back to the user. /// Map the request ID of a RPC method to the frontend `Sender`. - id_to_subscription: HashMap, + pending_subscriptions: HashMap, /// Map the subscription ID to the frontend `Sender`. /// /// The subscription ID is entirely generated by the node (smoldot). Therefore, it is /// possible for two distinct subscriptions of different chains to have the same subscription ID. - subscriptions: HashMap, -} - -impl ChainData { - /// Fetch and increment the request ID. - fn next_id(&mut self) -> usize { - self.last_request_id = self.last_request_id.wrapping_add(1); - self.last_request_id - } + subscriptions: HashMap, } /// The state needed to resolve the subscription ID and send @@ -100,72 +227,52 @@ struct PendingSubscription { /// Send the method response ID back to the user. /// /// It contains the subscription ID if successful, or an JSON RPC error object. - sub_id_sender: oneshot::Sender, - /// The subscription state that is added to the `subscriptions` map only - /// if the subscription ID is successfully sent back to the user. - subscription_state: ActiveSubscription, -} - -impl PendingSubscription { - /// Transforms the pending subscription into an active subscription. - fn into_parts(self) -> (oneshot::Sender, ActiveSubscription) { - (self.sub_id_sender, self.subscription_state) - } -} - -/// The state of the subscription. -struct ActiveSubscription { - /// Channel to send the subscription notifications back to frontend. - sender: mpsc::UnboundedSender>, + response_sender: oneshot::Sender, /// The unsubscribe method to call when the user drops the receiver /// part of the channel. unsubscribe_method: String, } -impl BackgroundTask { - /// Constructs a new [`BackgroundTask`]. - pub fn new( - client: smoldot_light::Client, - ) -> BackgroundTask { - BackgroundTask { - client, - chain_data: Default::default(), - } - } +/// The state of the subscription. +struct ActiveSubscription { + /// Channel to send the subscription notifications back to frontend. + notification_sender: mpsc::UnboundedSender, JsonRpcError>>, + /// The unsubscribe method to call when the user drops the receiver + /// part of the channel. + unsubscribe_method: String, +} - fn for_chain_id( - &mut self, - chain_id: smoldot_light::ChainId, - ) -> ( - &mut ChainData, - &mut smoldot_light::Client, - ) { - let chain_data = self.chain_data.entry(chain_id).or_default(); - let client = &mut self.client; - (chain_data, client) +impl BackgroundTaskData { + /// Fetch and increment the request ID. + fn next_id(&mut self) -> usize { + self.last_request_id = self.last_request_id.wrapping_add(1); + self.last_request_id } /// Handle the registration messages received from the user. - async fn handle_requests(&mut self, message: FromSubxt) { + async fn handle_requests(&mut self, message: Message) { match message { - FromSubxt::Request { + Message::Request { method, params, sender, - chain_id, } => { - let (chain_data, client) = self.for_chain_id(chain_id); - let id = chain_data.next_id(); + let id = self.next_id(); + let chain_id = self.chain_id; + let params = match ¶ms { + Some(params) => params.get(), + None => "null", + }; let request = format!( r#"{{"jsonrpc":"2.0","id":"{}", "method":"{}","params":{}}}"#, id, method, params ); - chain_data.requests.insert(id, sender); + self.requests.insert(id, sender); tracing::trace!(target: LOG_TARGET, "Tracking request id={id} chain={chain_id:?}"); - let result = client.json_rpc_request(request, chain_id); + let result = self.client.json_rpc_request(request, chain_id); if let Err(err) = result { tracing::warn!( target: LOG_TARGET, @@ -173,14 +280,14 @@ impl BackgroundTask { err.to_string() ); - let sender = chain_data + let sender = self .requests .remove(&id) .expect("Channel is inserted above; qed"); // Send the error back to frontend. if sender - .send(Err(LightClientRpcError::Request(err.to_string()))) + .send(Err(LightClientRpcError::SmoldotError(err.to_string()))) .is_err() { tracing::warn!( @@ -192,52 +299,49 @@ impl BackgroundTask { tracing::trace!(target: LOG_TARGET, "Submitted to smoldot request with id={id}"); } } - FromSubxt::Subscription { + Message::Subscription { method, unsubscribe_method, params, - sub_id, sender, - chain_id, } => { - let (chain_data, client) = self.for_chain_id(chain_id); - let id = chain_data.next_id(); + let id = self.next_id(); + let chain_id = self.chain_id; // For subscriptions we need to make a plain RPC request to the subscription method. // The server will return as a result the subscription ID. + let params = match ¶ms { + Some(params) => params.get(), + None => "null", + }; let request = format!( r#"{{"jsonrpc":"2.0","id":"{}", "method":"{}","params":{}}}"#, id, method, params ); tracing::trace!(target: LOG_TARGET, "Tracking subscription request id={id} chain={chain_id:?}"); - let subscription_id_state = PendingSubscription { - sub_id_sender: sub_id, - subscription_state: ActiveSubscription { - sender, - unsubscribe_method, - }, + let pending_subscription = PendingSubscription { + response_sender: sender, + unsubscribe_method, }; - chain_data - .id_to_subscription - .insert(id, subscription_id_state); + self.pending_subscriptions.insert(id, pending_subscription); - let result = client.json_rpc_request(request, chain_id); + let result = self.client.json_rpc_request(request, chain_id); if let Err(err) = result { tracing::warn!( target: LOG_TARGET, "Cannot send RPC request to lightclient {:?}", err.to_string() ); - let subscription_id_state = chain_data - .id_to_subscription + let subscription_id_state = self + .pending_subscriptions .remove(&id) .expect("Channels are inserted above; qed"); // Send the error back to frontend. if subscription_id_state - .sub_id_sender - .send(Err(LightClientRpcError::Request(err.to_string()))) + .response_sender + .send(Err(LightClientRpcError::SmoldotError(err.to_string()))) .is_err() { tracing::warn!( @@ -253,20 +357,75 @@ impl BackgroundTask { } /// Parse the response received from the light client and sent it to the appropriate user. - fn handle_rpc_response(&mut self, chain_id: smoldot_light::ChainId, response: String) { - tracing::trace!(target: LOG_TARGET, "Received from smoldot response={response} chain={chain_id:?}"); - let (chain_data, _client) = self.for_chain_id(chain_id); + fn handle_rpc_response(&mut self, response: String) { + let chain_id = self.chain_id; + tracing::trace!(target: LOG_TARGET, "Received from smoldot response='{response}' chain={chain_id:?}"); match RpcResponse::from_str(&response) { - Ok(RpcResponse::Error { id, error }) => { + Ok(RpcResponse::Method { id, result }) => { + let Ok(id) = id.parse::() else { + tracing::warn!(target: LOG_TARGET, "Cannot send response. Id={id} chain={chain_id:?} is not a valid number"); + return; + }; + + // Send the response back. + if let Some(sender) = self.requests.remove(&id) { + if sender.send(Ok(result)).is_err() { + tracing::warn!( + target: LOG_TARGET, + "Cannot send method response to id={id} chain={chain_id:?}", + ); + } + } else if let Some(pending_subscription) = self.pending_subscriptions.remove(&id) { + let Ok(sub_id) = serde_json::from_str::(result.get()) else { + tracing::warn!( + target: LOG_TARGET, + "Subscription id='{result}' chain={chain_id:?} is not a valid string", + ); + return; + }; + + tracing::trace!(target: LOG_TARGET, "Received subscription id={sub_id} chain={chain_id:?}"); + + let (sub_tx, sub_rx) = mpsc::unbounded_channel(); + + // Send the method response and a channel to receive notifications back. + if pending_subscription + .response_sender + .send(Ok((sub_id.clone(), sub_rx))) + .is_err() + { + tracing::warn!( + target: LOG_TARGET, + "Cannot send subscription ID response to id={id} chain={chain_id:?}", + ); + return; + } + + // Store the other end of the notif channel to send future subscription notifications to. + self.subscriptions.insert( + sub_id, + ActiveSubscription { + notification_sender: sub_tx, + unsubscribe_method: pending_subscription.unsubscribe_method, + }, + ); + } else { + tracing::warn!( + target: LOG_TARGET, + "Response id={id} chain={chain_id:?} is not tracked", + ); + } + } + Ok(RpcResponse::MethodError { id, error }) => { let Ok(id) = id.parse::() else { tracing::warn!(target: LOG_TARGET, "Cannot send error. Id={id} chain={chain_id:?} is not a valid number"); return; }; - if let Some(sender) = chain_data.requests.remove(&id) { + if let Some(sender) = self.requests.remove(&id) { if sender - .send(Err(LightClientRpcError::Request(error.to_string()))) + .send(Err(LightClientRpcError::JsonRpcError(JsonRpcError(error)))) .is_err() { tracing::warn!( @@ -274,12 +433,10 @@ impl BackgroundTask { "Cannot send method response to id={id} chain={chain_id:?}", ); } - } else if let Some(subscription_id_state) = - chain_data.id_to_subscription.remove(&id) - { + } else if let Some(subscription_id_state) = self.pending_subscriptions.remove(&id) { if subscription_id_state - .sub_id_sender - .send(Err(LightClientRpcError::Request(error.to_string()))) + .response_sender + .send(Err(LightClientRpcError::JsonRpcError(JsonRpcError(error)))) .is_err() { tracing::warn!( @@ -289,93 +446,44 @@ impl BackgroundTask { } } } - Ok(RpcResponse::Method { id, result }) => { - let Ok(id) = id.parse::() else { - tracing::warn!(target: LOG_TARGET, "Cannot send response. Id={id} chain={chain_id:?} is not a valid number"); - return; - }; - - // Send the response back. - if let Some(sender) = chain_data.requests.remove(&id) { - if sender.send(Ok(result)).is_err() { - tracing::warn!( - target: LOG_TARGET, - "Cannot send method response to id={id} chain={chain_id:?}", - ); - } - } else if let Some(pending_subscription) = chain_data.id_to_subscription.remove(&id) - { - let Ok(sub_id) = result - .get() - .trim_start_matches('"') - .trim_end_matches('"') - .parse::() - else { - tracing::warn!( - target: LOG_TARGET, - "Subscription id={result} chain={chain_id:?} is not a valid number", - ); - return; - }; - - tracing::trace!(target: LOG_TARGET, "Received subscription id={sub_id} chain={chain_id:?}"); - - let (sub_id_sender, active_subscription) = pending_subscription.into_parts(); - if sub_id_sender.send(Ok(result)).is_err() { - tracing::warn!( - target: LOG_TARGET, - "Cannot send method response to id={id} chain={chain_id:?}", - ); - - return; - } - - // Track this subscription ID if send is successful. - chain_data.subscriptions.insert(sub_id, active_subscription); - } else { + Ok(RpcResponse::Notification { + method, + subscription_id, + result, + }) => { + let Some(active_subscription) = self.subscriptions.get_mut(&subscription_id) else { tracing::warn!( target: LOG_TARGET, - "Response id={id} chain={chain_id:?} is not tracked", + "Subscription response id={subscription_id} chain={chain_id:?} method={method} is not tracked", ); + return; + }; + if active_subscription + .notification_sender + .send(Ok(result)) + .is_err() + { + self.unsubscribe(&subscription_id, chain_id); } } - Ok(RpcResponse::Subscription { method, id, result }) => { - let Ok(id) = id.parse::() else { - tracing::warn!(target: LOG_TARGET, "Cannot send subscription. Id={id} chain={chain_id:?} is not a valid number"); - return; - }; - - let Some(subscription_state) = chain_data.subscriptions.get_mut(&id) else { + Ok(RpcResponse::NotificationError { + method, + subscription_id, + error, + }) => { + let Some(active_subscription) = self.subscriptions.get_mut(&subscription_id) else { tracing::warn!( target: LOG_TARGET, - "Subscription response id={id} chain={chain_id:?} method={method} is not tracked", + "Subscription error id={subscription_id} chain={chain_id:?} method={method} is not tracked", ); return; }; - if subscription_state.sender.send(result).is_ok() { - // Nothing else to do, user is informed about the notification. - return; - } - - // User dropped the receiver, unsubscribe from the method and remove internal tracking. - let Some(subscription_state) = chain_data.subscriptions.remove(&id) else { - // State is checked to be some above, so this should never happen. - return; - }; - // Make a call to unsubscribe from this method. - let unsub_id = chain_data.next_id(); - let request = format!( - r#"{{"jsonrpc":"2.0","id":"{}", "method":"{}","params":["{}"]}}"#, - unsub_id, subscription_state.unsubscribe_method, id - ); - - if let Err(err) = self.client.json_rpc_request(request, chain_id) { - tracing::warn!( - target: LOG_TARGET, - "Failed to unsubscribe id={id:?} chain={chain_id:?} method={:?} err={err:?}", subscription_state.unsubscribe_method - ); - } else { - tracing::debug!(target: LOG_TARGET,"Unsubscribe id={id:?} chain={chain_id:?} method={:?}", subscription_state.unsubscribe_method); + if active_subscription + .notification_sender + .send(Err(JsonRpcError(error))) + .is_err() + { + self.unsubscribe(&subscription_id, chain_id); } } Err(err) => { @@ -384,169 +492,28 @@ impl BackgroundTask { } } - /// Perform the main background task: - /// - receiving requests from subxt RPC method / subscriptions - /// - provides the results from the light client back to users. - pub async fn start_task( - &mut self, - from_subxt: mpsc::UnboundedReceiver, - from_node: Vec, - ) { - let from_subxt_event = tokio_stream::wrappers::UnboundedReceiverStream::new(from_subxt); + // Unsubscribe from a subscription. + fn unsubscribe(&mut self, subscription_id: &str, chain_id: smoldot_light::ChainId) { + let Some(active_subscription) = self.subscriptions.remove(subscription_id) else { + // Subscription doesn't exist so nothing more to do. + return; + }; - let from_node = from_node.into_iter().map(|rpc| { - Box::pin(futures::stream::unfold(rpc, |mut rpc| async move { - let response = rpc.rpc_responses.next().await; - Some(((response, rpc.chain_id), rpc)) - })) - }); - let stream_combinator = futures::stream::select_all(from_node); + // Build a call to unsubscribe from this method. + let unsub_id = self.next_id(); + let request = format!( + r#"{{"jsonrpc":"2.0","id":"{}", "method":"{}","params":["{}"]}}"#, + unsub_id, active_subscription.unsubscribe_method, subscription_id + ); - tokio::pin!(from_subxt_event, stream_combinator); - - let mut from_subxt_event_fut = from_subxt_event.next(); - let mut from_node_event_fut = stream_combinator.next(); - - loop { - match future::select(from_subxt_event_fut, from_node_event_fut).await { - // Message received from subxt. - Either::Left((subxt_message, previous_fut)) => { - let Some(message) = subxt_message else { - tracing::trace!(target: LOG_TARGET, "Subxt channel closed"); - break; - }; - tracing::trace!( - target: LOG_TARGET, - "Received register message {:?}", - message - ); - - self.handle_requests(message).await; - - from_subxt_event_fut = from_subxt_event.next(); - from_node_event_fut = previous_fut; - } - // Message received from rpc handler: lightclient response. - Either::Right((node_message, previous_fut)) => { - let Some((node_message, chain)) = node_message else { - tracing::trace!(target: LOG_TARGET, "Smoldot closed all RPC channels"); - break; - }; - // Smoldot returns `None` if the chain has been removed (which subxt does not remove). - let Some(response) = node_message else { - tracing::trace!(target: LOG_TARGET, "Smoldot RPC responses channel closed"); - break; - }; - tracing::trace!( - target: LOG_TARGET, - "Received smoldot RPC chain {:?} result {:?}", - chain, response - ); - - self.handle_rpc_response(chain, response); - - // Advance backend, save frontend. - from_subxt_event_fut = previous_fut; - from_node_event_fut = stream_combinator.next(); - } - } + // Submit it. + if let Err(err) = self.client.json_rpc_request(request, chain_id) { + tracing::warn!( + target: LOG_TARGET, + "Failed to unsubscribe id={subscription_id} chain={chain_id:?} method={:?} err={err:?}", active_subscription.unsubscribe_method + ); + } else { + tracing::debug!(target: LOG_TARGET,"Unsubscribe id={subscription_id} chain={chain_id:?} method={:?}", active_subscription.unsubscribe_method); } - - tracing::trace!(target: LOG_TARGET, "Task closed"); - } -} - -/// The RPC response from the light-client. -/// This can either be a response of a method, or a notification from a subscription. -#[derive(Debug, Clone)] -enum RpcResponse { - Method { - /// Response ID. - id: String, - /// The result of the method call. - result: Box, - }, - Subscription { - /// RPC method that generated the notification. - method: String, - /// Subscription ID. - id: String, - /// Result. - result: Box, - }, - Error { - /// Response ID. - id: String, - /// Error. - error: Box, - }, -} - -impl std::str::FromStr for RpcResponse { - type Err = serde_json::Error; - - fn from_str(response: &str) -> Result { - // Helper structures to deserialize from raw RPC strings. - #[derive(Deserialize, Debug)] - struct Response { - /// JSON-RPC version. - #[allow(unused)] - jsonrpc: String, - /// Result. - result: Box, - /// Request ID - id: String, - } - #[derive(Deserialize)] - struct NotificationParams { - /// The ID of the subscription. - subscription: String, - /// Result. - result: Box, - } - #[derive(Deserialize)] - struct ResponseNotification { - /// JSON-RPC version. - #[allow(unused)] - jsonrpc: String, - /// RPC method that generated the notification. - method: String, - /// Result. - params: NotificationParams, - } - #[derive(Deserialize)] - struct ErrorResponse { - /// JSON-RPC version. - #[allow(unused)] - jsonrpc: String, - /// Request ID. - id: String, - /// Error. - error: Box, - } - - // Check if the response can be mapped as an RPC method response. - let result: Result = serde_json::from_str(response); - if let Ok(response) = result { - return Ok(RpcResponse::Method { - id: response.id, - result: response.result, - }); - } - - let result: Result = serde_json::from_str(response); - if let Ok(notification) = result { - return Ok(RpcResponse::Subscription { - id: notification.params.subscription, - method: notification.method, - result: notification.params.result, - }); - } - - let error: ErrorResponse = serde_json::from_str(response)?; - Ok(RpcResponse::Error { - id: error.id, - error: error.error, - }) } } diff --git a/lightclient/src/chain_config.rs b/lightclient/src/chain_config.rs new file mode 100644 index 0000000000..66d5294476 --- /dev/null +++ b/lightclient/src/chain_config.rs @@ -0,0 +1,71 @@ +// Copyright 2019-2023 Parity Technologies (UK) Ltd. +// This file is dual-licensed as Apache-2.0 or GPL-3.0. +// see LICENSE for license details. + +use serde_json::Value; +use std::borrow::Cow; + +/// Something went wrong building chain config. +#[non_exhaustive] +#[derive(thiserror::Error, Debug)] +pub enum ChainConfigError { + /// The provided chain spec is the wrong shape. + #[error("Invalid chain spec format")] + InvalidSpecFormat, +} + +/// Configuration to connect to a chain. +pub struct ChainConfig<'a> { + // The chain spec to use. + chain_spec: Cow<'a, str>, +} + +impl<'a> From<&'a str> for ChainConfig<'a> { + fn from(chain_spec: &'a str) -> Self { + ChainConfig::chain_spec(chain_spec) + } +} + +impl<'a> From for ChainConfig<'a> { + fn from(chain_spec: String) -> Self { + ChainConfig::chain_spec(chain_spec) + } +} + +impl<'a> ChainConfig<'a> { + /// Construct a chain config from a chain spec. + pub fn chain_spec(chain_spec: impl Into>) -> Self { + ChainConfig { + chain_spec: chain_spec.into(), + } + } + + /// Set the bootnodes to the given ones. + pub fn set_bootnodes>( + self, + bootnodes: impl IntoIterator, + ) -> Result { + let mut chain_spec_json: Value = serde_json::from_str(&self.chain_spec) + .map_err(|_e| ChainConfigError::InvalidSpecFormat)?; + + if let Value::Object(map) = &mut chain_spec_json { + let bootnodes = bootnodes + .into_iter() + .map(|s| Value::String(s.as_ref().to_owned())) + .collect(); + + map.insert("bootNodes".to_string(), Value::Array(bootnodes)); + } else { + return Err(ChainConfigError::InvalidSpecFormat); + } + + Ok(ChainConfig { + chain_spec: Cow::Owned(chain_spec_json.to_string()), + }) + } + + // Used internally to fetch the chain spec back out. + pub(crate) fn as_chain_spec(&self) -> &str { + &self.chain_spec + } +} diff --git a/lightclient/src/client.rs b/lightclient/src/client.rs deleted file mode 100644 index f06c968b66..0000000000 --- a/lightclient/src/client.rs +++ /dev/null @@ -1,212 +0,0 @@ -// Copyright 2019-2023 Parity Technologies (UK) Ltd. -// This file is dual-licensed as Apache-2.0 or GPL-3.0. -// see LICENSE for license details. -use std::iter; - -use super::{ - background::{BackgroundTask, FromSubxt, MethodResponse}, - LightClientRpcError, -}; -use serde_json::value::RawValue; -use tokio::sync::{mpsc, mpsc::error::SendError, oneshot}; - -use super::platform::build_platform; - -pub const LOG_TARGET: &str = "subxt-light-client"; - -/// A raw light-client RPC implementation that can connect to multiple chains. -#[derive(Clone)] -pub struct RawLightClientRpc { - /// Communicate with the backend task that multiplexes the responses - /// back to the frontend. - to_backend: mpsc::UnboundedSender, -} - -impl RawLightClientRpc { - /// Construct a [`LightClientRpc`] that can communicated with the provided chain. - /// - /// # Note - /// - /// This uses the same underlying instance created by [`LightClientRpc::new_from_client`]. - pub fn for_chain(&self, chain_id: smoldot_light::ChainId) -> LightClientRpc { - LightClientRpc { - to_backend: self.to_backend.clone(), - chain_id, - } - } -} - -/// The light-client RPC implementation that is used to connect with the chain. -#[derive(Clone)] -pub struct LightClientRpc { - /// Communicate with the backend task that multiplexes the responses - /// back to the frontend. - to_backend: mpsc::UnboundedSender, - /// The chain ID to target for requests. - chain_id: smoldot_light::ChainId, -} - -impl LightClientRpc { - /// Constructs a new [`LightClientRpc`], providing the chain specification. - /// - /// The chain specification can be downloaded from a trusted network via - /// the `sync_state_genSyncSpec` RPC method. This parameter expects the - /// chain spec in text format (ie not in hex-encoded scale-encoded as RPC methods - /// will provide). - /// - /// ## Panics - /// - /// The panic behaviour depends on the feature flag being used: - /// - /// ### Native - /// - /// Panics when called outside of a `tokio` runtime context. - /// - /// ### Web - /// - /// If smoldot panics, then the promise created will be leaked. For more details, see - /// https://docs.rs/wasm-bindgen-futures/latest/wasm_bindgen_futures/fn.future_to_promise.html. - pub fn new( - config: smoldot_light::AddChainConfig< - '_, - (), - impl IntoIterator, - >, - ) -> Result { - tracing::trace!(target: LOG_TARGET, "Create light client"); - - let mut client = smoldot_light::Client::new(build_platform()); - - let config = smoldot_light::AddChainConfig { - specification: config.specification, - json_rpc: config.json_rpc, - database_content: config.database_content, - potential_relay_chains: config.potential_relay_chains.into_iter(), - user_data: config.user_data, - }; - - let smoldot_light::AddChainSuccess { - chain_id, - json_rpc_responses, - } = client - .add_chain(config) - .map_err(|err| LightClientRpcError::AddChainError(err.to_string()))?; - - let rpc_responses = json_rpc_responses.expect("Light client RPC configured; qed"); - - let raw_client = Self::new_from_client( - client, - iter::once(AddedChain { - chain_id, - rpc_responses, - }), - ); - Ok(raw_client.for_chain(chain_id)) - } - - /// Constructs a new [`RawLightClientRpc`] from the raw smoldot client. - /// - /// Receives a list of RPC objects as a result of calling `smoldot_light::Client::add_chain`. - /// This [`RawLightClientRpc`] can target different chains using [`RawLightClientRpc::for_chain`] method. - /// - /// ## Panics - /// - /// The panic behaviour depends on the feature flag being used: - /// - /// ### Native - /// - /// Panics when called outside of a `tokio` runtime context. - /// - /// ### Web - /// - /// If smoldot panics, then the promise created will be leaked. For more details, see - /// https://docs.rs/wasm-bindgen-futures/latest/wasm_bindgen_futures/fn.future_to_promise.html. - pub fn new_from_client( - client: smoldot_light::Client, - chains: impl IntoIterator, - ) -> RawLightClientRpc - where - TPlat: smoldot_light::platform::PlatformRef + Clone, - { - let (to_backend, backend) = mpsc::unbounded_channel(); - let chains = chains.into_iter().collect(); - - let future = async move { - let mut task = BackgroundTask::new(client); - task.start_task(backend, chains).await; - }; - - #[cfg(feature = "native")] - tokio::spawn(future); - #[cfg(feature = "web")] - wasm_bindgen_futures::spawn_local(future); - - RawLightClientRpc { to_backend } - } - - /// Returns the chain ID of the current light-client. - pub fn chain_id(&self) -> smoldot_light::ChainId { - self.chain_id - } - - /// Submits an RPC method request to the light-client. - /// - /// This method sends a request to the light-client to execute an RPC method with the provided parameters. - /// The parameters are parsed into a valid JSON object in the background. - pub fn method_request( - &self, - method: String, - params: String, - ) -> Result, SendError> { - let (sender, receiver) = oneshot::channel(); - - self.to_backend.send(FromSubxt::Request { - method, - params, - sender, - chain_id: self.chain_id, - })?; - - Ok(receiver) - } - - /// Makes an RPC subscription call to the light-client. - /// - /// This method sends a request to the light-client to establish an RPC subscription with the provided parameters. - /// The parameters are parsed into a valid JSON object in the background. - #[allow(clippy::type_complexity)] - pub fn subscription_request( - &self, - method: String, - params: String, - unsubscribe_method: String, - ) -> Result< - ( - oneshot::Receiver, - mpsc::UnboundedReceiver>, - ), - SendError, - > { - let (sub_id, sub_id_rx) = oneshot::channel(); - let (sender, receiver) = mpsc::unbounded_channel(); - - self.to_backend.send(FromSubxt::Subscription { - method, - unsubscribe_method, - params, - sub_id, - sender, - chain_id: self.chain_id, - })?; - - Ok((sub_id_rx, receiver)) - } -} - -/// The added chain of the light-client. -pub struct AddedChain { - /// The id of the chain. - pub chain_id: smoldot_light::ChainId, - /// Producer of RPC responses for the chain. - pub rpc_responses: smoldot_light::JsonRpcResponses, -} diff --git a/lightclient/src/lib.rs b/lightclient/src/lib.rs index 34800fe4f0..6df5c2ec47 100644 --- a/lightclient/src/lib.rs +++ b/lightclient/src/lib.rs @@ -2,52 +2,259 @@ // This file is dual-licensed as Apache-2.0 or GPL-3.0. // see LICENSE for license details. -//! Low level light client implementation for RPC method and -//! subscriptions requests. -//! -//! The client implementation supports both native and wasm -//! environments. -//! -//! This leverages the smoldot crate to connect to the chain. +//! A wrapper around [`smoldot_light`] which provides an light client capable of connecting +//! to Substrate based chains. +#![deny(missing_docs)] #![cfg_attr(docsrs, feature(doc_cfg))] #[cfg(any( all(feature = "web", feature = "native"), not(any(feature = "web", feature = "native")) ))] -compile_error!("subxt: exactly one of the 'web' and 'native' features should be used."); +compile_error!("subxt-lightclient: exactly one of the 'web' and 'native' features should be used."); -mod background; -mod client; mod platform; +mod shared_client; +// mod receiver; +mod background; +mod chain_config; +mod rpc; -// Used to enable the js feature for wasm. -#[cfg(feature = "web")] -#[allow(unused_imports)] -pub use getrandom as _; +use background::{BackgroundTask, BackgroundTaskHandle}; +use futures::Stream; +use platform::DefaultPlatform; +use serde_json::value::RawValue; +use shared_client::SharedClient; +use std::future::Future; +use tokio::sync::mpsc; -pub use client::{AddedChain, LightClientRpc, RawLightClientRpc}; +pub use chain_config::{ChainConfig, ChainConfigError}; -/// Re-exports of the smoldot related objects. -pub mod smoldot { - pub use smoldot_light::{ - platform::PlatformRef, AddChainConfig, AddChainConfigJsonRpc, ChainId, Client, - JsonRpcResponses, - }; - - #[cfg(feature = "native")] - #[cfg_attr(docsrs, doc(cfg(feature = "native")))] - pub use smoldot_light::platform::default::DefaultPlatform; -} - -/// Light client error. +/// Things that can go wrong when constructing the [`LightClient`]. #[derive(Debug, thiserror::Error)] -pub enum LightClientRpcError { +pub enum LightClientError { /// Error encountered while adding the chain to the light-client. #[error("Failed to add the chain to the light client: {0}.")] AddChainError(String), - /// Error originated while trying to submit a RPC request. - #[error("RPC request cannot be sent: {0}.")] - Request(String), +} + +/// Things that can go wrong calling methods of [`LightClientRpc`]. +#[derive(Debug, thiserror::Error)] +pub enum LightClientRpcError { + /// Error response from the JSON-RPC server. + #[error("{0}")] + JsonRpcError(JsonRpcError), + /// Smoldot could not handle the RPC call. + #[error("Smoldot could not handle the RPC call: {0}.")] + SmoldotError(String), + /// Background task dropped. + #[error("The background task was dropped.")] + BackgroundTaskDropped, +} + +/// An error response from the JSON-RPC server (ie smoldot) in response to +/// a method call or as a subscription notification. +#[derive(Debug, thiserror::Error)] +#[error("RPC Error: {0}.")] +pub struct JsonRpcError(Box); + +/// This represents a single light client connection to the network. Instantiate +/// it with [`LightClient::relay_chain()`] to communicate with a relay chain, and +/// then call [`LightClient::parachain()`] to establish connections to parachains. +#[derive(Clone)] +pub struct LightClient { + client: SharedClient, + relay_chain_id: smoldot_light::ChainId, +} + +impl LightClient { + /// Given a chain spec, establish a connection to a relay chain. Any subsequent calls to + /// [`LightClient::parachain()`] will set this as the relay chain. + /// + /// # Panics + /// + /// The panic behaviour depends on the feature flag being used: + /// + /// ## Native + /// + /// Panics when called outside of a `tokio` runtime context. + /// + /// ## Web + /// + /// If smoldot panics, then the promise created will be leaked. For more details, see + /// https://docs.rs/wasm-bindgen-futures/latest/wasm_bindgen_futures/fn.future_to_promise.html. + pub fn relay_chain<'a>( + chain_config: impl Into>, + ) -> Result<(Self, LightClientRpc), LightClientError> { + let mut client = smoldot_light::Client::new(platform::build_platform()); + let chain_config = chain_config.into(); + let chain_spec = chain_config.as_chain_spec(); + + let config = smoldot_light::AddChainConfig { + specification: chain_spec, + json_rpc: smoldot_light::AddChainConfigJsonRpc::Enabled { + max_pending_requests: u32::MAX.try_into().unwrap(), + max_subscriptions: u32::MAX, + }, + database_content: "", + potential_relay_chains: std::iter::empty(), + user_data: (), + }; + + let added_chain = client + .add_chain(config) + .map_err(|err| LightClientError::AddChainError(err.to_string()))?; + + let relay_chain_id = added_chain.chain_id; + let rpc_responses = added_chain + .json_rpc_responses + .expect("Light client RPC configured; qed"); + let shared_client: SharedClient<_> = client.into(); + + let light_client_rpc = + LightClientRpc::new_raw(shared_client.clone(), relay_chain_id, rpc_responses); + let light_client = Self { + client: shared_client, + relay_chain_id, + }; + + Ok((light_client, light_client_rpc)) + } + + /// Given a chain spec, establish a connection to a parachain. + /// + /// # Panics + /// + /// The panic behaviour depends on the feature flag being used: + /// + /// ## Native + /// + /// Panics when called outside of a `tokio` runtime context. + /// + /// ## Web + /// + /// If smoldot panics, then the promise created will be leaked. For more details, see + /// https://docs.rs/wasm-bindgen-futures/latest/wasm_bindgen_futures/fn.future_to_promise.html. + pub fn parachain<'a>( + &self, + chain_config: impl Into>, + ) -> Result { + let chain_config = chain_config.into(); + let chain_spec = chain_config.as_chain_spec(); + + let config = smoldot_light::AddChainConfig { + specification: chain_spec, + json_rpc: smoldot_light::AddChainConfigJsonRpc::Enabled { + max_pending_requests: u32::MAX.try_into().unwrap(), + max_subscriptions: u32::MAX, + }, + database_content: "", + potential_relay_chains: std::iter::once(self.relay_chain_id), + user_data: (), + }; + + let added_chain = self + .client + .add_chain(config) + .map_err(|err| LightClientError::AddChainError(err.to_string()))?; + + let chain_id = added_chain.chain_id; + let rpc_responses = added_chain + .json_rpc_responses + .expect("Light client RPC configured; qed"); + + Ok(LightClientRpc::new_raw( + self.client.clone(), + chain_id, + rpc_responses, + )) + } +} + +/// This represents a single RPC connection to a specific chain, and is constructed by calling +/// one of the methods on [`LightClient`]. Using this, you can make RPC requests to the chain. +#[derive(Clone, Debug)] +pub struct LightClientRpc { + handle: BackgroundTaskHandle, +} + +impl LightClientRpc { + // Dev note: this would provide a "low leveL" interface if one is needed. + // Do we actually need to provide this, or can we entirely hide Smoldot? + pub(crate) fn new_raw( + client: impl Into>, + chain_id: smoldot_light::ChainId, + rpc_responses: smoldot_light::JsonRpcResponses, + ) -> Self + where + TPlat: smoldot_light::platform::PlatformRef + Send + 'static, + TChain: Send + 'static, + { + let (background_task, background_handle) = + BackgroundTask::new(client.into(), chain_id, rpc_responses); + + // For now we spawn the background task internally, but later we can expose + // methods to give this back to the user so that they can exert backpressure. + spawn(async move { background_task.run().await }); + + LightClientRpc { + handle: background_handle, + } + } + + /// Make an RPC request to a chain, getting back a result. + pub async fn request( + &self, + method: String, + params: Option>, + ) -> Result, LightClientRpcError> { + self.handle.request(method, params).await + } + + /// Subscribe to some RPC method, getting back a stream of notifications. + pub async fn subscribe( + &self, + method: String, + params: Option>, + unsub: String, + ) -> Result { + let (id, notifications) = self.handle.subscribe(method, params, unsub).await?; + Ok(LightClientRpcSubscription { id, notifications }) + } +} + +/// A stream of notifications handed back when [`LightClientRpc::subscribe`] is called. +pub struct LightClientRpcSubscription { + notifications: mpsc::UnboundedReceiver, JsonRpcError>>, + id: String, +} + +impl LightClientRpcSubscription { + /// Return the subscription ID + pub fn id(&self) -> &str { + &self.id + } +} + +impl Stream for LightClientRpcSubscription { + type Item = Result, JsonRpcError>; + fn poll_next( + mut self: std::pin::Pin<&mut Self>, + cx: &mut std::task::Context<'_>, + ) -> std::task::Poll> { + self.notifications.poll_recv(cx) + } +} + +/// A quick helper to spawn a task that works for WASM. +fn spawn(future: F) { + #[cfg(feature = "native")] + tokio::spawn(async move { + future.await; + }); + #[cfg(feature = "web")] + wasm_bindgen_futures::spawn_local(async move { + future.await; + }); } diff --git a/lightclient/src/platform/mod.rs b/lightclient/src/platform/mod.rs index 7a1182da66..34cb1b26f8 100644 --- a/lightclient/src/platform/mod.rs +++ b/lightclient/src/platform/mod.rs @@ -11,16 +11,16 @@ mod wasm_platform; #[cfg(feature = "web")] mod wasm_socket; -pub use helpers::build_platform; +pub use helpers::{build_platform, DefaultPlatform}; #[cfg(feature = "native")] mod helpers { use smoldot_light::platform::default::DefaultPlatform as Platform; use std::sync::Arc; - pub type PlatformType = Arc; + pub type DefaultPlatform = Arc; - pub fn build_platform() -> PlatformType { + pub fn build_platform() -> DefaultPlatform { Platform::new( "subxt-light-client".into(), env!("CARGO_PKG_VERSION").into(), @@ -32,9 +32,9 @@ mod helpers { mod helpers { use super::wasm_platform::SubxtPlatform as Platform; - pub type PlatformType = Platform; + pub type DefaultPlatform = Platform; - pub fn build_platform() -> PlatformType { + pub fn build_platform() -> DefaultPlatform { Platform::new() } } diff --git a/lightclient/src/rpc.rs b/lightclient/src/rpc.rs new file mode 100644 index 0000000000..6d84837020 --- /dev/null +++ b/lightclient/src/rpc.rs @@ -0,0 +1,132 @@ +// Copyright 2019-2023 Parity Technologies (UK) Ltd. +// This file is dual-licensed as Apache-2.0 or GPL-3.0. +// see LICENSE for license details. + +use serde::Deserialize; +use serde_json::value::RawValue; + +/// The RPC response from the light-client. +/// This can either be a response of a method, or a notification from a subscription. +#[derive(Debug, Clone)] +pub enum RpcResponse { + Method { + /// Response ID. + id: String, + /// The result of the method call. + result: Box, + }, + MethodError { + /// Response ID. + id: String, + /// Error. + error: Box, + }, + Notification { + /// RPC method that generated the notification. + method: String, + /// Subscription ID. + subscription_id: String, + /// Result. + result: Box, + }, + NotificationError { + /// RPC method that generated the notification. + method: String, + /// Subscription ID. + subscription_id: String, + /// Result. + error: Box, + }, +} + +impl std::str::FromStr for RpcResponse { + type Err = (); + + fn from_str(response: &str) -> Result { + // Valid response + #[derive(Deserialize, Debug)] + struct Response { + #[allow(unused)] + jsonrpc: String, + id: String, + result: Box, + } + + // Error response + #[derive(Deserialize)] + struct ResponseError { + #[allow(unused)] + jsonrpc: String, + id: String, + error: Box, + } + + // Valid notification (subscription) response + #[derive(Deserialize)] + struct Notification { + #[allow(unused)] + jsonrpc: String, + method: String, + params: NotificationResultParams, + } + #[derive(Deserialize)] + struct NotificationResultParams { + subscription: String, + result: Box, + } + + // Error notification (subscription) response + #[derive(Deserialize)] + struct NotificationError { + #[allow(unused)] + jsonrpc: String, + method: String, + params: NotificationErrorParams, + } + #[derive(Deserialize)] + struct NotificationErrorParams { + /// The ID of the subscription. + subscription: String, + error: Box, + } + + // Try deserializing the response payload to one of the above. We can + // do this more efficiently eg how jsonrpsee_types does. + + let result: Result = serde_json::from_str(response); + if let Ok(response) = result { + return Ok(RpcResponse::Method { + id: response.id, + result: response.result, + }); + } + let result: Result = serde_json::from_str(response); + if let Ok(response) = result { + return Ok(RpcResponse::Notification { + subscription_id: response.params.subscription, + method: response.method, + result: response.params.result, + }); + } + let result: Result = serde_json::from_str(response); + if let Ok(response) = result { + return Ok(RpcResponse::MethodError { + id: response.id, + error: response.error, + }); + } + let result: Result = serde_json::from_str(response); + if let Ok(response) = result { + return Ok(RpcResponse::NotificationError { + method: response.method, + subscription_id: response.params.subscription, + error: response.params.error, + }); + } + + // We couldn't decode into any of the above. We could pick one of the above` + // errors to return, but there's no real point since the string is obviously + // different from any of them. + Err(()) + } +} diff --git a/lightclient/src/shared_client.rs b/lightclient/src/shared_client.rs new file mode 100644 index 0000000000..d725030599 --- /dev/null +++ b/lightclient/src/shared_client.rs @@ -0,0 +1,47 @@ +// Copyright 2019-2023 Parity Technologies (UK) Ltd. +// This file is dual-licensed as Apache-2.0 or GPL-3.0. +// see LICENSE for license details. + +use smoldot_light as sl; +use std::sync::{Arc, Mutex}; + +/// This wraps [`smoldot_light::Client`] so that it can be cloned and shared. +#[derive(Clone)] +pub struct SharedClient { + client: Arc>>, +} + +impl From> + for SharedClient +{ + fn from(client: sl::Client) -> Self { + SharedClient { + client: Arc::new(Mutex::new(client)), + } + } +} + +impl SharedClient { + /// Delegates to [`smoldot_light::Client::json_rpc_request()`]. + pub(crate) fn json_rpc_request( + &self, + json_rpc_request: impl Into, + chain_id: sl::ChainId, + ) -> Result<(), sl::HandleRpcError> { + self.client + .lock() + .expect("mutex should not be poisoned") + .json_rpc_request(json_rpc_request, chain_id) + } + + /// Delegates to [`smoldot_light::Client::add_chain()`]. + pub(crate) fn add_chain( + &self, + config: sl::AddChainConfig<'_, TChain, impl Iterator>, + ) -> Result { + self.client + .lock() + .expect("mutex should not be poisoned") + .add_chain(config) + } +} diff --git a/subxt/Cargo.toml b/subxt/Cargo.toml index 9bba68432b..53c0074b3e 100644 --- a/subxt/Cargo.toml +++ b/subxt/Cargo.toml @@ -25,20 +25,20 @@ default = ["jsonrpsee", "native"] # Enable this for native (ie non web/wasm builds). # Exactly 1 of "web" and "native" is expected. native = [ - "jsonrpsee?/async-client", - "jsonrpsee?/client-ws-transport-native-tls", - "subxt-lightclient?/native", + "jsonrpsee?/async-client", + "jsonrpsee?/client-ws-transport-native-tls", + "subxt-lightclient?/native", "tokio-util" ] # Enable this for web/wasm builds. # Exactly 1 of "web" and "native" is expected. web = [ - "jsonrpsee?/async-wasm-client", - "jsonrpsee?/client-web-transport", - "getrandom/js", - "subxt-lightclient?/web", - "subxt-macro/web", + "jsonrpsee?/async-wasm-client", + "jsonrpsee?/client-web-transport", + "getrandom/js", + "subxt-lightclient?/web", + "subxt-macro/web", "instant/wasm-bindgen" ] @@ -46,7 +46,9 @@ web = [ unstable-reconnecting-rpc-client = ["dep:reconnecting-jsonrpsee-ws-client"] # Enable this to use jsonrpsee (allowing for example `OnlineClient::from_url`). -jsonrpsee = ["dep:jsonrpsee"] +jsonrpsee = [ + "dep:jsonrpsee", +] # Enable this to pull in extra Substrate dependencies which make it possible to # use the `sp_core::crypto::Pair` Signer implementation, as well as adding some @@ -61,7 +63,7 @@ unstable-metadata = [] # Activate this to expose the Light Client functionality. # Note that this feature is experimental and things may break or not work as expected. -unstable-light-client = ["subxt-lightclient", "tokio-stream"] +unstable-light-client = ["subxt-lightclient"] [dependencies] async-trait = { workspace = true } @@ -103,9 +105,6 @@ subxt-macro = { workspace = true } subxt-metadata = { workspace = true, features = ["std"] } subxt-lightclient = { workspace = true, optional = true, default-features = false } -# Light client support: -tokio-stream = { workspace = true, optional = true } - # Reconnecting jsonrpc ws client reconnecting-jsonrpsee-ws-client = { version = "0.3", optional = true } @@ -135,13 +134,13 @@ subxt-signer = { path = "../signer" } tracing-subscriber = { workspace = true } [[example]] -name = "light_client_tx_basic" -path = "examples/light_client_tx_basic.rs" +name = "light_client_basic" +path = "examples/light_client_basic.rs" required-features = ["unstable-light-client", "jsonrpsee"] [[example]] -name = "light_client_parachains" -path = "examples/light_client_parachains.rs" +name = "light_client_local_node" +path = "examples/light_client_local_node.rs" required-features = ["unstable-light-client", "jsonrpsee", "native"] [[example]] diff --git a/subxt/examples/light_client_basic.rs b/subxt/examples/light_client_basic.rs new file mode 100644 index 0000000000..3b4eba6f9e --- /dev/null +++ b/subxt/examples/light_client_basic.rs @@ -0,0 +1,47 @@ +#![allow(missing_docs)] +use futures::StreamExt; +use subxt::{client::OnlineClient, lightclient::LightClient, PolkadotConfig}; + +// Generate an interface that we can use from the node's metadata. +#[subxt::subxt(runtime_metadata_path = "../artifacts/polkadot_metadata_small.scale")] +pub mod polkadot {} + +const POLKADOT_SPEC: &str = include_str!("../../artifacts/demo_chain_specs/polkadot.json"); +const ASSET_HUB_SPEC: &str = + include_str!("../../artifacts/demo_chain_specs/polkadot_asset_hub.json"); + +#[tokio::main] +async fn main() -> Result<(), Box> { + // The lightclient logs are informative: + tracing_subscriber::fmt::init(); + + // Instantiate a light client with the Polkadot relay chain, + // and connect it to Asset Hub, too. + let (lightclient, polkadot_rpc) = LightClient::relay_chain(POLKADOT_SPEC)?; + let asset_hub_rpc = lightclient.parachain(ASSET_HUB_SPEC)?; + + // Create Subxt clients from these Smoldot backed RPC clients. + let polkadot_api = OnlineClient::::from_rpc_client(polkadot_rpc).await?; + let asset_hub_api = OnlineClient::::from_rpc_client(asset_hub_rpc).await?; + + // Use them! + let polkadot_sub = polkadot_api + .blocks() + .subscribe_finalized() + .await? + .map(|block| ("Polkadot", block)); + let parachain_sub = asset_hub_api + .blocks() + .subscribe_finalized() + .await? + .map(|block| ("AssetHub", block)); + + let mut stream_combinator = futures::stream::select(polkadot_sub, parachain_sub); + + while let Some((chain, block)) = stream_combinator.next().await { + let block = block?; + println!(" Chain {:?} hash={:?}", chain, block.hash()); + } + + Ok(()) +} diff --git a/subxt/examples/light_client_tx_basic.rs b/subxt/examples/light_client_local_node.rs similarity index 60% rename from subxt/examples/light_client_tx_basic.rs rename to subxt/examples/light_client_local_node.rs index 37ce6cb533..bcf492b41b 100644 --- a/subxt/examples/light_client_tx_basic.rs +++ b/subxt/examples/light_client_local_node.rs @@ -1,5 +1,10 @@ #![allow(missing_docs)] -use subxt::{client::LightClient, PolkadotConfig}; +use subxt::utils::fetch_chainspec_from_rpc_node; +use subxt::{ + client::OnlineClient, + lightclient::{ChainConfig, LightClient}, + PolkadotConfig, +}; use subxt_signer::sr25519::dev; // Generate an interface that we can use from the node's metadata. @@ -11,19 +16,23 @@ async fn main() -> Result<(), Box> { // The smoldot logs are informative: tracing_subscriber::fmt::init(); - // Create a light client by fetching the chain spec of a local running node. - // In this case, because we start one single node, the bootnodes must be overwritten - // for the light client to connect to the local node. + // Use a utility function to obtain a chain spec from a locally running node: + let chain_spec = fetch_chainspec_from_rpc_node("ws://127.0.0.1:9944").await?; + + // Configure the bootnodes of this chain spec. In this case, because we start one + // single node, the bootnodes must be overwritten for the light client to connect + // to the local node. // // The `12D3KooWEyoppNCUx8Yx66oV9fJnriXwCcXwDDUA2kj6vnc6iDEp` is the P2P address // from a local polkadot node starting with // `--node-key 0000000000000000000000000000000000000000000000000000000000000001` - let api = LightClient::::builder() - .bootnodes([ - "/ip4/127.0.0.1/tcp/30333/p2p/12D3KooWEyoppNCUx8Yx66oV9fJnriXwCcXwDDUA2kj6vnc6iDEp", - ]) - .build_from_url("ws://127.0.0.1:9944") - .await?; + let chain_config = ChainConfig::chain_spec(chain_spec.get()).set_bootnodes([ + "/ip4/127.0.0.1/tcp/30333/p2p/12D3KooWEyoppNCUx8Yx66oV9fJnriXwCcXwDDUA2kj6vnc6iDEp", + ])?; + + // Start the light client up, establishing a connection to the local node. + let (_light_client, chain_rpc) = LightClient::relay_chain(chain_config)?; + let api = OnlineClient::::from_rpc_client(chain_rpc).await?; // Build a balance transfer extrinsic. let dest = dev::bob().public_key().into(); diff --git a/subxt/examples/light_client_parachains.rs b/subxt/examples/light_client_parachains.rs deleted file mode 100644 index 227da26fe0..0000000000 --- a/subxt/examples/light_client_parachains.rs +++ /dev/null @@ -1,102 +0,0 @@ -#![allow(missing_docs)] -use futures::StreamExt; -use std::{iter, num::NonZeroU32}; -use subxt::{ - client::{LightClient, RawLightClient}, - PolkadotConfig, -}; - -// Generate an interface that we can use from the node's metadata. -#[subxt::subxt(runtime_metadata_path = "../artifacts/polkadot_metadata_small.scale")] -pub mod polkadot {} - -const POLKADOT_SPEC: &str = include_str!("../../artifacts/demo_chain_specs/polkadot.json"); -const ASSET_HUB_SPEC: &str = - include_str!("../../artifacts/demo_chain_specs/polkadot_asset_hub.json"); - -#[tokio::main] -async fn main() -> Result<(), Box> { - // The smoldot logs are informative: - tracing_subscriber::fmt::init(); - - // Connecting to a parachain is a multi step process. - - // Step 1. Construct a new smoldot client. - let mut client = - subxt_lightclient::smoldot::Client::new(subxt_lightclient::smoldot::DefaultPlatform::new( - "subxt-example-light-client".into(), - "version-0".into(), - )); - - // Step 2. Connect to the relay chain of the parachain. For this example, the Polkadot relay chain. - let polkadot_connection = client - .add_chain(subxt_lightclient::smoldot::AddChainConfig { - specification: POLKADOT_SPEC, - json_rpc: subxt_lightclient::smoldot::AddChainConfigJsonRpc::Enabled { - max_pending_requests: NonZeroU32::new(128).unwrap(), - max_subscriptions: 1024, - }, - potential_relay_chains: iter::empty(), - database_content: "", - user_data: (), - }) - .expect("Light client chain added with valid spec; qed"); - let polkadot_json_rpc_responses = polkadot_connection - .json_rpc_responses - .expect("Light client configured with json rpc enabled; qed"); - let polkadot_chain_id = polkadot_connection.chain_id; - - // Step 3. Connect to the parachain. For this example, the Asset hub parachain. - let assethub_connection = client - .add_chain(subxt_lightclient::smoldot::AddChainConfig { - specification: ASSET_HUB_SPEC, - json_rpc: subxt_lightclient::smoldot::AddChainConfigJsonRpc::Enabled { - max_pending_requests: NonZeroU32::new(128).unwrap(), - max_subscriptions: 1024, - }, - // The chain specification of the asset hub parachain mentions that the identifier - // of its relay chain is `polkadot`. - potential_relay_chains: [polkadot_chain_id].into_iter(), - database_content: "", - user_data: (), - }) - .expect("Light client chain added with valid spec; qed"); - let parachain_json_rpc_responses = assethub_connection - .json_rpc_responses - .expect("Light client configured with json rpc enabled; qed"); - let parachain_chain_id = assethub_connection.chain_id; - - // Step 4. Turn the smoldot client into a raw client. - let raw_light_client = RawLightClient::builder() - .add_chain(polkadot_chain_id, polkadot_json_rpc_responses) - .add_chain(parachain_chain_id, parachain_json_rpc_responses) - .build(client) - .await?; - - // Step 5. Obtain a client to target the relay chain and the parachain. - let polkadot_api: LightClient = - raw_light_client.for_chain(polkadot_chain_id).await?; - let parachain_api: LightClient = - raw_light_client.for_chain(parachain_chain_id).await?; - - // Step 6. Subscribe to the finalized blocks of the chains. - let polkadot_sub = polkadot_api - .blocks() - .subscribe_finalized() - .await? - .map(|block| ("Polkadot", block)); - let parachain_sub = parachain_api - .blocks() - .subscribe_finalized() - .await? - .map(|block| ("AssetHub", block)); - let mut stream_combinator = futures::stream::select(polkadot_sub, parachain_sub); - - while let Some((chain, block)) = stream_combinator.next().await { - let block = block?; - - println!(" Chain {:?} hash={:?}", chain, block.hash()); - } - - Ok(()) -} diff --git a/subxt/src/backend/legacy/mod.rs b/subxt/src/backend/legacy/mod.rs index 7649da1592..8d9f331fac 100644 --- a/subxt/src/backend/legacy/mod.rs +++ b/subxt/src/backend/legacy/mod.rs @@ -53,10 +53,10 @@ impl LegacyBackendBuilder { /// Given an [`RpcClient`] to use to make requests, this returns a [`LegacyBackend`], /// which implements the [`Backend`] trait. - pub fn build(self, client: RpcClient) -> LegacyBackend { + pub fn build(self, client: impl Into) -> LegacyBackend { LegacyBackend { storage_page_size: self.storage_page_size, - methods: LegacyRpcMethods::new(client), + methods: LegacyRpcMethods::new(client.into()), } } } diff --git a/subxt/src/backend/rpc/lightclient_impl.rs b/subxt/src/backend/rpc/lightclient_impl.rs new file mode 100644 index 0000000000..f4e0deec6a --- /dev/null +++ b/subxt/src/backend/rpc/lightclient_impl.rs @@ -0,0 +1,53 @@ +// Copyright 2019-2023 Parity Technologies (UK) Ltd. +// This file is dual-licensed as Apache-2.0 or GPL-3.0. +// see LICENSE for license details. + +use super::{RawRpcFuture, RawRpcSubscription, RpcClientT}; +use crate::error::RpcError; +use futures::stream::{StreamExt, TryStreamExt}; +use serde_json::value::RawValue; +use subxt_lightclient::{LightClientRpc, LightClientRpcError}; + +impl RpcClientT for LightClientRpc { + fn request_raw<'a>( + &'a self, + method: &'a str, + params: Option>, + ) -> RawRpcFuture<'a, Box> { + Box::pin(async move { + let res = self.request(method.to_owned(), params) + .await + .map_err(lc_err_to_rpc_err)?; + + Ok(res) + }) + } + + fn subscribe_raw<'a>( + &'a self, + sub: &'a str, + params: Option>, + unsub: &'a str, + ) -> RawRpcFuture<'a, RawRpcSubscription> { + Box::pin(async move { + let sub = self.subscribe(sub.to_owned(), params, unsub.to_owned()) + .await + .map_err(lc_err_to_rpc_err)?; + + let id = Some(sub.id().to_owned()); + let stream = sub + .map_err(|e| RpcError::ClientError(Box::new(e))) + .boxed(); + + Ok(RawRpcSubscription { id, stream }) + }) + } +} + +fn lc_err_to_rpc_err(err: LightClientRpcError) -> RpcError { + match err { + LightClientRpcError::JsonRpcError(e) => RpcError::ClientError(Box::new(e)), + LightClientRpcError::SmoldotError(e) => RpcError::RequestRejected(e), + LightClientRpcError::BackgroundTaskDropped => RpcError::SubscriptionDropped, + } +} \ No newline at end of file diff --git a/subxt/src/backend/rpc/mod.rs b/subxt/src/backend/rpc/mod.rs index 19101dd5df..453fcf5a7f 100644 --- a/subxt/src/backend/rpc/mod.rs +++ b/subxt/src/backend/rpc/mod.rs @@ -60,6 +60,10 @@ crate::macros::cfg_jsonrpsee! { mod jsonrpsee_impl; } +crate::macros::cfg_unstable_light_client! { + mod lightclient_impl; +} + crate::macros::cfg_reconnecting_rpc_client! { mod reconnecting_jsonrpsee_impl; pub use reconnecting_jsonrpsee_ws_client as reconnecting_rpc_client; diff --git a/subxt/src/backend/rpc/rpc_client.rs b/subxt/src/backend/rpc/rpc_client.rs index d960c010db..16dba9e6fb 100644 --- a/subxt/src/backend/rpc/rpc_client.rs +++ b/subxt/src/backend/rpc/rpc_client.rs @@ -79,6 +79,12 @@ impl RpcClient { } } +impl From for RpcClient { + fn from(client: C) -> Self { + RpcClient::new(client) + } +} + impl std::fmt::Debug for RpcClient { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { f.debug_tuple("RpcClient").finish() diff --git a/subxt/src/backend/unstable/mod.rs b/subxt/src/backend/unstable/mod.rs index 7095b90af1..4fe70bc374 100644 --- a/subxt/src/backend/unstable/mod.rs +++ b/subxt/src/backend/unstable/mod.rs @@ -75,9 +75,12 @@ impl UnstableBackendBuilder { /// Given an [`RpcClient`] to use to make requests, this returns a tuple of an [`UnstableBackend`], /// which implements the [`Backend`] trait, and an [`UnstableBackendDriver`] which must be polled in /// order for the backend to make progress. - pub fn build(self, client: RpcClient) -> (UnstableBackend, UnstableBackendDriver) { + pub fn build( + self, + client: impl Into, + ) -> (UnstableBackend, UnstableBackendDriver) { // Construct the underlying follow_stream layers: - let rpc_methods = UnstableRpcMethods::new(client); + let rpc_methods = UnstableRpcMethods::new(client.into()); let follow_stream = follow_stream::FollowStream::::from_methods(rpc_methods.clone()); let follow_stream_unpin = follow_stream_unpin::FollowStreamUnpin::::from_methods( diff --git a/subxt/src/book/usage/light_client.rs b/subxt/src/book/usage/light_client.rs index 33dbc6668b..c7b6e53318 100644 --- a/subxt/src/book/usage/light_client.rs +++ b/subxt/src/book/usage/light_client.rs @@ -8,25 +8,33 @@ //! node. This means that you don't have to trust a specific node when interacting with some chain. //! //! This feature is currently unstable. Use the `unstable-light-client` feature flag to enable it. -//! To use this in WASM environments, also enable the `web` feature flag. +//! To use this in WASM environments, enable the `web` feature flag and disable the "native" one. //! //! To connect to a blockchain network, the Light Client requires a trusted sync state of the network, //! known as a _chain spec_. One way to obtain this is by making a `sync_state_genSyncSpec` RPC call to a //! trusted node belonging to the chain that you wish to interact with. //! -//! The following is an example of fetching the chain spec from a local running node on port 9933: +//! Subxt exposes a utility method to obtain the chain spec: [`crate::utils::fetch_chainspec_from_rpc_node()`]. +//! Alternately, you can manually make an RPC call to `sync_state_genSyncSpec` like do (assuming a node running +//! locally on port 9933): //! //! ```bash //! curl -H "Content-Type: application/json" -d '{"id":1, "jsonrpc":"2.0", "method": "sync_state_genSyncSpec", "params":[true]}' http://localhost:9933/ | jq .result > chain_spec.json //! ``` //! -//! Alternately, you can have the `LightClient` download the chain spec from a trusted node when it -//! initializes, which is not recommended in production but is useful for examples and testing, as below. -//! //! ## Examples //! //! ### Basic Example //! +//! This basic example uses some already-known chain specs to connect to a relay chain and parachain +//! and stream information about their finalized blocks: +//! +//! ```rust,ignore +#![doc = include_str!("../../../examples/light_client_basic.rs")] +//! ``` +//! +//! ### Connecting to a local node +//! //! This example connects to a local chain and submits a transaction. To run this, you first need //! to have a local polkadot node running using the following command: //! @@ -34,23 +42,10 @@ //! polkadot --dev --node-key 0000000000000000000000000000000000000000000000000000000000000001 //! ``` //! -//! Leave that running for a minute, and then you can run the example using the following command -//! in the `subxt` crate: -//! -//! ```bash -//! cargo run --example light_client_tx_basic --features=unstable-light-client -//! ``` -//! -//! This is the code that will be executed: +//! Then, the following code will download a chain spec from this local node, alter the bootnodes +//! to point only to the local node, and then submit a transaction through it. //! //! ```rust,ignore -#![doc = include_str!("../../../examples/light_client_tx_basic.rs")] +#![doc = include_str!("../../../examples/light_client_local_node.rs")] //! ``` //! -//! ### Connecting to a parachain -//! -//! This example connects to a parachain using the light client. Currently, it's quite verbose to do this. -//! -//! ```rust,ignore -#![doc = include_str!("../../../examples/light_client_parachains.rs")] -//! ``` diff --git a/subxt/src/client/light_client/builder.rs b/subxt/src/client/light_client/builder.rs deleted file mode 100644 index 68db1631e1..0000000000 --- a/subxt/src/client/light_client/builder.rs +++ /dev/null @@ -1,336 +0,0 @@ -// Copyright 2019-2023 Parity Technologies (UK) Ltd. -// This file is dual-licensed as Apache-2.0 or GPL-3.0. -// see LICENSE for license details. - -use super::{rpc::LightClientRpc, LightClient, LightClientError}; -use crate::backend::rpc::RpcClient; -use crate::client::RawLightClient; -use crate::macros::{cfg_jsonrpsee_native, cfg_jsonrpsee_web}; -use crate::{config::Config, error::Error, OnlineClient}; -use std::num::NonZeroU32; -use subxt_lightclient::{smoldot, AddedChain}; - -#[cfg(feature = "jsonrpsee")] -use crate::utils::validate_url_is_secure; - -/// Builder for [`LightClient`]. -#[derive(Clone, Debug)] -pub struct LightClientBuilder { - max_pending_requests: NonZeroU32, - max_subscriptions: u32, - bootnodes: Option>, - potential_relay_chains: Option>, - _marker: std::marker::PhantomData, -} - -impl Default for LightClientBuilder { - fn default() -> Self { - Self { - max_pending_requests: NonZeroU32::new(128) - .expect("Valid number is greater than zero; qed"), - max_subscriptions: 1024, - bootnodes: None, - potential_relay_chains: None, - _marker: std::marker::PhantomData, - } - } -} - -impl LightClientBuilder { - /// Create a new [`LightClientBuilder`]. - pub fn new() -> LightClientBuilder { - LightClientBuilder::default() - } - - /// Overwrite the bootnodes of the chain specification. - /// - /// Can be used to provide trusted entities to the chain spec, or for - /// testing environments. - pub fn bootnodes<'a>(mut self, bootnodes: impl IntoIterator) -> Self { - self.bootnodes = Some(bootnodes.into_iter().map(Into::into).collect()); - self - } - - /// Maximum number of JSON-RPC in the queue of requests waiting to be processed. - /// This parameter is necessary for situations where the JSON-RPC clients aren't - /// trusted. If you control all the requests that are sent out and don't want them - /// to fail, feel free to pass `u32::max_value()`. - /// - /// Default is 128. - pub fn max_pending_requests(mut self, max_pending_requests: NonZeroU32) -> Self { - self.max_pending_requests = max_pending_requests; - self - } - - /// Maximum number of active subscriptions before new ones are automatically - /// rejected. Any JSON-RPC request that causes the server to generate notifications - /// counts as a subscription. - /// - /// Default is 1024. - pub fn max_subscriptions(mut self, max_subscriptions: u32) -> Self { - self.max_subscriptions = max_subscriptions; - self - } - - /// If the chain spec defines a parachain, contains the list of relay chains to choose - /// from. Ignored if not a parachain. - /// - /// This field is necessary because multiple different chain can have the same identity. - /// - /// For example: if user A adds a chain named "Kusama", then user B adds a different chain - /// also named "Kusama", then user B adds a parachain whose relay chain is "Kusama", it would - /// be wrong to connect to the "Kusama" created by user A. - pub fn potential_relay_chains( - mut self, - potential_relay_chains: impl IntoIterator, - ) -> Self { - self.potential_relay_chains = Some(potential_relay_chains.into_iter().collect()); - self - } - - /// Build the light client with specified URL to connect to. - /// You must provide the port number in the URL. - /// - /// ## Panics - /// - /// The panic behaviour depends on the feature flag being used: - /// - /// ### Native - /// - /// Panics when called outside of a `tokio` runtime context. - /// - /// ### Web - /// - /// If smoldot panics, then the promise created will be leaked. For more details, see - /// https://docs.rs/wasm-bindgen-futures/latest/wasm_bindgen_futures/fn.future_to_promise.html. - #[cfg(feature = "jsonrpsee")] - #[cfg_attr(docsrs, doc(cfg(feature = "jsonrpsee")))] - pub async fn build_from_url>(self, url: Url) -> Result, Error> { - validate_url_is_secure(url.as_ref())?; - self.build_from_insecure_url(url).await - } - - /// Build the light client with specified URL to connect to. Allows insecure URLs (no SSL, ws:// or http://). - /// - /// For secure connections only, please use [`crate::LightClientBuilder::build_from_url`]. - #[cfg(feature = "jsonrpsee")] - pub async fn build_from_insecure_url>( - self, - url: Url, - ) -> Result, Error> { - let chain_spec = fetch_url(url.as_ref()).await?; - self.build_client(chain_spec).await - } - - /// Build the light client from chain spec. - /// - /// The most important field of the configuration is the chain specification. - /// This is a JSON document containing all the information necessary for the client to - /// connect to said chain. - /// - /// The chain spec must be obtained from a trusted entity. - /// - /// It can be fetched from a trusted node with the following command: - /// ```bash - /// curl -H "Content-Type: application/json" -d '{"id":1, "jsonrpc":"2.0", "method": "sync_state_genSyncSpec", "params":[true]}' http://localhost:9944/ | jq .result > res.spec - /// ``` - /// - /// # Note - /// - /// For testing environments, please populate the "bootNodes" if the not already provided. - /// See [`Self::bootnodes`] for more details. - /// - /// ## Panics - /// - /// The panic behaviour depends on the feature flag being used: - /// - /// ### Native - /// - /// Panics when called outside of a `tokio` runtime context. - /// - /// ### Web - /// - /// If smoldot panics, then the promise created will be leaked. For more details, see - /// https://docs.rs/wasm-bindgen-futures/latest/wasm_bindgen_futures/fn.future_to_promise.html. - pub async fn build(self, chain_spec: &str) -> Result, Error> { - let chain_spec = serde_json::from_str(chain_spec) - .map_err(|_| Error::LightClient(LightClientError::InvalidChainSpec))?; - - self.build_client(chain_spec).await - } - - /// Build the light client. - async fn build_client( - self, - mut chain_spec: serde_json::Value, - ) -> Result, Error> { - // Set custom bootnodes if provided. - if let Some(bootnodes) = self.bootnodes { - if let serde_json::Value::Object(map) = &mut chain_spec { - map.insert("bootNodes".to_string(), serde_json::Value::Array(bootnodes)); - } - } - - let config = smoldot::AddChainConfig { - specification: &chain_spec.to_string(), - json_rpc: smoldot::AddChainConfigJsonRpc::Enabled { - max_pending_requests: self.max_pending_requests, - max_subscriptions: self.max_subscriptions, - }, - potential_relay_chains: self.potential_relay_chains.unwrap_or_default().into_iter(), - database_content: "", - user_data: (), - }; - - let raw_rpc = LightClientRpc::new(config)?; - build_client_from_rpc(raw_rpc).await - } -} - -/// Raw builder for [`RawLightClient`]. -#[derive(Default)] -pub struct RawLightClientBuilder { - chains: Vec, -} - -impl RawLightClientBuilder { - /// Create a new [`RawLightClientBuilder`]. - pub fn new() -> RawLightClientBuilder { - RawLightClientBuilder::default() - } - - /// Adds a new chain to the list of chains synchronized by the light client. - pub fn add_chain( - mut self, - chain_id: smoldot::ChainId, - rpc_responses: smoldot::JsonRpcResponses, - ) -> Self { - self.chains.push(AddedChain { - chain_id, - rpc_responses, - }); - self - } - - /// Construct a [`RawLightClient`] from a raw smoldot client. - /// - /// The provided `chain_id` is the chain with which the current instance of light client will interact. - /// To target a different chain call the [`LightClient::target_chain`] method. - pub async fn build( - self, - client: smoldot::Client, - ) -> Result { - // The raw subxt light client that spawns the smoldot background task. - let raw_rpc: subxt_lightclient::RawLightClientRpc = - subxt_lightclient::LightClientRpc::new_from_client(client, self.chains.into_iter()); - - // The crate implementation of `RpcClientT` over the raw subxt light client. - let raw_rpc = crate::client::light_client::rpc::RawLightClientRpc::from_inner(raw_rpc); - - Ok(RawLightClient { raw_rpc }) - } -} - -/// Build the light client from a raw rpc client. -async fn build_client_from_rpc( - raw_rpc: LightClientRpc, -) -> Result, Error> { - let chain_id = raw_rpc.chain_id(); - let rpc_client = RpcClient::new(raw_rpc); - let client = OnlineClient::::from_rpc_client(rpc_client).await?; - - Ok(LightClient { client, chain_id }) -} - -/// Fetch the chain spec from the URL. -#[cfg(feature = "jsonrpsee")] -async fn fetch_url(url: impl AsRef) -> Result { - use jsonrpsee::core::client::{ClientT, SubscriptionClientT}; - use jsonrpsee::rpc_params; - use serde_json::value::RawValue; - - let client = jsonrpsee_helpers::client(url.as_ref()).await?; - - let result = client - .request("sync_state_genSyncSpec", jsonrpsee::rpc_params![true]) - .await - .map_err(|err| Error::Rpc(crate::error::RpcError::ClientError(Box::new(err))))?; - - // Subscribe to the finalized heads of the chain. - let mut subscription = SubscriptionClientT::subscribe::, _>( - &client, - "chain_subscribeFinalizedHeads", - rpc_params![], - "chain_unsubscribeFinalizedHeads", - ) - .await - .map_err(|err| Error::Rpc(crate::error::RpcError::ClientError(Box::new(err))))?; - - // We must ensure that the finalized block of the chain is not the block included - // in the chainSpec. - // This is a temporary workaround for: https://github.com/smol-dot/smoldot/issues/1562. - // The first finalized block that is received might by the finalized block could be the one - // included in the chainSpec. Decoding the chainSpec for this purpose is too complex. - let _ = subscription.next().await; - let _ = subscription.next().await; - - Ok(result) -} - -cfg_jsonrpsee_native! { - mod jsonrpsee_helpers { - use crate::error::{Error, LightClientError}; - use tokio_util::compat::Compat; - - pub use jsonrpsee::{ - client_transport::ws::{self, EitherStream, Url, WsTransportClientBuilder}, - core::client::Client, - }; - - pub type Sender = ws::Sender>; - pub type Receiver = ws::Receiver>; - - /// Build WS RPC client from URL - pub async fn client(url: &str) -> Result { - let url = Url::parse(url).map_err(|_| Error::LightClient(LightClientError::InvalidUrl))?; - - if url.scheme() != "ws" && url.scheme() != "wss" { - return Err(Error::LightClient(LightClientError::InvalidScheme)); - } - - let (sender, receiver) = ws_transport(url).await?; - - Ok(Client::builder() - .max_buffer_capacity_per_subscription(4096) - .build_with_tokio(sender, receiver)) - } - - async fn ws_transport(url: Url) -> Result<(Sender, Receiver), Error> { - WsTransportClientBuilder::default() - .build(url) - .await - .map_err(|_| Error::LightClient(LightClientError::Handshake)) - } - } -} - -cfg_jsonrpsee_web! { - mod jsonrpsee_helpers { - use crate::error::{Error, LightClientError}; - pub use jsonrpsee::{ - client_transport::web, - core::client::{Client, ClientBuilder}, - }; - - /// Build web RPC client from URL - pub async fn client(url: &str) -> Result { - let (sender, receiver) = web::connect(url) - .await - .map_err(|_| Error::LightClient(LightClientError::Handshake))?; - - Ok(ClientBuilder::default() - .max_buffer_capacity_per_subscription(4096) - .build_with_wasm(sender, receiver)) - } - } -} diff --git a/subxt/src/client/light_client/mod.rs b/subxt/src/client/light_client/mod.rs deleted file mode 100644 index a4b116652e..0000000000 --- a/subxt/src/client/light_client/mod.rs +++ /dev/null @@ -1,194 +0,0 @@ -// Copyright 2019-2023 Parity Technologies (UK) Ltd. -// This file is dual-licensed as Apache-2.0 or GPL-3.0. -// see LICENSE for license details. - -//! This module provides support for light clients. - -mod builder; -mod rpc; - -use crate::{ - backend::rpc::RpcClient, - blocks::BlocksClient, - client::{OfflineClientT, OnlineClientT}, - config::Config, - constants::ConstantsClient, - custom_values::CustomValuesClient, - events::EventsClient, - runtime_api::RuntimeApiClient, - storage::StorageClient, - tx::TxClient, - OnlineClient, -}; -pub use builder::{LightClientBuilder, RawLightClientBuilder}; -use derivative::Derivative; -use subxt_lightclient::LightClientRpcError; - -// Re-export smoldot related objects. -pub use subxt_lightclient::smoldot; - -/// Light client error. -#[derive(Debug, thiserror::Error)] -pub enum LightClientError { - /// Error originated from the low-level RPC layer. - #[error("Rpc error: {0}")] - Rpc(LightClientRpcError), - /// The background task is closed. - #[error("Failed to communicate with the background task.")] - BackgroundClosed, - /// Invalid RPC parameters cannot be serialized as JSON string. - #[error("RPC parameters cannot be serialized as JSON string.")] - InvalidParams, - /// The provided URL scheme is invalid. - /// - /// Supported versions: WS, WSS. - #[error("The provided URL scheme is invalid.")] - InvalidScheme, - /// The provided URL is invalid. - #[error("The provided URL scheme is invalid.")] - InvalidUrl, - /// The provided chain spec is invalid. - #[error("The provided chain spec is not a valid JSON object.")] - InvalidChainSpec, - /// Handshake error while connecting to a node. - #[error("WS handshake failed.")] - Handshake, -} - -/// The raw light-client RPC implementation that is used to connect with the chain. -#[derive(Clone)] -pub struct RawLightClient { - raw_rpc: rpc::RawLightClientRpc, -} - -impl RawLightClient { - /// Construct a [`RawLightClient`] using its builder interface. - /// - /// The raw builder is utilized for constructing light-clients from a low - /// level smoldot client. - /// - /// This is especially useful when you want to gain access to the smoldot client. - /// For example, you may want to connect to multiple chains and/or parachains while reusing the - /// same smoldot client under the hood. Or you may want to configure different values for - /// smoldot internal buffers, number of subscriptions and relay chains. - /// - /// # Note - /// - /// If you are unsure, please use [`LightClient::builder`] instead. - pub fn builder() -> RawLightClientBuilder { - RawLightClientBuilder::default() - } - - /// Target a different chain identified by the provided chain ID for requests. - /// - /// The provided chain ID is provided by the `smoldot_light::Client::add_chain` and it must - /// match one of the `smoldot_light::JsonRpcResponses` provided in [`RawLightClientBuilder::add_chain`]. - /// - /// # Note - /// - /// This uses the same underlying instance spawned by the builder. - pub async fn for_chain( - &self, - chain_id: smoldot::ChainId, - ) -> Result, crate::Error> { - let raw_rpc = self.raw_rpc.for_chain(chain_id); - let rpc_client = RpcClient::new(raw_rpc.clone()); - let client = OnlineClient::::from_rpc_client(rpc_client).await?; - - Ok(LightClient { client, chain_id }) - } -} - -/// The light-client RPC implementation that is used to connect with the chain. -#[derive(Derivative)] -#[derivative(Clone(bound = ""))] -pub struct LightClient { - client: OnlineClient, - chain_id: smoldot::ChainId, -} - -impl LightClient { - /// Construct a [`LightClient`] using its builder interface. - pub fn builder() -> LightClientBuilder { - LightClientBuilder::new() - } - - // We add the below impls so that we don't need to - // think about importing the OnlineClientT/OfflineClientT - // traits to use these things: - - /// Return the [`crate::Metadata`] used in this client. - fn metadata(&self) -> crate::Metadata { - self.client.metadata() - } - - /// Return the genesis hash. - fn genesis_hash(&self) -> ::Hash { - self.client.genesis_hash() - } - - /// Return the runtime version. - fn runtime_version(&self) -> crate::backend::RuntimeVersion { - self.client.runtime_version() - } - - /// Work with transactions. - pub fn tx(&self) -> TxClient { - >::tx(self) - } - - /// Work with events. - pub fn events(&self) -> EventsClient { - >::events(self) - } - - /// Work with storage. - pub fn storage(&self) -> StorageClient { - >::storage(self) - } - - /// Access constants. - pub fn constants(&self) -> ConstantsClient { - >::constants(self) - } - - /// Access custom types. - pub fn custom_values(&self) -> CustomValuesClient { - >::custom_values(self) - } - - /// Work with blocks. - pub fn blocks(&self) -> BlocksClient { - >::blocks(self) - } - - /// Work with runtime API. - pub fn runtime_api(&self) -> RuntimeApiClient { - >::runtime_api(self) - } - - /// Returns the chain ID of the current light-client. - pub fn chain_id(&self) -> smoldot::ChainId { - self.chain_id - } -} - -impl OnlineClientT for LightClient { - fn backend(&self) -> &dyn crate::backend::Backend { - self.client.backend() - } -} - -impl OfflineClientT for LightClient { - fn metadata(&self) -> crate::Metadata { - self.metadata() - } - - fn genesis_hash(&self) -> ::Hash { - self.genesis_hash() - } - - fn runtime_version(&self) -> crate::backend::RuntimeVersion { - self.runtime_version() - } -} diff --git a/subxt/src/client/light_client/rpc.rs b/subxt/src/client/light_client/rpc.rs deleted file mode 100644 index ea9fe996ba..0000000000 --- a/subxt/src/client/light_client/rpc.rs +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright 2019-2023 Parity Technologies (UK) Ltd. -// This file is dual-licensed as Apache-2.0 or GPL-3.0. -// see LICENSE for license details. - -use super::{smoldot, LightClientError}; -use crate::{ - backend::rpc::{RawRpcFuture, RawRpcSubscription, RpcClientT}, - error::{Error, RpcError}, -}; -use futures::StreamExt; -use serde_json::value::RawValue; -use tokio_stream::wrappers::UnboundedReceiverStream; - -pub const LOG_TARGET: &str = "subxt-rpc-light-client"; - -/// The raw light-client RPC implementation that is used to connect with the chain. -#[derive(Clone)] -pub struct RawLightClientRpc(subxt_lightclient::RawLightClientRpc); - -impl RawLightClientRpc { - /// Constructs a new [`RawLightClientRpc`] from a low level [`subxt_lightclient::RawLightClientRpc`]. - pub fn from_inner(client: subxt_lightclient::RawLightClientRpc) -> RawLightClientRpc { - RawLightClientRpc(client) - } - - /// Constructs a new [`LightClientRpc`] that communicates with the provided chain. - pub fn for_chain(&self, chain_id: smoldot::ChainId) -> LightClientRpc { - LightClientRpc(self.0.for_chain(chain_id)) - } -} - -/// The light-client RPC implementation that is used to connect with the chain. -#[derive(Clone)] -pub struct LightClientRpc(subxt_lightclient::LightClientRpc); - -impl LightClientRpc { - /// Constructs a new [`LightClientRpc`], providing the chain specification. - /// - /// The chain specification can be downloaded from a trusted network via - /// the `sync_state_genSyncSpec` RPC method. This parameter expects the - /// chain spec in text format (ie not in hex-encoded scale-encoded as RPC methods - /// will provide). - /// - /// ## Panics - /// - /// The panic behaviour depends on the feature flag being used: - /// - /// ### Native - /// - /// Panics when called outside of a `tokio` runtime context. - /// - /// ### Web - /// - /// If smoldot panics, then the promise created will be leaked. For more details, see - /// https://docs.rs/wasm-bindgen-futures/latest/wasm_bindgen_futures/fn.future_to_promise.html. - pub fn new( - config: smoldot::AddChainConfig<'_, (), impl Iterator>, - ) -> Result { - let rpc = subxt_lightclient::LightClientRpc::new(config).map_err(LightClientError::Rpc)?; - - Ok(LightClientRpc(rpc)) - } - - /// Returns the chain ID of the current light-client. - pub fn chain_id(&self) -> smoldot::ChainId { - self.0.chain_id() - } -} - -impl RpcClientT for LightClientRpc { - fn request_raw<'a>( - &'a self, - method: &'a str, - params: Option>, - ) -> RawRpcFuture<'a, Box> { - let client = self.clone(); - let chain_id = self.chain_id(); - - Box::pin(async move { - let params = match params { - Some(params) => serde_json::to_string(¶ms).map_err(|_| { - RpcError::ClientError(Box::new(LightClientError::InvalidParams)) - })?, - None => "[]".into(), - }; - - // Fails if the background is closed. - let rx = client - .0 - .method_request(method.to_string(), params) - .map_err(|_| RpcError::ClientError(Box::new(LightClientError::BackgroundClosed)))?; - - // Fails if the background is closed. - let response = rx - .await - .map_err(|_| RpcError::ClientError(Box::new(LightClientError::BackgroundClosed)))?; - - tracing::trace!(target: LOG_TARGET, "RPC response={:?} chain={:?}", response, chain_id); - - response.map_err(|err| RpcError::ClientError(Box::new(err))) - }) - } - - fn subscribe_raw<'a>( - &'a self, - sub: &'a str, - params: Option>, - unsub: &'a str, - ) -> RawRpcFuture<'a, RawRpcSubscription> { - let client = self.clone(); - let chain_id = self.chain_id(); - - Box::pin(async move { - tracing::trace!( - target: LOG_TARGET, - "Subscribe to {:?} with params {:?} chain={:?}", - sub, - params, - chain_id, - ); - - let params = match params { - Some(params) => serde_json::to_string(¶ms).map_err(|_| { - RpcError::ClientError(Box::new(LightClientError::InvalidParams)) - })?, - None => "[]".into(), - }; - - // Fails if the background is closed. - let (sub_id, notif) = client - .0 - .subscription_request(sub.to_string(), params, unsub.to_string()) - .map_err(|_| RpcError::ClientError(Box::new(LightClientError::BackgroundClosed)))?; - - // Fails if the background is closed. - let result = sub_id - .await - .map_err(|_| RpcError::ClientError(Box::new(LightClientError::BackgroundClosed)))? - .map_err(|err| { - RpcError::ClientError(Box::new(LightClientError::Rpc( - subxt_lightclient::LightClientRpcError::Request(err.to_string()), - ))) - })?; - - let sub_id = result - .get() - .trim_start_matches('"') - .trim_end_matches('"') - .to_string(); - tracing::trace!(target: LOG_TARGET, "Received subscription={} chain={:?}", sub_id, chain_id); - - let stream = UnboundedReceiverStream::new(notif); - - let rpc_subscription = RawRpcSubscription { - stream: Box::pin(stream.map(Ok)), - id: Some(sub_id), - }; - - Ok(rpc_subscription) - }) - } -} diff --git a/subxt/src/client/mod.rs b/subxt/src/client/mod.rs index c764af4b59..fe699c4a55 100644 --- a/subxt/src/client/mod.rs +++ b/subxt/src/client/mod.rs @@ -11,14 +11,6 @@ mod offline_client; mod online_client; -crate::macros::cfg_unstable_light_client! { - mod light_client; - - pub use light_client::{ - LightClient, LightClientBuilder, LightClientError, RawLightClient, RawLightClientBuilder, - }; -} - pub use offline_client::{OfflineClient, OfflineClientT}; pub use online_client::{ ClientRuntimeUpdater, OnlineClient, OnlineClientT, RuntimeUpdaterStream, Update, UpgradeError, diff --git a/subxt/src/client/online_client.rs b/subxt/src/client/online_client.rs index 77718caa7f..1d38016e06 100644 --- a/subxt/src/client/online_client.rs +++ b/subxt/src/client/online_client.rs @@ -84,7 +84,10 @@ impl OnlineClient { impl OnlineClient { /// Construct a new [`OnlineClient`] by providing an [`RpcClient`] to drive the connection. /// This will use the current default [`Backend`], which may change in future releases. - pub async fn from_rpc_client(rpc_client: RpcClient) -> Result, Error> { + pub async fn from_rpc_client( + rpc_client: impl Into, + ) -> Result, Error> { + let rpc_client = rpc_client.into(); let backend = Arc::new(LegacyBackend::builder().build(rpc_client)); OnlineClient::from_backend(backend).await } @@ -106,8 +109,9 @@ impl OnlineClient { genesis_hash: T::Hash, runtime_version: RuntimeVersion, metadata: impl Into, - rpc_client: RpcClient, + rpc_client: impl Into, ) -> Result, Error> { + let rpc_client = rpc_client.into(); let backend = Arc::new(LegacyBackend::builder().build(rpc_client)); OnlineClient::from_backend_with(genesis_hash, runtime_version, metadata, backend) } diff --git a/subxt/src/error/mod.rs b/subxt/src/error/mod.rs index 5dbf1c5897..c2f5691b63 100644 --- a/subxt/src/error/mod.rs +++ b/subxt/src/error/mod.rs @@ -7,7 +7,7 @@ mod dispatch_error; crate::macros::cfg_unstable_light_client! { - pub use crate::client::LightClientError; + pub use subxt_lightclient::LightClientError; } // Re-export dispatch error types: diff --git a/subxt/src/lib.rs b/subxt/src/lib.rs index b50880e1ea..f8eb443eb3 100644 --- a/subxt/src/lib.rs +++ b/subxt/src/lib.rs @@ -61,6 +61,11 @@ pub mod utils; #[macro_use] mod macros; +// Expose light client bits +cfg_unstable_light_client! { + pub use subxt_lightclient as lightclient; +} + // Expose a few of the most common types at root, // but leave most types behind their respective modules. pub use crate::{ diff --git a/subxt/src/utils/fetch_chain_spec.rs b/subxt/src/utils/fetch_chain_spec.rs new file mode 100644 index 0000000000..b2881276c3 --- /dev/null +++ b/subxt/src/utils/fetch_chain_spec.rs @@ -0,0 +1,113 @@ +// Copyright 2019-2024 Parity Technologies (UK) Ltd. +// This file is dual-licensed as Apache-2.0 or GPL-3.0. +// see LICENSE for license details. + +use crate::macros::{cfg_jsonrpsee_native, cfg_jsonrpsee_web}; +use serde_json::value::RawValue; + +/// Possible errors encountered trying to fetch a chain spec from an RPC node. +#[derive(thiserror::Error, Debug)] +#[allow(missing_docs)] +pub enum FetchChainspecError { + #[error("Cannot fetch chain spec: RPC error: {0}.")] + RpcError(String), + #[error("Cannot fetch chain spec: Invalid URL.")] + InvalidUrl, + #[error("Cannot fetch chain spec: Invalid URL scheme.")] + InvalidScheme, + #[error("Cannot fetch chain spec: Handshake error establishing WS connection.")] + HandshakeError, +} + +/// Fetch a chain spec from an RPC node at the given URL. +pub async fn fetch_chainspec_from_rpc_node( + url: impl AsRef, +) -> Result, FetchChainspecError> { + use jsonrpsee::core::client::{ClientT, SubscriptionClientT}; + use jsonrpsee::rpc_params; + + let client = jsonrpsee_helpers::client(url.as_ref()).await?; + + let result = client + .request("sync_state_genSyncSpec", jsonrpsee::rpc_params![true]) + .await + .map_err(|err| FetchChainspecError::RpcError(err.to_string()))?; + + // Subscribe to the finalized heads of the chain. + let mut subscription = SubscriptionClientT::subscribe::, _>( + &client, + "chain_subscribeFinalizedHeads", + rpc_params![], + "chain_unsubscribeFinalizedHeads", + ) + .await + .map_err(|err| FetchChainspecError::RpcError(err.to_string()))?; + + // We must ensure that the finalized block of the chain is not the block included + // in the chainSpec. + // This is a temporary workaround for: https://github.com/smol-dot/smoldot/issues/1562. + // The first finalized block that is received might by the finalized block could be the one + // included in the chainSpec. Decoding the chainSpec for this purpose is too complex. + let _ = subscription.next().await; + let _ = subscription.next().await; + + Ok(result) +} + +cfg_jsonrpsee_native! { + mod jsonrpsee_helpers { + use super::FetchChainspecError; + use tokio_util::compat::Compat; + + pub use jsonrpsee::{ + client_transport::ws::{self, EitherStream, Url, WsTransportClientBuilder}, + core::client::Client, + }; + + pub type Sender = ws::Sender>; + pub type Receiver = ws::Receiver>; + + /// Build WS RPC client from URL + pub async fn client(url: &str) -> Result { + let url = Url::parse(url).map_err(|_| FetchChainspecError::InvalidUrl)?; + + if url.scheme() != "ws" && url.scheme() != "wss" { + return Err(FetchChainspecError::InvalidScheme); + } + + let (sender, receiver) = ws_transport(url).await?; + + Ok(Client::builder() + .max_buffer_capacity_per_subscription(4096) + .build_with_tokio(sender, receiver)) + } + + async fn ws_transport(url: Url) -> Result<(Sender, Receiver), FetchChainspecError> { + WsTransportClientBuilder::default() + .build(url) + .await + .map_err(|_| FetchChainspecError::HandshakeError) + } + } +} + +cfg_jsonrpsee_web! { + mod jsonrpsee_helpers { + use super::FetchChainspecError; + pub use jsonrpsee::{ + client_transport::web, + core::client::{Client, ClientBuilder}, + }; + + /// Build web RPC client from URL + pub async fn client(url: &str) -> Result { + let (sender, receiver) = web::connect(url) + .await + .map_err(|_| FetchChainspecError::HandshakeError)?; + + Ok(ClientBuilder::default() + .max_buffer_capacity_per_subscription(4096) + .build_with_wasm(sender, receiver)) + } + } +} diff --git a/subxt/src/utils/mod.rs b/subxt/src/utils/mod.rs index dc9320a303..7826ffcfad 100644 --- a/subxt/src/utils/mod.rs +++ b/subxt/src/utils/mod.rs @@ -14,6 +14,7 @@ mod unchecked_extrinsic; mod wrapper_opaque; use crate::error::RpcError; +use crate::macros::cfg_jsonrpsee; use crate::Error; use codec::{Compact, Decode, Encode}; use derivative::Derivative; @@ -27,6 +28,11 @@ pub use static_type::Static; pub use unchecked_extrinsic::UncheckedExtrinsic; pub use wrapper_opaque::WrapperKeepOpaque; +cfg_jsonrpsee! { + mod fetch_chain_spec; + pub use fetch_chain_spec::{fetch_chainspec_from_rpc_node, FetchChainspecError}; +} + // Used in codegen #[doc(hidden)] pub use primitive_types::{H160, H256, H512}; diff --git a/testing/integration-tests/src/light_client/mod.rs b/testing/integration-tests/src/light_client/mod.rs index 0694273ba5..235ba09f85 100644 --- a/testing/integration-tests/src/light_client/mod.rs +++ b/testing/integration-tests/src/light_client/mod.rs @@ -29,13 +29,10 @@ use crate::utils::node_runtime; use codec::Compact; -use subxt::{ - client::{LightClient, LightClientBuilder, OnlineClientT}, - config::PolkadotConfig, -}; +use subxt::{client::OnlineClient, config::PolkadotConfig, lightclient::LightClient}; use subxt_metadata::Metadata; -type Client = LightClient; +type Client = OnlineClient; // Check that we can subscribe to non-finalized blocks. async fn non_finalized_headers_subscription(api: &Client) -> Result<(), subxt::Error> { @@ -119,9 +116,11 @@ async fn dynamic_events(api: &Client) -> Result<(), subxt::Error> { #[tokio::test] async fn light_client_testing() -> Result<(), subxt::Error> { - let api: LightClient = LightClientBuilder::new() - .build_from_url("wss://rpc.polkadot.io:443") - .await?; + let chainspec = subxt::utils::fetch_chainspec_from_rpc_node("wss://rpc.polkadot.io:443") + .await + .unwrap(); + let (_lc, rpc) = LightClient::relay_chain(chainspec.get())?; + let api = Client::from_rpc_client(rpc).await?; non_finalized_headers_subscription(&api).await?; finalized_headers_subscription(&api).await?; diff --git a/testing/integration-tests/src/utils/node_proc.rs b/testing/integration-tests/src/utils/node_proc.rs index 65a27012bc..860937a6d7 100644 --- a/testing/integration-tests/src/utils/node_proc.rs +++ b/testing/integration-tests/src/utils/node_proc.rs @@ -11,9 +11,6 @@ use subxt::{ Config, OnlineClient, }; -#[cfg(feature = "unstable-light-client")] -use subxt::client::{LightClient, LightClientBuilder}; - /// Spawn a local substrate node for testing subxt. pub struct TestNodeProcess { // Keep a handle to the node; once it's dropped the node is killed. @@ -24,12 +21,7 @@ pub struct TestNodeProcess { legacy_client: RefCell>>, rpc_client: rpc::RpcClient, - - #[cfg(not(feature = "unstable-light-client"))] client: OnlineClient, - - #[cfg(feature = "unstable-light-client")] - client: LightClient, } impl TestNodeProcess @@ -92,16 +84,9 @@ where /// will use the legacy backend by default or the unstable backend if the /// "unstable-backend-client" feature is enabled, so that we can run each /// test against both. - #[cfg(not(feature = "unstable-light-client"))] pub fn client(&self) -> OnlineClient { self.client.clone() } - - /// Returns the subxt client connected to the running node. - #[cfg(feature = "unstable-light-client")] - pub fn client(&self) -> LightClient { - self.client.clone() - } } /// Construct a test node process. @@ -235,28 +220,41 @@ async fn build_unstable_client( } #[cfg(feature = "unstable-light-client")] -async fn build_light_client(proc: &SubstrateNode) -> Result, String> { +async fn build_light_client(proc: &SubstrateNode) -> Result, String> { + use subxt::lightclient::{ChainConfig, LightClient}; + // RPC endpoint. let ws_url = format!("ws://127.0.0.1:{}", proc.ws_port()); - // Step 1. Wait for a few blocks to be produced using the subxt client. + // Wait for a few blocks to be produced using the subxt client. let client = OnlineClient::::from_url(ws_url.clone()) .await .map_err(|err| format!("Failed to connect to node rpc at {ws_url}: {err}"))?; - super::wait_for_blocks(&client).await; - // Step 2. Construct the light client. - // P2p bootnode. + // Now, configure a light client; fetch the chain spec and modify the bootnodes. let bootnode = format!( "/ip4/127.0.0.1/tcp/{}/p2p/{}", proc.p2p_port(), proc.p2p_address() ); - LightClientBuilder::new() - .bootnodes([bootnode.as_str()]) - .build_from_url(ws_url.as_str()) + let chain_spec = subxt::utils::fetch_chainspec_from_rpc_node(ws_url.as_str()) .await - .map_err(|e| format!("Failed to construct light client {}", e)) + .map_err(|e| format!("Failed to obtain chain spec from local machine: {e}"))?; + + let chain_config = ChainConfig::chain_spec(chain_spec.get()) + .set_bootnodes([bootnode.as_str()]) + .map_err(|e| format!("Light client: cannot update boot nodes: {e}"))?; + + // Instantiate the light client. + let (_lightclient, rpc) = LightClient::relay_chain(chain_config) + .map_err(|e| format!("Light client: cannot add relay chain: {e}"))?; + + // Instantiate subxt client from this. + let api = OnlineClient::from_rpc_client(rpc) + .await + .map_err(|e| format!("Failed to build OnlineClient from light client RPC: {e}"))?; + + Ok(api) } diff --git a/testing/wasm-lightclient-tests/Cargo.lock b/testing/wasm-lightclient-tests/Cargo.lock index 49094a0384..3009f03623 100644 --- a/testing/wasm-lightclient-tests/Cargo.lock +++ b/testing/wasm-lightclient-tests/Cargo.lock @@ -455,12 +455,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.3" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" +checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" dependencies = [ - "darling_core 0.20.3", - "darling_macro 0.20.3", + "darling_core 0.20.8", + "darling_macro 0.20.8", ] [[package]] @@ -479,9 +479,9 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.3" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" +checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" dependencies = [ "fnv", "ident_case", @@ -504,11 +504,11 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.3" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" +checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" dependencies = [ - "darling_core 0.20.3", + "darling_core 0.20.8", "quote", "syn 2.0.48", ] @@ -589,9 +589,9 @@ dependencies = [ [[package]] name = "either" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" [[package]] name = "equivalent" @@ -1114,18 +1114,18 @@ checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "js-sys" -version = "0.3.67" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] [[package]] name = "jsonrpsee" -version = "0.21.0" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9579d0ca9fb30da026bac2f0f7d9576ec93489aeb7cd4971dd5b4617d82c79b2" +checksum = "87f3ae45a64cfc0882934f963be9431b2a165d667f53140358181f262aca0702" dependencies = [ "jsonrpsee-client-transport", "jsonrpsee-core", @@ -1135,9 +1135,9 @@ dependencies = [ [[package]] name = "jsonrpsee-client-transport" -version = "0.21.0" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9f9ed46590a8d5681975f126e22531698211b926129a40a2db47cbca429220" +checksum = "455fc882e56f58228df2aee36b88a1340eafd707c76af2fa68cf94b37d461131" dependencies = [ "futures-channel", "futures-util", @@ -1158,9 +1158,9 @@ dependencies = [ [[package]] name = "jsonrpsee-core" -version = "0.21.0" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "776d009e2f591b78c038e0d053a796f94575d66ca4e77dd84bfc5e81419e436c" +checksum = "b75568f4f9696e3a47426e1985b548e1a9fcb13372a5e320372acaf04aca30d1" dependencies = [ "anyhow", "async-lock", @@ -1183,9 +1183,9 @@ dependencies = [ [[package]] name = "jsonrpsee-http-client" -version = "0.21.0" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b7de9f3219d95985eb77fd03194d7c1b56c19bce1abfcc9d07462574b15572" +checksum = "9e7a95e346f55df84fb167b7e06470e196e7d5b9488a21d69c5d9732043ba7ba" dependencies = [ "async-trait", "hyper", @@ -1203,9 +1203,9 @@ dependencies = [ [[package]] name = "jsonrpsee-types" -version = "0.21.0" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3266dfb045c9174b24c77c2dfe0084914bb23a6b2597d70c9dc6018392e1cd1b" +checksum = "3467fd35feeee179f71ab294516bdf3a81139e7aeebdd860e46897c12e1a3368" dependencies = [ "anyhow", "beef", @@ -1504,18 +1504,18 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", @@ -1616,9 +1616,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.76" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" +checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" dependencies = [ "unicode-ident", ] @@ -2036,9 +2036,9 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.195" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] @@ -2054,9 +2054,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.195" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", @@ -2065,9 +2065,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.111" +version = "1.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4" +checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" dependencies = [ "itoa", "ryu", @@ -2273,9 +2273,9 @@ dependencies = [ [[package]] name = "sp-core-hashing" -version = "13.0.0" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb8524f01591ee58b46cd83c9dbc0fcffd2fd730dabec4f59326cd58a00f17e2" +checksum = "1e0f4990add7b2cefdeca883c0efa99bb4d912cb2196120e1500c0cc099553b0" dependencies = [ "blake2b_simd", "byteorder", @@ -2311,7 +2311,7 @@ checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "subxt" -version = "0.33.0" +version = "0.34.0" dependencies = [ "async-trait", "base58", @@ -2339,14 +2339,13 @@ dependencies = [ "subxt-macro", "subxt-metadata", "thiserror", - "tokio-stream", "tracing", "url", ] [[package]] name = "subxt-codegen" -version = "0.33.0" +version = "0.34.0" dependencies = [ "frame-metadata 16.0.0", "getrandom", @@ -2366,7 +2365,7 @@ dependencies = [ [[package]] name = "subxt-lightclient" -version = "0.33.0" +version = "0.34.0" dependencies = [ "futures", "futures-timer", @@ -2391,24 +2390,27 @@ dependencies = [ [[package]] name = "subxt-macro" -version = "0.33.0" +version = "0.34.0" dependencies = [ - "darling 0.20.3", + "darling 0.20.8", "parity-scale-codec", "proc-macro-error", + "quote", + "scale-typegen", "subxt-codegen", "syn 2.0.48", ] [[package]] name = "subxt-metadata" -version = "0.33.0" +version = "0.34.0" dependencies = [ + "derive_more", "frame-metadata 16.0.0", + "hashbrown", "parity-scale-codec", "scale-info", "sp-core-hashing", - "thiserror", ] [[package]] @@ -2441,18 +2443,18 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "thiserror" -version = "1.0.56" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" +checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.56" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" +checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", @@ -2486,9 +2488,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.35.1" +version = "1.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104" +checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" dependencies = [ "backtrace", "bytes", @@ -2774,9 +2776,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.90" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -2784,9 +2786,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.90" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", @@ -2811,9 +2813,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.90" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2821,9 +2823,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.90" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", @@ -2834,9 +2836,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.90" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "wasm-bindgen-test" diff --git a/testing/wasm-lightclient-tests/tests/wasm.rs b/testing/wasm-lightclient-tests/tests/wasm.rs index 92ef3543bb..845ae94e82 100644 --- a/testing/wasm-lightclient-tests/tests/wasm.rs +++ b/testing/wasm-lightclient-tests/tests/wasm.rs @@ -1,10 +1,7 @@ #![cfg(target_arch = "wasm32")] use futures_util::StreamExt; -use subxt::{ - client::{LightClient, LightClientBuilder}, - config::PolkadotConfig, -}; +use subxt::{client::OnlineClient, config::PolkadotConfig, lightclient::LightClient}; use wasm_bindgen_test::*; wasm_bindgen_test::wasm_bindgen_test_configure!(run_in_browser); @@ -49,15 +46,25 @@ async fn light_client_works() { /// We connect to an RPC node because the light client can struggle to sync in /// time to a new local node for some reason. Because this can be brittle (eg RPC nodes can /// go down or have network issues), we try a few RPC nodes until we find one that works. -async fn connect_to_rpc_node() -> LightClient { +async fn connect_to_rpc_node() -> OnlineClient { let rpc_node_urls = [ "wss://rpc.polkadot.io", "wss://1rpc.io/dot", "wss://polkadot-public-rpc.blockops.network/ws", ]; + async fn do_connect( + url: &str, + ) -> Result, Box> + { + let chainspec = subxt::utils::fetch_chainspec_from_rpc_node(url).await?; + let (_lc, rpc) = LightClient::relay_chain(chainspec.get())?; + let api = OnlineClient::from_rpc_client(rpc).await?; + Ok(api) + } + for url in rpc_node_urls { - let res = LightClientBuilder::new().build_from_url(url).await; + let res = do_connect(url).await; match res { Ok(api) => return api, From 64dbb6f07d02cf16776ab42cc6da22ad5f28d5d5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Mar 2024 10:34:36 +0100 Subject: [PATCH 50/66] build(deps): bump scale-info from 2.10.0 to 2.11.0 (#1484) Bumps [scale-info](https://github.com/paritytech/scale-info) from 2.10.0 to 2.11.0. - [Release notes](https://github.com/paritytech/scale-info/releases) - [Changelog](https://github.com/paritytech/scale-info/blob/master/CHANGELOG.md) - [Commits](https://github.com/paritytech/scale-info/compare/v2.10.0...v2.11.0) --- updated-dependencies: - dependency-name: scale-info dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6704da008d..5a7af0594b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3550,9 +3550,9 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7d66a1128282b7ef025a8ead62a4a9fcf017382ec53b8ffbf4d7bf77bd3c60" +checksum = "2ef2175c2907e7c8bc0a9c3f86aeb5ec1f3b275300ad58a44d0c3ae379a5e52e" dependencies = [ "bitvec", "cfg-if", diff --git a/Cargo.toml b/Cargo.toml index c0d7e7f348..e8ae1da25b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -88,7 +88,7 @@ proc-macro-error = "1.0.4" proc-macro2 = "1.0.78" quote = "1.0.35" regex = { version = "1.10.3", default-features = false } -scale-info = { version = "2.10.0", default-features = false } +scale-info = { version = "2.11.0", default-features = false } scale-value = { version = "0.14.1", default-features = false } scale-bits = { version = "0.5.0", default-features = false } scale-decode = { version = "0.11.1", default-features = false } From 22e27967870eb92245653d9c2cd472e0c6779685 Mon Sep 17 00:00:00 2001 From: "paritytech-subxt-pr-maker[bot]" <159533160+paritytech-subxt-pr-maker[bot]@users.noreply.github.com> Date: Mon, 18 Mar 2024 10:35:15 +0100 Subject: [PATCH 51/66] Update Artifacts (auto-generated) (#1480) Co-authored-by: tadeohepperle <62739623+tadeohepperle@users.noreply.github.com> --- artifacts/demo_chain_specs/polkadot.json | 8 ++-- artifacts/polkadot_metadata_full.scale | Bin 402202 -> 402061 bytes artifacts/polkadot_metadata_small.scale | Bin 69904 -> 69879 bytes artifacts/polkadot_metadata_tiny.scale | Bin 38109 -> 38084 bytes .../src/full_client/codegen/polkadot.rs | 35 ++++++++---------- 5 files changed, 19 insertions(+), 24 deletions(-) diff --git a/artifacts/demo_chain_specs/polkadot.json b/artifacts/demo_chain_specs/polkadot.json index b4782a6900..74ce0faa6e 100644 --- a/artifacts/demo_chain_specs/polkadot.json +++ b/artifacts/demo_chain_specs/polkadot.json @@ -43,10 +43,10 @@ }, "id": "polkadot", "lightSyncState": { - "babeEpochChanges": "0x0427a472c969e80bbe698119203450b6c323153c8592f04211bad4a9fd6c631a04e0bc2e0101f301fd1000000000530bfd100000000004d6aad9a24d0897740b65705a98b2199ce1a01b4a8dad21d7246f1d0596bbd3b230c62e0101530bfd1000000000b314fd100000000004fc8b9d6789138f7293dd6277bc5f9b1182d31d87615036668fc4b5078dff425181cf2e0101b314fd1000000000131efd100000000000000c27a472c969e80bbe698119203450b6c323153c8592f04211bad4a9fd6c631a04e0bc2e01017120000000000000f301fd10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e010000000000000026db7c5786fddc15f7e96905024905d877537451ed444cb97d3786361a59f64b0100000000000000c67b1b3084dc3eb2cc7a3cc4f742defc21b733e787737cbaf3b146a052633e0f01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000948ee778b8ce0aeed5bbbe8c449f7801a27efa67adecb66470d0dd53a7fe6a6e0100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc35310010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f010000000000000024532b17fc5fb786660c52aeb03150799165dd05e88ce359189189a4b771f51e0100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b01000000000000004c50abd9279d48439dc8f93aaf679e47981f25372b63d838786dcaf7a3f8d074010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e093601000000000000002803ef26679fce0495aa4066e053c4fa9cda5bfb54e24497fcb1bcef2902cb400100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc190100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f0678771701000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f510100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e010000000000000088f9a16886165d00612032cb1b36669ad62b7325536f499191e711134c71b6070100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c560100000000000000c65c0a74887e9fe5cc56696fac7e7f5f1cd4a68f9661c8384b300bcdfbe67a1801000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf71010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e702101000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf080100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c39070100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d707600501000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb5501000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b010000000000000020bedd48a5965e2fc0e221bd164deecdee849eb69cb8dc63a37df80b50a3093b010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e51010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000003635c55546f19bfe62d84a220c4396b1c9d71a1acdb2da917a82f0c1415a2b020100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa7401000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c0100000000000000c473d994ae0f9b8532523f5ebc52014bb3fad20e68770fceaf80fa105cbefd0d0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a5201000000000000004e8cc21504fda961cf1cfe78e651d033b10f8ab1a4a0c757bd4848a7f2827f0601000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000944ad19383a9ae136f4f11c15687923b9b21319efab021336a3e8f2bd5b5ca200100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a01000000000000005c252543704920d6bea67453cdd61b464b001badf73a3ea3b9e9fb35b224947201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b3515010000000000000004734733edcd9cf662389208fb8ccb5f274a7db8187ccc53dc84250f8599d54d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e6380100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb1901000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c744501000000000000004e047857f2ec0c7cf295a0673fcc750d4c268cf852711196c4f05bd9dc6414260100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f61001000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c8400100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000044f8580dad3559a76d0b66af3ddddd0dfbf32c9e4dfa034b318ae6157d9f6544010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd8780100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f76010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000be0f11aba12d189f0764fc31bec37f741583c50dee7a3a6d017d3d8154b8227f010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a2520100000000000000767cb742c94b22fff80da70a4ea77069aecde7ded53fbf5d957b01196924cd2d0100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea8400100000000000000785ff29a12ee4e45687943f0ad146f683703f064c35fc8118f5d239bdfe54c6e0100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d710100000000000000c6ac76a6bb70dfe6f7bf1e96793c011842148482eb1320b8deeaf0a8d1f1c121010000000000000070c6b18b49bc84d45bb78c292fbecf7715821a0e7d71281b1cf9de18f8027f21010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e660100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd0401000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b0100000000000000d85e8d408d9d5a3afa74bd441bbac60d440727a0c26c77b1bca5ff5332b56b4101000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000076fa252aeca5b108fe76ce12e395ed8105d5c98e4abae38bfc7cb4fbd4d43d5501000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000fa30595578d5e253a0a3701616665cb205fc02eb560c023454c280bfc6cd8d090100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a5240100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000fe24bd4f4b0e75ff21dcf16a3ccba49556cfa9586348a8f939df8def8a214c0d0100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000feebe707a9a5eb136d04e5b3b2124627fa76129c1e33cba1d1323047f76b3f22010000000000000062c6c1f6f2478ee092c958842ac4351973bfeb49f55e33b8415ac0296a967b5f01000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c230100000000000000b2ddb9eab0545b9ac7a46e37d6fc4605c34227d848416bd3637da7156efe61260100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e2529010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e7630100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da7201000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c4914201000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b2001000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f0100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000002001d47fbff7291a50650047b27cc47f1d22a0bdfbbfb0b8b7a6e8bbf350bf620100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000005c3615a5e2072a618f0e434f7c572f4e4b1a89348dfe0f7939c99de095d54a5501000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe083721560010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000006ca32996225021dadb0b3f22460db6ce243faa3a0df7b33ef28e5fbcb9cf6f2f01000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f0100000000000000f4ed2eb79bd9daf9391a340eb452db9890c60d98b97c4cfe17560367f422a85401000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e67010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec17201000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f53343010000000000000032fdd22fdc3662f97008fbb6f52d0fbe7b62c24956849fe04f9b023007a8932301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de320100000000000000148f1be467808e1cc693cf74ddf2e61ef1c13aa351b201835558f7284137995b010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b010000000000000088542443998d88a092cf75e7784388c6cf71c71ceab04f16fc0114b2bf2dc1320100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a5003010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d01000000000000000469db5710f30dc9ed7411417170efd62ce8bbe36ccab6df758a94aa7b7f720b010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b01000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf460100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f0100000000000000d636bcd260e36a2bea4bb1667bbc86285967381ad5822f8cd98ff7d5c88c743001000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b010000000000000078f6eabfa5ce5c858c1d0d378fea88e98bbad82c6c2acb6c587bde67066f695501000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a010000000000000054a672d14f2d201c99ca725fae26f20cee76af6cc7f1113feeb82e837bc59c4d0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad2102010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e01000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f076852010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc24010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e0100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c280100000000000000e05c7c7d82498be85294ee984e1f0caf23c53fa9a64cc7e6c5053304c4bb785101000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b30401000000000000001e1c88ee34c1421a7c937eb2260647ae799d842855f8eae5850a805dd2693c000100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c010000000000000076311c1a3fefd3236e3977ef9f78ad450ca34945e72a4e80f66cd1ed29301e61010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000a2259245fb5a7251b99ee8f307b97ec6e7f20081c1f75284aa9b433153d88816010000000000000038ab6c4b18e1c86176cf53301ea990f1cdddcdc3f2c3e0f8dde126fa59f60b2f010000000000000010bca2541c1c9dba105e28facbed65e6e76bbf8924b248b597cdeb122cff1d730100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b010000000000000096776e9dad14b2ece6fcddc7ee29a19c27f7d7baddf3e02a493a332d90b4020c0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a1843220100000000000000c35d0f86b19c350505bddb3764f91fc662546eb0d254cdcf51ee541c8d20463c0100000000000000040000000000000002d6aad9a24d0897740b65705a98b2199ce1a01b4a8dad21d7246f1d0596bbd3b230c62e01017220000000000000530bfd10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e010000000000000026db7c5786fddc15f7e96905024905d877537451ed444cb97d3786361a59f64b0100000000000000c67b1b3084dc3eb2cc7a3cc4f742defc21b733e787737cbaf3b146a052633e0f01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000948ee778b8ce0aeed5bbbe8c449f7801a27efa67adecb66470d0dd53a7fe6a6e0100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc35310010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f010000000000000024532b17fc5fb786660c52aeb03150799165dd05e88ce359189189a4b771f51e0100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b01000000000000004c50abd9279d48439dc8f93aaf679e47981f25372b63d838786dcaf7a3f8d074010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e093601000000000000002803ef26679fce0495aa4066e053c4fa9cda5bfb54e24497fcb1bcef2902cb400100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc190100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f0678771701000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f510100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e010000000000000088f9a16886165d00612032cb1b36669ad62b7325536f499191e711134c71b6070100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c560100000000000000c65c0a74887e9fe5cc56696fac7e7f5f1cd4a68f9661c8384b300bcdfbe67a1801000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf71010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e702101000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf080100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c39070100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d707600501000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb5501000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b010000000000000020bedd48a5965e2fc0e221bd164deecdee849eb69cb8dc63a37df80b50a3093b010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e51010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000003635c55546f19bfe62d84a220c4396b1c9d71a1acdb2da917a82f0c1415a2b020100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa7401000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c0100000000000000c473d994ae0f9b8532523f5ebc52014bb3fad20e68770fceaf80fa105cbefd0d0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a5201000000000000004e8cc21504fda961cf1cfe78e651d033b10f8ab1a4a0c757bd4848a7f2827f0601000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000944ad19383a9ae136f4f11c15687923b9b21319efab021336a3e8f2bd5b5ca200100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a01000000000000005c252543704920d6bea67453cdd61b464b001badf73a3ea3b9e9fb35b224947201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b3515010000000000000004734733edcd9cf662389208fb8ccb5f274a7db8187ccc53dc84250f8599d54d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e6380100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb1901000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c744501000000000000004e047857f2ec0c7cf295a0673fcc750d4c268cf852711196c4f05bd9dc6414260100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f61001000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c8400100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000044f8580dad3559a76d0b66af3ddddd0dfbf32c9e4dfa034b318ae6157d9f6544010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd8780100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f76010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000be0f11aba12d189f0764fc31bec37f741583c50dee7a3a6d017d3d8154b8227f010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a2520100000000000000767cb742c94b22fff80da70a4ea77069aecde7ded53fbf5d957b01196924cd2d0100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea8400100000000000000785ff29a12ee4e45687943f0ad146f683703f064c35fc8118f5d239bdfe54c6e0100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d710100000000000000c6ac76a6bb70dfe6f7bf1e96793c011842148482eb1320b8deeaf0a8d1f1c121010000000000000070c6b18b49bc84d45bb78c292fbecf7715821a0e7d71281b1cf9de18f8027f21010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e660100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd0401000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b0100000000000000d85e8d408d9d5a3afa74bd441bbac60d440727a0c26c77b1bca5ff5332b56b4101000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000076fa252aeca5b108fe76ce12e395ed8105d5c98e4abae38bfc7cb4fbd4d43d5501000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000fa30595578d5e253a0a3701616665cb205fc02eb560c023454c280bfc6cd8d090100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a5240100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000fe24bd4f4b0e75ff21dcf16a3ccba49556cfa9586348a8f939df8def8a214c0d0100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000feebe707a9a5eb136d04e5b3b2124627fa76129c1e33cba1d1323047f76b3f22010000000000000062c6c1f6f2478ee092c958842ac4351973bfeb49f55e33b8415ac0296a967b5f01000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c230100000000000000b2ddb9eab0545b9ac7a46e37d6fc4605c34227d848416bd3637da7156efe61260100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e2529010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e7630100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da7201000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c4914201000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b2001000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f0100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000002001d47fbff7291a50650047b27cc47f1d22a0bdfbbfb0b8b7a6e8bbf350bf620100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000005c3615a5e2072a618f0e434f7c572f4e4b1a89348dfe0f7939c99de095d54a5501000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe083721560010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000006ca32996225021dadb0b3f22460db6ce243faa3a0df7b33ef28e5fbcb9cf6f2f01000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f0100000000000000f4ed2eb79bd9daf9391a340eb452db9890c60d98b97c4cfe17560367f422a85401000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e67010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec17201000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f53343010000000000000032fdd22fdc3662f97008fbb6f52d0fbe7b62c24956849fe04f9b023007a8932301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de320100000000000000148f1be467808e1cc693cf74ddf2e61ef1c13aa351b201835558f7284137995b010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b010000000000000088542443998d88a092cf75e7784388c6cf71c71ceab04f16fc0114b2bf2dc1320100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a5003010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d01000000000000000469db5710f30dc9ed7411417170efd62ce8bbe36ccab6df758a94aa7b7f720b010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b01000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf460100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f0100000000000000d636bcd260e36a2bea4bb1667bbc86285967381ad5822f8cd98ff7d5c88c743001000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b010000000000000078f6eabfa5ce5c858c1d0d378fea88e98bbad82c6c2acb6c587bde67066f695501000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a010000000000000054a672d14f2d201c99ca725fae26f20cee76af6cc7f1113feeb82e837bc59c4d0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad2102010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e01000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f076852010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc24010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e0100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c280100000000000000e05c7c7d82498be85294ee984e1f0caf23c53fa9a64cc7e6c5053304c4bb785101000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b30401000000000000001e1c88ee34c1421a7c937eb2260647ae799d842855f8eae5850a805dd2693c000100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c010000000000000076311c1a3fefd3236e3977ef9f78ad450ca34945e72a4e80f66cd1ed29301e61010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000a2259245fb5a7251b99ee8f307b97ec6e7f20081c1f75284aa9b433153d88816010000000000000038ab6c4b18e1c86176cf53301ea990f1cdddcdc3f2c3e0f8dde126fa59f60b2f010000000000000010bca2541c1c9dba105e28facbed65e6e76bbf8924b248b597cdeb122cff1d730100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b010000000000000096776e9dad14b2ece6fcddc7ee29a19c27f7d7baddf3e02a493a332d90b4020c0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a18432201000000000000003e308e38630d3be8e1f7398819e245fb86eef24d0344a2e04626f42ce72872e80100000000000000040000000000000002fc8b9d6789138f7293dd6277bc5f9b1182d31d87615036668fc4b5078dff425181cf2e01017320000000000000b314fd10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f28010000000000000020352ba0565811731625a8001d26f5d899e5856dedd0f9c6bc3bec2995704e5b01000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e010000000000000026db7c5786fddc15f7e96905024905d877537451ed444cb97d3786361a59f64b0100000000000000c67b1b3084dc3eb2cc7a3cc4f742defc21b733e787737cbaf3b146a052633e0f01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000f6dddaaaa53b57763610037753656b591d90fa81efbadcabbeddf7378c23602701000000000000003e69835397599a4bf081775f9f42f0f4ee686d67c9af8eacc4a733fdcdb0290b0100000000000000948ee778b8ce0aeed5bbbe8c449f7801a27efa67adecb66470d0dd53a7fe6a6e0100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e477588789720100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a010000000000000024a57db63b380456d56d561d8a9da6db13d298045c9672bc4086a2e0a567d55c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc35310010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f010000000000000024532b17fc5fb786660c52aeb03150799165dd05e88ce359189189a4b771f51e0100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b01000000000000004c50abd9279d48439dc8f93aaf679e47981f25372b63d838786dcaf7a3f8d074010000000000000042ad4ba7e8a60af1abcee04fdd82ad02b24f1e2535bdb1abcdde886efbf0fc4301000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e093601000000000000002803ef26679fce0495aa4066e053c4fa9cda5bfb54e24497fcb1bcef2902cb400100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e0100000000000000e61da4eefdd14434952c58dd1943f7f63185d03321ccc8835e4216badd16fc190100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f0678771701000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f510100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e010000000000000088f9a16886165d00612032cb1b36669ad62b7325536f499191e711134c71b6070100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c560100000000000000c65c0a74887e9fe5cc56696fac7e7f5f1cd4a68f9661c8384b300bcdfbe67a1801000000000000009e9f565a8cb6e8f2154a9833735930a04003505856c3743a0f71afe64c7acf71010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e702101000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf080100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c39070100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d707600501000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb5501000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c0100000000000000d04077347325618eb5cef03729a157b910fac54ec7e344e65b6945fb9fbbeb3b010000000000000020bedd48a5965e2fc0e221bd164deecdee849eb69cb8dc63a37df80b50a3093b010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e51010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000003635c55546f19bfe62d84a220c4396b1c9d71a1acdb2da917a82f0c1415a2b020100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa7401000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c0100000000000000c473d994ae0f9b8532523f5ebc52014bb3fad20e68770fceaf80fa105cbefd0d0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000001a36d936f4692ac8387ac0ca1f051970ae480271e39fc134436b86b8ec83b25d010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000e03dd3bbb140ffa44e0cc0e1846967b03aecccac78f6e2e0a1fd3ac0d34f554a0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a010000000000000088b8e0da91c48fd9bf94ca5ed7fb74797a037e626c98ac18cd76360ccd6ac11c010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a5201000000000000004e8cc21504fda961cf1cfe78e651d033b10f8ab1a4a0c757bd4848a7f2827f0601000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000944ad19383a9ae136f4f11c15687923b9b21319efab021336a3e8f2bd5b5ca200100000000000000202e3405e49bb882f1d49efc4a4adc5b62dcc96ec18346a48aad5a510c189b5001000000000000005c39533cbb607f1f52d82356d267a56399045e0d7b7e95887cfd8ec13173db2e0100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a01000000000000005c252543704920d6bea67453cdd61b464b001badf73a3ea3b9e9fb35b224947201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b3515010000000000000004734733edcd9cf662389208fb8ccb5f274a7db8187ccc53dc84250f8599d54d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e6380100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb1901000000000000004cc9ff5edb36e361b088b0eff52fc6e6559c1169ff87ccdb62503bceab7c744501000000000000004e047857f2ec0c7cf295a0673fcc750d4c268cf852711196c4f05bd9dc6414260100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f61001000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c8400100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000044f8580dad3559a76d0b66af3ddddd0dfbf32c9e4dfa034b318ae6157d9f6544010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd8780100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f76010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000036a547b4aca95274437f3876bec0447f775eacd01b09d95869390d326a596d450100000000000000be0f11aba12d189f0764fc31bec37f741583c50dee7a3a6d017d3d8154b8227f010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a2520100000000000000767cb742c94b22fff80da70a4ea77069aecde7ded53fbf5d957b01196924cd2d0100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea8400100000000000000785ff29a12ee4e45687943f0ad146f683703f064c35fc8118f5d239bdfe54c6e0100000000000000407e78f505ae833a2eaea113245bf6a5ef6abd0db66141f770cd6cd7a7e75d710100000000000000c6ac76a6bb70dfe6f7bf1e96793c011842148482eb1320b8deeaf0a8d1f1c121010000000000000070c6b18b49bc84d45bb78c292fbecf7715821a0e7d71281b1cf9de18f8027f21010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e660100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd0401000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b0100000000000000d85e8d408d9d5a3afa74bd441bbac60d440727a0c26c77b1bca5ff5332b56b4101000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000076fa252aeca5b108fe76ce12e395ed8105d5c98e4abae38bfc7cb4fbd4d43d5501000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000fa30595578d5e253a0a3701616665cb205fc02eb560c023454c280bfc6cd8d090100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a5240100000000000000fca464b97dee2e318ad8d4516fd606a5401f5d15467110112a3326ef96ce00760100000000000000fe24bd4f4b0e75ff21dcf16a3ccba49556cfa9586348a8f939df8def8a214c0d0100000000000000bc3bf978ea283cf493b43928b605309be31def9d4a1daf47788017ac61c7c81b0100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000feebe707a9a5eb136d04e5b3b2124627fa76129c1e33cba1d1323047f76b3f22010000000000000062c6c1f6f2478ee092c958842ac4351973bfeb49f55e33b8415ac0296a967b5f01000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c72153590100000000000000b027ae418b6c79d9f3a2b05df499d3aaecfb327e6b9d7995a022dc5265ed76180100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c230100000000000000b2ddb9eab0545b9ac7a46e37d6fc4605c34227d848416bd3637da7156efe61260100000000000000b6ed5b0c17ca7560c71f1778694741009d3da979309617f0bb992084019e2529010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e7630100000000000000ca9919b307ac6204475ff029334863d464042fdb84da988119b6392d5862cc78010000000000000002e12aee8fa547e191b4395503c28d4b14650c1dc03c698d73f4cd30f03de90201000000000000004050f1025e1481eedf4d787eb4232123b271e5196dcd8670d754836297d0da7201000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c4914201000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b2001000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a7748010000000000000094d89cb8df2b03c76d41a6521e5803d6f98e204e1839b9ea747dc7e253d35b7f0100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000002001d47fbff7291a50650047b27cc47f1d22a0bdfbbfb0b8b7a6e8bbf350bf620100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000005c3615a5e2072a618f0e434f7c572f4e4b1a89348dfe0f7939c99de095d54a5501000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe083721560010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000006ca32996225021dadb0b3f22460db6ce243faa3a0df7b33ef28e5fbcb9cf6f2f01000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e0100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f0100000000000000f4ed2eb79bd9daf9391a340eb452db9890c60d98b97c4cfe17560367f422a85401000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e67010000000000000086ccdecaccbf1a58049c55793916611cb8749edf93085bb764e77636357ec17201000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f53343010000000000000032fdd22fdc3662f97008fbb6f52d0fbe7b62c24956849fe04f9b023007a8932301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de320100000000000000148f1be467808e1cc693cf74ddf2e61ef1c13aa351b201835558f7284137995b010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b010000000000000088542443998d88a092cf75e7784388c6cf71c71ceab04f16fc0114b2bf2dc1320100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a5003010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d01000000000000000469db5710f30dc9ed7411417170efd62ce8bbe36ccab6df758a94aa7b7f720b010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b01000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf460100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f0100000000000000d636bcd260e36a2bea4bb1667bbc86285967381ad5822f8cd98ff7d5c88c743001000000000000000a6a0f8136fafe5c2e096704e37d12b47a1e46151489a23eb1713b37769fdf780100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b010000000000000078f6eabfa5ce5c858c1d0d378fea88e98bbad82c6c2acb6c587bde67066f695501000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a010000000000000054a672d14f2d201c99ca725fae26f20cee76af6cc7f1113feeb82e837bc59c4d0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad2102010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e01000000000000009e3b3214afe654cf851be9e564e72f834168ff65ce346ac54024cdcd9325712101000000000000005e7f927ca4edf203d65f682fae546d8d43913b253dad434800df66be1f076852010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc24010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e0100000000000000d27da69172c428ddb80272e6fc6ec90985ee281b45f933e5bad65184bc3b5d0201000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c280100000000000000e05c7c7d82498be85294ee984e1f0caf23c53fa9a64cc7e6c5053304c4bb785101000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b30401000000000000001e1c88ee34c1421a7c937eb2260647ae799d842855f8eae5850a805dd2693c000100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c010000000000000076311c1a3fefd3236e3977ef9f78ad450ca34945e72a4e80f66cd1ed29301e61010000000000000058efa50da673a8c3b5799e278ae7d32f9eee340947f793f44348ba17e25a885f0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000a2259245fb5a7251b99ee8f307b97ec6e7f20081c1f75284aa9b433153d88816010000000000000038ab6c4b18e1c86176cf53301ea990f1cdddcdc3f2c3e0f8dde126fa59f60b2f010000000000000010bca2541c1c9dba105e28facbed65e6e76bbf8924b248b597cdeb122cff1d730100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b010000000000000096776e9dad14b2ece6fcddc7ee29a19c27f7d7baddf3e02a493a332d90b4020c0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000723f8c9d81d0874cd4130cb58587c90ef454174e9d6d9dec11279a553caf00430100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a1843220100000000000000faad21e4520f4aaf9a42b3de6bde5514c2765cd00966a29a5250a9730b77ccad0100000000000000040000000000000002", - "babeFinalizedBlockWeight": 4955219, - "finalizedBlockHeader": "0x5435edbdba45a77c84543da5acf1d33768bc8bc4dd0009f73ec1d688c25348a18a44bb04357ec4253a63ae4feff90da30e9e43beb401ead1602e00ebc60b2e62c39aad22a08f7bc526e9153946677c86a61f45f417665121d990605b569a72b4a57caea80c0642414245b50103e7000000f60cfd1000000000248ba492ec1bbd2112d27af68ee579719e8acd5e57cd8cffa00fc412ed791942dbb7ab7f830398e1f49d7cb9f4f39b4f71379251eeb40177cffa60f6b904ce0bbf7c63dc846f42e8d46114c6c598a3660305c5953ca7b90393626185595b31090442454546840384251bc93e996986867d387b0ead8158ec5205a4ee8e3ffbba5045db4e5f1f850542414245010158479f6bef3b8303a993b2542a7e5f1c9ee69a31dc6f99c57cfb321dee24fc60759b0cdb354e8f5abda09f858fc7dcec32592ed5b3d61335b5102296354bef83", - "grandpaAuthoritySet": "0xa5046f706506065685b322054d22e8a1f23ca9df75c32a88dda5214ad58b553b4cca01000000000000008a239af78d4659897af698b5670533fa6d215864be8c41e3a2fc4309f9f83dcb0100000000000000e2b9e72d9202e99526fa626d9a6651dfd7c1daec8fc6ba1130af96f7d21a42da010000000000000056b838dd2005e499be47ceef086df4ca9c5fbc1f81968391c31af062a8a8bef301000000000000004a3fc0fe1020c7f460c7bd23d0b657c03368552b2f0a12d80a1c406fd066e0db01000000000000009b992b5e9b99eb2cd3b2b648d6db81ed722a2feb4938d998b58dcb5d159fadfa0100000000000000aee9de3938173700b3e3f4fbf2b200ae296173a0854157f40de2598dd4cad8f10100000000000000243f110deac5efe8e963d794eb8706a1895ae1942523ab0fe9e1623515b7dea80100000000000000b61e9b13e849779be8f5378a670d61991875d8e091f359384d7be73d02d506930100000000000000426b2be4596a759a15028d84e08c5c56440e6cede68d088f47c671cc3387c3e6010000000000000070ba6e5985990ba1b1392713236f1b50df750f10f744cc6eb95fa7c5cfbc68760100000000000000d343862beda4cf485b4a3b7e9b62d3b7e6263b47f65a7c88c88f6e0f1350c7a50100000000000000116768c765c7ce5a5e895a5342d1f56f1a118901d8d36fe584bab325506f3b2801000000000000007d09df0a629a0eee12da27d7fad8b18833a7d1edc7c6c8b7701e425ae449fa820100000000000000e511d441d6d3c822cb276bb2a14b1c8071d9fe1995802383fb5dcf8a92edcfc20100000000000000be2235b9d9c9164f494dd688000fb569a37d5c47912ef99b9ebda9318d13345e01000000000000000139b946b46bee4c61be50c986f2a9ef2e76917644e2ecd842c59d61a94ee612010000000000000019a9d56ea35496122fc44fcb5c29d27fbb43520556d6f8d97753767aaa0f228e010000000000000032b5e70f48897c333d520934f656ac3cafc040ebb356eee1b9081179d99abf990100000000000000a8dbfc6cb88ac105e25b9dc7f11e883631824647cd4d0c18014bb6239627b2900100000000000000a5b094ae7c156592baa68ce18dab6368d5b665e9a0f07dfc5f54f58309e086c1010000000000000041ef4a31eb7dc1e01f4630604e1908e644d7cdee3f66a60f98d6d59605326f8b010000000000000097743d6364cdb6c4790cd37c4c2ab5fbc6c65e8bb606625e70a6ee04ed1650d9010000000000000008cc1d6c743da905511a39a6f0a68809a6bc32f8ac25e53bb2d6aca4f493fc9b0100000000000000acd71d4269b3ba2a9de822d494c4d841708e1519c08de41d7fc6153eaf48da8101000000000000007c1024f3b93e54cb1cdde0d2f685e2e16cadabe59e407ebc45eabb07efebca6101000000000000000f42866aa6927f1c5916a8a1a5a5cba2d88e1fff957d80df701617d93ee6407801000000000000005cba2c6f569da1edc3778308da406f266aa53140381dbb3f14f22909ba6e30040100000000000000dac2e90de824b109043f70818d53eabe05e79d518bda504e951d7f4056b0b2720100000000000000652f455eb3d30486151c716a4031bc02bd00254ef3e8290fd29f946d958a46b60100000000000000589fc35b132ef9d7ed9a6787a203e5a3a37f8cd6c775f47ac5e589d55d381a640100000000000000a34b3f8e84aa86be3b47260f67720030795fc96379e5b31cc6c87c2f4d1cc3e00100000000000000dccafad8bba5affbc80095564afc9376881907073a060979fabbb962bef08d56010000000000000078774f4f6130efaa55b5a06d1ef94ca420739dff79cbc24074bba841053e0aa20100000000000000c1758f7cbffeb844419bc494a9dc65fb394259f01e9bf23789a75acc29d7d9620100000000000000c1c1ff5f66fefb5c0849e3b2333411d1f7e9dd4888600e334e7a33623f15fa360100000000000000f23b0362de32f952573d64c1f52ac4b8db0a7e15e7ad49a0c81d8f15b1f2ca8e0100000000000000fe240e80ff8a48a77947b394979cf361017cd906ddaab637d72cf72e729d79bf010000000000000006854c73f5703242d31d2576ac2297c93f0b5dc16ade0097c59d5dc0faa43c550100000000000000fa2c21f1a03638d4cb35202102240c2b85f5667924d5838cc503721117049da601000000000000008aabd4f6d7ecec7a749c83fc7be33f3b4818cca6f93a4927b4964900df9454e50100000000000000fcc0d954c7d519851e0094cd9a015b4789022a37091e3a04791d0731bd85f0d301000000000000003948bfd09bbbc2fe6ac5dfe53146e32df50828eecf7b2b18cdcff8dc385cbd750100000000000000a2a4af2a11ae7ba812fcc32845583d0354a0f2ffb1271a53c9a976a0f47fff4401000000000000002385953f1ac49461b9c243159d9668b26e7322e19fff7bc18d90634f0f767ce8010000000000000058e304af91397247f704ce95d60845629aa59a50fba1c13896bb2300708db47201000000000000008663371a5899d5e7a8bc99b9a6ce24c8c3f5f1149c1e70accf9560405c1a5bf201000000000000003d28789c6d574f3aa6d14360471901c5bf8255d072c2209fa22ac773bd32e5bf010000000000000041763df8284ae8248ee0f649982ffc7d4f613e07c7bb83cd554aca5dcf8f56250100000000000000cc0c6a91c7971438b621cd9a3bd37a67f52ec4093336585d1e2c73416195e28a0100000000000000de52bfa88c4a76bb22fbebb0f078dfcc5a327034e0044e8f8034f2a96e7adfef0100000000000000bf3fd3d4065b306638662c3e789d830a63d9b343cef5f863d346058387844b58010000000000000005197187ac7eb8d0a3cfadd32f1a7fb662e7e4a16ea718af3f1e4437b865205b0100000000000000c84074bb67af84cdf84b9df1dadc1188cd75709a8d11bba65f2835d76f38c47301000000000000007ad55381f9de00220678c95a19489640fc61331e2a40d927e3d833555575c6fc0100000000000000b98c920666586f392d129d480e78a965764ac82de45e691589b3aab7831a7f020100000000000000cb92ffeace78dbafe6fbf275741b4b38657fb81590712aa0bca7877931f6ad39010000000000000034a18d21097f479eecbe51b91c522a798582caafc787134bab6888854742406e010000000000000027791275ae7d4735aa45e70210663067f7d268aa57126a26044c8f6d8572a7d80100000000000000f7c9f4bc8669969246cfb748ac6996db6cd4c1fc634d981a1093b2c3d7a2eadf0100000000000000f001e2e99b378fa4f2d1a50b28c3fcefcd7da3a66314af1280fb7f9cb429dd380100000000000000ffd82ddc49373448bed6feb0032744e20068f4e21adc4cb6d2cbf05ce73f4ce40100000000000000c8185ca8ae6330a1e03490e132163adf517f76402ecac6881a51c8a14ed62f940100000000000000c49e3cd2c701bb845963c2870dcca12ed070c3f67ffc20144327a93aa6e896ec010000000000000081b1fce3ee9e31723f1023eaa9f8793e8663e72c50fbb0fbcea9bc78bacc491b01000000000000002dad5b2212ee688f2eeb9ca1fb6a90574f006dc1c6680ac3a8523363a248940b01000000000000004bb953c285fc6de7ef27baf835e8d905e60d86fb1bca0e52af8323e9d1ff219d010000000000000050f9fd6c0623020debb7843bcb832ee1d80db9b156d8e6083ccebd434fe979470100000000000000b7c13f1239888cda5c8e6ac9ea10675df17633368906e66a487f91ddd3268ca601000000000000002cd51e09c3197e04155b78f3d97742ceffface390dc46f81f2613a94b2e483fd0100000000000000affb713ecdae328aa4436756f6a3e8add6b274d5ef1cc19d7aa69ab82c80e472010000000000000052912b3dfd0ccacd00586b97f1abe32431a2f6fa9c2b3bb17837a1ecde61728001000000000000008a2b50acd1a4955fc814bf6720c7427902a6ce709f3a2d7c17c55b67f6f1c06301000000000000003a511828c0cdc0fd257387843fdbf6f19d5ca1ef1c29ec7e971fc9f1195eb60c0100000000000000fd856413411b2e50cf1d32f8253c9bf7b055df259c42fc3a501ced6850173f8f01000000000000006565187c86eca2aaf37db6d59405535a5e6dd85e2743a07ebf50e55c2b7fbc890100000000000000d1c146d2429a5a827660008721c7a880e71f44feaa3dc75524c1a9281bac48cd01000000000000005d2b07941a21adb6ba52298c2f0b0bdb6023e4a1713018762a5f61973b2fd1e80100000000000000e4b2cffd0b9cacfc500050b27ecae3c55b9b51bd9a416d62605118c8ad4fb09f0100000000000000f42c2e2a4157d51d22d5997dea1342f65e1882e207fd0e64e8e5d44330857eef0100000000000000f6d74de7b39455519a5d6480c8f12c93fc7a4cfc9af39154fc60857a39ad888b0100000000000000c8be78d05f652edd0a64a5865455de36d0fadb0d91c470fd344f8de23c8a6b9c01000000000000006ad5224d5c8f7fb3ae15dcb3766c0956ca627a6c91e93c4e770a2908e8f5901501000000000000006faa2a994a276a5d8d029db32b4c05375412db8844ec0a1ecbbcce729f308e9c0100000000000000f5fef7a87c9f3917fd28640907ce59ad26f33e41baa25d8ead8033ae0b944d7901000000000000005d0124063ede3e49f037df33948477235e5a58f93f8b98bf7203f25e11d4f0b4010000000000000040533a786cd0be9618126633512666b1b1b9ab3b436fa653c93e2f65da9c196b0100000000000000be95095d93298171c6fb8a1847adfa173d127e13f53482dcb694f891d68f0c58010000000000000085b714accac0654ba57fac59b626dd35802269d2c1d995cea7c335cb05a88f7f01000000000000006a5f902cdeda2c2161d16bd21d586720c08c0bbb7b463d9c59147338d26a8a9601000000000000009c11e35911f023df6e4d218e53412ab4e4a20c17961d63ba381c913b51f394c001000000000000007448b6f6db7cfffd8650a1f3f08ddad1e114321ea770c9cfe6154882f586edb50100000000000000ffcca343512faeffe1cb3a8a7ce62fa4ee0c7f6a5f3e5ac883482846e132813d010000000000000037483029302a84623f0a8db165fbed905b0a4fc25e7cfb56e975a0e98336a59b010000000000000053b5918f72e73f92f32b578d1b602f0cc554d98bee8c4e131ef0ac7a63399fb40100000000000000178838772f4eb26785673a57c8365e98a21ede2ed8d1ca3aeccbf7ef2631da110100000000000000587473ac474bbd8c99d14bec88d614426944b5c84dbf2912abac7610741560ff01000000000000001935d43843c66ecf76a9f4c4229de9ed7c172f52aa53d1a279f2856a736661b80100000000000000501c3978722a089f663f75c7865626a43d13ce19bd924583e43a46720584ed140100000000000000866fe4ae134938ccf4c5caf01358881c75cfde473b0bb8a2623cc231db2ea3b901000000000000005d202a011f023dfaa6713f16bfd4409dde8bfe594abd59e2be32484c73b97982010000000000000008cb5d0ff7f138698c9fb80a1383155cff65ec7e127c5b3614e2e17963969f100100000000000000a7ae34bd517afa9f7563b73483435a14c56d9901a78f9459566355ec60a7cc8501000000000000006727561447ed474ff4e15645b952a37fa5008d4e694d4853bb55594fa34c4f340100000000000000c05f72a55f91f613b2da541ae27eb6053e80f267c906c135a4ebd848ecfb49db0100000000000000ec295fb809e22c332aa36a57afe05f2c093b2d13e52b0971d8265c5514e4e9690100000000000000efb5f1e4c4ba37f8c159d452d897c607a58518b8355a8454620b3e3ccc3271230100000000000000099a9eb71f9cb1b7d15eae384790b4ec35045a19acea1730ba62f3e7caf31e8b0100000000000000d34560b879f8f4dd8d2fbd4f6d51b9b6f41b76656860646fcef4e1498859a190010000000000000061914b4dba0a1e42e692016cb74943266b257339008ffed4644231a2b48df21a0100000000000000a703a37bd5d93619bfb6ad72c24840b396b2ddb8700db2e1d372a82363ec7d580100000000000000a892342c56149812a43e98c82b6a3dfee7eff384d9b6d832002ea63838f64900010000000000000081bbaa3313b09e3b0ea2817c3e968a33587ec8928539c3f3a6d0e65644612f49010000000000000023f07bcb8dade90cefd08732183d5fe32b89ad8a4f84987b9e4e7e767c2587560100000000000000a81425a86503d911cf060b51310f0bb796f5ce2cb656e524d23f7fac3c9c48000100000000000000c13b603b5fe774d98e59c26fac03f8096ccc42c57d0cbc6a443b4f07a3c077920100000000000000be6b59cb464fadec4e0b22a9f12857ba5cf7a14c4f9551439d36305d582dd7fb0100000000000000f916634f9fd7e54374e30ac6b722ad1793c13cb2d5f2ad38769eaca2f79d414b01000000000000007ba967a2dae0d8839cf44710591db994d18e53b25ec6d0f861da0037c4a4366a0100000000000000222ee6c6a6c62d56cadb4eaad5104d595fe962fbbdd551c81562d3b509212907010000000000000055ca63358082034ddaf76b75f41a396081dd4f39a61eff13f7575e506e10335601000000000000000aadf1b2009026f8f5dd75d532e91dc756fd47572aa0f3c15d26790e6d6b2f27010000000000000050e16d897010823670148ef157d77933bc1721d82c45e80eb73b46b12b5daab601000000000000000228d7fc42b304906518cbd91d73a5384c4893de6cbfe1e7346999df642d3d0001000000000000004f950be5bf61958a0ae6e6a036b85b33ba838de8bd5508b558cbe2602d341168010000000000000082e6b6bf1f275c59fbde0dad91393ae690d5e644d11d23898a9ccfdda025920a010000000000000074b60dfb12745236ba9dc8f925efa21482b50c870c567638ba3240a05fe363d90100000000000000d761043f405069ac01285f1ff258450aac675f08d906b1ae0a1ce54eabcb36d90100000000000000f3e3c09e028fa2d5fdeeba91ab0f427d48fa60a1eacf2b97bd62753c53bd0e5601000000000000000dfbc1b5757e1f0ba348f8af64fb631aaff86cd21fa0529e0bb1fbab250879260100000000000000d791b58285e2c4f17c82a518e099812d2a3f63e1090f1cb2576e2c7695ee24970100000000000000de74612da9080d47be35bf4ded2094e23c1de14477114ddcd7b76b815456ec0c0100000000000000d3b3d9703a265a51a137b9de348587c645a168981ef3e01c9dc482856751b8ef010000000000000003dd543dddd6ad00137ddf94a218bfa19d2f08b4365d696765dc25deef76598b0100000000000000cfb9f7f1fcf903a51af729ed1647aee928630e148990309f9dc9f3b14b114b7601000000000000005216ff912251cd2bcf9db256b3927e737cf909e4b53a375586dad21bb7b907ef0100000000000000d14a779884de1b2fbf079b8e47e8c0edb1c29e282996899a4eab5aaf1f4f41130100000000000000c2344c6fb787621295335b6b5acbab9531199901492d41e13a64dfb2927f83be0100000000000000cb296825e8680ab46fbbda3b1769fb078b9c744084ca9e1c60245836ad93b44101000000000000004bf6037c3820cb7468601051701164948b7f7cbbe1ac8cad97e809c76170dddf010000000000000061f8830d235dc8b50288a606b3570c8335eefac47874c26a45f170cd29a5dd3301000000000000001ec0811cbe4f2ea1e5a714d3ba08c6d7fdec138bcc6406da3c6cd32f1686616d0100000000000000bb6257aa9b0faedd25d9974dee1f3f5dbd5cf41d15e1fca80aec3ea8540c568201000000000000005208fe27477acbc6750d0caa831c0b26801c58eca046a6cf9d4143f85d877e830100000000000000ff5d4070a8a7798cd22dbc7a7e2a909b697e738683e701aeff696af26ebff0720100000000000000f3f09f9f2fb8f99da74f3a846d1b2b030c19b0e52ab1ff78ef65140e5bc2a9ac010000000000000025ebbb2a00126545bbedf00318a78b6e61a0b52c81e30231ff45bd32e311472f01000000000000008b7baa89dbac95969a0042fa876a37eaccfcecd3591c4d7ed0e8051aea814cfa01000000000000004715211e268489d1eeccfbd8a5e67235244322c17127226184448741ae332ba10100000000000000ddac76c2a61c9aef4a9b3247aa0953187533f346466f02840235662440d2945c0100000000000000055c25dcc9cf8a08ad007ed9c8afb0ba53cebd129a20f194d272535ca9fa06490100000000000000cc8db7467349129a20ab4ba7e705044216651c0eba9d39f1054849edbcd677af01000000000000004df6e4d7da2c11ddb9153c714699f9ab625bbcd5e8e38f1cdeee567dc04abc610100000000000000982d9e3cc8ef3f8d99638b6f9df32c82356e1cd88f123d1e586a604d1d4b0cb401000000000000008c066bcef24248ee0bea6f9487c522569ab887542df4c07d37f1cb578064503e01000000000000009cfeed14dd2f96550a0e7edebd9c9a8c8b1d8f7efdd1abca01987654239f3c860100000000000000736925c31654df870fbc29437c9b2a488ac3262e5d80798534ad00c43a61e5470100000000000000e08ce24248f3f8c0cdd313a5d46e6d491fccf6711788b6aca2de82f6700ced5101000000000000008404cabeb0674765bb77af690fa838ba28fa2045d602994a89f07680f4851c83010000000000000006b9e740c0a0e1f8fd31717438d5918ed8680eaccb70fdc9511931ce0d164ae50100000000000000b8cf76a8082d518016ea5588be57b64e156ed23b0f72248975522c23d15ef16101000000000000002565e04c6e0b665fac87f8238bee74837f8f621ed63409f3838d263603400a980100000000000000373b26b330a41547971874dd81c2cbbf8b7e3eda05b861c57205ad7e8c15bbcf0100000000000000362589a96b0adb6b0d48e51e0870986ff75719ac8f348fc7b906dabf616531090100000000000000620c78305072857b43dadced80ebc057dbfc82b58c14c7b63372ef02140867650100000000000000546ce2099b3863d2d75324d5866bfd5324d8ee4701a99dd53528f8a8c898ca4801000000000000004dc2e72680dbf0156818114fa34d3591f8e6948df25a128e191190c66f6ac35301000000000000001ebe41ca4cd399901ffe5f6f52642630820500e4a96cbef4c80c560cae38d2c601000000000000005d50d6099c7c88f367568fa473b44785acccd030251627cb371de16e5fa704260100000000000000301b983e5e1320b7c9ff0f2525121b9f3007f68c273ba8ff662b7244f1f95f210100000000000000f5e2c973d4ccbdd36d8ed4e3dae75d3b50002cc1c74eb0a1fe29ef1ef8e3f0cc01000000000000000349eedde437fbbe2d174500d1de344a9a906946d311aeb499f46debf70158600100000000000000258f23d60623fcb1d699a35f79776a9e81e979150ba5098dcc8e3a69a407ff9a0100000000000000b1f748c87b12edf7242b4719cfe68e6761acaa4329beee538d6ff740941d3cd30100000000000000eedd48a4e6e202e92845fc2fb09da5e1eb2b839e48227f2531142e5fdeb44b2b010000000000000014a3f3f45d0bc1352f8665d1e24cb13d72d95b48c595913cc985dcf58e63c123010000000000000072341ca1eb3a0fd4e790318b51ace114315573d5355c9d5336e39382ba0642560100000000000000a79cd2241bd68004641baac25c1900da3a9e6d83101aea3ef2a58d78c657272f0100000000000000b14911cb101f45b88c437a36bd82a5f8641b1c55052060ea46ea2baea570e8bf0100000000000000b66e24ea84d5e02a7b2b58e20bbf17a0f2a19c4654bf8b07669ba3b9fc4a468101000000000000003c1dcee818434058b7de26ee874ade21bd1149185d6dcba1f67048b931ec3dda01000000000000000d8e0ceb31d11634ff50f20c90d57239a9307602e221baa190c784b144a7eb980100000000000000d1f73fb97dc0b0c3244c8d879f134dc90f614eb30505e8f27eff58e558d221f50100000000000000c91199db47b7591bf1a928534cdbd3e5979a0d09d6a464f2a9607ec444bd8a9701000000000000000428e3ccdba17d779ffba05c9ec7a6264187d13bf89b6009e97200474ad3439701000000000000004c43a374e6b3e6f7d6c5a6b8518ae0d0d232a1c46d63af8fbc800045a14cbe930100000000000000c34f62968a87b2e4a9340a75004029dff5777a020f60fb287f08038491881f220100000000000000f54bb82d58c665ce3289b8765c40e60d84f74da663c164c38e16784d5c142b2c0100000000000000607737116e62ba11852c68515933afb8165f3174d594eef6d01dd7eaddb60ec30100000000000000bbff79a9b92ef586f0be053cc01639b9a335ad8e2910146d070997e285007d830100000000000000ccc84b255e5e73b971f2e71d1903b5ef9bd6d0965ff3ce29c517c875bd7ab65701000000000000001babed13d56d28fdb937b07bce846689584099575382c273f7e425f822c8159f0100000000000000bdee8597e248688fddc627ad9c95cbebf7d3b5f248b9a742aa2d8e761fa365050100000000000000a128a73c5eaa1803618a75bc368c38e4c5cd40999cb72d615b8af1d30cb8cf1d010000000000000020270811c3dc453f37b27d958ef7ad7dd4c7f217c83f94bd0ecd84c60018a866010000000000000020869a63e7a343094ad0b4ffaa3d83344ffec8c7fb9b177008f78d17eda7dcbf0100000000000000d64083c00178b8dd224afade9792fed8076031bdfe9efc5b8128e6372a9261e201000000000000001c6842f07fb07b318a8d00ce6258844374f8e894853ae5fd4a85c867d3fc32e30100000000000000417e120dbfd0297d59458b48407b62570987f1e907dd6dfa9a20bfe64eb489d80100000000000000443bd12fcb944a0e19b2f76ddd066a713a99d2dd3530a5f39275300d11ac96590100000000000000be724139e9bdd099b70f7edab7d1acf0d05fa1a4ca212f5e2958d31f4272dcda0100000000000000ee40b85aa515fdbe6e559f815edc7ec1e321e0d152dd54258382ba31b54e447a0100000000000000134cf4720486824c6a27fa7892c8d82e805653ba1d98480267ec284a76b792c20100000000000000f701f07489e11959ace47ce003808f4248a6c64b35f51f0551f4a69aa0572e2f0100000000000000c2eb94269c5e5d2ab9a1a300387358679640763b053aca99ba5c1c9083ee717f0100000000000000316bafdefb60951da2738d6c9c2ef1866d139b34b5eab6944d6bae754dd3fb110100000000000000b65475766e6229c87ff34263f5ca58525ab133962bc599ca0eab096ff296f4e60100000000000000ebb1834a568ea7653bc66f394937a0aa4f2f617118d2161e2c11c0d7d2febb9d0100000000000000c1b58624231cd77b450e0be515a576e8863cf47822e19b1bdf89bccfe65d41410100000000000000b6d7ac98d6667fe8f4a186ef12a66b017df05a54e11b45d3f2967cb3d6b6827f010000000000000042f47dad5949be7b7b8f81faaec17b1b53465b01b9f8f81e6a45f2fc74e12daf01000000000000007a1291795805dbe300425311ae50ed698450b1912b62e5b5a3264c68bfa970760100000000000000e0df5b2f299314d2d419b46d15c3c8a739182d91c3d4b98cd16c013c3a25c04b01000000000000000150276c1b3d28d42630801c1d4a738ae723887d9286e40ba48d10b0752f7dcc010000000000000098a6defcfeb3dfca36ec46eb373734627a2c395cdd2d886046a11788ed6467af0100000000000000853ba986f8785e8fc1a2ae2fb86f17cc91886d931182ccb8d148379a35cbf02701000000000000009bbc024bfe4f072b94735afda064dc3c7da2b4bc0c50cfad44722543583a372e0100000000000000496826b538d97906e14d417b48598d7d591a483ab5f4c6786cd0b96239c2f4cf0100000000000000c4b54db8b5dc6346d0367c6c69a191cc826a90643d93c6230763a9e92806a33f0100000000000000c7009be830fe78c42f12f0753923131d16300bac230650001636b6a546cf0aa30100000000000000ed3f97f83ee7799c4aeba9f40bd18134c862c1a30875fc1e038cd27bae3a739a0100000000000000348e8bacc2d40191a6a00e137c745a422ff8fb03148d2ff9cad75efbb7a670140100000000000000efb31c5039e45fda750af5d2ea31b3210a407b168adec8f98db1f3dbc4cd94380100000000000000d227434a77cd7b7127c039eb9995aeb025a242c36ca7116372c7c8fe5bc921b501000000000000005c0ce76a2fbef3a0df89ae8c2bedac4e288c3679c33701980624c9ffcca9103b0100000000000000510a0c61dca3e1044d3540c08272054462c6353aac4dc06cda265753b126b38501000000000000002ff9330a8c344ad3adf4d97db014a2d0891d4dd69f5c8369dad3e0b25566173e0100000000000000761ce3eef4bd0d15601aef70728f54ca72a9859e90841c3d02d5060201671878010000000000000000132d9e682cf8d45ce8efd4bef165a26da5d1349ea1fe9f51abd6dc7622720201000000000000001262625cc59c0e4b7548904c31a02231a601305881a231d4dea45eec6cbbbdcc0100000000000000f9689a7ea3f40ee757bd99cf1ba166ec2211f1999dd4fec28c44a6f69e253b6c0100000000000000c3576342cbf99792896ee5329b04ff2eee2fc2bb6d53c5c03d52c8957ee793fb01000000000000006ad4bc289673029ab44f3045eb6fdd3589d05e0e5fd76ee017f650a662f898fb0100000000000000a82f563264d1892dd46873205d03c098d8b03f53e21c797839737e4e5f66a87e010000000000000004655b8a8e7f4e3532b7aa5e461d25ca6d5af49e0557da59654d15fe1d1eda4c010000000000000059dadf17dc0f84c1c334e6a815a04bdfcd0988a3f3bcb713c66ae29e17276cc60100000000000000297dc7cf28b3d40a42c5e8faac876bf7227c670e6e031dd0e0537f4fb70e6fbe010000000000000043601ae31cf5b03cb49395dda13809f7398d8670ee4d2172b14a1ab05986ac3b0100000000000000e7f57bd0bc756f24574e3a77c90616adb393e9d4ffceb2c63df19f605cb6a02401000000000000001773a9984bd619d4469608aeeb38a98e688474cf0870a45ced8d297ba56275be0100000000000000a5f788e86ee2d311357b7aa4a128f063fa4ee36958baf10304c10bde7421aa2c0100000000000000290321d793b7dcb12ad148c2438bb60821bd938b7e9164a0c3d0fc82987f8b6301000000000000002ef11bc5ce1e7b53f788ba01ba581b9171ef36449719ff3eb20973342a4a82850100000000000000ab45f730dd495f657b61b2777091fa8cd11b5a626bea2b514e5e61180210379701000000000000003bb30832d06cdd3e081afef0cf2b7770bfe81dc58081d1886443e4e4547da8a101000000000000002832b59000d2027d2bf57fdb40da04bd8aac1498923397517181cc487a92815201000000000000000cd7067f96a2d63fa72065302432f48690485fa5f47c9afab17123e0482785230100000000000000f6f23ae9bb4c269a5959d51f9173270ddefcc354b63de77b672bce58cabe60c801000000000000007a1df073f4a474faa4616f9a6f5d93cedf25716cbe8d05a08afafb570b6e6f9501000000000000002ada479e1fde7211de15900ed29035f6f07506cdbadc4c232aab96d62006b9de0100000000000000be223d49fdccd102646c9b0d62130fbc8e7f0324d55a3eabaaffb5ed1616795a010000000000000062a91ffda8611ffce3edeb628ea6d3b8b12e5b2448beda6da8334e77a9ecbdd7010000000000000071893ca83ebe6ee06c3eb10dcbfaf70d8267959f6159b4ca36929a69604cadbc0100000000000000dea69c3badff9b8d7571cb6c538cd099544da7460a19e1b8651c5c530a6dd53c01000000000000007e05f9592cac9232e17c222d076c6abdb6f5f5b8175d5b3858ffdae0324b411f01000000000000001889f1b031fa7d64c4b480a17cd2941be2c02681bca397c93607091f37bf5ee1010000000000000005062bede97a45c6e1c6b593675ee07ce969fae45136cc2b2afc6e705a77f4700100000000000000dc6e03f650e4304ca8d1598dde8d4faf45891987bfc49ef785ace47c4c0b5573010000000000000026cdfb88461d7125f438c599e062799219b385bacca93f3cdbe5418c9d4d499301000000000000000f19c3ed807ad5f2b7546f5e6c5e9bb934835d54ed1f4f989540b86a2ca02b55010000000000000034b7b6219ad085de72069d3eea14c419a637ae610ab55c6389aa10b2c22a5ec901000000000000000e7bc96895730726225e47e31c742fd44d3936f31ecd32658c694fc11df25224010000000000000084c5f583e29d8aa4b794bf3142cca87f1f82cf83c0a36e5bdf97b363299336ac0100000000000000b426ef68c50245a003dd068c5c086fc9012c08a7f9ec53fbf7df4318261c8c2c0100000000000000e7931a825260ba7d4fdb5f4990d39a71e2a8b215a776ebf770102ca772f103a3010000000000000095fde7b91441fae9d2a6360d30228392519293be5e78cf3305667595cb15e566010000000000000047ede3eca5f6c8f0a51f2d36d7d1c236aab07a8b2aaa6ab08c8ccf8d87ce3dd10100000000000000a5d172126aadfe80d2b711776674d61df5a1cd1a0129761fb2d2de58ed9d48a00100000000000000e7eb7de26e0e24fd528fbbcecf837f26579784dfd4db512c9237e2811139738701000000000000009f677785cfbf44140bdf38770f3d8076f222aa1c9997842d89d580b0f256198f01000000000000009a0ea02dca493accceb975732f31c9d249d4c90ff1ca0bd86cbe00f1728146b401000000000000003adbd2d5abdb70ef56c2d8bd4a7c0d67882a1c2050a856937491e98496a496fe0100000000000000716a181407939b3ea68289e09265d3b9d8a8f21ba7d9f50d8ef8a86fa3c0fd0301000000000000002b07c366c1ed899a2ac9722b76e092828714a8177368e51ca05ec05c565866b301000000000000008e3d1c8c0261e193e87403c8959919ef035ba39175d3ba22f31190303601412e0100000000000000e2cbfcc26562b49e656aed7d837a26fe0f9802db088b10330227b6147e150012010000000000000094416582fe359e0a310da59bf93df8ff9665b89071d4977a9a9f3390b75c0c450100000000000000ac5230e4338aa51c44ab6a0fb903e6fd914fd029dab8f7ca447be54ceba749340100000000000000ee47e05a65a6174fe68fe813b92c23422c44e3e9109fea3724b2c875b91bb6180100000000000000a76b32c8c28cce206ddf70ff3ad591ed01a0067f9f9baa77f9052ce938d359c701000000000000003a4bfd825ccd308def4a61bac80c579db42b02ea5f1a0768656a326e83a0dd8801000000000000007fab4769c41af85b9de8e784d3b1cda093fc0a8dffcdff21e914c62f131c77580100000000000000d2f1b3b5f7eb1b0d8328911d9ec920327d7a30729e80c1238f86dfe27c4fa3470100000000000000841584e602ab975c936fe7c2025fcea2b5a0061e839b1ad96528942b33d0974b01000000000000001a6cdb9906d5861bf1101aa5a8816a25be63b460843c13065760d0e9bd5a2f600100000000000000f33b53556f28f27d250585317cd57a18f37c5d5f2b3c1bd00a0c91ea54f1636f0100000000000000e056900cabddb471de9e1846d7efdddd8b5ad400b02fc54b4402ba725c78bf9a0100000000000000e3686e9ce1551a491d0b0a1a1c7f66d8f1910d33d5e6f4b873807e37c96c4fb801000000000000001a02012d8a476cc43998b10fd5c8f5174ba2a2eedebf27fab9831c0d812b052801000000000000001b512304b9b7ad1f18a8d02eb7e3525b9818e1e451459a0fb318ad39398694f8010000000000000098763eb72b3f7dbb7a793bd1d4367af5f072ff45a1a6eae0e002e1eaa24c5d55010000000000000079f73931b31ce353119fb4063412e844b16cb3eb92e592ebd822a8c21303554801000000000000006b637efb1db7c91b689a3dc0a5e42b0f528e5f31d55b1c264452dda3aa2d83d901000000000000002929dacc53614cea1848e7ba20fdeed7cb0bd81571aa72dfb63dfc84d3965d2b010000000000000030afa9ef79458f844a27a3881655b6eafb90b3912737f1bcddb95e78eb098c1d010000000000000031a46e639e57d1a11119b17f76617a35b3606d206fb5c3e87710f464f7a57de50100000000000000ed25d7114e2aef2f0e57dc2be1401a4994d8aaafb30223162634a512604a236601000000000000005207000000000000000122d12e0100491d00000000000000002904050001000000000000002a0d050002000000000000002f16050003000000000000008e1f05000400000000000000ee28050005000000000000004d32050006000000000000009d3b05000700000000000000fd44050008000000000000005c4e05000900000000000000b75705000a00000000000000176105000b00000000000000766a05000c00000000000000d67305000d00000000000000357d05000e00000000000000958605000f00000000000000f58f0500100000000000000055990500110000000000000095a205001200000000000000d8ab050013000000000000000db50500140000000000000024da05001500000000000000aaec05001600000000000000f4f5050017000000000000003bff050018000000000000008b0806001900000000000000992406001a00000000000000f92d06001b000000000000000d4a06001c00000000000000685306001d00000000000000b65c06001e00000000000000f76506001f00000000000000308b060020000000000000007b940600210000000000000025a70600220000000000000033c3060023000000000000007fcc06002400000000000000c3d50600250000000000000011df060026000000000000005ae806002700000000000000a0f106002800000000000000410407002900000000000000880d07002a000000000000001b3c07002b00000000000000764507002c00000000000000357407002d00000000000000239907002e000000000000006fa207002f00000000000000c3ab070030000000000000006abe07003100000000000000bdc7070032000000000000000fd107003300000000000000b2e3070034000000000000000aed07003500000000000000971b080036000000000000009d24080037000000000000009c4008003800000000000000255308003900000000000000735c08003a000000000000000c6f08003b00000000000000048b08003c00000000000000589408003d00000000000000d3c208003e00000000000000e4de08003f000000000000003fe808004000000000000000f7fa08004100000000000000aa0d09004200000000000000153309004300000000000000fc6a090044000000000000003e74090045000000000000009a7d0900460000000000000000a30900470000000000000014db0900480000000000000020130a004900000000000000791c0a004a00000000000000364b0a004b0000000000000043830a004c00000000000000e5950a004d0000000000000045bb0a004e0000000000000059f30a004f000000000000000e060b005000000000000000812b0b005100000000000000dc340b005200000000000000ef500b005300000000000000a3630b005400000000000000b69b0b005500000000000000c7d30b005600000000000000dd0b0c005700000000000000f3430c005800000000000000087c0c00590000000000000052b30c005a0000000000000060eb0c005b00000000000000baf40c005c0000000000000072230d005d00000000000000805b0d005e000000000000007e930d005f000000000000007ccb0d00600000000000000076030e006100000000000000793b0e00620000000000000088730e00630000000000000092ab0e00640000000000000083e30e006500000000000000731b0f00660000000000000079530f006700000000000000748b0f0068000000000000001fc30f006900000000000000d0fa0f006a00000000000000633210006b00000000000000826a10006c0000000000000028a210006d0000000000000005b310006e0000000000000055d810006f000000000000004810110070000000000000006548110071000000000000008e8011007200000000000000bfb811007300000000000000bbf011007400000000000000e828120075000000000000001561120076000000000000003b991200770000000000000058d112007800000000000000770913007900000000000000944113007a00000000000000c07913007b00000000000000e7b113007c000000000000000cea13007d0000000000000067f313007e00000000000000d31814007f000000000000002e22140080000000000000008c2b14008100000000000000545a14008200000000000000ad63140083000000000000000e89140084000000000000006892140085000000000000008dca14008600000000000000b00215008700000000000000d03a15008800000000000000f3721500890000000000000015ab15008a000000000000003be315008b000000000000005d1b16008c00000000000000855316008d00000000000000b18b16008e00000000000000d3c316008f00000000000000e9fb16009000000000000000073417009100000000000000bf4617009200000000000000286c1700930000000000000029a41700940000000000000041dc17009500000000000000591418009600000000000000bf3918009700000000000000704c18009800000000000000948418009900000000000000f28d18009a00000000000000bcbc18009b00000000000000e4f418009c000000000000000b2d19009d000000000000002c6519009e00000000000000896e19009f00000000000000519d1900a00000000000000075d51900a100000000000000920d1a00a200000000000000ec161a00a300000000000000b6451a00a400000000000000887d1a00a50000000000000077b51a00a600000000000000cdbe1a00a70000000000000070ed1a00a80000000000000083091b00a9000000000000004e251b00aa00000000000000fe371b00ab00000000000000065d1b00ac000000000000005f661b00ad00000000000000bd6f1b00ae00000000000000de941b00af00000000000000fecc1b00b0000000000000001f041c00b1000000000000000c321c00b2000000000000002f3b1c00b3000000000000002e721c00b4000000000000000ca01c00b50000000000000044a91c00b60000000000000022e11c00b70000000000000044191d00b8000000000000000c481d00b9000000000000006b511d00ba000000000000008b891d00bb00000000000000a5c11d00bc0000000000000053f91d00bd00000000000000ff301e00be00000000000000054d1e00bf0000000000000002691e00c000000000000000d1a01e00c100000000000000c5d81e00c200000000000000cf101f00c30000000000000083481f00c400000000000000af801f00c500000000000000d0b81f00c600000000000000f0f01f00c7000000000000001b292000c80000000000000039612000c90000000000000054992000ca000000000000004fd12000cb000000000000004c092100cc00000000000000031c2100cd000000000000006d412100ce00000000000000cc4a2100cf0000000000000098792100d000000000000000c4b12100d100000000000000eee92100d20000000000000011222200d300000000000000325a2200d40000000000000055922200d50000000000000075ca2200d6000000000000008f022300d700000000000000b13a2300d800000000000000cd722300d90000000000000078852300da00000000000000ce8e2300db00000000000000bdaa2300dc00000000000000abe22300dd0000000000000012112400de00000000000000501a2400df0000000000000045512400e000000000000000a1882400e1000000000000005fc02400e20000000000000013f82400e30000000000000007302500e40000000000000013682500e500000000000000c37a2500e600000000000000a8962500e700000000000000fb9f2500e80000000000000000d82500e90000000000000019102600ea000000000000002b482600eb0000000000000028802600ec000000000000002eb82600ed0000000000000044d42600ee0000000000000058f02600ef00000000000000b3f92600f00000000000000065282700f10000000000000057602700f20000000000000064982700f3000000000000008dd02700f400000000000000a7ec2700f500000000000000b9082800f600000000000000e0402800f700000000000000f6782800f80000000000000019b12800f90000000000000040e92800fa000000000000006c212900fb00000000000000a0592900fc00000000000000107f2900fd00000000000000bc912900fe00000000000000eac92900ff00000000000000fd012a000001000000000000ff1d2a0001010000000000000c3a2a0002010000000000002b722a00030100000000000005aa2a000401000000000000fce12a0005010000000000004ceb2a000601000000000000e0fd2a000701000000000000c3192b000801000000000000be512b0009010000000000000a772b000a01000000000000ae892b000b01000000000000b0a52b000c01000000000000abc12b000d010000000000009bf92b000e0100000000000093312c000f0100000000000087692c00100100000000000075a12c00110100000000000074d92c00120100000000000089112d00130100000000000099492d001401000000000000b0812d001501000000000000c3b92d001601000000000000d1f12d001701000000000000d6292e001801000000000000e9612e001901000000000000ea992e001a01000000000000efd12e001b01000000000000f8092f001c01000000000000f0412f001d01000000000000e9792f001e0100000000000036832f001f01000000000000b2b12f002001000000000000a9cd2f00210100000000000094e92f0022010000000000007121300023010000000000003b5930002401000000000000089130002501000000000000599a30002601000000000000f6c830002701000000000000e30031002801000000000000c03831002901000000000000a17031002a01000000000000f27931002b010000000000007fa831002c010000000000005de031002d01000000000000aae931002e01000000000000441832002f01000000000000295032003001000000000000fe8732003101000000000000aa9a3200320100000000000010c0320033010000000000003af8320034010000000000005f303300350100000000000059683300360100000000000078a0330037010000000000009bd833003801000000000000cb1034003901000000000000f44834003a010000000000001c8134003b0100000000000044b934003c0100000000000055f134003d010000000000009dfa34003e01000000000000302935003f01000000000000c6573500400100000000000023613500410100000000000053993500420100000000000080d135004301000000000000560036004401000000000000b10936004501000000000000ce4136004601000000000000037a3600470100000000000031b2360048010000000000005fea360049010000000000007b2237004a01000000000000995a37004b01000000000000f56337004c01000000000000c69237004d01000000000000feca37004e01000000000000340338004f01000000000000683b380050010000000000009e7338005101000000000000c9ab38005201000000000000dcc7380053010000000000003cd138005401000000000000f8e338005501000000000000b0f6380056010000000000001c1c390057010000000000007a2539005801000000000000da2e39005901000000000000525439005a01000000000000878c39005b01000000000000bbc439005c01000000000000f3fc39005d0100000000000028353a005e010000000000005f6d3a005f0100000000000098a53a006001000000000000cedd3a0061010000000000000c163b006201000000000000404e3b00630100000000000019853b006401000000000000608e3b006501000000000000b8973b0066010000000000000fa13b006701000000000000a7b33b006801000000000000fabc3b00690100000000000049c63b006a010000000000009ccf3b006b01000000000000eed83b006c01000000000000c1f43b006d0100000000000014fe3b006e0100000000000066073c006f01000000000000b7103c0070010000000000009e2c3c007101000000000000ee353c00720100000000000094483c007301000000000000e0513c0074010000000000007c643c0075010000000000001d773c0076010000000000004b9c3c00770100000000000010d43c007801000000000000d80b3d0079010000000000001a153d007a0100000000000053433d007b01000000000000ea553d007c01000000000000225f3d007d0100000000000072683d007e01000000000000b4713d007f01000000000000fb7a3d0080010000000000007a8d3d008101000000000000b8963d00820100000000000006a03d00830100000000000088b23d008401000000000000c8bb3d0085010000000000000bc53d0086010000000000001dea3d008701000000000000e9053e008801000000000000b5213e0089010000000000003b343e008a01000000000000843d3e008b010000000000005e593e008c010000000000001f913e008d0100000000000065c83e008e010000000000006bed3e008f01000000000000a9f63e009001000000000000f6ff3e009101000000000000c1373f0092010000000000005c4a3f0093010000000000003b663f009401000000000000856f3f009501000000000000cf783f0096010000000000003ea73f009701000000000000ccde3f0098010000000000008516400099010000000000001e2940009a010000000000006e4e40009b01000000000000c35740009c010000000000009b8640009d01000000000000cebe40009e0100000000000001f740009f01000000000000372f4100a00100000000000097384100a10100000000000070674100a201000000000000a99f4100a30100000000000065b24100a401000000000000ddd74100a50100000000000096ea4100a6010000000000000b104200a70100000000000044484200a8010000000000009c514200a9010000000000003b804200aa0100000000000051b84200ab010000000000006fd44200ac010000000000005ef04200ad01000000000000b9f94200ae010000000000006a284300af0100000000000078604300b00100000000000077984300b101000000000000abd04300b20100000000000064e34300b30100000000000072ff4300b401000000000000d2084400b50100000000000008414400b6010000000000002e794400b7010000000000005eb14400b8010000000000007de94400b9010000000000009e214500ba010000000000005d344500bb01000000000000d0594500bc0100000000000006924500bd010000000000001aca4500be010000000000004a024600bf01000000000000603a4600c00100000000000084724600c101000000000000abaa4600c20100000000000047bd4600c3010000000000009ec64600c401000000000000a0e24600c5010000000000005df54600c601000000000000bf1a4700c701000000000000d1524700c8010000000000007f814700c901000000000000dd8a4700ca0100000000000039944700cb01000000000000f2c24700cc0100000000000010fb4700cd01000000000000d5294800ce010000000000002c334800cf01000000000000f9614800d001000000000000596b4800d10100000000000078874800d2010000000000008da34800d301000000000000aadb4800d401000000000000c6134900d501000000000000eb4b4900d601000000000000e7834900d701000000000000f9bb4900d801000000000000b6ce4900d9010000000000001bf44900da010000000000004a2c4a00db0100000000000066644a00dc010000000000002f7d4a00dd0100000000000019994a00de01000000000000c0ab4a00df01000000000000aec74a00e001000000000000fed04a00e101000000000000bbff4a00e20100000000000019094b00e301000000000000902e4b00e40100000000000041414b00e50100000000000010704b00e6010000000000006e794b00e7010000000000002b8c4b00e80100000000000094b14b00e901000000000000a4e94b00ea01000000000000d4214c00eb01000000000000d7594c00ec01000000000000e8914c00ed0100000000000004ae4c00ee01000000000000ebc94c00ef0100000000000014024d00f001000000000000fe394d00f1010000000000000a724d00f201000000000000667b4d00f30100000000000013aa4d00f40100000000000031c64d00f50100000000000037e24d00f6010000000000004afe4d00f7010000000000002c1a4e00f801000000000000ea2c4e00f90100000000000049364e00fa010000000000004e524e00fb01000000000000628a4e00fc0100000000000079a64e00fd010000000000001ab94e00fe0100000000000079c24e00ff0100000000000094de4e000002000000000000aafa4e00010200000000000059324f00020200000000000004654f000302000000000000ff764f0004020000000000000d804f0005020000000000007e924f000602000000000000c29b4f000702000000000000f4d34f000802000000000000160c50000902000000000000504450000a02000000000000877c50000b02000000000000b6b450000c02000000000000e7ec50000d0200000000000046f650000e02000000000000b61b51000f020000000000001625510010020000000000004f5d510011020000000000000f7051001202000000000000889551001302000000000000b5cd5100140200000000000014d751001502000000000000e605520016020000000000001f3e5200170200000000000053765200180200000000000089ae52001902000000000000e8b752001a02000000000000b7e652001b0200000000000074f952001c02000000000000e81e53001d020000000000001a5753001e02000000000000558f53001f020000000000008ac753002002000000000000b9ff53002102000000000000f13754002202000000000000277054002302000000000000418c54002402000000000000d1a354002502000000000000d9c8540026020000000000007edb54002702000000000000b81355002802000000000000e34b55002902000000000000c58355002a02000000000000d6bb55002b0200000000000007f455002c02000000000000c30656002d020000000000002c2c56002e020000000000005d6456002f020000000000008f9c56003002000000000000c9d456003102000000000000070d570032020000000000004345570033020000000000007a7d570034020000000000007d99570035020000000000009ab557003602000000000000b4ed57003702000000000000f225580038020000000000002f5e580039020000000000006b9658003a02000000000000a6ce58003b02000000000000e30659003c02000000000000183f59003d02000000000000517759003e02000000000000ad8059003f020000000000008baf59004002000000000000e9b859004102000000000000c5e75900420200000000000002205a0043020000000000003f585a0044020000000000007c905a004502000000000000bcc85a004602000000000000f1005b004702000000000000111d5b00480200000000000030395b0049020000000000006f715b004a02000000000000aca95b004b02000000000000e9e15b004c02000000000000251a5c004d0200000000000060525c004e020000000000009f8a5c004f02000000000000dbc25c00500200000000000019fb5c00510200000000000058335d005202000000000000956b5d005302000000000000c7a35d005402000000000000f7db5d00550200000000000031145e0056020000000000006f4c5e005702000000000000a7845e005802000000000000e0bc5e0059020000000000003fc65e005a020000000000001cf55e005b02000000000000582d5f005c0200000000000093655f005d02000000000000cf9d5f005e0200000000000005d65f005f02000000000000440e600060020000000000008346600061020000000000006a7e6000620200000000000056b46000630200000000000000ec60006402000000000000a72361006502000000000000e25b61006602000000000000f293610067020000000000001bcc61006802000000000000dade61006902000000000000590462006a02000000000000963c62006b02000000000000cc7462006c020000000000008c8762006d02000000000000ffac62006e020000000000003ae562006f02000000000000731d63007002000000000000b05563007102000000000000e98d630072020000000000001dc6630073020000000000005dfe63007402000000000000993664007502000000000000d86e6400760200000000000017a76400770200000000000051df640078020000000000008a1765007902000000000000c34f65007a02000000000000018865007b020000000000003ec065007c020000000000007af865007d02000000000000b63066007e02000000000000f06866007f0200000000000004a16600800200000000000041d966008102000000000000711167008202000000000000ac4967008302000000000000de8167008402000000000000f8b967008502000000000000b8cc6700860200000000000035f2670087020000000000006e2a680088020000000000001c3d680089020000000000007f6268008a02000000000000ba9a68008b02000000000000f3d268008c02000000000000310b69008d02000000000000704369008e02000000000000ae7b69008f02000000000000eeb3690090020000000000002bec6900910200000000000065246a009202000000000000a45c6a009302000000000000e0946a0094020000000000001dcd6a009502000000000000dbdf6a00960200000000000059056b00970200000000000018186b009802000000000000923d6b009902000000000000b0756b009a02000000000000e6ad6b009b0200000000000021e66b009c020000000000005e1e6c009d0200000000000096566c009e02000000000000d28e6c009f020000000000000ac76c00a00200000000000047ff6c00a10200000000000077376d00a202000000000000876f6d00a3020000000000000fa76d00a40200000000000059dc6d00a50200000000000022146e00a602000000000000464c6e00a70200000000000071846e00a802000000000000eea96e00a902000000000000aabc6e00aa0200000000000085eb6e00ab02000000000000e4f46e00ac020000000000001c2d6f00ad02000000000000da3f6f00ae0200000000000053656f00af020000000000008c9d6f00b002000000000000c4d56f00b102000000000000d90d7000b202000000000000d7457000b302000000000000f67d7000b402000000000000deb57000b502000000000000b2ed7000b602000000000000a9257100b702000000000000975d7100b802000000000000338c7100b9020000000000007e957100ba0200000000000068b17100bb0200000000000050cd7100bc020000000000001c057200bd02000000000000610e7200be02000000000000c13c7200bf020000000000006b747200c0020000000000005aac7200c10200000000000032e47200c202000000000000dcf67200c302000000000000321c7300c4020000000000002b547300c5020000000000007d8b7300c60200000000000020c37300c702000000000000cefa7300c8020000000000003c327400c9020000000000009b697400ca02000000000000eda07400cb0200000000000056d87400cc0200000000000090107500cd02000000000000ad2c7500ce020000000000000b367500cf02000000000000c7487500d002000000000000fe807500d10200000000000039b97500d20200000000000073f17500d30200000000000030047600d4020000000000004b207600d502000000000000a9297600d60200000000000006337600d702000000000000d3617600d80200000000000090747600d902000000000000089a7600da020000000000002fd27600db020000000000001a0a7700dc0200000000000022427700dd02000000000000007a7700de02000000000000d2b17700df02000000000000f8e97700e0020000000000002b227800e102000000000000635a7800e202000000000000a0927800e302000000000000daca7800e40200000000000011037900e502000000000000483b7900e60200000000000085737900e702000000000000b1ab7900e802000000000000dae37900e902000000000000121c7a00ea0200000000000049547a00eb02000000000000878c7a00ec02000000000000bfc47a00ed02000000000000edfc7a00ee0200000000000026357b00ef02000000000000606d7b00f0020000000000009da57b00f102000000000000cddd7b00f20200000000000006167c00f3020000000000003f4e7c00f402000000000000fb607c00f50200000000000077867c00f602000000000000b4be7c00f70200000000000014c87c00f802000000000000e0f67c00f9020000000000001b2f7d00fa0200000000000058677d00fb02000000000000959f7d00fc02000000000000d2d77d00fd02000000000000ec0f7e00fe0200000000000025487e00ff020000000000005f807e0000030000000000009ab87e000103000000000000d3f07e000203000000000000ee0c7f0003030000000000000a297f000403000000000000c53b7f00050300000000000043617f0006030000000000007b997f000703000000000000b9d17f000803000000000000f20980000903000000000000284280000a030000000000005e7a80000b0300000000000099b280000c03000000000000d2ea80000d03000000000000082381000e030000000000003e5b81000f030000000000007b9381001003000000000000b8cb81001103000000000000f30382001203000000000000313c82001303000000000000697482001403000000000000a6ac82001503000000000000c4c882001603000000000000e0e482001703000000000000ff00830018030000000000001e1d83001903000000000000dd2f83001a030000000000005b5583001b03000000000000988d83001c03000000000000d5c583001d0300000000000010fe83001e030000000000004e3684001f03000000000000826e84002003000000000000bba684002103000000000000f5de840022030000000000006f0485002303000000000000cc0d850024030000000000002c1785002503000000000000ea2985002603000000000000634f850027030000000000007e6b850028030000000000009a878500290300000000000017ad85002a03000000000000d2bf85002b0300000000000031c985002c030000000000000ef885002d030000000000004a3086002e03000000000000866886002f03000000000000bea086003003000000000000f2d8860031030000000000002a1187003203000000000000871a870033030000000000006449870034030000000000001d5c87003503000000000000998187003603000000000000cfb987003703000000000000eed5870038030000000000000cf2870039030000000000004a2a88003a03000000000000a83388003b03000000000000826288003c03000000000000b69a88003d03000000000000efd288003e030000000000002d0b89003f030000000000004d27890040030000000000006c4389004103000000000000ab7b89004203000000000000eab38900430300000000000028ec8900440300000000000068248a004503000000000000a05c8a004603000000000000b4948a004703000000000000f4cc8a00480300000000000030058b0049030000000000006f3d8b004a030000000000008e598b004b03000000000000ae758b004c03000000000000ecad8b004d0300000000000028e68b004e03000000000000331e8c004f030000000000004f568c0050030000000000008e8e8c005103000000000000c7c68c00520300000000000005ff8c00530300000000000041378d005403000000000000746f8d005503000000000000a4a78d00560300000000000064ba8d005703000000000000e4df8d0058030000000000000a188e00590300000000000023508e005a0300000000000027888e005b03000000000000d89a8e005c0300000000000043c08e005d0300000000000082f88e005e03000000000000c0308f005f03000000000000ff688f0060030000000000001ba18f00610300000000000059d98f006203000000000000981190006303000000000000d64990006403000000000000f56590006503000000000000158290006603000000000000758b9000670300000000000053ba9000680300000000000092f290006903000000000000d22a91006a03000000000000106391006b03000000000000489b91006c03000000000000a2a491006d030000000000001bd391006e03000000000000530992006f03000000000000d32e9200700300000000000090419200710300000000000074799200720300000000000094b19200730300000000000072e092007403000000000000d2e992007503000000000000b21893007603000000000000122293007703000000000000445a93007803000000000000739293007903000000000000f3b793007a03000000000000abca93007b030000000000005ddd93007c03000000000000c40294007d03000000000000e13a94007e03000000000000217394007f0300000000000059ab9400800300000000000090e394008103000000000000c31b95008203000000000000ea53950083030000000000009866950084030000000000000b8c9500850300000000000046c49500860300000000000057fc950087030000000000008f3496008803000000000000cf6c960089030000000000000ba596008a0300000000000045dd96008b03000000000000a3e696008c03000000000000801597008d03000000000000bc4d97008e03000000000000f78597008f030000000000002ebe9700900300000000000030f6970091030000000000005a2e98009203000000000000956698009303000000000000d49e9800940300000000000014d7980095030000000000003b0f990096030000000000006c4799009703000000000000ac7f9900980300000000000078b79900990300000000000026ca99009a030000000000007cef99009b0300000000000085279a009c03000000000000be5f9a009d03000000000000fd979a009e03000000000000b9aa9a009f0300000000000022d09a00a0030000000000003dec9a00a10300000000000058089b00a20300000000000074249b00a3030000000000008b409b00a403000000000000e4499b00a50300000000000038789b00a60300000000000076819b00a703000000000000e4af9b00a803000000000000b7e79b00a903000000000000731f9c00aa03000000000000a6289c00ab030000000000002f3b9c00ac0300000000000012579c00ad030000000000005d609c00ae03000000000000cb8e9c00af0300000000000057a19c00b00300000000000086c69c00b1030000000000005afe9c00b20300000000000002369d00b303000000000000bc6d9d00b40300000000000099a59d00b5030000000000004edd9d00b603000000000000db149e00b703000000000000e0399e00b803000000000000724c9e00b9030000000000002a849e00ba03000000000000ee9f9e00bb03000000000000d1bb9e00bc030000000000007df39e00bd03000000000000f02a9f00be030000000000006a629f00bf03000000000000ff999f00c0030000000000002ed19f00c1030000000000004608a000c203000000000000893fa000c303000000000000a476a000c403000000000000dfada000c5030000000000001cb7a000c6030000000000003ce5a000c703000000000000921ca100c8030000000000008c53a100c903000000000000988aa100ca0300000000000010a6a100cb03000000000000a0c1a100cc03000000000000e5d3a100cd0300000000000072f8a100ce030000000000007c2fa200cf030000000000003766a200d003000000000000389da200d10300000000000056a6a200d203000000000000a9b8a200d303000000000000cac1a200d4030000000000001ad4a200d503000000000000200ba300d6030000000000002714a300d703000000000000bc41a300d8030000000000006778a300d9030000000000000aafa300da0300000000000046dca300db0300000000000065e5a300dc03000000000000a81ba400dd03000000000000d72da400de030000000000002352a400df030000000000006288a400e003000000000000c1bea400e103000000000000f8f4a400e203000000000000212ba500e3030000000000003f61a500e403000000000000656aa500e503000000000000e497a500e60300000000000040cea500e703000000000000b204a600e803000000000000fc3aa600e9030000000000009471a600ea0300000000000037a8a600eb030000000000001adfa600ec03000000000000ea0ca700ed030000000000000e16a700ee030000000000005228a700ef030000000000007d31a700f003000000000000034da700f1030000000000002084a700f2030000000000004a8da700f303000000000000a99fa700f403000000000000f6baa700f503000000000000c1f1a700f603000000000000be28a800f703000000000000a65fa800f8030000000000003e7ba800f903000000000000c296a800fa03000000000000c3cda800fb03000000000000d504a900fc03000000000000f83ba900fd030000000000005f73a900fe03000000000000ceaaa900ff030000000000000bb4a900000400000000000005e2a90001040000000000005e19aa000204000000000000c12baa0003040000000000008e50aa000404000000000000fd62aa0005040000000000008175aa000604000000000000fa87aa0007040000000000002f91aa0008040000000000005dbfaa000904000000000000a3c8aa000a04000000000000e5f6aa000b04000000000000e41bab000c040000000000005b2eab000d04000000000000e765ab000e040000000000004c9dab000f0400000000000085a6ab001004000000000000b8d4ab001104000000000000fdddab0012040000000000003b0cac001304000000000000d043ac001404000000000000827bac001504000000000000b8a0ac0016040000000000005bb3ac00170400000000000029ebac0018040000000000006af4ac0019040000000000000e07ad001a04000000000000f422ad001b04000000000000432cad001c040000000000009935ad001d04000000000000ee3ead001e04000000000000d55aad001f04000000000000bd76ad002004000000000000a592ad00210400000000000076caad002204000000000000f6dcad002304000000000000e001ae0024040000000000004f39ae0025040000000000001371ae0026040000000000005f7aae002704000000000000fc8cae002804000000000000cda8ae0029040000000000005ebbae002a0400000000000081e0ae002b040000000000004f18af002c040000000000001e50af002d04000000000000e687af002e04000000000000a0bfaf002f040000000000005ff7af003004000000000000042fb0003104000000000000da66b00032040000000000009a9eb000330400000000000063d6b0003404000000000000300eb1003504000000000000da45b10036040000000000009a7db100370400000000000050b5b100380400000000000029edb1003904000000000000971bb2003a04000000000000e024b2003b04000000000000995cb2003c040000000000006694b2003d0400000000000048b0b2003e040000000000002eccb2003f0400000000000075d5b200400400000000000008e8b2004104000000000000e703b3004204000000000000ce1fb3004304000000000000b63bb30044040000000000000d45b30045040000000000009f57b30046040000000000007573b3004704000000000000c67cb30048040000000000003aabb3004904000000000000e4e2b3004a04000000000000651ab4004b04000000000000f951b4004c040000000000009389b4004d0400000000000025c1b4004e04000000000000f6f8b4004f04000000000000241eb5005004000000000000b130b50051040000000000007068b500520400000000000040a0b5005304000000000000ecd7b50054040000000000000510b60055040000000000003e48b60056040000000000007a80b6005704000000000000b7b8b6005804000000000000f3f0b60059040000000000002f29b7005a04000000000000ae4eb7005b040000000000006861b7005c04000000000000a599b7005d04000000000000ded1b7005e040000000000005cf7b7005f04000000000000160ab80060040000000000005042b8006104000000000000964bb8006204000000000000687ab8006304000000000000a6b2b800640400000000000066c5b8006504000000000000e5eab80066040000000000000423b90067040000000000003f5bb90068040000000000005d77b90069040000000000007b93b9006a04000000000000b7cbb9006b04000000000000ef03ba006c04000000000000133cba006d040000000000003358ba006e040000000000005174ba006f0400000000000042acba0070040000000000006ce4ba007104000000000000a21cbb007204000000000000e054bb007304000000000000405ebb0074040000000000001b8dbb0075040000000000002ec5bb0076040000000000006dfdbb007704000000000000a435bc007804000000000000d06dbc0079040000000000000ca6bc007a040000000000004adebc007b040000000000008716bd007c04000000000000c34ebd007d04000000000000fc86bd007e040000000000003bbfbd007f040000000000007af7bd008004000000000000d500be008104000000000000b32fbe008204000000000000ea67be00830400000000000027a0be00840400000000000065d8be008504000000000000a410bf008604000000000000dd48bf0087040000000000003b52bf0088040000000000001881bf0089040000000000008fb8bf008a04000000000000cbc1bf008b04000000000000f8efbf008c040000000000007602c0008d040000000000008327c0008e04000000000000075fc0008f040000000000005d96c000900400000000000009cec00091040000000000003b06c10092040000000000002d3ec10093040000000000006476c10094040000000000007aaec1009504000000000000b9e6c1009604000000000000ef1ec20097040000000000002c57c2009804000000000000698fc20099040000000000008cc7c2009a040000000000009effc2009b04000000000000da37c3009c04000000000000ee6fc3009d0400000000000029a8c3009e0400000000000067e0c3009f04000000000000240fc400a0040000000000008218c400a104000000000000b150c400a204000000000000c088c400a304000000000000d2c0c400a404000000000000f6f8c400a5040000000000001231c500a604000000000000d143c500a7040000000000004d69c500a80400000000000089a1c500a904000000000000c4d9c500aa040000000000000112c600ab040000000000005c1bc600ac040000000000003a4ac600ad040000000000007482c600ae04000000000000abbac600af04000000000000e4f2c600b0040000000000001d2bc700b1040000000000002e47c700b2040000000000004863c700b304000000000000687fc700b404000000000000829bc700b5040000000000009bd3c700b604000000000000d80bc800b7040000000000001144c800b804000000000000704dc800b904000000000000d056c800ba040000000000004e7cc800bb0400000000000080b4c800bc04000000000000b1ecc800bd040000000000009808c900be040000000000008d24c900bf04000000000000c75cc900c004000000000000df94c900c104000000000000feb0c900c2040000000000001dcdc900c3040000000000004605ca00c4040000000000006e3dca00c5040000000000009e75ca00c604000000000000029bca00c704000000000000aeadca00c8040000000000008adcca00c904000000000000eae5ca00ca04000000000000251ecb00cb04000000000000fa55cb00cc04000000000000778ccb00cd04000000000000eec3cb00ce0400000000000005fccb00cf040000000000004134cc00d004000000000000716ccc00d10400000000000096a4cc00d204000000000000d3dccc00d30400000000000086efcc00d4040000000000000215cd00d504000000000000ac27cd00d604000000000000264dcd00d7040000000000008656cd00d8040000000000006385cd00d9040000000000003bb4cd00da0400000000000099bdcd00db04000000000000d8f5cd00dc04000000000000172ece00dd040000000000005366ce00de04000000000000909ece00df04000000000000b7d6ce00e00400000000000068e9ce00e104000000000000cc0ecf00e2040000000000000547cf00e304000000000000427fcf00e40400000000000079b7cf00e504000000000000b8efcf00e604000000000000f427d000e7040000000000000b60d000e8040000000000004698d000e90400000000000083d0d000ea04000000000000c008d100eb04000000000000fa40d100ec040000000000003679d100ed0400000000000073b1d100ee0400000000000087cdd100ef04000000000000a6e9d100f004000000000000e521d200f1040000000000001e5ad200f2040000000000005692d200f30400000000000092cad200f40400000000000052ddd200f504000000000000ce02d300f604000000000000e13ad300f7040000000000003444d300f804000000000000dc56d300f904000000000000ef72d300fa040000000000004d7cd300fb0400000000000024abd300fc04000000000000a1d0d300fd040000000000005be3d300fe04000000000000901bd400ff04000000000000ce53d40000050000000000000a8cd40001050000000000003ac4d40002050000000000004ae0d400030500000000000069fcd4000405000000000000a134d50005050000000000006047d5000605000000000000de6cd50007050000000000001ba5d500080500000000000058ddd50009050000000000009415d6000a05000000000000d24dd6000b05000000000000f085d6000c050000000000001ebed6000d05000000000000fbecd6000e050000000000005bf6d6000f050000000000008b2ed7001005000000000000c566d7001105000000000000029fd700120500000000000036d7d70013050000000000006f0fd80014050000000000009f47d8001505000000000000c97fd8001605000000000000e4b7d80017050000000000001ff0d80018050000000000005928d90019050000000000009560d9001a050000000000005473d9001b05000000000000718fd9001c05000000000000d198d9001d0500000000000031a2d9001e050000000000000fd1d9001f05000000000000cfe3d90020050000000000004f09da0021050000000000008941da002205000000000000b979da002305000000000000edb1da00240500000000000047bbda00250500000000000054d7da00260500000000000007eada00270500000000000067f3da0028050000000000003a22db0029050000000000005e5adb002a050000000000007892db002b05000000000000b0cadb002c05000000000000e702dc002d05000000000000183bdc002e050000000000007644dc002f050000000000002773dc003005000000000000dd85dc0031050000000000004dabdc00320500000000000086e3dc003305000000000000bb1bdd003405000000000000944add003505000000000000f453dd003605000000000000ad66dd003705000000000000298cdd00380500000000000060c4dd0039050000000000009cfcdd003a05000000000000fa05de003b05000000000000d734de003c05000000000000b56cde003d0500000000000045a4de003e05000000000000a1d2de003f05000000000000e4dbde0040050000000000002fe5de0041050000000000003c05df004205000000000000d81adf004305000000000000d636df0044050000000000002840df004505000000000000d252df004605000000000000cf6edf004705000000000000a9a6df004805000000000000eeafdf00490500000000000047b9df004a05000000000000b1dedf004b050000000000000de8df004c050000000000006e0de0004d05000000000000cb16e0004e05000000000000d84ee0004f050000000000007886e0005005000000000000b3bee0005105000000000000c3f6e0005205000000000000fe2ee10053050000000000002c67e1005405000000000000e679e1005505000000000000a68ce1005605000000000000629fe10057050000000000009bd7e10058050000000000005806e2005905000000000000b10fe2005a05000000000000e647e2005b050000000000001880e2005c050000000000007689e2005d050000000000004cb8e2005e050000000000007ef0e2005f05000000000000b228e3006005000000000000e760e30061050000000000002499e300620500000000000060d1e30063050000000000009c09e4006405000000000000d441e4006505000000000000334be40066050000000000000a7ae4006705000000000000e0a8e400680500000000000040b2e40069050000000000006feae4006a05000000000000a022e5006b05000000000000de5ae5006c050000000000001a93e5006d0500000000000055cbe5006e050000000000000bdee5006f050000000000008203e6007005000000000000db0ce6007105000000000000b53be6007205000000000000f073e60073050000000000004e7de60074050000000000002cace60075050000000000008cb5e60076050000000000006be4e6007705000000000000a51ce7007805000000000000dc54e7007905000000000000168de7007a050000000000004ac5e7007b0500000000000057fde7007c050000000000009335e8007d05000000000000d06de8007e050000000000002e77e8007f0500000000000004a6e80080050000000000003fdee80081050000000000007b16e9008205000000000000b74ee9008305000000000000e886e900840500000000000015bfe900850500000000000046f7e9008605000000000000602fea0087050000000000000442ea0088050000000000005a4bea0089050000000000006a67ea008a05000000000000889fea008b05000000000000daa8ea008c0500000000000079d7ea008d050000000000009f0feb008e050000000000005c22eb008f050000000000001c35eb009005000000000000d847eb0091050000000000000e80eb0092050000000000003eb8eb00930500000000000076f0eb009405000000000000ad28ec009505000000000000e660ec0096050000000000002399ec00970500000000000060d1ec0098050000000000009e09ed0099050000000000005e1ced009a05000000000000da41ed009b050000000000009654ed009c050000000000005567ed009d05000000000000127aed009e050000000000004ab2ed009f0500000000000082eaed00a005000000000000e1f3ed00a105000000000000bd22ee00a205000000000000fa5aee00a3050000000000003493ee00a405000000000000929cee00a50500000000000070cbee00a605000000000000ac03ef00a705000000000000eb3bef00a805000000000000fb73ef00a905000000000000feabef00aa05000000000000bebeef00ab0500000000000038e4ef00ac050000000000004e1cf000ad050000000000008854f000ae05000000000000958cf000af05000000000000c5c4f000b005000000000000fffcf000b1050000000000002e35f100b205000000000000de47f100b305000000000000466df100b4050000000000005da5f100b50500000000000094ddf100b605000000000000c115f200b705000000000000fa4df200b8050000000000002d86f200b90500000000000067bef200ba05000000000000a0f6f200bb05000000000000b52ef300bc050000000000003254f300bd05000000000000ef66f300be05000000000000239ff300bf0500000000000032d7f300c005000000000000dde9f300c1050000000000001e0ff400c2050000000000004f47f400c3050000000000008d7ff400c4050000000000006bb7f400c5050000000000009beff400c605000000000000c927f500c705000000000000ff5ff500c8050000000000003198f500c90500000000000063d0f500ca050000000000008908f600cb05000000000000c240f600cc050000000000001d66f600cd05000000000000ca78f600ce05000000000000fbb0f600cf0500000000000031e9f600d0050000000000006021f700d1050000000000009e59f700d205000000000000d891f700d3050000000000000acaf700d4050000000000004402f800d5050000000000007b3af800d605000000000000fa5ff800d705000000000000b672f800d805000000000000ebaaf800d90500000000000048b4f800da0500000000000024e3f800db05000000000000601bf900dc050000000000009753f900dd05000000000000ac8bf900de05000000000000e3c3f900df050000000000001cfcf900e0050000000000005934fa00e105000000000000936cfa00e205000000000000a7a4fa00e305000000000000dfdcfa00e4050000000000001a15fb00e5050000000000004d4dfb00e605000000000000a656fb00e7050000000000007b85fb00e805000000000000a2bdfb00e905000000000000dff5fb00ea050000000000005f1bfc00eb050000000000001e2efc00ec050000000000005266fc00ed050000000000000c79fc00ee05000000000000cc8bfc00ef050000000000002995fc00f005000000000000899efc00f105000000000000c1d6fc00f2050000000000007ee9fc00f3050000000000003dfcfc00f405000000000000f00efd00f5050000000000004c18fd00f6050000000000001a47fd00f7050000000000004a7ffd00f80500000000000086b7fd00f905000000000000beeffd00fa050000000000001ef9fd00fb05000000000000ee27fe00fc050000000000000944fe00fd050000000000002560fe00fe05000000000000307cfe00ff050000000000002798fe000006000000000000e2aafe00010600000000000042b4fe0002060000000000005dd0fe0003060000000000009a08ff000406000000000000ca40ff000506000000000000244aff000606000000000000f278ff0007060000000000002db1ff00080600000000000063e9ff000906000000000000712100010a06000000000000313400010b060000000000004c5000010c06000000000000ac5900010d06000000000000b49100010e06000000000000e3c900010f06000000000000f60101011006000000000000103a010111060000000000003056010112060000000000004c720101130600000000000084aa01011406000000000000c2e201011506000000000000fe1a02011606000000000000235302011706000000000000618b020118060000000000009dc3020119060000000000005ad602011a06000000000000badf02011b06000000000000d7fb02011c06000000000000370503011d06000000000000f71703011e06000000000000133403011f06000000000000516c03012006000000000000107f030121060000000000008da403012206000000000000cadc03012306000000000000f81404012406000000000000324d0401250600000000000070850401260600000000000080bd040127060000000000008bf504012806000000000000842d05012906000000000000d73605012a060000000000008b6505012b06000000000000c19d05012c06000000000000f9d505012d060000000000002e0e06012e06000000000000664606012f060000000000009d7e06013006000000000000d7b60601310600000000000011ef06013206000000000000442707013306000000000000725f07013406000000000000af9707013506000000000000e7cf070136060000000000001f0808013706000000000000372408013806000000000000544008013906000000000000917808013a06000000000000c8b008013b0600000000000001e908013c060000000000000f2109013d06000000000000085909013e06000000000000a99009013f06000000000000b5c809014006000000000000c5000a014106000000000000d2380a01420600000000000006710a014306000000000000f5a80a0144060000000000002be10a01450600000000000012190b01460600000000000048510b01470600000000000086890b014806000000000000e5920b014906000000000000c4c10b014a0600000000000000fa0b014b060000000000001d320c014c060000000000000b6a0c014d06000000000000c5980c014e060000000000001aa20c014f06000000000000d7d00c0150060000000000002dda0c01510600000000000069120d015206000000000000a44a0d015306000000000000df820d0154060000000000001dbb0d01550600000000000055f30d015606000000000000852b0e01570600000000000083630e015806000000000000c39b0e0159060000000000001ba50e015a060000000000007bae0e015b06000000000000f7d30e015c06000000000000afe60e015d06000000000000290c0f015e0600000000000065440f015f06000000000000db690f016006000000000000977c0f016106000000000000d2b40f016206000000000000ecec0f016306000000000000062510016406000000000000ea5c10016506000000000000f49410016606000000000000ffcc100167060000000000005ed610016806000000000000d6fb10016906000000000000340511016a06000000000000613d11016b060000000000008b7511016c06000000000000919111016d06000000000000abad11016e06000000000000e0e511016f060000000000001d1e120170060000000000005556120171060000000000006c8e120172060000000000008aaa12017306000000000000a3c612017406000000000000bdfe12017506000000000000f83613017606000000000000126f130177060000000000006c9413017806000000000000c99d1301790600000000000029a713017a060000000000005bdf13017b06000000000000b8e813017c0600000000000016f213017d060000000000008d1714017e06000000000000ec2014017f06000000000000a43314018006000000000000bc4f14018106000000000000d58714018206000000000000919a1401830600000000000005c0140184060000000000005fc914018506000000000000f8f714018606000000000000a10a15018706000000000000fa1315018806000000000000561d15018906000000000000fa2f15018a06000000000000513915018b06000000000000aa4215018c06000000000000106815018d060000000000002f8415018e060000000000004ba015018f060000000000002cbc15019006000000000000ccce1501910600000000000019d81501920600000000000076e115019306000000000000331016019406000000000000664816019506000000000000998016019606000000000000d5b81601970600000000000093cb16019806000000000000f3d4160199060000000000000ff116019a06000000000000cd0317019b06000000000000492917019c06000000000000a33217019d06000000000000444517019e060000000000003a6117019f06000000000000117d1701a0060000000000001c991701a10600000000000059d11701a2060000000000008c091801a306000000000000c2411801a4060000000000001e4b1801a50600000000000037671801a606000000000000f2791801a7060000000000001fb21801a806000000000000dec41801a90600000000000056ea1801aa0600000000000005fd1801ab0600000000000079221901ac06000000000000b25a1901ad06000000000000e5921901ae06000000000000f9ca1901af060000000000005df01901b00600000000000017031a01b1060000000000003a3b1a01b206000000000000e64d1a01b30600000000000044731a01b406000000000000a37c1a01b50600000000000078ab1a01b6060000000000006ee31a01b706000000000000921b1b01b806000000000000be531b01b9060000000000001d5d1b01ba06000000000000ec8b1b01bb0600000000000009c41b01bc06000000000000e5fb1b01bd06000000000000f1331c01be06000000000000ef6b1c01bf06000000000000a39a1c01c006000000000000fba31c01c106000000000000f2db1c01c206000000000000f8131d01c306000000000000df4b1d01c40600000000000075831d01c506000000000000aaa81d01c6060000000000003bbb1d01c7060000000000002fd71d01c80600000000000017f31d01c90600000000000067fc1d01ca06000000000000ad211e01cb06000000000000fb2a1e01cc0600000000000052341e01cd06000000000000da621e01ce06000000000000c87e1e01cf06000000000000b09a1e01d00600000000000089d21e01d1060000000000000fe51e01d2060000000000005fee1e01d3060000000000003b0a1f01d406000000000000f8411f01d50600000000000098541f01d606000000000000ac5d1f01d70600000000000094791f01d8060000000000006eb11f01d90600000000000038e91f01da060000000000000b212001db06000000000000e6582001dc06000000000000c8902001dd0600000000000062a32001de060000000000007ac82001df060000000000001cdb2001e0060000000000005d002101e10600000000000021382101e206000000000000f76f2101e3060000000000003d792101e406000000000000cea72101e50600000000000095df2101e6060000000000006e172201e706000000000000334f2201e80600000000000085582201e90600000000000010872201ea06000000000000eea22201eb06000000000000cbbe2201ec06000000000000a9da2201ed060000000000009ef62201ee060000000000003d092301ef06000000000000782e2301f0060000000000000c412301f1060000000000005e4a2301f20600000000000045662301f3060000000000003b822301f406000000000000299e2301f506000000000000fed52301f606000000000000990d2401f7060000000000002c202401f806000000000000173c2401f90600000000000063452401fa06000000000000fd572401fb060000000000002a7d2401fc0600000000000000b52401fd06000000000000b8ec2401fe0600000000000037242501ff06000000000000155c25010007000000000000e69325010107000000000000a6cb25010207000000000000630326010307000000000000b30c260104070000000000000916260105070000000000005b1f26010607000000000000523b260107070000000000004857260108070000000000002d732601090700000000000018ab26010a07000000000000fdc626010b07000000000000ede226010c070000000000008d1127010d07000000000000e31a27010e07000000000000cc5227010f07000000000000ac8a270110070000000000004b9d2701110700000000000090c22701120700000000000087fa27011307000000000000583228011407000000000000fe6928011507000000000000557328011607000000000000f4a128011707000000000000ced9280118070000000000007d1129011907000000000000414929011a070000000000001a8129011b07000000000000deb829011c07000000000000bff029011d07000000000000a8282a011e070000000000008b602a011f07000000000000dc692a0120070000000000002d732a0121070000000000007a7c2a012207000000000000198f2a01230700000000000069982a01240700000000000003ab2a0125070000000000004ab42a0126070000000000009ebd2a01270700000000000041d02a012807000000000000e7e22a01290700000000000089f52a012a0700000000000023082b012b07000000000000cb1a2b012c0700000000000018242b012d070000000000006b2d2b012e07000000000000ba362b012f070000000000000e402b013007000000000000af522b013107000000000000035c2b0132070000000000004c652b0133070000000000009b6e2b013407000000000000e4772b013507000000000000abaf2b013607000000000000f8b82b01370700000000000052c22b013807000000000000f0d42b0139070000000000008de72b013a0700000000000081032c013b070000000000005e1f2c013c070000000000004a3b2c013d0700000000000037572c013e070000000000000a8f2c013f070000000000005e982c014007000000000000eeaa2c0141070000000000007fbd2c014207000000000000d2c62c014307000000000000b6fe2c0144070000000000008f362d014507000000000000426e2d014607000000000000d9a52d014707000000000000a0dd2d0148070000000000003df02d0149070000000000004f152e014a07000000000000971e2e014b07000000000000e2272e014c0700000000000035312e014d07000000000000cb432e014e07000000000000174d2e014f07000000000000a57b2e015007000000000000f8842e015107000000000000e0bc2e01" + "babeEpochChanges": "0x0458f6448501174951cd92aa253e1dca05ff4487a8b86ca45b699e2e7bef36456f4644300101b38bfe10000000001395fe100000000004dc81f2058c70567f7c85ded467631941c2efb85ba96e2c9328f10be4774092dc904d3001011395fe1000000000739efe10000000001064de6cab75353df51c9bc549ea19c3fd6bb2094b10745ec5aa63db9576b9d15de456300101739efe1000000000d3a7fe1000000000007921f499584ea60af4fc6c621d1585b79e3852fcc929fce53d68e7d6f5f16c8fe456300101739efe1000000000d3a7fe1000000000009ea154e5d5448f812bcac06720992209518325b0527502738bbbcedc30413c24e456300101739efe1000000000d3a7fe100000000000ffb5d0e61bb7150459291768cdad47428dce5d980d4975c4e1e21ad0b43a059fe456300101739efe1000000000d3a7fe100000000000001858f6448501174951cd92aa253e1dca05ff4487a8b86ca45b699e2e7bef36456f46443001019b20000000000000b38bfe10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f280100000000000000ba395fcb33327501109ed40712c7a372d25bf3339edfabe2a1964fb7b5d4d82401000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e010000000000000026db7c5786fddc15f7e96905024905d877537451ed444cb97d3786361a59f64b0100000000000000c67b1b3084dc3eb2cc7a3cc4f742defc21b733e787737cbaf3b146a052633e0f01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000a6f10752adf745ad55866031836194ad027ed8d6710d9853ef62982bcf45fd0e010000000000000078c35105ea4cd9d6ea0ba91b2c19e78f60931bef5918c1bd2e14259229e7c330010000000000000006d2846642c835b0fb1ff1ef908449376aa8e7c0f3352e55da9a1e97e9528b230100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e47758878972010000000000000090d25f2368ee57fb5c100140b7507d5831fb035e7632c53b532b65e6d14ba8480100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a0100000000000000a42289d68c963358f3c450a850242bb53121e73e17f0e2ea2b93327446bea33c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc35310010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f010000000000000024532b17fc5fb786660c52aeb03150799165dd05e88ce359189189a4b771f51e01000000000000008610e1f00a1eba67d13225867c1f2972e60604e49bea7e5c1b10b29d4841b84a0100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b0100000000000000acef6dc8da16677955c38451be5a1b369fdc3c20bc249a1aec917276dfc2da580100000000000000c49cfd152ce3ac1fa142b3b6e720cb173eb7f43c82f021418253a070036f870c01000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e01000000000000009237113cf97fee5fafbeb82de593f6125e9c498bd59f0369625f46b326c7d9170100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f0678771701000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f510100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e010000000000000088f9a16886165d00612032cb1b36669ad62b7325536f499191e711134c71b6070100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f010000000000000032636c64cae326ea37dfa4ddad688feb9829ada7a7d580a91ce03a50a673d01c01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c560100000000000000c65c0a74887e9fe5cc56696fac7e7f5f1cd4a68f9661c8384b300bcdfbe67a1801000000000000003690e6ef639f685849ed93a6386d1fccf026c3fb64520940aa46af97f929e112010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e70210100000000000000ee82f2670e36b9ad136ae1ab1607c35f3b49a8c93b86802c06df3ca62a2e3561010000000000000024a0c6db2090170748a7bae71b6f77b5dcc14c6acc5c58e8de78d317ccafe14401000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf0801000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b0100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c39070100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d707600501000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb550100000000000000220d3f26072ad42aa5ca04b7253284d185f8bf95650faa170cbda8d7a47ea84a01000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c01000000000000007480edf84ab569e559dccc99b87ecb9ae9db670b45a259b7f6e618b063e43113010000000000000020bedd48a5965e2fc0e221bd164deecdee849eb69cb8dc63a37df80b50a3093b010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e5101000000000000004628f93047462b43ec0886f2c7d7318ddad1764fd32af4f32ef0b2dcfa4b297a010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000003635c55546f19bfe62d84a220c4396b1c9d71a1acdb2da917a82f0c1415a2b020100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa7401000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000008c64cd873a53fec10c4624239ce35d31d4422e32a109605a162fcbf632427733010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000da98e4363908fa4d7980fe5574ceeac74fae49bf77b3a191654c7731214a565e0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a0100000000000000b2518044cc31062ee50fa81cb6983f314291a0300865fa5cfe149829c5050d24010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a5201000000000000004e8cc21504fda961cf1cfe78e651d033b10f8ab1a4a0c757bd4848a7f2827f0601000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000a6cd7eca570e90e2efeeda8f1c09480884a073c66fc7c41b2464e11822b12f0c0100000000000000944ad19383a9ae136f4f11c15687923b9b21319efab021336a3e8f2bd5b5ca20010000000000000068508b2ca3e01d7c8d79d99f1bb06a93058d14f1061d5fed4df13d4bc30aa557010000000000000074f02ed037d28c883df643034a596e4d2a97a23782ee8483c9ae3429ede7e7090100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a01000000000000005c252543704920d6bea67453cdd61b464b001badf73a3ea3b9e9fb35b224947201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b3515010000000000000004734733edcd9cf662389208fb8ccb5f274a7db8187ccc53dc84250f8599d54d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b010000000000000010fee28789d45569ac0c95b7287fc7c5f087d93516cbd06e3c074a392d86da300100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e6380100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb190100000000000000b071e9d6b444a555e034ecdc4d04f2528cc36b347b231b33388564a40fd32b2c0100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000f894d159aa4b63402119985e2243e77fc35787fb086867659412c8c6918b2a670100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f61001000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c8400100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000024190e384934261c444897054262813c65a73aaf371806db97762e995e5b350e0100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f76010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000022a66dd6397c2631df509db3482baac28b546729e6ce965472a9ba2e648ccc74010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a2520100000000000000767cb742c94b22fff80da70a4ea77069aecde7ded53fbf5d957b01196924cd2d0100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea840010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e66010000000000000016f34c9e6687012c42f9c02de75b9499849fe771f2ad2e666f965dc6627735540100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd0401000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000076fa252aeca5b108fe76ce12e395ed8105d5c98e4abae38bfc7cb4fbd4d43d5501000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000fa30595578d5e253a0a3701616665cb205fc02eb560c023454c280bfc6cd8d090100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000c670e2b0f864f126be43807610aab3295cb4ed6a684d95de331d700f74e2985e0100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a52401000000000000004a1069d2203a75cd1078c39de35c16a6c4c12acbad34f1cba8efc065f80398610100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e176010000000000000062c6c1f6f2478ee092c958842ac4351973bfeb49f55e33b8415ac0296a967b5f01000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c721535901000000000000009a64daca74d14dab93385e52ca70940732a8d45ae4b853ce156c3eeca06f0c5f0100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c230100000000000000b2ddb9eab0545b9ac7a46e37d6fc4605c34227d848416bd3637da7156efe612601000000000000001a15acd9aec8d1dd06c7b6a46be298c3fc2ecd51be6724a63da4da286e306f72010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e7630100000000000000140fbeeabfb02dede7214a17c2cf78279d076c80d962431f35d1105c87b8d95501000000000000007cb1f225b90c00f426c33ac4338eeb2dae6467b8a9da5c1556e6588c12ca977b0100000000000000b261a66b9bae17b65e7f6a88d65efb4519925d6c418c9e2ba17bfdbf684b776301000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c491420100000000000000ce60d2c987bbeeaceff8463484b717ce80cbcf3d8f8b2102e95effc88000d95d01000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a0100000000000000c686fbbc968476537924f90aaa4993eef8314685d150228c462f8ae4e5e1e57f01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b2001000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a77480100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000002001d47fbff7291a50650047b27cc47f1d22a0bdfbbfb0b8b7a6e8bbf350bf620100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000005e0fa84f762f7d6e4c4b0c18a86e1b7da6cb4fe7dfcf6b5c0056a7ccd8eb201401000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe0837215600100000000000000c280e82e46ecabc4d68169e292c59cef96432f25fe849b8a147db5ca0ce7e17b010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000006ca32996225021dadb0b3f22460db6ce243faa3a0df7b33ef28e5fbcb9cf6f2f01000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000f0c0cc64f8973ebc2322273e684b4f73f412503f124c130be0be1589718cdd780100000000000000322dcdf3a5f50091af8b876983da0e0e98e358339e6033cdb865cd64995f86130100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000003213885ba6fd707b0716aeaad959cd824ab2f854e55963d9e69af006d194d51f0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e01000000000000008013bf5a25c703e64dc4ae7e1248c0f2c7abad9e43672d82611d109740199856010000000000000004ea82190bfc6f5f845f2ba785032a5d772b1cb44b3023c18af302f626e7df190100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f01000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e670100000000000000d23c53a531e356646133db73065cd83999693a5bdfc05931238434f5b031522f01000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de32010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b0100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a5003010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d01000000000000000469db5710f30dc9ed7411417170efd62ce8bbe36ccab6df758a94aa7b7f720b010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b01000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf460100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f010000000000000072f2ff3d21f4126e217f10f9d9bd18069c12eaab6922d073dd5241ac718e91200100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b010000000000000096ef8b525c38b9a74a3014bd99979230dab2f20221e8c7d1db50c7a61a02e97e01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a01000000000000008c45a06f479923e10cc400ae1600234f85906e26195bde9023350efaf0bc622c01000000000000006053f4e41a4db1dd6ddcd2304b62de45cda832c4e63a831ce9e634fab830d40d0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad21020100000000000000104b3d784f0ae26bf3268fb7342a99fcbb1ea61068e03337df050ef2e0895374010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e0100000000000000bae8e68bc8f1b66fe3229ee72d77137b394c6b7dfbf55e424f9d2c82d5c99600010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc24010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e01000000000000001c103b038f0515bb77061128200e1f117a531cb4474cf5f9430535345f54196701000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c2801000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b3040100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000a2259245fb5a7251b99ee8f307b97ec6e7f20081c1f75284aa9b433153d888160100000000000000068245d8a483bdbd4e9d88b49e17a651ec168f25e6851fc52c2e36a516031d5e0100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000dc1d6d9b878558829a87267a578e1d044b2033888074dcc3a9fcd69cd5e60d3e0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b01000000000000007e0da5500e4e91faec6b7c3763c52058a7a9350be3009f2fe00a8e3bf0c59e790100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a1843220100000000000000c322115db35bcba5a2c0755dd59c0278ef7f91ae39592cd8a98e481d64604428010000000000000004000000000000000264de6cab75353df51c9bc549ea19c3fd6bb2094b10745ec5aa63db9576b9d15de4563001019d20000000000000739efe10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f280100000000000000ba395fcb33327501109ed40712c7a372d25bf3339edfabe2a1964fb7b5d4d82401000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e010000000000000026db7c5786fddc15f7e96905024905d877537451ed444cb97d3786361a59f64b0100000000000000c67b1b3084dc3eb2cc7a3cc4f742defc21b733e787737cbaf3b146a052633e0f01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000a6f10752adf745ad55866031836194ad027ed8d6710d9853ef62982bcf45fd0e010000000000000078c35105ea4cd9d6ea0ba91b2c19e78f60931bef5918c1bd2e14259229e7c330010000000000000006d2846642c835b0fb1ff1ef908449376aa8e7c0f3352e55da9a1e97e9528b230100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e47758878972010000000000000090d25f2368ee57fb5c100140b7507d5831fb035e7632c53b532b65e6d14ba8480100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a0100000000000000a42289d68c963358f3c450a850242bb53121e73e17f0e2ea2b93327446bea33c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc35310010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f010000000000000024532b17fc5fb786660c52aeb03150799165dd05e88ce359189189a4b771f51e01000000000000008610e1f00a1eba67d13225867c1f2972e60604e49bea7e5c1b10b29d4841b84a0100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b0100000000000000acef6dc8da16677955c38451be5a1b369fdc3c20bc249a1aec917276dfc2da580100000000000000c49cfd152ce3ac1fa142b3b6e720cb173eb7f43c82f021418253a070036f870c01000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e01000000000000009237113cf97fee5fafbeb82de593f6125e9c498bd59f0369625f46b326c7d9170100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f0678771701000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f510100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e010000000000000088f9a16886165d00612032cb1b36669ad62b7325536f499191e711134c71b6070100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f010000000000000032636c64cae326ea37dfa4ddad688feb9829ada7a7d580a91ce03a50a673d01c01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c560100000000000000c65c0a74887e9fe5cc56696fac7e7f5f1cd4a68f9661c8384b300bcdfbe67a1801000000000000003690e6ef639f685849ed93a6386d1fccf026c3fb64520940aa46af97f929e112010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e70210100000000000000ee82f2670e36b9ad136ae1ab1607c35f3b49a8c93b86802c06df3ca62a2e3561010000000000000024a0c6db2090170748a7bae71b6f77b5dcc14c6acc5c58e8de78d317ccafe14401000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf0801000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b0100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c39070100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d707600501000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb550100000000000000220d3f26072ad42aa5ca04b7253284d185f8bf95650faa170cbda8d7a47ea84a01000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c01000000000000007480edf84ab569e559dccc99b87ecb9ae9db670b45a259b7f6e618b063e43113010000000000000020bedd48a5965e2fc0e221bd164deecdee849eb69cb8dc63a37df80b50a3093b010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e5101000000000000004628f93047462b43ec0886f2c7d7318ddad1764fd32af4f32ef0b2dcfa4b297a010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000003635c55546f19bfe62d84a220c4396b1c9d71a1acdb2da917a82f0c1415a2b020100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa7401000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000008c64cd873a53fec10c4624239ce35d31d4422e32a109605a162fcbf632427733010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000da98e4363908fa4d7980fe5574ceeac74fae49bf77b3a191654c7731214a565e0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a0100000000000000b2518044cc31062ee50fa81cb6983f314291a0300865fa5cfe149829c5050d24010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a5201000000000000004e8cc21504fda961cf1cfe78e651d033b10f8ab1a4a0c757bd4848a7f2827f0601000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000a6cd7eca570e90e2efeeda8f1c09480884a073c66fc7c41b2464e11822b12f0c0100000000000000944ad19383a9ae136f4f11c15687923b9b21319efab021336a3e8f2bd5b5ca20010000000000000068508b2ca3e01d7c8d79d99f1bb06a93058d14f1061d5fed4df13d4bc30aa557010000000000000074f02ed037d28c883df643034a596e4d2a97a23782ee8483c9ae3429ede7e7090100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a01000000000000005c252543704920d6bea67453cdd61b464b001badf73a3ea3b9e9fb35b224947201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b3515010000000000000004734733edcd9cf662389208fb8ccb5f274a7db8187ccc53dc84250f8599d54d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b010000000000000010fee28789d45569ac0c95b7287fc7c5f087d93516cbd06e3c074a392d86da300100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e6380100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb190100000000000000b071e9d6b444a555e034ecdc4d04f2528cc36b347b231b33388564a40fd32b2c0100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000f894d159aa4b63402119985e2243e77fc35787fb086867659412c8c6918b2a670100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f61001000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c8400100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000024190e384934261c444897054262813c65a73aaf371806db97762e995e5b350e0100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f76010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000022a66dd6397c2631df509db3482baac28b546729e6ce965472a9ba2e648ccc74010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a2520100000000000000767cb742c94b22fff80da70a4ea77069aecde7ded53fbf5d957b01196924cd2d0100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea840010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e66010000000000000016f34c9e6687012c42f9c02de75b9499849fe771f2ad2e666f965dc6627735540100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd0401000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000076fa252aeca5b108fe76ce12e395ed8105d5c98e4abae38bfc7cb4fbd4d43d5501000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000fa30595578d5e253a0a3701616665cb205fc02eb560c023454c280bfc6cd8d090100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000c670e2b0f864f126be43807610aab3295cb4ed6a684d95de331d700f74e2985e0100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a52401000000000000004a1069d2203a75cd1078c39de35c16a6c4c12acbad34f1cba8efc065f80398610100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e176010000000000000062c6c1f6f2478ee092c958842ac4351973bfeb49f55e33b8415ac0296a967b5f01000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c721535901000000000000009a64daca74d14dab93385e52ca70940732a8d45ae4b853ce156c3eeca06f0c5f0100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c230100000000000000b2ddb9eab0545b9ac7a46e37d6fc4605c34227d848416bd3637da7156efe612601000000000000001a15acd9aec8d1dd06c7b6a46be298c3fc2ecd51be6724a63da4da286e306f72010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e7630100000000000000140fbeeabfb02dede7214a17c2cf78279d076c80d962431f35d1105c87b8d95501000000000000007cb1f225b90c00f426c33ac4338eeb2dae6467b8a9da5c1556e6588c12ca977b0100000000000000b261a66b9bae17b65e7f6a88d65efb4519925d6c418c9e2ba17bfdbf684b776301000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c491420100000000000000ce60d2c987bbeeaceff8463484b717ce80cbcf3d8f8b2102e95effc88000d95d01000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a0100000000000000c686fbbc968476537924f90aaa4993eef8314685d150228c462f8ae4e5e1e57f01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b2001000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a77480100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000002001d47fbff7291a50650047b27cc47f1d22a0bdfbbfb0b8b7a6e8bbf350bf620100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000005e0fa84f762f7d6e4c4b0c18a86e1b7da6cb4fe7dfcf6b5c0056a7ccd8eb201401000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe0837215600100000000000000c280e82e46ecabc4d68169e292c59cef96432f25fe849b8a147db5ca0ce7e17b010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000006ca32996225021dadb0b3f22460db6ce243faa3a0df7b33ef28e5fbcb9cf6f2f01000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000f0c0cc64f8973ebc2322273e684b4f73f412503f124c130be0be1589718cdd780100000000000000322dcdf3a5f50091af8b876983da0e0e98e358339e6033cdb865cd64995f86130100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000003213885ba6fd707b0716aeaad959cd824ab2f854e55963d9e69af006d194d51f0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e01000000000000008013bf5a25c703e64dc4ae7e1248c0f2c7abad9e43672d82611d10974019985601000000000000007075de5f3cae26e005560440e9cc633c9fe8d7143b1fb8dc67e0d1ed7871e77d0100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f01000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e670100000000000000d23c53a531e356646133db73065cd83999693a5bdfc05931238434f5b031522f01000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de32010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b0100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a5003010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d01000000000000000469db5710f30dc9ed7411417170efd62ce8bbe36ccab6df758a94aa7b7f720b010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b01000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf460100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f010000000000000072f2ff3d21f4126e217f10f9d9bd18069c12eaab6922d073dd5241ac718e91200100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b010000000000000096ef8b525c38b9a74a3014bd99979230dab2f20221e8c7d1db50c7a61a02e97e01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a01000000000000008c45a06f479923e10cc400ae1600234f85906e26195bde9023350efaf0bc622c01000000000000006053f4e41a4db1dd6ddcd2304b62de45cda832c4e63a831ce9e634fab830d40d0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad21020100000000000000104b3d784f0ae26bf3268fb7342a99fcbb1ea61068e03337df050ef2e0895374010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e0100000000000000bae8e68bc8f1b66fe3229ee72d77137b394c6b7dfbf55e424f9d2c82d5c99600010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc24010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e01000000000000001c103b038f0515bb77061128200e1f117a531cb4474cf5f9430535345f54196701000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c2801000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b3040100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e21010000000000000096e0b71982f3e7ba6ab06d28dfbf803caf4ac51b7633bee848f4f3fadc0dac480100000000000000068245d8a483bdbd4e9d88b49e17a651ec168f25e6851fc52c2e36a516031d5e0100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000dc1d6d9b878558829a87267a578e1d044b2033888074dcc3a9fcd69cd5e60d3e0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b01000000000000007e0da5500e4e91faec6b7c3763c52058a7a9350be3009f2fe00a8e3bf0c59e790100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a18432201000000000000005d9f86b7514745bf41299f7fb39969966e4b7556bc3942a51c95052f5233493901000000000000000400000000000000027921f499584ea60af4fc6c621d1585b79e3852fcc929fce53d68e7d6f5f16c8fe4563001019d20000000000000739efe10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f280100000000000000ba395fcb33327501109ed40712c7a372d25bf3339edfabe2a1964fb7b5d4d82401000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e010000000000000026db7c5786fddc15f7e96905024905d877537451ed444cb97d3786361a59f64b0100000000000000c67b1b3084dc3eb2cc7a3cc4f742defc21b733e787737cbaf3b146a052633e0f01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000a6f10752adf745ad55866031836194ad027ed8d6710d9853ef62982bcf45fd0e010000000000000078c35105ea4cd9d6ea0ba91b2c19e78f60931bef5918c1bd2e14259229e7c330010000000000000006d2846642c835b0fb1ff1ef908449376aa8e7c0f3352e55da9a1e97e9528b230100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e47758878972010000000000000090d25f2368ee57fb5c100140b7507d5831fb035e7632c53b532b65e6d14ba8480100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a0100000000000000a42289d68c963358f3c450a850242bb53121e73e17f0e2ea2b93327446bea33c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc35310010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f010000000000000024532b17fc5fb786660c52aeb03150799165dd05e88ce359189189a4b771f51e01000000000000008610e1f00a1eba67d13225867c1f2972e60604e49bea7e5c1b10b29d4841b84a0100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b0100000000000000acef6dc8da16677955c38451be5a1b369fdc3c20bc249a1aec917276dfc2da580100000000000000c49cfd152ce3ac1fa142b3b6e720cb173eb7f43c82f021418253a070036f870c01000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e01000000000000009237113cf97fee5fafbeb82de593f6125e9c498bd59f0369625f46b326c7d9170100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f0678771701000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f510100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e010000000000000088f9a16886165d00612032cb1b36669ad62b7325536f499191e711134c71b6070100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f010000000000000032636c64cae326ea37dfa4ddad688feb9829ada7a7d580a91ce03a50a673d01c01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c560100000000000000c65c0a74887e9fe5cc56696fac7e7f5f1cd4a68f9661c8384b300bcdfbe67a1801000000000000003690e6ef639f685849ed93a6386d1fccf026c3fb64520940aa46af97f929e112010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e70210100000000000000ee82f2670e36b9ad136ae1ab1607c35f3b49a8c93b86802c06df3ca62a2e3561010000000000000024a0c6db2090170748a7bae71b6f77b5dcc14c6acc5c58e8de78d317ccafe14401000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf0801000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b0100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c39070100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d707600501000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb550100000000000000220d3f26072ad42aa5ca04b7253284d185f8bf95650faa170cbda8d7a47ea84a01000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c01000000000000007480edf84ab569e559dccc99b87ecb9ae9db670b45a259b7f6e618b063e43113010000000000000020bedd48a5965e2fc0e221bd164deecdee849eb69cb8dc63a37df80b50a3093b010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e5101000000000000004628f93047462b43ec0886f2c7d7318ddad1764fd32af4f32ef0b2dcfa4b297a010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000003635c55546f19bfe62d84a220c4396b1c9d71a1acdb2da917a82f0c1415a2b020100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa7401000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000008c64cd873a53fec10c4624239ce35d31d4422e32a109605a162fcbf632427733010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000da98e4363908fa4d7980fe5574ceeac74fae49bf77b3a191654c7731214a565e0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a0100000000000000b2518044cc31062ee50fa81cb6983f314291a0300865fa5cfe149829c5050d24010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a5201000000000000004e8cc21504fda961cf1cfe78e651d033b10f8ab1a4a0c757bd4848a7f2827f0601000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000a6cd7eca570e90e2efeeda8f1c09480884a073c66fc7c41b2464e11822b12f0c0100000000000000944ad19383a9ae136f4f11c15687923b9b21319efab021336a3e8f2bd5b5ca20010000000000000068508b2ca3e01d7c8d79d99f1bb06a93058d14f1061d5fed4df13d4bc30aa557010000000000000074f02ed037d28c883df643034a596e4d2a97a23782ee8483c9ae3429ede7e7090100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a01000000000000005c252543704920d6bea67453cdd61b464b001badf73a3ea3b9e9fb35b224947201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b3515010000000000000004734733edcd9cf662389208fb8ccb5f274a7db8187ccc53dc84250f8599d54d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b010000000000000010fee28789d45569ac0c95b7287fc7c5f087d93516cbd06e3c074a392d86da300100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e6380100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb190100000000000000b071e9d6b444a555e034ecdc4d04f2528cc36b347b231b33388564a40fd32b2c0100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000f894d159aa4b63402119985e2243e77fc35787fb086867659412c8c6918b2a670100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f61001000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c8400100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000024190e384934261c444897054262813c65a73aaf371806db97762e995e5b350e0100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f76010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000022a66dd6397c2631df509db3482baac28b546729e6ce965472a9ba2e648ccc74010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a2520100000000000000767cb742c94b22fff80da70a4ea77069aecde7ded53fbf5d957b01196924cd2d0100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea840010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e66010000000000000016f34c9e6687012c42f9c02de75b9499849fe771f2ad2e666f965dc6627735540100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd0401000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000076fa252aeca5b108fe76ce12e395ed8105d5c98e4abae38bfc7cb4fbd4d43d5501000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000fa30595578d5e253a0a3701616665cb205fc02eb560c023454c280bfc6cd8d090100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000c670e2b0f864f126be43807610aab3295cb4ed6a684d95de331d700f74e2985e0100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a52401000000000000004a1069d2203a75cd1078c39de35c16a6c4c12acbad34f1cba8efc065f80398610100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e176010000000000000062c6c1f6f2478ee092c958842ac4351973bfeb49f55e33b8415ac0296a967b5f01000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c721535901000000000000009a64daca74d14dab93385e52ca70940732a8d45ae4b853ce156c3eeca06f0c5f0100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c230100000000000000b2ddb9eab0545b9ac7a46e37d6fc4605c34227d848416bd3637da7156efe612601000000000000001a15acd9aec8d1dd06c7b6a46be298c3fc2ecd51be6724a63da4da286e306f72010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e7630100000000000000140fbeeabfb02dede7214a17c2cf78279d076c80d962431f35d1105c87b8d95501000000000000007cb1f225b90c00f426c33ac4338eeb2dae6467b8a9da5c1556e6588c12ca977b0100000000000000b261a66b9bae17b65e7f6a88d65efb4519925d6c418c9e2ba17bfdbf684b776301000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c491420100000000000000ce60d2c987bbeeaceff8463484b717ce80cbcf3d8f8b2102e95effc88000d95d01000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a0100000000000000c686fbbc968476537924f90aaa4993eef8314685d150228c462f8ae4e5e1e57f01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b2001000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a77480100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000002001d47fbff7291a50650047b27cc47f1d22a0bdfbbfb0b8b7a6e8bbf350bf620100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000005e0fa84f762f7d6e4c4b0c18a86e1b7da6cb4fe7dfcf6b5c0056a7ccd8eb201401000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe0837215600100000000000000c280e82e46ecabc4d68169e292c59cef96432f25fe849b8a147db5ca0ce7e17b010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000006ca32996225021dadb0b3f22460db6ce243faa3a0df7b33ef28e5fbcb9cf6f2f01000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000f0c0cc64f8973ebc2322273e684b4f73f412503f124c130be0be1589718cdd780100000000000000322dcdf3a5f50091af8b876983da0e0e98e358339e6033cdb865cd64995f86130100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000003213885ba6fd707b0716aeaad959cd824ab2f854e55963d9e69af006d194d51f0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e01000000000000008013bf5a25c703e64dc4ae7e1248c0f2c7abad9e43672d82611d10974019985601000000000000007075de5f3cae26e005560440e9cc633c9fe8d7143b1fb8dc67e0d1ed7871e77d0100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f01000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e670100000000000000d23c53a531e356646133db73065cd83999693a5bdfc05931238434f5b031522f01000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de32010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b0100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a5003010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d01000000000000000469db5710f30dc9ed7411417170efd62ce8bbe36ccab6df758a94aa7b7f720b010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b01000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf460100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f010000000000000072f2ff3d21f4126e217f10f9d9bd18069c12eaab6922d073dd5241ac718e91200100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b010000000000000096ef8b525c38b9a74a3014bd99979230dab2f20221e8c7d1db50c7a61a02e97e01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a01000000000000008c45a06f479923e10cc400ae1600234f85906e26195bde9023350efaf0bc622c01000000000000006053f4e41a4db1dd6ddcd2304b62de45cda832c4e63a831ce9e634fab830d40d0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad21020100000000000000104b3d784f0ae26bf3268fb7342a99fcbb1ea61068e03337df050ef2e0895374010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e0100000000000000bae8e68bc8f1b66fe3229ee72d77137b394c6b7dfbf55e424f9d2c82d5c99600010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc24010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e01000000000000001c103b038f0515bb77061128200e1f117a531cb4474cf5f9430535345f54196701000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c2801000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b3040100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e21010000000000000096e0b71982f3e7ba6ab06d28dfbf803caf4ac51b7633bee848f4f3fadc0dac480100000000000000068245d8a483bdbd4e9d88b49e17a651ec168f25e6851fc52c2e36a516031d5e0100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000dc1d6d9b878558829a87267a578e1d044b2033888074dcc3a9fcd69cd5e60d3e0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b01000000000000007e0da5500e4e91faec6b7c3763c52058a7a9350be3009f2fe00a8e3bf0c59e790100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a18432201000000000000005d9f86b7514745bf41299f7fb39969966e4b7556bc3942a51c95052f5233493901000000000000000400000000000000029ea154e5d5448f812bcac06720992209518325b0527502738bbbcedc30413c24e4563001019d20000000000000739efe10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f280100000000000000ba395fcb33327501109ed40712c7a372d25bf3339edfabe2a1964fb7b5d4d82401000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e010000000000000026db7c5786fddc15f7e96905024905d877537451ed444cb97d3786361a59f64b0100000000000000c67b1b3084dc3eb2cc7a3cc4f742defc21b733e787737cbaf3b146a052633e0f01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000a6f10752adf745ad55866031836194ad027ed8d6710d9853ef62982bcf45fd0e010000000000000078c35105ea4cd9d6ea0ba91b2c19e78f60931bef5918c1bd2e14259229e7c330010000000000000006d2846642c835b0fb1ff1ef908449376aa8e7c0f3352e55da9a1e97e9528b230100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e47758878972010000000000000090d25f2368ee57fb5c100140b7507d5831fb035e7632c53b532b65e6d14ba8480100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a0100000000000000a42289d68c963358f3c450a850242bb53121e73e17f0e2ea2b93327446bea33c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc35310010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f010000000000000024532b17fc5fb786660c52aeb03150799165dd05e88ce359189189a4b771f51e01000000000000008610e1f00a1eba67d13225867c1f2972e60604e49bea7e5c1b10b29d4841b84a0100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b0100000000000000acef6dc8da16677955c38451be5a1b369fdc3c20bc249a1aec917276dfc2da580100000000000000c49cfd152ce3ac1fa142b3b6e720cb173eb7f43c82f021418253a070036f870c01000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e01000000000000009237113cf97fee5fafbeb82de593f6125e9c498bd59f0369625f46b326c7d9170100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f0678771701000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f510100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e010000000000000088f9a16886165d00612032cb1b36669ad62b7325536f499191e711134c71b6070100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f010000000000000032636c64cae326ea37dfa4ddad688feb9829ada7a7d580a91ce03a50a673d01c01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c560100000000000000c65c0a74887e9fe5cc56696fac7e7f5f1cd4a68f9661c8384b300bcdfbe67a1801000000000000003690e6ef639f685849ed93a6386d1fccf026c3fb64520940aa46af97f929e112010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e70210100000000000000ee82f2670e36b9ad136ae1ab1607c35f3b49a8c93b86802c06df3ca62a2e3561010000000000000024a0c6db2090170748a7bae71b6f77b5dcc14c6acc5c58e8de78d317ccafe14401000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf0801000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b0100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c39070100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d707600501000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb550100000000000000220d3f26072ad42aa5ca04b7253284d185f8bf95650faa170cbda8d7a47ea84a01000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c01000000000000007480edf84ab569e559dccc99b87ecb9ae9db670b45a259b7f6e618b063e43113010000000000000020bedd48a5965e2fc0e221bd164deecdee849eb69cb8dc63a37df80b50a3093b010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e5101000000000000004628f93047462b43ec0886f2c7d7318ddad1764fd32af4f32ef0b2dcfa4b297a010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000003635c55546f19bfe62d84a220c4396b1c9d71a1acdb2da917a82f0c1415a2b020100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa7401000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000008c64cd873a53fec10c4624239ce35d31d4422e32a109605a162fcbf632427733010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000da98e4363908fa4d7980fe5574ceeac74fae49bf77b3a191654c7731214a565e0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a0100000000000000b2518044cc31062ee50fa81cb6983f314291a0300865fa5cfe149829c5050d24010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a5201000000000000004e8cc21504fda961cf1cfe78e651d033b10f8ab1a4a0c757bd4848a7f2827f0601000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000a6cd7eca570e90e2efeeda8f1c09480884a073c66fc7c41b2464e11822b12f0c0100000000000000944ad19383a9ae136f4f11c15687923b9b21319efab021336a3e8f2bd5b5ca20010000000000000068508b2ca3e01d7c8d79d99f1bb06a93058d14f1061d5fed4df13d4bc30aa557010000000000000074f02ed037d28c883df643034a596e4d2a97a23782ee8483c9ae3429ede7e7090100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a01000000000000005c252543704920d6bea67453cdd61b464b001badf73a3ea3b9e9fb35b224947201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b3515010000000000000004734733edcd9cf662389208fb8ccb5f274a7db8187ccc53dc84250f8599d54d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b010000000000000010fee28789d45569ac0c95b7287fc7c5f087d93516cbd06e3c074a392d86da300100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e6380100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb190100000000000000b071e9d6b444a555e034ecdc4d04f2528cc36b347b231b33388564a40fd32b2c0100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000f894d159aa4b63402119985e2243e77fc35787fb086867659412c8c6918b2a670100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f61001000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c8400100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000024190e384934261c444897054262813c65a73aaf371806db97762e995e5b350e0100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f76010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000022a66dd6397c2631df509db3482baac28b546729e6ce965472a9ba2e648ccc74010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a2520100000000000000767cb742c94b22fff80da70a4ea77069aecde7ded53fbf5d957b01196924cd2d0100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea840010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e66010000000000000016f34c9e6687012c42f9c02de75b9499849fe771f2ad2e666f965dc6627735540100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd0401000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000076fa252aeca5b108fe76ce12e395ed8105d5c98e4abae38bfc7cb4fbd4d43d5501000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000fa30595578d5e253a0a3701616665cb205fc02eb560c023454c280bfc6cd8d090100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000c670e2b0f864f126be43807610aab3295cb4ed6a684d95de331d700f74e2985e0100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a52401000000000000004a1069d2203a75cd1078c39de35c16a6c4c12acbad34f1cba8efc065f80398610100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e176010000000000000062c6c1f6f2478ee092c958842ac4351973bfeb49f55e33b8415ac0296a967b5f01000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c721535901000000000000009a64daca74d14dab93385e52ca70940732a8d45ae4b853ce156c3eeca06f0c5f0100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c230100000000000000b2ddb9eab0545b9ac7a46e37d6fc4605c34227d848416bd3637da7156efe612601000000000000001a15acd9aec8d1dd06c7b6a46be298c3fc2ecd51be6724a63da4da286e306f72010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e7630100000000000000140fbeeabfb02dede7214a17c2cf78279d076c80d962431f35d1105c87b8d95501000000000000007cb1f225b90c00f426c33ac4338eeb2dae6467b8a9da5c1556e6588c12ca977b0100000000000000b261a66b9bae17b65e7f6a88d65efb4519925d6c418c9e2ba17bfdbf684b776301000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c491420100000000000000ce60d2c987bbeeaceff8463484b717ce80cbcf3d8f8b2102e95effc88000d95d01000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a0100000000000000c686fbbc968476537924f90aaa4993eef8314685d150228c462f8ae4e5e1e57f01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b2001000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a77480100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000002001d47fbff7291a50650047b27cc47f1d22a0bdfbbfb0b8b7a6e8bbf350bf620100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000005e0fa84f762f7d6e4c4b0c18a86e1b7da6cb4fe7dfcf6b5c0056a7ccd8eb201401000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe0837215600100000000000000c280e82e46ecabc4d68169e292c59cef96432f25fe849b8a147db5ca0ce7e17b010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000006ca32996225021dadb0b3f22460db6ce243faa3a0df7b33ef28e5fbcb9cf6f2f01000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000f0c0cc64f8973ebc2322273e684b4f73f412503f124c130be0be1589718cdd780100000000000000322dcdf3a5f50091af8b876983da0e0e98e358339e6033cdb865cd64995f86130100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000003213885ba6fd707b0716aeaad959cd824ab2f854e55963d9e69af006d194d51f0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e01000000000000008013bf5a25c703e64dc4ae7e1248c0f2c7abad9e43672d82611d10974019985601000000000000007075de5f3cae26e005560440e9cc633c9fe8d7143b1fb8dc67e0d1ed7871e77d0100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f01000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e670100000000000000d23c53a531e356646133db73065cd83999693a5bdfc05931238434f5b031522f01000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de32010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b0100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a5003010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d01000000000000000469db5710f30dc9ed7411417170efd62ce8bbe36ccab6df758a94aa7b7f720b010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b01000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf460100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f010000000000000072f2ff3d21f4126e217f10f9d9bd18069c12eaab6922d073dd5241ac718e91200100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b010000000000000096ef8b525c38b9a74a3014bd99979230dab2f20221e8c7d1db50c7a61a02e97e01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a01000000000000008c45a06f479923e10cc400ae1600234f85906e26195bde9023350efaf0bc622c01000000000000006053f4e41a4db1dd6ddcd2304b62de45cda832c4e63a831ce9e634fab830d40d0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad21020100000000000000104b3d784f0ae26bf3268fb7342a99fcbb1ea61068e03337df050ef2e0895374010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e0100000000000000bae8e68bc8f1b66fe3229ee72d77137b394c6b7dfbf55e424f9d2c82d5c99600010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc24010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e01000000000000001c103b038f0515bb77061128200e1f117a531cb4474cf5f9430535345f54196701000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c2801000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b3040100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e21010000000000000096e0b71982f3e7ba6ab06d28dfbf803caf4ac51b7633bee848f4f3fadc0dac480100000000000000068245d8a483bdbd4e9d88b49e17a651ec168f25e6851fc52c2e36a516031d5e0100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000dc1d6d9b878558829a87267a578e1d044b2033888074dcc3a9fcd69cd5e60d3e0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b01000000000000007e0da5500e4e91faec6b7c3763c52058a7a9350be3009f2fe00a8e3bf0c59e790100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a18432201000000000000005d9f86b7514745bf41299f7fb39969966e4b7556bc3942a51c95052f523349390100000000000000040000000000000002dc81f2058c70567f7c85ded467631941c2efb85ba96e2c9328f10be4774092dc904d3001019c200000000000001395fe10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f280100000000000000ba395fcb33327501109ed40712c7a372d25bf3339edfabe2a1964fb7b5d4d82401000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e010000000000000026db7c5786fddc15f7e96905024905d877537451ed444cb97d3786361a59f64b0100000000000000c67b1b3084dc3eb2cc7a3cc4f742defc21b733e787737cbaf3b146a052633e0f01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000a6f10752adf745ad55866031836194ad027ed8d6710d9853ef62982bcf45fd0e010000000000000078c35105ea4cd9d6ea0ba91b2c19e78f60931bef5918c1bd2e14259229e7c330010000000000000006d2846642c835b0fb1ff1ef908449376aa8e7c0f3352e55da9a1e97e9528b230100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e47758878972010000000000000090d25f2368ee57fb5c100140b7507d5831fb035e7632c53b532b65e6d14ba8480100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a0100000000000000a42289d68c963358f3c450a850242bb53121e73e17f0e2ea2b93327446bea33c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc35310010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f010000000000000024532b17fc5fb786660c52aeb03150799165dd05e88ce359189189a4b771f51e01000000000000008610e1f00a1eba67d13225867c1f2972e60604e49bea7e5c1b10b29d4841b84a0100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b0100000000000000acef6dc8da16677955c38451be5a1b369fdc3c20bc249a1aec917276dfc2da580100000000000000c49cfd152ce3ac1fa142b3b6e720cb173eb7f43c82f021418253a070036f870c01000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e01000000000000009237113cf97fee5fafbeb82de593f6125e9c498bd59f0369625f46b326c7d9170100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f0678771701000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f510100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e010000000000000088f9a16886165d00612032cb1b36669ad62b7325536f499191e711134c71b6070100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f010000000000000032636c64cae326ea37dfa4ddad688feb9829ada7a7d580a91ce03a50a673d01c01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c560100000000000000c65c0a74887e9fe5cc56696fac7e7f5f1cd4a68f9661c8384b300bcdfbe67a1801000000000000003690e6ef639f685849ed93a6386d1fccf026c3fb64520940aa46af97f929e112010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e70210100000000000000ee82f2670e36b9ad136ae1ab1607c35f3b49a8c93b86802c06df3ca62a2e3561010000000000000024a0c6db2090170748a7bae71b6f77b5dcc14c6acc5c58e8de78d317ccafe14401000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf0801000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b0100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c39070100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d707600501000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb550100000000000000220d3f26072ad42aa5ca04b7253284d185f8bf95650faa170cbda8d7a47ea84a01000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c01000000000000007480edf84ab569e559dccc99b87ecb9ae9db670b45a259b7f6e618b063e43113010000000000000020bedd48a5965e2fc0e221bd164deecdee849eb69cb8dc63a37df80b50a3093b010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e5101000000000000004628f93047462b43ec0886f2c7d7318ddad1764fd32af4f32ef0b2dcfa4b297a010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000003635c55546f19bfe62d84a220c4396b1c9d71a1acdb2da917a82f0c1415a2b020100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa7401000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000008c64cd873a53fec10c4624239ce35d31d4422e32a109605a162fcbf632427733010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000da98e4363908fa4d7980fe5574ceeac74fae49bf77b3a191654c7731214a565e0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a0100000000000000b2518044cc31062ee50fa81cb6983f314291a0300865fa5cfe149829c5050d24010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a5201000000000000004e8cc21504fda961cf1cfe78e651d033b10f8ab1a4a0c757bd4848a7f2827f0601000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000a6cd7eca570e90e2efeeda8f1c09480884a073c66fc7c41b2464e11822b12f0c0100000000000000944ad19383a9ae136f4f11c15687923b9b21319efab021336a3e8f2bd5b5ca20010000000000000068508b2ca3e01d7c8d79d99f1bb06a93058d14f1061d5fed4df13d4bc30aa557010000000000000074f02ed037d28c883df643034a596e4d2a97a23782ee8483c9ae3429ede7e7090100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a01000000000000005c252543704920d6bea67453cdd61b464b001badf73a3ea3b9e9fb35b224947201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b3515010000000000000004734733edcd9cf662389208fb8ccb5f274a7db8187ccc53dc84250f8599d54d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b010000000000000010fee28789d45569ac0c95b7287fc7c5f087d93516cbd06e3c074a392d86da300100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e6380100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb190100000000000000b071e9d6b444a555e034ecdc4d04f2528cc36b347b231b33388564a40fd32b2c0100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000f894d159aa4b63402119985e2243e77fc35787fb086867659412c8c6918b2a670100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f61001000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c8400100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000024190e384934261c444897054262813c65a73aaf371806db97762e995e5b350e0100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f76010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000022a66dd6397c2631df509db3482baac28b546729e6ce965472a9ba2e648ccc74010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a2520100000000000000767cb742c94b22fff80da70a4ea77069aecde7ded53fbf5d957b01196924cd2d0100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea840010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e66010000000000000016f34c9e6687012c42f9c02de75b9499849fe771f2ad2e666f965dc6627735540100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd0401000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000076fa252aeca5b108fe76ce12e395ed8105d5c98e4abae38bfc7cb4fbd4d43d5501000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000fa30595578d5e253a0a3701616665cb205fc02eb560c023454c280bfc6cd8d090100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000c670e2b0f864f126be43807610aab3295cb4ed6a684d95de331d700f74e2985e0100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a52401000000000000004a1069d2203a75cd1078c39de35c16a6c4c12acbad34f1cba8efc065f80398610100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e176010000000000000062c6c1f6f2478ee092c958842ac4351973bfeb49f55e33b8415ac0296a967b5f01000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c721535901000000000000009a64daca74d14dab93385e52ca70940732a8d45ae4b853ce156c3eeca06f0c5f0100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c230100000000000000b2ddb9eab0545b9ac7a46e37d6fc4605c34227d848416bd3637da7156efe612601000000000000001a15acd9aec8d1dd06c7b6a46be298c3fc2ecd51be6724a63da4da286e306f72010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e7630100000000000000140fbeeabfb02dede7214a17c2cf78279d076c80d962431f35d1105c87b8d95501000000000000007cb1f225b90c00f426c33ac4338eeb2dae6467b8a9da5c1556e6588c12ca977b0100000000000000b261a66b9bae17b65e7f6a88d65efb4519925d6c418c9e2ba17bfdbf684b776301000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c491420100000000000000ce60d2c987bbeeaceff8463484b717ce80cbcf3d8f8b2102e95effc88000d95d01000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a0100000000000000c686fbbc968476537924f90aaa4993eef8314685d150228c462f8ae4e5e1e57f01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b2001000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a77480100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000002001d47fbff7291a50650047b27cc47f1d22a0bdfbbfb0b8b7a6e8bbf350bf620100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000005e0fa84f762f7d6e4c4b0c18a86e1b7da6cb4fe7dfcf6b5c0056a7ccd8eb201401000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe0837215600100000000000000c280e82e46ecabc4d68169e292c59cef96432f25fe849b8a147db5ca0ce7e17b010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000006ca32996225021dadb0b3f22460db6ce243faa3a0df7b33ef28e5fbcb9cf6f2f01000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000f0c0cc64f8973ebc2322273e684b4f73f412503f124c130be0be1589718cdd780100000000000000322dcdf3a5f50091af8b876983da0e0e98e358339e6033cdb865cd64995f86130100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000003213885ba6fd707b0716aeaad959cd824ab2f854e55963d9e69af006d194d51f0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e01000000000000008013bf5a25c703e64dc4ae7e1248c0f2c7abad9e43672d82611d109740199856010000000000000064214c3864c6011c684c9189e62616eff43fd4709c37755b41d432a6ee03fc020100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f01000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e670100000000000000d23c53a531e356646133db73065cd83999693a5bdfc05931238434f5b031522f01000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de32010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b0100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a5003010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d01000000000000000469db5710f30dc9ed7411417170efd62ce8bbe36ccab6df758a94aa7b7f720b010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b01000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf460100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f010000000000000072f2ff3d21f4126e217f10f9d9bd18069c12eaab6922d073dd5241ac718e91200100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b010000000000000096ef8b525c38b9a74a3014bd99979230dab2f20221e8c7d1db50c7a61a02e97e01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a01000000000000008c45a06f479923e10cc400ae1600234f85906e26195bde9023350efaf0bc622c01000000000000006053f4e41a4db1dd6ddcd2304b62de45cda832c4e63a831ce9e634fab830d40d0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad21020100000000000000104b3d784f0ae26bf3268fb7342a99fcbb1ea61068e03337df050ef2e0895374010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e0100000000000000bae8e68bc8f1b66fe3229ee72d77137b394c6b7dfbf55e424f9d2c82d5c99600010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc24010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e01000000000000001c103b038f0515bb77061128200e1f117a531cb4474cf5f9430535345f54196701000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c2801000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b3040100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e21010000000000000096e0b71982f3e7ba6ab06d28dfbf803caf4ac51b7633bee848f4f3fadc0dac480100000000000000068245d8a483bdbd4e9d88b49e17a651ec168f25e6851fc52c2e36a516031d5e0100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000dc1d6d9b878558829a87267a578e1d044b2033888074dcc3a9fcd69cd5e60d3e0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b01000000000000007e0da5500e4e91faec6b7c3763c52058a7a9350be3009f2fe00a8e3bf0c59e790100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a1843220100000000000000389a3d1a5e1e8099f5b05213b5e20bf7f80c50e945831f1309f1d0623dc514e60100000000000000040000000000000002ffb5d0e61bb7150459291768cdad47428dce5d980d4975c4e1e21ad0b43a059fe4563001019d20000000000000739efe10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f280100000000000000ba395fcb33327501109ed40712c7a372d25bf3339edfabe2a1964fb7b5d4d82401000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e010000000000000026db7c5786fddc15f7e96905024905d877537451ed444cb97d3786361a59f64b0100000000000000c67b1b3084dc3eb2cc7a3cc4f742defc21b733e787737cbaf3b146a052633e0f01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000a6f10752adf745ad55866031836194ad027ed8d6710d9853ef62982bcf45fd0e010000000000000078c35105ea4cd9d6ea0ba91b2c19e78f60931bef5918c1bd2e14259229e7c330010000000000000006d2846642c835b0fb1ff1ef908449376aa8e7c0f3352e55da9a1e97e9528b230100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e47758878972010000000000000090d25f2368ee57fb5c100140b7507d5831fb035e7632c53b532b65e6d14ba8480100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a0100000000000000a42289d68c963358f3c450a850242bb53121e73e17f0e2ea2b93327446bea33c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc35310010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f010000000000000024532b17fc5fb786660c52aeb03150799165dd05e88ce359189189a4b771f51e01000000000000008610e1f00a1eba67d13225867c1f2972e60604e49bea7e5c1b10b29d4841b84a0100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b0100000000000000acef6dc8da16677955c38451be5a1b369fdc3c20bc249a1aec917276dfc2da580100000000000000c49cfd152ce3ac1fa142b3b6e720cb173eb7f43c82f021418253a070036f870c01000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e01000000000000009237113cf97fee5fafbeb82de593f6125e9c498bd59f0369625f46b326c7d9170100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f0678771701000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f510100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e010000000000000088f9a16886165d00612032cb1b36669ad62b7325536f499191e711134c71b6070100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f010000000000000032636c64cae326ea37dfa4ddad688feb9829ada7a7d580a91ce03a50a673d01c01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c560100000000000000c65c0a74887e9fe5cc56696fac7e7f5f1cd4a68f9661c8384b300bcdfbe67a1801000000000000003690e6ef639f685849ed93a6386d1fccf026c3fb64520940aa46af97f929e112010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e70210100000000000000ee82f2670e36b9ad136ae1ab1607c35f3b49a8c93b86802c06df3ca62a2e3561010000000000000024a0c6db2090170748a7bae71b6f77b5dcc14c6acc5c58e8de78d317ccafe14401000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf0801000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b0100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c39070100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d707600501000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb550100000000000000220d3f26072ad42aa5ca04b7253284d185f8bf95650faa170cbda8d7a47ea84a01000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c01000000000000007480edf84ab569e559dccc99b87ecb9ae9db670b45a259b7f6e618b063e43113010000000000000020bedd48a5965e2fc0e221bd164deecdee849eb69cb8dc63a37df80b50a3093b010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e5101000000000000004628f93047462b43ec0886f2c7d7318ddad1764fd32af4f32ef0b2dcfa4b297a010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000003635c55546f19bfe62d84a220c4396b1c9d71a1acdb2da917a82f0c1415a2b020100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa7401000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000008c64cd873a53fec10c4624239ce35d31d4422e32a109605a162fcbf632427733010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000da98e4363908fa4d7980fe5574ceeac74fae49bf77b3a191654c7731214a565e0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a0100000000000000b2518044cc31062ee50fa81cb6983f314291a0300865fa5cfe149829c5050d24010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a5201000000000000004e8cc21504fda961cf1cfe78e651d033b10f8ab1a4a0c757bd4848a7f2827f0601000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000a6cd7eca570e90e2efeeda8f1c09480884a073c66fc7c41b2464e11822b12f0c0100000000000000944ad19383a9ae136f4f11c15687923b9b21319efab021336a3e8f2bd5b5ca20010000000000000068508b2ca3e01d7c8d79d99f1bb06a93058d14f1061d5fed4df13d4bc30aa557010000000000000074f02ed037d28c883df643034a596e4d2a97a23782ee8483c9ae3429ede7e7090100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a01000000000000005c252543704920d6bea67453cdd61b464b001badf73a3ea3b9e9fb35b224947201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b3515010000000000000004734733edcd9cf662389208fb8ccb5f274a7db8187ccc53dc84250f8599d54d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b010000000000000010fee28789d45569ac0c95b7287fc7c5f087d93516cbd06e3c074a392d86da300100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e6380100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb190100000000000000b071e9d6b444a555e034ecdc4d04f2528cc36b347b231b33388564a40fd32b2c0100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000f894d159aa4b63402119985e2243e77fc35787fb086867659412c8c6918b2a670100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f61001000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c8400100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000024190e384934261c444897054262813c65a73aaf371806db97762e995e5b350e0100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f76010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000022a66dd6397c2631df509db3482baac28b546729e6ce965472a9ba2e648ccc74010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a2520100000000000000767cb742c94b22fff80da70a4ea77069aecde7ded53fbf5d957b01196924cd2d0100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea840010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e66010000000000000016f34c9e6687012c42f9c02de75b9499849fe771f2ad2e666f965dc6627735540100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd0401000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000076fa252aeca5b108fe76ce12e395ed8105d5c98e4abae38bfc7cb4fbd4d43d5501000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000fa30595578d5e253a0a3701616665cb205fc02eb560c023454c280bfc6cd8d090100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000c670e2b0f864f126be43807610aab3295cb4ed6a684d95de331d700f74e2985e0100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a52401000000000000004a1069d2203a75cd1078c39de35c16a6c4c12acbad34f1cba8efc065f80398610100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e176010000000000000062c6c1f6f2478ee092c958842ac4351973bfeb49f55e33b8415ac0296a967b5f01000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c721535901000000000000009a64daca74d14dab93385e52ca70940732a8d45ae4b853ce156c3eeca06f0c5f0100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c230100000000000000b2ddb9eab0545b9ac7a46e37d6fc4605c34227d848416bd3637da7156efe612601000000000000001a15acd9aec8d1dd06c7b6a46be298c3fc2ecd51be6724a63da4da286e306f72010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e7630100000000000000140fbeeabfb02dede7214a17c2cf78279d076c80d962431f35d1105c87b8d95501000000000000007cb1f225b90c00f426c33ac4338eeb2dae6467b8a9da5c1556e6588c12ca977b0100000000000000b261a66b9bae17b65e7f6a88d65efb4519925d6c418c9e2ba17bfdbf684b776301000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c491420100000000000000ce60d2c987bbeeaceff8463484b717ce80cbcf3d8f8b2102e95effc88000d95d01000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a0100000000000000c686fbbc968476537924f90aaa4993eef8314685d150228c462f8ae4e5e1e57f01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b2001000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a77480100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000002001d47fbff7291a50650047b27cc47f1d22a0bdfbbfb0b8b7a6e8bbf350bf620100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000005e0fa84f762f7d6e4c4b0c18a86e1b7da6cb4fe7dfcf6b5c0056a7ccd8eb201401000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe0837215600100000000000000c280e82e46ecabc4d68169e292c59cef96432f25fe849b8a147db5ca0ce7e17b010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000006ca32996225021dadb0b3f22460db6ce243faa3a0df7b33ef28e5fbcb9cf6f2f01000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000f0c0cc64f8973ebc2322273e684b4f73f412503f124c130be0be1589718cdd780100000000000000322dcdf3a5f50091af8b876983da0e0e98e358339e6033cdb865cd64995f86130100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000003213885ba6fd707b0716aeaad959cd824ab2f854e55963d9e69af006d194d51f0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e01000000000000008013bf5a25c703e64dc4ae7e1248c0f2c7abad9e43672d82611d10974019985601000000000000007075de5f3cae26e005560440e9cc633c9fe8d7143b1fb8dc67e0d1ed7871e77d0100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f01000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e670100000000000000d23c53a531e356646133db73065cd83999693a5bdfc05931238434f5b031522f01000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de32010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b0100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a5003010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d01000000000000000469db5710f30dc9ed7411417170efd62ce8bbe36ccab6df758a94aa7b7f720b010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b01000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf460100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f010000000000000072f2ff3d21f4126e217f10f9d9bd18069c12eaab6922d073dd5241ac718e91200100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b010000000000000096ef8b525c38b9a74a3014bd99979230dab2f20221e8c7d1db50c7a61a02e97e01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a01000000000000008c45a06f479923e10cc400ae1600234f85906e26195bde9023350efaf0bc622c01000000000000006053f4e41a4db1dd6ddcd2304b62de45cda832c4e63a831ce9e634fab830d40d0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad21020100000000000000104b3d784f0ae26bf3268fb7342a99fcbb1ea61068e03337df050ef2e0895374010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e0100000000000000bae8e68bc8f1b66fe3229ee72d77137b394c6b7dfbf55e424f9d2c82d5c99600010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc24010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e01000000000000001c103b038f0515bb77061128200e1f117a531cb4474cf5f9430535345f54196701000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c2801000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b3040100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e21010000000000000096e0b71982f3e7ba6ab06d28dfbf803caf4ac51b7633bee848f4f3fadc0dac480100000000000000068245d8a483bdbd4e9d88b49e17a651ec168f25e6851fc52c2e36a516031d5e0100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000dc1d6d9b878558829a87267a578e1d044b2033888074dcc3a9fcd69cd5e60d3e0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b01000000000000007e0da5500e4e91faec6b7c3763c52058a7a9350be3009f2fe00a8e3bf0c59e790100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a18432201000000000000005d9f86b7514745bf41299f7fb39969966e4b7556bc3942a51c95052f523349390100000000000000040000000000000002", + "babeFinalizedBlockWeight": 4980440, + "finalizedBlockHeader": "0x08fc7d82be90fc446540dfc7fa84ea9654e4b325c371287af36fc682b35de5003662c1045aa42cc757a09c3e25503e09011b5d42bda04ae837625b94fc8b5707fc720a1e1542f33045f3c148004d12449a85939443875ed22a6b784d0b98bcd23e8d94700c0642414245b50103c5000000be96fe1000000000b23bf90dbb77221a32ecce7d972f2329400d1f1e63ad35dceeea1da85b70db291c684e274e48e2209af241ba33af42ffb5d146744563a182f2a9e5f19eed2807cc6de44d4cd6122378107fdc2e911e1dbb48ad8e3128c2704fffd376f897770a0442454546840339ee35d495af3a52ded5bf12f7d0199ba9a2ef6b7fad55d4a43b1d3d298b149c05424142450101a67b1f75fc1754699d7be1faae0fc2607c30bfbf391a214842ad1a28bf11d257d89dba14f111563675fe3f407e0b6068ca17e42da4e34311471673b233f0b680", + "grandpaAuthoritySet": "0xa5046f706506065685b322054d22e8a1f23ca9df75c32a88dda5214ad58b553b4cca01000000000000008a239af78d4659897af698b5670533fa6d215864be8c41e3a2fc4309f9f83dcb0100000000000000e2b9e72d9202e99526fa626d9a6651dfd7c1daec8fc6ba1130af96f7d21a42da010000000000000056b838dd2005e499be47ceef086df4ca9c5fbc1f81968391c31af062a8a8bef301000000000000004a3fc0fe1020c7f460c7bd23d0b657c03368552b2f0a12d80a1c406fd066e0db01000000000000009b992b5e9b99eb2cd3b2b648d6db81ed722a2feb4938d998b58dcb5d159fadfa0100000000000000aee9de3938173700b3e3f4fbf2b200ae296173a0854157f40de2598dd4cad8f10100000000000000243f110deac5efe8e963d794eb8706a1895ae1942523ab0fe9e1623515b7dea80100000000000000e8d7333e457fa740db924866152f31c3bfa6124c0367b0878a61aff2d5d6e27e0100000000000000426b2be4596a759a15028d84e08c5c56440e6cede68d088f47c671cc3387c3e6010000000000000070ba6e5985990ba1b1392713236f1b50df750f10f744cc6eb95fa7c5cfbc68760100000000000000d343862beda4cf485b4a3b7e9b62d3b7e6263b47f65a7c88c88f6e0f1350c7a50100000000000000116768c765c7ce5a5e895a5342d1f56f1a118901d8d36fe584bab325506f3b2801000000000000007d09df0a629a0eee12da27d7fad8b18833a7d1edc7c6c8b7701e425ae449fa820100000000000000e511d441d6d3c822cb276bb2a14b1c8071d9fe1995802383fb5dcf8a92edcfc20100000000000000be2235b9d9c9164f494dd688000fb569a37d5c47912ef99b9ebda9318d13345e010000000000000049c0902ee37b569482da5474a15458b5dee16102fbc09b45878bb05f4a717acf01000000000000000e0ac68072ac35b8f19f98d13385b6eb75cf6fd4d513d9a2abfe9711b19883bb01000000000000007818639057900f8fb58e3aa8180f6108c251884a9fcb8041ca645cf612bc1eda0100000000000000a8dbfc6cb88ac105e25b9dc7f11e883631824647cd4d0c18014bb6239627b2900100000000000000a5b094ae7c156592baa68ce18dab6368d5b665e9a0f07dfc5f54f58309e086c101000000000000005ce9f5dbcde6b3a066cfe93e07f0066fa7aa3ef8511d34dede8aa8f7cba5b68b010000000000000041ef4a31eb7dc1e01f4630604e1908e644d7cdee3f66a60f98d6d59605326f8b0100000000000000890f5c296681b8c23038b3d36a491ca9e0e7e809e6455b2bcd28a13700f81abb010000000000000008cc1d6c743da905511a39a6f0a68809a6bc32f8ac25e53bb2d6aca4f493fc9b0100000000000000acd71d4269b3ba2a9de822d494c4d841708e1519c08de41d7fc6153eaf48da8101000000000000007c1024f3b93e54cb1cdde0d2f685e2e16cadabe59e407ebc45eabb07efebca6101000000000000000f42866aa6927f1c5916a8a1a5a5cba2d88e1fff957d80df701617d93ee6407801000000000000005cba2c6f569da1edc3778308da406f266aa53140381dbb3f14f22909ba6e30040100000000000000dac2e90de824b109043f70818d53eabe05e79d518bda504e951d7f4056b0b2720100000000000000652f455eb3d30486151c716a4031bc02bd00254ef3e8290fd29f946d958a46b60100000000000000589fc35b132ef9d7ed9a6787a203e5a3a37f8cd6c775f47ac5e589d55d381a640100000000000000a34b3f8e84aa86be3b47260f67720030795fc96379e5b31cc6c87c2f4d1cc3e001000000000000007977808620ade75f3efeb26b0926229e0817c6163399f1d48f39ece8159c9ec20100000000000000dccafad8bba5affbc80095564afc9376881907073a060979fabbb962bef08d560100000000000000cba3e016511b2fea3ba7738f807f31d6dc0679b877910dff84cf12bc357105d30100000000000000aa3be8112cdf851411fe9e00fe9ef0a6b58217326ba7c1ab7ed9ce8a34620b250100000000000000c1c1ff5f66fefb5c0849e3b2333411d1f7e9dd4888600e334e7a33623f15fa360100000000000000fe240e80ff8a48a77947b394979cf361017cd906ddaab637d72cf72e729d79bf01000000000000002f40f2660559a4472aa7d2b5dac22c8925b9baeaec9fa2463cef2a77eb9d3a1b0100000000000000fa2c21f1a03638d4cb35202102240c2b85f5667924d5838cc503721117049da601000000000000008aabd4f6d7ecec7a749c83fc7be33f3b4818cca6f93a4927b4964900df9454e50100000000000000fcc0d954c7d519851e0094cd9a015b4789022a37091e3a04791d0731bd85f0d301000000000000003948bfd09bbbc2fe6ac5dfe53146e32df50828eecf7b2b18cdcff8dc385cbd750100000000000000a2a4af2a11ae7ba812fcc32845583d0354a0f2ffb1271a53c9a976a0f47fff4401000000000000002385953f1ac49461b9c243159d9668b26e7322e19fff7bc18d90634f0f767ce8010000000000000058e304af91397247f704ce95d60845629aa59a50fba1c13896bb2300708db47201000000000000008663371a5899d5e7a8bc99b9a6ce24c8c3f5f1149c1e70accf9560405c1a5bf201000000000000003d28789c6d574f3aa6d14360471901c5bf8255d072c2209fa22ac773bd32e5bf010000000000000041763df8284ae8248ee0f649982ffc7d4f613e07c7bb83cd554aca5dcf8f56250100000000000000cc0c6a91c7971438b621cd9a3bd37a67f52ec4093336585d1e2c73416195e28a010000000000000094040fd277c75d7227bf8d55973060bde3809b3b7d6ec79602f19cdf68e775cc0100000000000000de52bfa88c4a76bb22fbebb0f078dfcc5a327034e0044e8f8034f2a96e7adfef0100000000000000bf3fd3d4065b306638662c3e789d830a63d9b343cef5f863d346058387844b58010000000000000005197187ac7eb8d0a3cfadd32f1a7fb662e7e4a16ea718af3f1e4437b865205b0100000000000000c84074bb67af84cdf84b9df1dadc1188cd75709a8d11bba65f2835d76f38c4730100000000000000aaecb94cc62ac90656976daa8955353e0ff22fcabd55715903be2f958988bc070100000000000000b98c920666586f392d129d480e78a965764ac82de45e691589b3aab7831a7f020100000000000000cb92ffeace78dbafe6fbf275741b4b38657fb81590712aa0bca7877931f6ad39010000000000000034a18d21097f479eecbe51b91c522a798582caafc787134bab6888854742406e010000000000000027791275ae7d4735aa45e70210663067f7d268aa57126a26044c8f6d8572a7d80100000000000000f7c9f4bc8669969246cfb748ac6996db6cd4c1fc634d981a1093b2c3d7a2eadf0100000000000000b0b60d160bed8c1484f5359eb5282e523c47daaf880cb2d32edf97f633aeffd10100000000000000106ea6714f4bd7ecc914d6b6696f031f4d04a74afc55051068d3c44edfc6ecbc0100000000000000f001e2e99b378fa4f2d1a50b28c3fcefcd7da3a66314af1280fb7f9cb429dd380100000000000000ffd82ddc49373448bed6feb0032744e20068f4e21adc4cb6d2cbf05ce73f4ce40100000000000000507b0289bfb2f55c7a62ec3c3298690909013c916dd5885b05b330fdc0caf1270100000000000000c8185ca8ae6330a1e03490e132163adf517f76402ecac6881a51c8a14ed62f940100000000000000c49e3cd2c701bb845963c2870dcca12ed070c3f67ffc20144327a93aa6e896ec010000000000000081b1fce3ee9e31723f1023eaa9f8793e8663e72c50fbb0fbcea9bc78bacc491b01000000000000002dad5b2212ee688f2eeb9ca1fb6a90574f006dc1c6680ac3a8523363a248940b01000000000000004bb953c285fc6de7ef27baf835e8d905e60d86fb1bca0e52af8323e9d1ff219d010000000000000050f9fd6c0623020debb7843bcb832ee1d80db9b156d8e6083ccebd434fe979470100000000000000b8183b905f28b87c68c2d5b2f39f009f2ee22b47235f6c6d6cf6e63121b490300100000000000000b7c13f1239888cda5c8e6ac9ea10675df17633368906e66a487f91ddd3268ca601000000000000002cd51e09c3197e04155b78f3d97742ceffface390dc46f81f2613a94b2e483fd0100000000000000affb713ecdae328aa4436756f6a3e8add6b274d5ef1cc19d7aa69ab82c80e472010000000000000086cddc46c9a3a42c3821183d597e76872f1d4904b84a92e8160ab4e0fb4d39a8010000000000000052912b3dfd0ccacd00586b97f1abe32431a2f6fa9c2b3bb17837a1ecde61728001000000000000008a2b50acd1a4955fc814bf6720c7427902a6ce709f3a2d7c17c55b67f6f1c0630100000000000000ff80f99fcf0f4072402a4e522aecd41ff231c5b579d978d0383dda0407ee498b0100000000000000fd856413411b2e50cf1d32f8253c9bf7b055df259c42fc3a501ced6850173f8f01000000000000006565187c86eca2aaf37db6d59405535a5e6dd85e2743a07ebf50e55c2b7fbc890100000000000000aa674be249403288a8078e209231e764e3679f2f66a1070ea5d9b5b420fc53ab0100000000000000d1c146d2429a5a827660008721c7a880e71f44feaa3dc75524c1a9281bac48cd01000000000000005d2b07941a21adb6ba52298c2f0b0bdb6023e4a1713018762a5f61973b2fd1e80100000000000000e4b2cffd0b9cacfc500050b27ecae3c55b9b51bd9a416d62605118c8ad4fb09f0100000000000000f42c2e2a4157d51d22d5997dea1342f65e1882e207fd0e64e8e5d44330857eef0100000000000000f6d74de7b39455519a5d6480c8f12c93fc7a4cfc9af39154fc60857a39ad888b0100000000000000c8be78d05f652edd0a64a5865455de36d0fadb0d91c470fd344f8de23c8a6b9c01000000000000006ad5224d5c8f7fb3ae15dcb3766c0956ca627a6c91e93c4e770a2908e8f590150100000000000000f5fef7a87c9f3917fd28640907ce59ad26f33e41baa25d8ead8033ae0b944d7901000000000000005d0124063ede3e49f037df33948477235e5a58f93f8b98bf7203f25e11d4f0b4010000000000000049bfee2608fe8c9d280c80fe2e7e50d15980deeb1d29a2edc7507d17b319e7760100000000000000be95095d93298171c6fb8a1847adfa173d127e13f53482dcb694f891d68f0c58010000000000000085b714accac0654ba57fac59b626dd35802269d2c1d995cea7c335cb05a88f7f0100000000000000098e7f6085499cc37621458acc5a44dd928202482d456fed047f76a7edf1c08a01000000000000009c11e35911f023df6e4d218e53412ab4e4a20c17961d63ba381c913b51f394c001000000000000007448b6f6db7cfffd8650a1f3f08ddad1e114321ea770c9cfe6154882f586edb50100000000000000eea0e8d1a0aae5e5cd38dda0e172b49f8ea02287fd7d2ca79ffcdf6e593a2831010000000000000037483029302a84623f0a8db165fbed905b0a4fc25e7cfb56e975a0e98336a59b010000000000000053b5918f72e73f92f32b578d1b602f0cc554d98bee8c4e131ef0ac7a63399fb40100000000000000178838772f4eb26785673a57c8365e98a21ede2ed8d1ca3aeccbf7ef2631da110100000000000000587473ac474bbd8c99d14bec88d614426944b5c84dbf2912abac7610741560ff01000000000000001935d43843c66ecf76a9f4c4229de9ed7c172f52aa53d1a279f2856a736661b80100000000000000e1d3d955e446b13a28abadadd28971475035b3f25fcd414111bde54b53a3faab0100000000000000501c3978722a089f663f75c7865626a43d13ce19bd924583e43a46720584ed140100000000000000cdeaed45451971dcdcf886df977f31b3c004c497037d9940bcbbf2bd6dd2e3340100000000000000cc5dc1c5155dfcf43ee8dc4443292e966cb3226aea4fdf88e73daa259d66b673010000000000000008cb5d0ff7f138698c9fb80a1383155cff65ec7e127c5b3614e2e17963969f100100000000000000a7ae34bd517afa9f7563b73483435a14c56d9901a78f9459566355ec60a7cc8501000000000000006727561447ed474ff4e15645b952a37fa5008d4e694d4853bb55594fa34c4f340100000000000000c05f72a55f91f613b2da541ae27eb6053e80f267c906c135a4ebd848ecfb49db0100000000000000ec295fb809e22c332aa36a57afe05f2c093b2d13e52b0971d8265c5514e4e9690100000000000000a47880b0265ec6d2348a47b2df5b8cffd9c3221c1c9ed0e623d68641f4172c060100000000000000efb5f1e4c4ba37f8c159d452d897c607a58518b8355a8454620b3e3ccc3271230100000000000000099a9eb71f9cb1b7d15eae384790b4ec35045a19acea1730ba62f3e7caf31e8b0100000000000000d34560b879f8f4dd8d2fbd4f6d51b9b6f41b76656860646fcef4e1498859a190010000000000000061914b4dba0a1e42e692016cb74943266b257339008ffed4644231a2b48df21a0100000000000000a703a37bd5d93619bfb6ad72c24840b396b2ddb8700db2e1d372a82363ec7d580100000000000000a892342c56149812a43e98c82b6a3dfee7eff384d9b6d832002ea63838f64900010000000000000081bbaa3313b09e3b0ea2817c3e968a33587ec8928539c3f3a6d0e65644612f4901000000000000003d884e3f58913c10c26d8af2a095e231079a3a0b69f775052f7173ff1c3ace2e0100000000000000c13b603b5fe774d98e59c26fac03f8096ccc42c57d0cbc6a443b4f07a3c077920100000000000000be6b59cb464fadec4e0b22a9f12857ba5cf7a14c4f9551439d36305d582dd7fb0100000000000000f916634f9fd7e54374e30ac6b722ad1793c13cb2d5f2ad38769eaca2f79d414b01000000000000007ba967a2dae0d8839cf44710591db994d18e53b25ec6d0f861da0037c4a4366a0100000000000000222ee6c6a6c62d56cadb4eaad5104d595fe962fbbdd551c81562d3b509212907010000000000000055ca63358082034ddaf76b75f41a396081dd4f39a61eff13f7575e506e1033560100000000000000faa7af0f76a660a8c8c89fabf7290f2938798fcf0d522902d5d8b1d3a177e05d01000000000000000aadf1b2009026f8f5dd75d532e91dc756fd47572aa0f3c15d26790e6d6b2f27010000000000000050e16d897010823670148ef157d77933bc1721d82c45e80eb73b46b12b5daab601000000000000000228d7fc42b304906518cbd91d73a5384c4893de6cbfe1e7346999df642d3d0001000000000000004f950be5bf61958a0ae6e6a036b85b33ba838de8bd5508b558cbe2602d341168010000000000000082e6b6bf1f275c59fbde0dad91393ae690d5e644d11d23898a9ccfdda025920a010000000000000074b60dfb12745236ba9dc8f925efa21482b50c870c567638ba3240a05fe363d90100000000000000d761043f405069ac01285f1ff258450aac675f08d906b1ae0a1ce54eabcb36d901000000000000000dfbc1b5757e1f0ba348f8af64fb631aaff86cd21fa0529e0bb1fbab2508792601000000000000004abc35969775726127370e3bef6da0c45c5e281ed03b11bc32eb5d736d197e380100000000000000d791b58285e2c4f17c82a518e099812d2a3f63e1090f1cb2576e2c7695ee24970100000000000000de74612da9080d47be35bf4ded2094e23c1de14477114ddcd7b76b815456ec0c0100000000000000d3b3d9703a265a51a137b9de348587c645a168981ef3e01c9dc482856751b8ef010000000000000003dd543dddd6ad00137ddf94a218bfa19d2f08b4365d696765dc25deef76598b0100000000000000cfb9f7f1fcf903a51af729ed1647aee928630e148990309f9dc9f3b14b114b7601000000000000005216ff912251cd2bcf9db256b3927e737cf909e4b53a375586dad21bb7b907ef0100000000000000d14a779884de1b2fbf079b8e47e8c0edb1c29e282996899a4eab5aaf1f4f41130100000000000000b5b64e522ece2a1a3325f95082e33bbf5832e6116d378ac0f437b7b49727292401000000000000004bf6037c3820cb7468601051701164948b7f7cbbe1ac8cad97e809c76170dddf010000000000000061f8830d235dc8b50288a606b3570c8335eefac47874c26a45f170cd29a5dd3301000000000000001ec0811cbe4f2ea1e5a714d3ba08c6d7fdec138bcc6406da3c6cd32f1686616d010000000000000025ebbb2a00126545bbedf00318a78b6e61a0b52c81e30231ff45bd32e311472f01000000000000008b7baa89dbac95969a0042fa876a37eaccfcecd3591c4d7ed0e8051aea814cfa01000000000000004715211e268489d1eeccfbd8a5e67235244322c17127226184448741ae332ba10100000000000000dc5289899ba3e91edf93781843f9abbc99b3ae0beb940c385edf706acdf0d2540100000000000000ddac76c2a61c9aef4a9b3247aa0953187533f346466f02840235662440d2945c0100000000000000055c25dcc9cf8a08ad007ed9c8afb0ba53cebd129a20f194d272535ca9fa06490100000000000000cc8db7467349129a20ab4ba7e705044216651c0eba9d39f1054849edbcd677af01000000000000004df6e4d7da2c11ddb9153c714699f9ab625bbcd5e8e38f1cdeee567dc04abc610100000000000000982d9e3cc8ef3f8d99638b6f9df32c82356e1cd88f123d1e586a604d1d4b0cb401000000000000009cfeed14dd2f96550a0e7edebd9c9a8c8b1d8f7efdd1abca01987654239f3c860100000000000000736925c31654df870fbc29437c9b2a488ac3262e5d80798534ad00c43a61e5470100000000000000e08ce24248f3f8c0cdd313a5d46e6d491fccf6711788b6aca2de82f6700ced5101000000000000008404cabeb0674765bb77af690fa838ba28fa2045d602994a89f07680f4851c83010000000000000006b9e740c0a0e1f8fd31717438d5918ed8680eaccb70fdc9511931ce0d164ae50100000000000000b8cf76a8082d518016ea5588be57b64e156ed23b0f72248975522c23d15ef16101000000000000002565e04c6e0b665fac87f8238bee74837f8f621ed63409f3838d263603400a980100000000000000373b26b330a41547971874dd81c2cbbf8b7e3eda05b861c57205ad7e8c15bbcf0100000000000000362589a96b0adb6b0d48e51e0870986ff75719ac8f348fc7b906dabf616531090100000000000000620c78305072857b43dadced80ebc057dbfc82b58c14c7b63372ef021408676501000000000000001de97cc443740a0e0e0fdf166ef4515c387fec450fc4d4e141cebb41e1b7f8e90100000000000000546ce2099b3863d2d75324d5866bfd5324d8ee4701a99dd53528f8a8c898ca4801000000000000004dc2e72680dbf0156818114fa34d3591f8e6948df25a128e191190c66f6ac35301000000000000001ebe41ca4cd399901ffe5f6f52642630820500e4a96cbef4c80c560cae38d2c601000000000000005d50d6099c7c88f367568fa473b44785acccd030251627cb371de16e5fa704260100000000000000301b983e5e1320b7c9ff0f2525121b9f3007f68c273ba8ff662b7244f1f95f210100000000000000ef5b937d1eb14d07785430ca8efb57cb965060fac808b9a25ab9d4ab52cf0ad10100000000000000b1f748c87b12edf7242b4719cfe68e6761acaa4329beee538d6ff740941d3cd3010000000000000014a3f3f45d0bc1352f8665d1e24cb13d72d95b48c595913cc985dcf58e63c123010000000000000072341ca1eb3a0fd4e790318b51ace114315573d5355c9d5336e39382ba0642560100000000000000a79cd2241bd68004641baac25c1900da3a9e6d83101aea3ef2a58d78c657272f010000000000000028139ae721b771cf57d5afa58579d8dc0f04f04c1e1b631cac64a9fdfaf8b5250100000000000000b66e24ea84d5e02a7b2b58e20bbf17a0f2a19c4654bf8b07669ba3b9fc4a468101000000000000003c1dcee818434058b7de26ee874ade21bd1149185d6dcba1f67048b931ec3dda01000000000000000d8e0ceb31d11634ff50f20c90d57239a9307602e221baa190c784b144a7eb980100000000000000d1f73fb97dc0b0c3244c8d879f134dc90f614eb30505e8f27eff58e558d221f5010000000000000015b49bdd8cb8b9110a45bd1985746655b330829e1dbe7580ade2fab6531799d301000000000000000428e3ccdba17d779ffba05c9ec7a6264187d13bf89b6009e97200474ad3439701000000000000004c43a374e6b3e6f7d6c5a6b8518ae0d0d232a1c46d63af8fbc800045a14cbe930100000000000000c34f62968a87b2e4a9340a75004029dff5777a020f60fb287f08038491881f220100000000000000f54bb82d58c665ce3289b8765c40e60d84f74da663c164c38e16784d5c142b2c0100000000000000607737116e62ba11852c68515933afb8165f3174d594eef6d01dd7eaddb60ec30100000000000000dea32ed7afbb5b31cb45b6e5daff40fb33e80042994d8d6527ee262e32fb2131010000000000000065dc4c53802befd2acfc3d6d3f66eeb84947e5c15fc7a2165a375352a4faace101000000000000007c39d28f80a16bf0cedb70e36c5ac9063dd9b513c5fbbe2c2222389f428921340100000000000000bdee8597e248688fddc627ad9c95cbebf7d3b5f248b9a742aa2d8e761fa365050100000000000000a128a73c5eaa1803618a75bc368c38e4c5cd40999cb72d615b8af1d30cb8cf1d010000000000000020270811c3dc453f37b27d958ef7ad7dd4c7f217c83f94bd0ecd84c60018a86601000000000000006bed5c36442ab221e4d825e3ef41e30bddd8bb3847153706d69d851e186092c1010000000000000020869a63e7a343094ad0b4ffaa3d83344ffec8c7fb9b177008f78d17eda7dcbf0100000000000000f549e094ce2c081069b7a39b67a13a00899882b79ed9ce8c63b2599cbb0900950100000000000000d64083c00178b8dd224afade9792fed8076031bdfe9efc5b8128e6372a9261e201000000000000001c6842f07fb07b318a8d00ce6258844374f8e894853ae5fd4a85c867d3fc32e30100000000000000417e120dbfd0297d59458b48407b62570987f1e907dd6dfa9a20bfe64eb489d80100000000000000443bd12fcb944a0e19b2f76ddd066a713a99d2dd3530a5f39275300d11ac96590100000000000000be724139e9bdd099b70f7edab7d1acf0d05fa1a4ca212f5e2958d31f4272dcda0100000000000000134cf4720486824c6a27fa7892c8d82e805653ba1d98480267ec284a76b792c20100000000000000f701f07489e11959ace47ce003808f4248a6c64b35f51f0551f4a69aa0572e2f0100000000000000c2eb94269c5e5d2ab9a1a300387358679640763b053aca99ba5c1c9083ee717f0100000000000000316bafdefb60951da2738d6c9c2ef1866d139b34b5eab6944d6bae754dd3fb110100000000000000b65475766e6229c87ff34263f5ca58525ab133962bc599ca0eab096ff296f4e60100000000000000ebb1834a568ea7653bc66f394937a0aa4f2f617118d2161e2c11c0d7d2febb9d0100000000000000b6d7ac98d6667fe8f4a186ef12a66b017df05a54e11b45d3f2967cb3d6b6827f010000000000000042f47dad5949be7b7b8f81faaec17b1b53465b01b9f8f81e6a45f2fc74e12daf01000000000000007a1291795805dbe300425311ae50ed698450b1912b62e5b5a3264c68bfa970760100000000000000826fea075408d2c9331974dad61f4fedb0a7a306711c696997bc63b4b0e73e4c0100000000000000e0df5b2f299314d2d419b46d15c3c8a739182d91c3d4b98cd16c013c3a25c04b01000000000000000150276c1b3d28d42630801c1d4a738ae723887d9286e40ba48d10b0752f7dcc010000000000000098a6defcfeb3dfca36ec46eb373734627a2c395cdd2d886046a11788ed6467af0100000000000000853ba986f8785e8fc1a2ae2fb86f17cc91886d931182ccb8d148379a35cbf02701000000000000009bbc024bfe4f072b94735afda064dc3c7da2b4bc0c50cfad44722543583a372e010000000000000086dee2a2c1977cb6ff99dde8fc5b0cb10dcac44b50b19b80f8252899b091c84b0100000000000000496826b538d97906e14d417b48598d7d591a483ab5f4c6786cd0b96239c2f4cf0100000000000000c4b54db8b5dc6346d0367c6c69a191cc826a90643d93c6230763a9e92806a33f0100000000000000c7009be830fe78c42f12f0753923131d16300bac230650001636b6a546cf0aa3010000000000000045f84b0909eb669ce3d2099a935e269d6ebb091f1f8055fbfcf07d6efe7f43ab0100000000000000425d9edc1cc5cf795f0caee680a379215cb77d71c69bfe41296df63cb2ac34430100000000000000ed3f97f83ee7799c4aeba9f40bd18134c862c1a30875fc1e038cd27bae3a739a0100000000000000348e8bacc2d40191a6a00e137c745a422ff8fb03148d2ff9cad75efbb7a67014010000000000000066b964258b3239799608ad4ffde6214a7b04ab3e0fd889fc7eb078548b3518ec0100000000000000efb31c5039e45fda750af5d2ea31b3210a407b168adec8f98db1f3dbc4cd94380100000000000000525661070154e9eebb48a7befd2c03e125b218eadb27cb121786678c0f67e5d901000000000000003b88c653be781a322afaacf2a4774b4fe4d72c9837c7d3ac1ec848679c6a48f90100000000000000d227434a77cd7b7127c039eb9995aeb025a242c36ca7116372c7c8fe5bc921b50100000000000000510a0c61dca3e1044d3540c08272054462c6353aac4dc06cda265753b126b38501000000000000005db4206baa8706a1b1de0ac7edacbd2a2c93452481808b8fe6c582265b57a60d0100000000000000761ce3eef4bd0d15601aef70728f54ca72a9859e90841c3d02d5060201671878010000000000000000132d9e682cf8d45ce8efd4bef165a26da5d1349ea1fe9f51abd6dc7622720201000000000000001262625cc59c0e4b7548904c31a02231a601305881a231d4dea45eec6cbbbdcc0100000000000000c3576342cbf99792896ee5329b04ff2eee2fc2bb6d53c5c03d52c8957ee793fb01000000000000006ad4bc289673029ab44f3045eb6fdd3589d05e0e5fd76ee017f650a662f898fb0100000000000000a82f563264d1892dd46873205d03c098d8b03f53e21c797839737e4e5f66a87e010000000000000059dadf17dc0f84c1c334e6a815a04bdfcd0988a3f3bcb713c66ae29e17276cc60100000000000000297dc7cf28b3d40a42c5e8faac876bf7227c670e6e031dd0e0537f4fb70e6fbe010000000000000043601ae31cf5b03cb49395dda13809f7398d8670ee4d2172b14a1ab05986ac3b0100000000000000e7f57bd0bc756f24574e3a77c90616adb393e9d4ffceb2c63df19f605cb6a0240100000000000000a5f788e86ee2d311357b7aa4a128f063fa4ee36958baf10304c10bde7421aa2c0100000000000000290321d793b7dcb12ad148c2438bb60821bd938b7e9164a0c3d0fc82987f8b6301000000000000002ef11bc5ce1e7b53f788ba01ba581b9171ef36449719ff3eb20973342a4a82850100000000000000ab45f730dd495f657b61b2777091fa8cd11b5a626bea2b514e5e61180210379701000000000000003bb30832d06cdd3e081afef0cf2b7770bfe81dc58081d1886443e4e4547da8a101000000000000002832b59000d2027d2bf57fdb40da04bd8aac1498923397517181cc487a92815201000000000000000cd7067f96a2d63fa72065302432f48690485fa5f47c9afab17123e0482785230100000000000000f6f23ae9bb4c269a5959d51f9173270ddefcc354b63de77b672bce58cabe60c801000000000000007a1df073f4a474faa4616f9a6f5d93cedf25716cbe8d05a08afafb570b6e6f9501000000000000002ada479e1fde7211de15900ed29035f6f07506cdbadc4c232aab96d62006b9de0100000000000000be223d49fdccd102646c9b0d62130fbc8e7f0324d55a3eabaaffb5ed1616795a010000000000000062a91ffda8611ffce3edeb628ea6d3b8b12e5b2448beda6da8334e77a9ecbdd7010000000000000071893ca83ebe6ee06c3eb10dcbfaf70d8267959f6159b4ca36929a69604cadbc0100000000000000dea69c3badff9b8d7571cb6c538cd099544da7460a19e1b8651c5c530a6dd53c01000000000000004ad600cc461daf6d287d5d2ff0791f74fd7c6aab5714ad50340187a7ce509ea9010000000000000005062bede97a45c6e1c6b593675ee07ce969fae45136cc2b2afc6e705a77f4700100000000000000dc6e03f650e4304ca8d1598dde8d4faf45891987bfc49ef785ace47c4c0b5573010000000000000026cdfb88461d7125f438c599e062799219b385bacca93f3cdbe5418c9d4d499301000000000000000f19c3ed807ad5f2b7546f5e6c5e9bb934835d54ed1f4f989540b86a2ca02b550100000000000000e4c1d1377894eee032e1a60dbac6252e23f35bbb43ce51d5f98652cfee58d5bf01000000000000000e7bc96895730726225e47e31c742fd44d3936f31ecd32658c694fc11df2522401000000000000000bf0e21672e2d888dfb361e7dac6bcfaeecd1de5192b6db710fd362d7378e431010000000000000081b197220d996795477a7f5929b629a3a669e43a59033ef1538a5b669e6238b30100000000000000b426ef68c50245a003dd068c5c086fc9012c08a7f9ec53fbf7df4318261c8c2c01000000000000004383e891024a29ed0fe106e7869c7e05ef8487ef13a6ac390076bf43456c6d450100000000000000e7931a825260ba7d4fdb5f4990d39a71e2a8b215a776ebf770102ca772f103a3010000000000000095fde7b91441fae9d2a6360d30228392519293be5e78cf3305667595cb15e566010000000000000096847258e5fdd261a8df1b3958366b29d28363aeb96a71c2b705e4c8864b97e10100000000000000e7eb7de26e0e24fd528fbbcecf837f26579784dfd4db512c9237e2811139738701000000000000009f677785cfbf44140bdf38770f3d8076f222aa1c9997842d89d580b0f256198f01000000000000009a0ea02dca493accceb975732f31c9d249d4c90ff1ca0bd86cbe00f1728146b401000000000000003adbd2d5abdb70ef56c2d8bd4a7c0d67882a1c2050a856937491e98496a496fe0100000000000000716a181407939b3ea68289e09265d3b9d8a8f21ba7d9f50d8ef8a86fa3c0fd0301000000000000004d960a5b5cfc68f32236a14f5e094ec24c9bd0f73df19086c27cff9a78fd5dbb01000000000000008e3d1c8c0261e193e87403c8959919ef035ba39175d3ba22f31190303601412e010000000000000094416582fe359e0a310da59bf93df8ff9665b89071d4977a9a9f3390b75c0c450100000000000000ac5230e4338aa51c44ab6a0fb903e6fd914fd029dab8f7ca447be54ceba749340100000000000000a76b32c8c28cce206ddf70ff3ad591ed01a0067f9f9baa77f9052ce938d359c701000000000000003a4bfd825ccd308def4a61bac80c579db42b02ea5f1a0768656a326e83a0dd8801000000000000007fab4769c41af85b9de8e784d3b1cda093fc0a8dffcdff21e914c62f131c77580100000000000000d2f1b3b5f7eb1b0d8328911d9ec920327d7a30729e80c1238f86dfe27c4fa3470100000000000000841584e602ab975c936fe7c2025fcea2b5a0061e839b1ad96528942b33d0974b0100000000000000e056900cabddb471de9e1846d7efdddd8b5ad400b02fc54b4402ba725c78bf9a010000000000000085b6321d0044ba1f9ed6baf255065c5d9947cd2fd6067f66dfddc74511fe583b0100000000000000daffd43670286cbddbf38953e6e33ba093f8c719e9fbf0a4aa76ff3ee97df307010000000000000098763eb72b3f7dbb7a793bd1d4367af5f072ff45a1a6eae0e002e1eaa24c5d550100000000000000d39f98bb0dd1dcda91cbe0104afc0ae7456cd77c8bb6630e2bb4c86db1cbb5b0010000000000000079f73931b31ce353119fb4063412e844b16cb3eb92e592ebd822a8c21303554801000000000000006d698963e0fa3c04ef2b32f638e0176e053cd021f6a49b55a4a4ebd4d5fbb11701000000000000002929dacc53614cea1848e7ba20fdeed7cb0bd81571aa72dfb63dfc84d3965d2b010000000000000031a46e639e57d1a11119b17f76617a35b3606d206fb5c3e87710f464f7a57de50100000000000000ed25d7114e2aef2f0e57dc2be1401a4994d8aaafb30223162634a512604a23660100000000000000600700000000000000018d58300100811d00000000000000002904050001000000000000002a0d050002000000000000002f16050003000000000000008e1f05000400000000000000ee28050005000000000000004d32050006000000000000009d3b05000700000000000000fd44050008000000000000005c4e05000900000000000000b75705000a00000000000000176105000b00000000000000766a05000c00000000000000d67305000d00000000000000357d05000e00000000000000958605000f00000000000000f58f0500100000000000000055990500110000000000000095a205001200000000000000d8ab050013000000000000000db50500140000000000000024da05001500000000000000aaec05001600000000000000f4f5050017000000000000003bff050018000000000000008b0806001900000000000000992406001a00000000000000f92d06001b000000000000000d4a06001c00000000000000685306001d00000000000000b65c06001e00000000000000f76506001f00000000000000308b060020000000000000007b940600210000000000000025a70600220000000000000033c3060023000000000000007fcc06002400000000000000c3d50600250000000000000011df060026000000000000005ae806002700000000000000a0f106002800000000000000410407002900000000000000880d07002a000000000000001b3c07002b00000000000000764507002c00000000000000357407002d00000000000000239907002e000000000000006fa207002f00000000000000c3ab070030000000000000006abe07003100000000000000bdc7070032000000000000000fd107003300000000000000b2e3070034000000000000000aed07003500000000000000971b080036000000000000009d24080037000000000000009c4008003800000000000000255308003900000000000000735c08003a000000000000000c6f08003b00000000000000048b08003c00000000000000589408003d00000000000000d3c208003e00000000000000e4de08003f000000000000003fe808004000000000000000f7fa08004100000000000000aa0d09004200000000000000153309004300000000000000fc6a090044000000000000003e74090045000000000000009a7d0900460000000000000000a30900470000000000000014db0900480000000000000020130a004900000000000000791c0a004a00000000000000364b0a004b0000000000000043830a004c00000000000000e5950a004d0000000000000045bb0a004e0000000000000059f30a004f000000000000000e060b005000000000000000812b0b005100000000000000dc340b005200000000000000ef500b005300000000000000a3630b005400000000000000b69b0b005500000000000000c7d30b005600000000000000dd0b0c005700000000000000f3430c005800000000000000087c0c00590000000000000052b30c005a0000000000000060eb0c005b00000000000000baf40c005c0000000000000072230d005d00000000000000805b0d005e000000000000007e930d005f000000000000007ccb0d00600000000000000076030e006100000000000000793b0e00620000000000000088730e00630000000000000092ab0e00640000000000000083e30e006500000000000000731b0f00660000000000000079530f006700000000000000748b0f0068000000000000001fc30f006900000000000000d0fa0f006a00000000000000633210006b00000000000000826a10006c0000000000000028a210006d0000000000000005b310006e0000000000000055d810006f000000000000004810110070000000000000006548110071000000000000008e8011007200000000000000bfb811007300000000000000bbf011007400000000000000e828120075000000000000001561120076000000000000003b991200770000000000000058d112007800000000000000770913007900000000000000944113007a00000000000000c07913007b00000000000000e7b113007c000000000000000cea13007d0000000000000067f313007e00000000000000d31814007f000000000000002e22140080000000000000008c2b14008100000000000000545a14008200000000000000ad63140083000000000000000e89140084000000000000006892140085000000000000008dca14008600000000000000b00215008700000000000000d03a15008800000000000000f3721500890000000000000015ab15008a000000000000003be315008b000000000000005d1b16008c00000000000000855316008d00000000000000b18b16008e00000000000000d3c316008f00000000000000e9fb16009000000000000000073417009100000000000000bf4617009200000000000000286c1700930000000000000029a41700940000000000000041dc17009500000000000000591418009600000000000000bf3918009700000000000000704c18009800000000000000948418009900000000000000f28d18009a00000000000000bcbc18009b00000000000000e4f418009c000000000000000b2d19009d000000000000002c6519009e00000000000000896e19009f00000000000000519d1900a00000000000000075d51900a100000000000000920d1a00a200000000000000ec161a00a300000000000000b6451a00a400000000000000887d1a00a50000000000000077b51a00a600000000000000cdbe1a00a70000000000000070ed1a00a80000000000000083091b00a9000000000000004e251b00aa00000000000000fe371b00ab00000000000000065d1b00ac000000000000005f661b00ad00000000000000bd6f1b00ae00000000000000de941b00af00000000000000fecc1b00b0000000000000001f041c00b1000000000000000c321c00b2000000000000002f3b1c00b3000000000000002e721c00b4000000000000000ca01c00b50000000000000044a91c00b60000000000000022e11c00b70000000000000044191d00b8000000000000000c481d00b9000000000000006b511d00ba000000000000008b891d00bb00000000000000a5c11d00bc0000000000000053f91d00bd00000000000000ff301e00be00000000000000054d1e00bf0000000000000002691e00c000000000000000d1a01e00c100000000000000c5d81e00c200000000000000cf101f00c30000000000000083481f00c400000000000000af801f00c500000000000000d0b81f00c600000000000000f0f01f00c7000000000000001b292000c80000000000000039612000c90000000000000054992000ca000000000000004fd12000cb000000000000004c092100cc00000000000000031c2100cd000000000000006d412100ce00000000000000cc4a2100cf0000000000000098792100d000000000000000c4b12100d100000000000000eee92100d20000000000000011222200d300000000000000325a2200d40000000000000055922200d50000000000000075ca2200d6000000000000008f022300d700000000000000b13a2300d800000000000000cd722300d90000000000000078852300da00000000000000ce8e2300db00000000000000bdaa2300dc00000000000000abe22300dd0000000000000012112400de00000000000000501a2400df0000000000000045512400e000000000000000a1882400e1000000000000005fc02400e20000000000000013f82400e30000000000000007302500e40000000000000013682500e500000000000000c37a2500e600000000000000a8962500e700000000000000fb9f2500e80000000000000000d82500e90000000000000019102600ea000000000000002b482600eb0000000000000028802600ec000000000000002eb82600ed0000000000000044d42600ee0000000000000058f02600ef00000000000000b3f92600f00000000000000065282700f10000000000000057602700f20000000000000064982700f3000000000000008dd02700f400000000000000a7ec2700f500000000000000b9082800f600000000000000e0402800f700000000000000f6782800f80000000000000019b12800f90000000000000040e92800fa000000000000006c212900fb00000000000000a0592900fc00000000000000107f2900fd00000000000000bc912900fe00000000000000eac92900ff00000000000000fd012a000001000000000000ff1d2a0001010000000000000c3a2a0002010000000000002b722a00030100000000000005aa2a000401000000000000fce12a0005010000000000004ceb2a000601000000000000e0fd2a000701000000000000c3192b000801000000000000be512b0009010000000000000a772b000a01000000000000ae892b000b01000000000000b0a52b000c01000000000000abc12b000d010000000000009bf92b000e0100000000000093312c000f0100000000000087692c00100100000000000075a12c00110100000000000074d92c00120100000000000089112d00130100000000000099492d001401000000000000b0812d001501000000000000c3b92d001601000000000000d1f12d001701000000000000d6292e001801000000000000e9612e001901000000000000ea992e001a01000000000000efd12e001b01000000000000f8092f001c01000000000000f0412f001d01000000000000e9792f001e0100000000000036832f001f01000000000000b2b12f002001000000000000a9cd2f00210100000000000094e92f0022010000000000007121300023010000000000003b5930002401000000000000089130002501000000000000599a30002601000000000000f6c830002701000000000000e30031002801000000000000c03831002901000000000000a17031002a01000000000000f27931002b010000000000007fa831002c010000000000005de031002d01000000000000aae931002e01000000000000441832002f01000000000000295032003001000000000000fe8732003101000000000000aa9a3200320100000000000010c0320033010000000000003af8320034010000000000005f303300350100000000000059683300360100000000000078a0330037010000000000009bd833003801000000000000cb1034003901000000000000f44834003a010000000000001c8134003b0100000000000044b934003c0100000000000055f134003d010000000000009dfa34003e01000000000000302935003f01000000000000c6573500400100000000000023613500410100000000000053993500420100000000000080d135004301000000000000560036004401000000000000b10936004501000000000000ce4136004601000000000000037a3600470100000000000031b2360048010000000000005fea360049010000000000007b2237004a01000000000000995a37004b01000000000000f56337004c01000000000000c69237004d01000000000000feca37004e01000000000000340338004f01000000000000683b380050010000000000009e7338005101000000000000c9ab38005201000000000000dcc7380053010000000000003cd138005401000000000000f8e338005501000000000000b0f6380056010000000000001c1c390057010000000000007a2539005801000000000000da2e39005901000000000000525439005a01000000000000878c39005b01000000000000bbc439005c01000000000000f3fc39005d0100000000000028353a005e010000000000005f6d3a005f0100000000000098a53a006001000000000000cedd3a0061010000000000000c163b006201000000000000404e3b00630100000000000019853b006401000000000000608e3b006501000000000000b8973b0066010000000000000fa13b006701000000000000a7b33b006801000000000000fabc3b00690100000000000049c63b006a010000000000009ccf3b006b01000000000000eed83b006c01000000000000c1f43b006d0100000000000014fe3b006e0100000000000066073c006f01000000000000b7103c0070010000000000009e2c3c007101000000000000ee353c00720100000000000094483c007301000000000000e0513c0074010000000000007c643c0075010000000000001d773c0076010000000000004b9c3c00770100000000000010d43c007801000000000000d80b3d0079010000000000001a153d007a0100000000000053433d007b01000000000000ea553d007c01000000000000225f3d007d0100000000000072683d007e01000000000000b4713d007f01000000000000fb7a3d0080010000000000007a8d3d008101000000000000b8963d00820100000000000006a03d00830100000000000088b23d008401000000000000c8bb3d0085010000000000000bc53d0086010000000000001dea3d008701000000000000e9053e008801000000000000b5213e0089010000000000003b343e008a01000000000000843d3e008b010000000000005e593e008c010000000000001f913e008d0100000000000065c83e008e010000000000006bed3e008f01000000000000a9f63e009001000000000000f6ff3e009101000000000000c1373f0092010000000000005c4a3f0093010000000000003b663f009401000000000000856f3f009501000000000000cf783f0096010000000000003ea73f009701000000000000ccde3f0098010000000000008516400099010000000000001e2940009a010000000000006e4e40009b01000000000000c35740009c010000000000009b8640009d01000000000000cebe40009e0100000000000001f740009f01000000000000372f4100a00100000000000097384100a10100000000000070674100a201000000000000a99f4100a30100000000000065b24100a401000000000000ddd74100a50100000000000096ea4100a6010000000000000b104200a70100000000000044484200a8010000000000009c514200a9010000000000003b804200aa0100000000000051b84200ab010000000000006fd44200ac010000000000005ef04200ad01000000000000b9f94200ae010000000000006a284300af0100000000000078604300b00100000000000077984300b101000000000000abd04300b20100000000000064e34300b30100000000000072ff4300b401000000000000d2084400b50100000000000008414400b6010000000000002e794400b7010000000000005eb14400b8010000000000007de94400b9010000000000009e214500ba010000000000005d344500bb01000000000000d0594500bc0100000000000006924500bd010000000000001aca4500be010000000000004a024600bf01000000000000603a4600c00100000000000084724600c101000000000000abaa4600c20100000000000047bd4600c3010000000000009ec64600c401000000000000a0e24600c5010000000000005df54600c601000000000000bf1a4700c701000000000000d1524700c8010000000000007f814700c901000000000000dd8a4700ca0100000000000039944700cb01000000000000f2c24700cc0100000000000010fb4700cd01000000000000d5294800ce010000000000002c334800cf01000000000000f9614800d001000000000000596b4800d10100000000000078874800d2010000000000008da34800d301000000000000aadb4800d401000000000000c6134900d501000000000000eb4b4900d601000000000000e7834900d701000000000000f9bb4900d801000000000000b6ce4900d9010000000000001bf44900da010000000000004a2c4a00db0100000000000066644a00dc010000000000002f7d4a00dd0100000000000019994a00de01000000000000c0ab4a00df01000000000000aec74a00e001000000000000fed04a00e101000000000000bbff4a00e20100000000000019094b00e301000000000000902e4b00e40100000000000041414b00e50100000000000010704b00e6010000000000006e794b00e7010000000000002b8c4b00e80100000000000094b14b00e901000000000000a4e94b00ea01000000000000d4214c00eb01000000000000d7594c00ec01000000000000e8914c00ed0100000000000004ae4c00ee01000000000000ebc94c00ef0100000000000014024d00f001000000000000fe394d00f1010000000000000a724d00f201000000000000667b4d00f30100000000000013aa4d00f40100000000000031c64d00f50100000000000037e24d00f6010000000000004afe4d00f7010000000000002c1a4e00f801000000000000ea2c4e00f90100000000000049364e00fa010000000000004e524e00fb01000000000000628a4e00fc0100000000000079a64e00fd010000000000001ab94e00fe0100000000000079c24e00ff0100000000000094de4e000002000000000000aafa4e00010200000000000059324f00020200000000000004654f000302000000000000ff764f0004020000000000000d804f0005020000000000007e924f000602000000000000c29b4f000702000000000000f4d34f000802000000000000160c50000902000000000000504450000a02000000000000877c50000b02000000000000b6b450000c02000000000000e7ec50000d0200000000000046f650000e02000000000000b61b51000f020000000000001625510010020000000000004f5d510011020000000000000f7051001202000000000000889551001302000000000000b5cd5100140200000000000014d751001502000000000000e605520016020000000000001f3e5200170200000000000053765200180200000000000089ae52001902000000000000e8b752001a02000000000000b7e652001b0200000000000074f952001c02000000000000e81e53001d020000000000001a5753001e02000000000000558f53001f020000000000008ac753002002000000000000b9ff53002102000000000000f13754002202000000000000277054002302000000000000418c54002402000000000000d1a354002502000000000000d9c8540026020000000000007edb54002702000000000000b81355002802000000000000e34b55002902000000000000c58355002a02000000000000d6bb55002b0200000000000007f455002c02000000000000c30656002d020000000000002c2c56002e020000000000005d6456002f020000000000008f9c56003002000000000000c9d456003102000000000000070d570032020000000000004345570033020000000000007a7d570034020000000000007d99570035020000000000009ab557003602000000000000b4ed57003702000000000000f225580038020000000000002f5e580039020000000000006b9658003a02000000000000a6ce58003b02000000000000e30659003c02000000000000183f59003d02000000000000517759003e02000000000000ad8059003f020000000000008baf59004002000000000000e9b859004102000000000000c5e75900420200000000000002205a0043020000000000003f585a0044020000000000007c905a004502000000000000bcc85a004602000000000000f1005b004702000000000000111d5b00480200000000000030395b0049020000000000006f715b004a02000000000000aca95b004b02000000000000e9e15b004c02000000000000251a5c004d0200000000000060525c004e020000000000009f8a5c004f02000000000000dbc25c00500200000000000019fb5c00510200000000000058335d005202000000000000956b5d005302000000000000c7a35d005402000000000000f7db5d00550200000000000031145e0056020000000000006f4c5e005702000000000000a7845e005802000000000000e0bc5e0059020000000000003fc65e005a020000000000001cf55e005b02000000000000582d5f005c0200000000000093655f005d02000000000000cf9d5f005e0200000000000005d65f005f02000000000000440e600060020000000000008346600061020000000000006a7e6000620200000000000056b46000630200000000000000ec60006402000000000000a72361006502000000000000e25b61006602000000000000f293610067020000000000001bcc61006802000000000000dade61006902000000000000590462006a02000000000000963c62006b02000000000000cc7462006c020000000000008c8762006d02000000000000ffac62006e020000000000003ae562006f02000000000000731d63007002000000000000b05563007102000000000000e98d630072020000000000001dc6630073020000000000005dfe63007402000000000000993664007502000000000000d86e6400760200000000000017a76400770200000000000051df640078020000000000008a1765007902000000000000c34f65007a02000000000000018865007b020000000000003ec065007c020000000000007af865007d02000000000000b63066007e02000000000000f06866007f0200000000000004a16600800200000000000041d966008102000000000000711167008202000000000000ac4967008302000000000000de8167008402000000000000f8b967008502000000000000b8cc6700860200000000000035f2670087020000000000006e2a680088020000000000001c3d680089020000000000007f6268008a02000000000000ba9a68008b02000000000000f3d268008c02000000000000310b69008d02000000000000704369008e02000000000000ae7b69008f02000000000000eeb3690090020000000000002bec6900910200000000000065246a009202000000000000a45c6a009302000000000000e0946a0094020000000000001dcd6a009502000000000000dbdf6a00960200000000000059056b00970200000000000018186b009802000000000000923d6b009902000000000000b0756b009a02000000000000e6ad6b009b0200000000000021e66b009c020000000000005e1e6c009d0200000000000096566c009e02000000000000d28e6c009f020000000000000ac76c00a00200000000000047ff6c00a10200000000000077376d00a202000000000000876f6d00a3020000000000000fa76d00a40200000000000059dc6d00a50200000000000022146e00a602000000000000464c6e00a70200000000000071846e00a802000000000000eea96e00a902000000000000aabc6e00aa0200000000000085eb6e00ab02000000000000e4f46e00ac020000000000001c2d6f00ad02000000000000da3f6f00ae0200000000000053656f00af020000000000008c9d6f00b002000000000000c4d56f00b102000000000000d90d7000b202000000000000d7457000b302000000000000f67d7000b402000000000000deb57000b502000000000000b2ed7000b602000000000000a9257100b702000000000000975d7100b802000000000000338c7100b9020000000000007e957100ba0200000000000068b17100bb0200000000000050cd7100bc020000000000001c057200bd02000000000000610e7200be02000000000000c13c7200bf020000000000006b747200c0020000000000005aac7200c10200000000000032e47200c202000000000000dcf67200c302000000000000321c7300c4020000000000002b547300c5020000000000007d8b7300c60200000000000020c37300c702000000000000cefa7300c8020000000000003c327400c9020000000000009b697400ca02000000000000eda07400cb0200000000000056d87400cc0200000000000090107500cd02000000000000ad2c7500ce020000000000000b367500cf02000000000000c7487500d002000000000000fe807500d10200000000000039b97500d20200000000000073f17500d30200000000000030047600d4020000000000004b207600d502000000000000a9297600d60200000000000006337600d702000000000000d3617600d80200000000000090747600d902000000000000089a7600da020000000000002fd27600db020000000000001a0a7700dc0200000000000022427700dd02000000000000007a7700de02000000000000d2b17700df02000000000000f8e97700e0020000000000002b227800e102000000000000635a7800e202000000000000a0927800e302000000000000daca7800e40200000000000011037900e502000000000000483b7900e60200000000000085737900e702000000000000b1ab7900e802000000000000dae37900e902000000000000121c7a00ea0200000000000049547a00eb02000000000000878c7a00ec02000000000000bfc47a00ed02000000000000edfc7a00ee0200000000000026357b00ef02000000000000606d7b00f0020000000000009da57b00f102000000000000cddd7b00f20200000000000006167c00f3020000000000003f4e7c00f402000000000000fb607c00f50200000000000077867c00f602000000000000b4be7c00f70200000000000014c87c00f802000000000000e0f67c00f9020000000000001b2f7d00fa0200000000000058677d00fb02000000000000959f7d00fc02000000000000d2d77d00fd02000000000000ec0f7e00fe0200000000000025487e00ff020000000000005f807e0000030000000000009ab87e000103000000000000d3f07e000203000000000000ee0c7f0003030000000000000a297f000403000000000000c53b7f00050300000000000043617f0006030000000000007b997f000703000000000000b9d17f000803000000000000f20980000903000000000000284280000a030000000000005e7a80000b0300000000000099b280000c03000000000000d2ea80000d03000000000000082381000e030000000000003e5b81000f030000000000007b9381001003000000000000b8cb81001103000000000000f30382001203000000000000313c82001303000000000000697482001403000000000000a6ac82001503000000000000c4c882001603000000000000e0e482001703000000000000ff00830018030000000000001e1d83001903000000000000dd2f83001a030000000000005b5583001b03000000000000988d83001c03000000000000d5c583001d0300000000000010fe83001e030000000000004e3684001f03000000000000826e84002003000000000000bba684002103000000000000f5de840022030000000000006f0485002303000000000000cc0d850024030000000000002c1785002503000000000000ea2985002603000000000000634f850027030000000000007e6b850028030000000000009a878500290300000000000017ad85002a03000000000000d2bf85002b0300000000000031c985002c030000000000000ef885002d030000000000004a3086002e03000000000000866886002f03000000000000bea086003003000000000000f2d8860031030000000000002a1187003203000000000000871a870033030000000000006449870034030000000000001d5c87003503000000000000998187003603000000000000cfb987003703000000000000eed5870038030000000000000cf2870039030000000000004a2a88003a03000000000000a83388003b03000000000000826288003c03000000000000b69a88003d03000000000000efd288003e030000000000002d0b89003f030000000000004d27890040030000000000006c4389004103000000000000ab7b89004203000000000000eab38900430300000000000028ec8900440300000000000068248a004503000000000000a05c8a004603000000000000b4948a004703000000000000f4cc8a00480300000000000030058b0049030000000000006f3d8b004a030000000000008e598b004b03000000000000ae758b004c03000000000000ecad8b004d0300000000000028e68b004e03000000000000331e8c004f030000000000004f568c0050030000000000008e8e8c005103000000000000c7c68c00520300000000000005ff8c00530300000000000041378d005403000000000000746f8d005503000000000000a4a78d00560300000000000064ba8d005703000000000000e4df8d0058030000000000000a188e00590300000000000023508e005a0300000000000027888e005b03000000000000d89a8e005c0300000000000043c08e005d0300000000000082f88e005e03000000000000c0308f005f03000000000000ff688f0060030000000000001ba18f00610300000000000059d98f006203000000000000981190006303000000000000d64990006403000000000000f56590006503000000000000158290006603000000000000758b9000670300000000000053ba9000680300000000000092f290006903000000000000d22a91006a03000000000000106391006b03000000000000489b91006c03000000000000a2a491006d030000000000001bd391006e03000000000000530992006f03000000000000d32e9200700300000000000090419200710300000000000074799200720300000000000094b19200730300000000000072e092007403000000000000d2e992007503000000000000b21893007603000000000000122293007703000000000000445a93007803000000000000739293007903000000000000f3b793007a03000000000000abca93007b030000000000005ddd93007c03000000000000c40294007d03000000000000e13a94007e03000000000000217394007f0300000000000059ab9400800300000000000090e394008103000000000000c31b95008203000000000000ea53950083030000000000009866950084030000000000000b8c9500850300000000000046c49500860300000000000057fc950087030000000000008f3496008803000000000000cf6c960089030000000000000ba596008a0300000000000045dd96008b03000000000000a3e696008c03000000000000801597008d03000000000000bc4d97008e03000000000000f78597008f030000000000002ebe9700900300000000000030f6970091030000000000005a2e98009203000000000000956698009303000000000000d49e9800940300000000000014d7980095030000000000003b0f990096030000000000006c4799009703000000000000ac7f9900980300000000000078b79900990300000000000026ca99009a030000000000007cef99009b0300000000000085279a009c03000000000000be5f9a009d03000000000000fd979a009e03000000000000b9aa9a009f0300000000000022d09a00a0030000000000003dec9a00a10300000000000058089b00a20300000000000074249b00a3030000000000008b409b00a403000000000000e4499b00a50300000000000038789b00a60300000000000076819b00a703000000000000e4af9b00a803000000000000b7e79b00a903000000000000731f9c00aa03000000000000a6289c00ab030000000000002f3b9c00ac0300000000000012579c00ad030000000000005d609c00ae03000000000000cb8e9c00af0300000000000057a19c00b00300000000000086c69c00b1030000000000005afe9c00b20300000000000002369d00b303000000000000bc6d9d00b40300000000000099a59d00b5030000000000004edd9d00b603000000000000db149e00b703000000000000e0399e00b803000000000000724c9e00b9030000000000002a849e00ba03000000000000ee9f9e00bb03000000000000d1bb9e00bc030000000000007df39e00bd03000000000000f02a9f00be030000000000006a629f00bf03000000000000ff999f00c0030000000000002ed19f00c1030000000000004608a000c203000000000000893fa000c303000000000000a476a000c403000000000000dfada000c5030000000000001cb7a000c6030000000000003ce5a000c703000000000000921ca100c8030000000000008c53a100c903000000000000988aa100ca0300000000000010a6a100cb03000000000000a0c1a100cc03000000000000e5d3a100cd0300000000000072f8a100ce030000000000007c2fa200cf030000000000003766a200d003000000000000389da200d10300000000000056a6a200d203000000000000a9b8a200d303000000000000cac1a200d4030000000000001ad4a200d503000000000000200ba300d6030000000000002714a300d703000000000000bc41a300d8030000000000006778a300d9030000000000000aafa300da0300000000000046dca300db0300000000000065e5a300dc03000000000000a81ba400dd03000000000000d72da400de030000000000002352a400df030000000000006288a400e003000000000000c1bea400e103000000000000f8f4a400e203000000000000212ba500e3030000000000003f61a500e403000000000000656aa500e503000000000000e497a500e60300000000000040cea500e703000000000000b204a600e803000000000000fc3aa600e9030000000000009471a600ea0300000000000037a8a600eb030000000000001adfa600ec03000000000000ea0ca700ed030000000000000e16a700ee030000000000005228a700ef030000000000007d31a700f003000000000000034da700f1030000000000002084a700f2030000000000004a8da700f303000000000000a99fa700f403000000000000f6baa700f503000000000000c1f1a700f603000000000000be28a800f703000000000000a65fa800f8030000000000003e7ba800f903000000000000c296a800fa03000000000000c3cda800fb03000000000000d504a900fc03000000000000f83ba900fd030000000000005f73a900fe03000000000000ceaaa900ff030000000000000bb4a900000400000000000005e2a90001040000000000005e19aa000204000000000000c12baa0003040000000000008e50aa000404000000000000fd62aa0005040000000000008175aa000604000000000000fa87aa0007040000000000002f91aa0008040000000000005dbfaa000904000000000000a3c8aa000a04000000000000e5f6aa000b04000000000000e41bab000c040000000000005b2eab000d04000000000000e765ab000e040000000000004c9dab000f0400000000000085a6ab001004000000000000b8d4ab001104000000000000fdddab0012040000000000003b0cac001304000000000000d043ac001404000000000000827bac001504000000000000b8a0ac0016040000000000005bb3ac00170400000000000029ebac0018040000000000006af4ac0019040000000000000e07ad001a04000000000000f422ad001b04000000000000432cad001c040000000000009935ad001d04000000000000ee3ead001e04000000000000d55aad001f04000000000000bd76ad002004000000000000a592ad00210400000000000076caad002204000000000000f6dcad002304000000000000e001ae0024040000000000004f39ae0025040000000000001371ae0026040000000000005f7aae002704000000000000fc8cae002804000000000000cda8ae0029040000000000005ebbae002a0400000000000081e0ae002b040000000000004f18af002c040000000000001e50af002d04000000000000e687af002e04000000000000a0bfaf002f040000000000005ff7af003004000000000000042fb0003104000000000000da66b00032040000000000009a9eb000330400000000000063d6b0003404000000000000300eb1003504000000000000da45b10036040000000000009a7db100370400000000000050b5b100380400000000000029edb1003904000000000000971bb2003a04000000000000e024b2003b04000000000000995cb2003c040000000000006694b2003d0400000000000048b0b2003e040000000000002eccb2003f0400000000000075d5b200400400000000000008e8b2004104000000000000e703b3004204000000000000ce1fb3004304000000000000b63bb30044040000000000000d45b30045040000000000009f57b30046040000000000007573b3004704000000000000c67cb30048040000000000003aabb3004904000000000000e4e2b3004a04000000000000651ab4004b04000000000000f951b4004c040000000000009389b4004d0400000000000025c1b4004e04000000000000f6f8b4004f04000000000000241eb5005004000000000000b130b50051040000000000007068b500520400000000000040a0b5005304000000000000ecd7b50054040000000000000510b60055040000000000003e48b60056040000000000007a80b6005704000000000000b7b8b6005804000000000000f3f0b60059040000000000002f29b7005a04000000000000ae4eb7005b040000000000006861b7005c04000000000000a599b7005d04000000000000ded1b7005e040000000000005cf7b7005f04000000000000160ab80060040000000000005042b8006104000000000000964bb8006204000000000000687ab8006304000000000000a6b2b800640400000000000066c5b8006504000000000000e5eab80066040000000000000423b90067040000000000003f5bb90068040000000000005d77b90069040000000000007b93b9006a04000000000000b7cbb9006b04000000000000ef03ba006c04000000000000133cba006d040000000000003358ba006e040000000000005174ba006f0400000000000042acba0070040000000000006ce4ba007104000000000000a21cbb007204000000000000e054bb007304000000000000405ebb0074040000000000001b8dbb0075040000000000002ec5bb0076040000000000006dfdbb007704000000000000a435bc007804000000000000d06dbc0079040000000000000ca6bc007a040000000000004adebc007b040000000000008716bd007c04000000000000c34ebd007d04000000000000fc86bd007e040000000000003bbfbd007f040000000000007af7bd008004000000000000d500be008104000000000000b32fbe008204000000000000ea67be00830400000000000027a0be00840400000000000065d8be008504000000000000a410bf008604000000000000dd48bf0087040000000000003b52bf0088040000000000001881bf0089040000000000008fb8bf008a04000000000000cbc1bf008b04000000000000f8efbf008c040000000000007602c0008d040000000000008327c0008e04000000000000075fc0008f040000000000005d96c000900400000000000009cec00091040000000000003b06c10092040000000000002d3ec10093040000000000006476c10094040000000000007aaec1009504000000000000b9e6c1009604000000000000ef1ec20097040000000000002c57c2009804000000000000698fc20099040000000000008cc7c2009a040000000000009effc2009b04000000000000da37c3009c04000000000000ee6fc3009d0400000000000029a8c3009e0400000000000067e0c3009f04000000000000240fc400a0040000000000008218c400a104000000000000b150c400a204000000000000c088c400a304000000000000d2c0c400a404000000000000f6f8c400a5040000000000001231c500a604000000000000d143c500a7040000000000004d69c500a80400000000000089a1c500a904000000000000c4d9c500aa040000000000000112c600ab040000000000005c1bc600ac040000000000003a4ac600ad040000000000007482c600ae04000000000000abbac600af04000000000000e4f2c600b0040000000000001d2bc700b1040000000000002e47c700b2040000000000004863c700b304000000000000687fc700b404000000000000829bc700b5040000000000009bd3c700b604000000000000d80bc800b7040000000000001144c800b804000000000000704dc800b904000000000000d056c800ba040000000000004e7cc800bb0400000000000080b4c800bc04000000000000b1ecc800bd040000000000009808c900be040000000000008d24c900bf04000000000000c75cc900c004000000000000df94c900c104000000000000feb0c900c2040000000000001dcdc900c3040000000000004605ca00c4040000000000006e3dca00c5040000000000009e75ca00c604000000000000029bca00c704000000000000aeadca00c8040000000000008adcca00c904000000000000eae5ca00ca04000000000000251ecb00cb04000000000000fa55cb00cc04000000000000778ccb00cd04000000000000eec3cb00ce0400000000000005fccb00cf040000000000004134cc00d004000000000000716ccc00d10400000000000096a4cc00d204000000000000d3dccc00d30400000000000086efcc00d4040000000000000215cd00d504000000000000ac27cd00d604000000000000264dcd00d7040000000000008656cd00d8040000000000006385cd00d9040000000000003bb4cd00da0400000000000099bdcd00db04000000000000d8f5cd00dc04000000000000172ece00dd040000000000005366ce00de04000000000000909ece00df04000000000000b7d6ce00e00400000000000068e9ce00e104000000000000cc0ecf00e2040000000000000547cf00e304000000000000427fcf00e40400000000000079b7cf00e504000000000000b8efcf00e604000000000000f427d000e7040000000000000b60d000e8040000000000004698d000e90400000000000083d0d000ea04000000000000c008d100eb04000000000000fa40d100ec040000000000003679d100ed0400000000000073b1d100ee0400000000000087cdd100ef04000000000000a6e9d100f004000000000000e521d200f1040000000000001e5ad200f2040000000000005692d200f30400000000000092cad200f40400000000000052ddd200f504000000000000ce02d300f604000000000000e13ad300f7040000000000003444d300f804000000000000dc56d300f904000000000000ef72d300fa040000000000004d7cd300fb0400000000000024abd300fc04000000000000a1d0d300fd040000000000005be3d300fe04000000000000901bd400ff04000000000000ce53d40000050000000000000a8cd40001050000000000003ac4d40002050000000000004ae0d400030500000000000069fcd4000405000000000000a134d50005050000000000006047d5000605000000000000de6cd50007050000000000001ba5d500080500000000000058ddd50009050000000000009415d6000a05000000000000d24dd6000b05000000000000f085d6000c050000000000001ebed6000d05000000000000fbecd6000e050000000000005bf6d6000f050000000000008b2ed7001005000000000000c566d7001105000000000000029fd700120500000000000036d7d70013050000000000006f0fd80014050000000000009f47d8001505000000000000c97fd8001605000000000000e4b7d80017050000000000001ff0d80018050000000000005928d90019050000000000009560d9001a050000000000005473d9001b05000000000000718fd9001c05000000000000d198d9001d0500000000000031a2d9001e050000000000000fd1d9001f05000000000000cfe3d90020050000000000004f09da0021050000000000008941da002205000000000000b979da002305000000000000edb1da00240500000000000047bbda00250500000000000054d7da00260500000000000007eada00270500000000000067f3da0028050000000000003a22db0029050000000000005e5adb002a050000000000007892db002b05000000000000b0cadb002c05000000000000e702dc002d05000000000000183bdc002e050000000000007644dc002f050000000000002773dc003005000000000000dd85dc0031050000000000004dabdc00320500000000000086e3dc003305000000000000bb1bdd003405000000000000944add003505000000000000f453dd003605000000000000ad66dd003705000000000000298cdd00380500000000000060c4dd0039050000000000009cfcdd003a05000000000000fa05de003b05000000000000d734de003c05000000000000b56cde003d0500000000000045a4de003e05000000000000a1d2de003f05000000000000e4dbde0040050000000000002fe5de0041050000000000003c05df004205000000000000d81adf004305000000000000d636df0044050000000000002840df004505000000000000d252df004605000000000000cf6edf004705000000000000a9a6df004805000000000000eeafdf00490500000000000047b9df004a05000000000000b1dedf004b050000000000000de8df004c050000000000006e0de0004d05000000000000cb16e0004e05000000000000d84ee0004f050000000000007886e0005005000000000000b3bee0005105000000000000c3f6e0005205000000000000fe2ee10053050000000000002c67e1005405000000000000e679e1005505000000000000a68ce1005605000000000000629fe10057050000000000009bd7e10058050000000000005806e2005905000000000000b10fe2005a05000000000000e647e2005b050000000000001880e2005c050000000000007689e2005d050000000000004cb8e2005e050000000000007ef0e2005f05000000000000b228e3006005000000000000e760e30061050000000000002499e300620500000000000060d1e30063050000000000009c09e4006405000000000000d441e4006505000000000000334be40066050000000000000a7ae4006705000000000000e0a8e400680500000000000040b2e40069050000000000006feae4006a05000000000000a022e5006b05000000000000de5ae5006c050000000000001a93e5006d0500000000000055cbe5006e050000000000000bdee5006f050000000000008203e6007005000000000000db0ce6007105000000000000b53be6007205000000000000f073e60073050000000000004e7de60074050000000000002cace60075050000000000008cb5e60076050000000000006be4e6007705000000000000a51ce7007805000000000000dc54e7007905000000000000168de7007a050000000000004ac5e7007b0500000000000057fde7007c050000000000009335e8007d05000000000000d06de8007e050000000000002e77e8007f0500000000000004a6e80080050000000000003fdee80081050000000000007b16e9008205000000000000b74ee9008305000000000000e886e900840500000000000015bfe900850500000000000046f7e9008605000000000000602fea0087050000000000000442ea0088050000000000005a4bea0089050000000000006a67ea008a05000000000000889fea008b05000000000000daa8ea008c0500000000000079d7ea008d050000000000009f0feb008e050000000000005c22eb008f050000000000001c35eb009005000000000000d847eb0091050000000000000e80eb0092050000000000003eb8eb00930500000000000076f0eb009405000000000000ad28ec009505000000000000e660ec0096050000000000002399ec00970500000000000060d1ec0098050000000000009e09ed0099050000000000005e1ced009a05000000000000da41ed009b050000000000009654ed009c050000000000005567ed009d05000000000000127aed009e050000000000004ab2ed009f0500000000000082eaed00a005000000000000e1f3ed00a105000000000000bd22ee00a205000000000000fa5aee00a3050000000000003493ee00a405000000000000929cee00a50500000000000070cbee00a605000000000000ac03ef00a705000000000000eb3bef00a805000000000000fb73ef00a905000000000000feabef00aa05000000000000bebeef00ab0500000000000038e4ef00ac050000000000004e1cf000ad050000000000008854f000ae05000000000000958cf000af05000000000000c5c4f000b005000000000000fffcf000b1050000000000002e35f100b205000000000000de47f100b305000000000000466df100b4050000000000005da5f100b50500000000000094ddf100b605000000000000c115f200b705000000000000fa4df200b8050000000000002d86f200b90500000000000067bef200ba05000000000000a0f6f200bb05000000000000b52ef300bc050000000000003254f300bd05000000000000ef66f300be05000000000000239ff300bf0500000000000032d7f300c005000000000000dde9f300c1050000000000001e0ff400c2050000000000004f47f400c3050000000000008d7ff400c4050000000000006bb7f400c5050000000000009beff400c605000000000000c927f500c705000000000000ff5ff500c8050000000000003198f500c90500000000000063d0f500ca050000000000008908f600cb05000000000000c240f600cc050000000000001d66f600cd05000000000000ca78f600ce05000000000000fbb0f600cf0500000000000031e9f600d0050000000000006021f700d1050000000000009e59f700d205000000000000d891f700d3050000000000000acaf700d4050000000000004402f800d5050000000000007b3af800d605000000000000fa5ff800d705000000000000b672f800d805000000000000ebaaf800d90500000000000048b4f800da0500000000000024e3f800db05000000000000601bf900dc050000000000009753f900dd05000000000000ac8bf900de05000000000000e3c3f900df050000000000001cfcf900e0050000000000005934fa00e105000000000000936cfa00e205000000000000a7a4fa00e305000000000000dfdcfa00e4050000000000001a15fb00e5050000000000004d4dfb00e605000000000000a656fb00e7050000000000007b85fb00e805000000000000a2bdfb00e905000000000000dff5fb00ea050000000000005f1bfc00eb050000000000001e2efc00ec050000000000005266fc00ed050000000000000c79fc00ee05000000000000cc8bfc00ef050000000000002995fc00f005000000000000899efc00f105000000000000c1d6fc00f2050000000000007ee9fc00f3050000000000003dfcfc00f405000000000000f00efd00f5050000000000004c18fd00f6050000000000001a47fd00f7050000000000004a7ffd00f80500000000000086b7fd00f905000000000000beeffd00fa050000000000001ef9fd00fb05000000000000ee27fe00fc050000000000000944fe00fd050000000000002560fe00fe05000000000000307cfe00ff050000000000002798fe000006000000000000e2aafe00010600000000000042b4fe0002060000000000005dd0fe0003060000000000009a08ff000406000000000000ca40ff000506000000000000244aff000606000000000000f278ff0007060000000000002db1ff00080600000000000063e9ff000906000000000000712100010a06000000000000313400010b060000000000004c5000010c06000000000000ac5900010d06000000000000b49100010e06000000000000e3c900010f06000000000000f60101011006000000000000103a010111060000000000003056010112060000000000004c720101130600000000000084aa01011406000000000000c2e201011506000000000000fe1a02011606000000000000235302011706000000000000618b020118060000000000009dc3020119060000000000005ad602011a06000000000000badf02011b06000000000000d7fb02011c06000000000000370503011d06000000000000f71703011e06000000000000133403011f06000000000000516c03012006000000000000107f030121060000000000008da403012206000000000000cadc03012306000000000000f81404012406000000000000324d0401250600000000000070850401260600000000000080bd040127060000000000008bf504012806000000000000842d05012906000000000000d73605012a060000000000008b6505012b06000000000000c19d05012c06000000000000f9d505012d060000000000002e0e06012e06000000000000664606012f060000000000009d7e06013006000000000000d7b60601310600000000000011ef06013206000000000000442707013306000000000000725f07013406000000000000af9707013506000000000000e7cf070136060000000000001f0808013706000000000000372408013806000000000000544008013906000000000000917808013a06000000000000c8b008013b0600000000000001e908013c060000000000000f2109013d06000000000000085909013e06000000000000a99009013f06000000000000b5c809014006000000000000c5000a014106000000000000d2380a01420600000000000006710a014306000000000000f5a80a0144060000000000002be10a01450600000000000012190b01460600000000000048510b01470600000000000086890b014806000000000000e5920b014906000000000000c4c10b014a0600000000000000fa0b014b060000000000001d320c014c060000000000000b6a0c014d06000000000000c5980c014e060000000000001aa20c014f06000000000000d7d00c0150060000000000002dda0c01510600000000000069120d015206000000000000a44a0d015306000000000000df820d0154060000000000001dbb0d01550600000000000055f30d015606000000000000852b0e01570600000000000083630e015806000000000000c39b0e0159060000000000001ba50e015a060000000000007bae0e015b06000000000000f7d30e015c06000000000000afe60e015d06000000000000290c0f015e0600000000000065440f015f06000000000000db690f016006000000000000977c0f016106000000000000d2b40f016206000000000000ecec0f016306000000000000062510016406000000000000ea5c10016506000000000000f49410016606000000000000ffcc100167060000000000005ed610016806000000000000d6fb10016906000000000000340511016a06000000000000613d11016b060000000000008b7511016c06000000000000919111016d06000000000000abad11016e06000000000000e0e511016f060000000000001d1e120170060000000000005556120171060000000000006c8e120172060000000000008aaa12017306000000000000a3c612017406000000000000bdfe12017506000000000000f83613017606000000000000126f130177060000000000006c9413017806000000000000c99d1301790600000000000029a713017a060000000000005bdf13017b06000000000000b8e813017c0600000000000016f213017d060000000000008d1714017e06000000000000ec2014017f06000000000000a43314018006000000000000bc4f14018106000000000000d58714018206000000000000919a1401830600000000000005c0140184060000000000005fc914018506000000000000f8f714018606000000000000a10a15018706000000000000fa1315018806000000000000561d15018906000000000000fa2f15018a06000000000000513915018b06000000000000aa4215018c06000000000000106815018d060000000000002f8415018e060000000000004ba015018f060000000000002cbc15019006000000000000ccce1501910600000000000019d81501920600000000000076e115019306000000000000331016019406000000000000664816019506000000000000998016019606000000000000d5b81601970600000000000093cb16019806000000000000f3d4160199060000000000000ff116019a06000000000000cd0317019b06000000000000492917019c06000000000000a33217019d06000000000000444517019e060000000000003a6117019f06000000000000117d1701a0060000000000001c991701a10600000000000059d11701a2060000000000008c091801a306000000000000c2411801a4060000000000001e4b1801a50600000000000037671801a606000000000000f2791801a7060000000000001fb21801a806000000000000dec41801a90600000000000056ea1801aa0600000000000005fd1801ab0600000000000079221901ac06000000000000b25a1901ad06000000000000e5921901ae06000000000000f9ca1901af060000000000005df01901b00600000000000017031a01b1060000000000003a3b1a01b206000000000000e64d1a01b30600000000000044731a01b406000000000000a37c1a01b50600000000000078ab1a01b6060000000000006ee31a01b706000000000000921b1b01b806000000000000be531b01b9060000000000001d5d1b01ba06000000000000ec8b1b01bb0600000000000009c41b01bc06000000000000e5fb1b01bd06000000000000f1331c01be06000000000000ef6b1c01bf06000000000000a39a1c01c006000000000000fba31c01c106000000000000f2db1c01c206000000000000f8131d01c306000000000000df4b1d01c40600000000000075831d01c506000000000000aaa81d01c6060000000000003bbb1d01c7060000000000002fd71d01c80600000000000017f31d01c90600000000000067fc1d01ca06000000000000ad211e01cb06000000000000fb2a1e01cc0600000000000052341e01cd06000000000000da621e01ce06000000000000c87e1e01cf06000000000000b09a1e01d00600000000000089d21e01d1060000000000000fe51e01d2060000000000005fee1e01d3060000000000003b0a1f01d406000000000000f8411f01d50600000000000098541f01d606000000000000ac5d1f01d70600000000000094791f01d8060000000000006eb11f01d90600000000000038e91f01da060000000000000b212001db06000000000000e6582001dc06000000000000c8902001dd0600000000000062a32001de060000000000007ac82001df060000000000001cdb2001e0060000000000005d002101e10600000000000021382101e206000000000000f76f2101e3060000000000003d792101e406000000000000cea72101e50600000000000095df2101e6060000000000006e172201e706000000000000334f2201e80600000000000085582201e90600000000000010872201ea06000000000000eea22201eb06000000000000cbbe2201ec06000000000000a9da2201ed060000000000009ef62201ee060000000000003d092301ef06000000000000782e2301f0060000000000000c412301f1060000000000005e4a2301f20600000000000045662301f3060000000000003b822301f406000000000000299e2301f506000000000000fed52301f606000000000000990d2401f7060000000000002c202401f806000000000000173c2401f90600000000000063452401fa06000000000000fd572401fb060000000000002a7d2401fc0600000000000000b52401fd06000000000000b8ec2401fe0600000000000037242501ff06000000000000155c25010007000000000000e69325010107000000000000a6cb25010207000000000000630326010307000000000000b30c260104070000000000000916260105070000000000005b1f26010607000000000000523b260107070000000000004857260108070000000000002d732601090700000000000018ab26010a07000000000000fdc626010b07000000000000ede226010c070000000000008d1127010d07000000000000e31a27010e07000000000000cc5227010f07000000000000ac8a270110070000000000004b9d2701110700000000000090c22701120700000000000087fa27011307000000000000583228011407000000000000fe6928011507000000000000557328011607000000000000f4a128011707000000000000ced9280118070000000000007d1129011907000000000000414929011a070000000000001a8129011b07000000000000deb829011c07000000000000bff029011d07000000000000a8282a011e070000000000008b602a011f07000000000000dc692a0120070000000000002d732a0121070000000000007a7c2a012207000000000000198f2a01230700000000000069982a01240700000000000003ab2a0125070000000000004ab42a0126070000000000009ebd2a01270700000000000041d02a012807000000000000e7e22a01290700000000000089f52a012a0700000000000023082b012b07000000000000cb1a2b012c0700000000000018242b012d070000000000006b2d2b012e07000000000000ba362b012f070000000000000e402b013007000000000000af522b013107000000000000035c2b0132070000000000004c652b0133070000000000009b6e2b013407000000000000e4772b013507000000000000abaf2b013607000000000000f8b82b01370700000000000052c22b013807000000000000f0d42b0139070000000000008de72b013a0700000000000081032c013b070000000000005e1f2c013c070000000000004a3b2c013d0700000000000037572c013e070000000000000a8f2c013f070000000000005e982c014007000000000000eeaa2c0141070000000000007fbd2c014207000000000000d2c62c014307000000000000b6fe2c0144070000000000008f362d014507000000000000426e2d014607000000000000d9a52d014707000000000000a0dd2d0148070000000000003df02d0149070000000000004f152e014a07000000000000971e2e014b07000000000000e2272e014c0700000000000035312e014d07000000000000cb432e014e07000000000000174d2e014f07000000000000a57b2e015007000000000000f8842e015107000000000000e0bc2e015207000000000000bdf42e0153070000000000009d2c2f015407000000000000e9352f015507000000000000353f2f015607000000000000cf512f0157070000000000006e642f0158070000000000001b772f015907000000000000659c2f015a070000000000005bd42f015b0700000000000001e72f015c07000000000000470c30015d07000000000000464430015e07000000000000904d30015f07000000000000e4563001" }, "name": "Polkadot", "properties": { diff --git a/artifacts/polkadot_metadata_full.scale b/artifacts/polkadot_metadata_full.scale index ab048a265dfe01b84085c760de93ed954a760fc7..e72afe3236b2fba68f8338541118b516b8d35646 100644 GIT binary patch delta 193 zcmbPrOrrOw#D;UfIXn`AGt=`@Q<`u8ZomDT5r~<#-~P=Uvw~4)y2TQfh1)+ZVR@}3 z-*m1enSq-@!E5D3M&bWZ&~!6foPm*h!A+Lwf6lWgaKZSA;nUSFu;{XY_}jxTuvl(q zk|>-W*UhRk-L!+%(BOkYQEF~tW?p7qx69NJDs<3x>FDneGH9$H2hQ-kaGv*^Kjkl<^Y^bwu3^>$r)ceYmLHcAv8<5XhR3tVO~sbw|oL6vUwh4`bVzbws99Mt#I5H|0I zWcu@WuKMdU8p+n@w$=Na4pV=8-BptVy{Lb4TpsA`5aAP zyC59|%TFT~0{10Ykr2qG+sYB}Eh`Eb+9jw^4ow7!Uf>HVnA-w#$M=2|q2-_*xoAT( zl4HsL;TnNjTEGg@QN6ZNEPz0dGS2wkxHbL8byIW7HUv~q=?J8DF(#+RVTO3>xMNhv Ka{Sma`WIgUCWmSO diff --git a/artifacts/polkadot_metadata_small.scale b/artifacts/polkadot_metadata_small.scale index 61a4f9622b587470f6050622d2e2716d2b83dabf..900a982b3e73617776191240aa5b74487933d15e 100644 GIT binary patch delta 88 zcmbQRh~@i2mJRw-77`TYu9Fm7V_SwP&)S_hs5006BCCrbbT delta 106 zcmeyqkY&OmmJRw-7!4*HOj#%q;+dC{T9R6no0*qblIodTkdv95S;D}*`NEXrTJlU4 y5!npf3<_Q=FER@Mhk`|?oWvLyxg%u#CvV%Yzy;$jT{!u{eq9z2ceCJuX8`~%LM+|@ diff --git a/artifacts/polkadot_metadata_tiny.scale b/artifacts/polkadot_metadata_tiny.scale index da976768595ca173827c299de3a3ded2e8c2181c..f601a8d2519f2bbeafb4b68c8f0bb06aedb8ac2c 100644 GIT binary patch delta 20 ccmcb+lIh4wrVU^87 IyY#tI0Zn5R@Bjb+ diff --git a/testing/integration-tests/src/full_client/codegen/polkadot.rs b/testing/integration-tests/src/full_client/codegen/polkadot.rs index 261935ed9f..f07877742b 100644 --- a/testing/integration-tests/src/full_client/codegen/polkadot.rs +++ b/testing/integration-tests/src/full_client/codegen/polkadot.rs @@ -451,10 +451,9 @@ pub mod api { "apply_extrinsic", types::ApplyExtrinsic { extrinsic }, [ - 119u8, 150u8, 250u8, 167u8, 191u8, 251u8, 112u8, 205u8, 40u8, 18u8, - 97u8, 199u8, 147u8, 238u8, 199u8, 51u8, 241u8, 37u8, 192u8, 206u8, - 89u8, 168u8, 252u8, 234u8, 129u8, 58u8, 61u8, 52u8, 92u8, 41u8, 226u8, - 14u8, + 72u8, 54u8, 139u8, 3u8, 118u8, 136u8, 65u8, 47u8, 6u8, 105u8, 125u8, + 223u8, 160u8, 29u8, 103u8, 74u8, 79u8, 149u8, 48u8, 90u8, 237u8, 2u8, + 97u8, 201u8, 123u8, 34u8, 167u8, 37u8, 187u8, 35u8, 176u8, 97u8, ], ) } @@ -640,9 +639,9 @@ pub mod api { block_hash, }, [ - 235u8, 222u8, 8u8, 154u8, 179u8, 166u8, 234u8, 29u8, 236u8, 33u8, 31u8, - 143u8, 137u8, 187u8, 5u8, 34u8, 217u8, 75u8, 237u8, 190u8, 236u8, 76u8, - 243u8, 16u8, 163u8, 25u8, 99u8, 34u8, 72u8, 228u8, 150u8, 173u8, + 196u8, 50u8, 90u8, 49u8, 109u8, 251u8, 200u8, 35u8, 23u8, 150u8, 140u8, + 143u8, 232u8, 164u8, 133u8, 89u8, 32u8, 240u8, 115u8, 39u8, 95u8, 70u8, + 162u8, 76u8, 122u8, 73u8, 151u8, 144u8, 234u8, 120u8, 100u8, 29u8, ], ) } @@ -4009,9 +4008,9 @@ pub mod api { .hash(); runtime_metadata_hash == [ - 207u8, 245u8, 15u8, 185u8, 222u8, 184u8, 8u8, 57u8, 116u8, 4u8, 188u8, 174u8, 89u8, - 125u8, 183u8, 99u8, 96u8, 209u8, 149u8, 19u8, 90u8, 184u8, 164u8, 245u8, 65u8, - 86u8, 244u8, 191u8, 30u8, 101u8, 221u8, 209u8, + 156u8, 238u8, 89u8, 253u8, 131u8, 142u8, 74u8, 227u8, 39u8, 8u8, 168u8, 223u8, + 105u8, 129u8, 225u8, 253u8, 181u8, 1u8, 91u8, 107u8, 103u8, 177u8, 147u8, 165u8, + 10u8, 219u8, 72u8, 215u8, 120u8, 62u8, 229u8, 179u8, ] } pub mod system { @@ -15767,7 +15766,7 @@ pub mod api { #[doc = "Attest to a statement, needed to finalize the claims process."] #[doc = ""] #[doc = "WARNING: Insecure unless your chain includes `PrevalidateAttests` as a"] - #[doc = "`TransactionExtension`."] + #[doc = "`SignedExtension`."] #[doc = ""] #[doc = "Unsigned Validation:"] #[doc = "A call to attest is deemed valid if the sender has a `Preclaim` registered"] @@ -15955,7 +15954,7 @@ pub mod api { #[doc = "Attest to a statement, needed to finalize the claims process."] #[doc = ""] #[doc = "WARNING: Insecure unless your chain includes `PrevalidateAttests` as a"] - #[doc = "`TransactionExtension`."] + #[doc = "`SignedExtension`."] #[doc = ""] #[doc = "Unsigned Validation:"] #[doc = "A call to attest is deemed valid if the sender has a `Preclaim` registered"] @@ -33641,10 +33640,8 @@ pub mod api { ], ) } - #[doc = " One entry for each availability core. Entries are `None` if the core is not currently"] - #[doc = " occupied. Can be temporarily `Some` if scheduled but not occupied."] - #[doc = " The i'th parachain belongs to the i'th core, with the remaining cores all being"] - #[doc = " parathread-multiplexers."] + #[doc = " One entry for each availability core. The i'th parachain belongs to the i'th core, with the"] + #[doc = " remaining cores all being on demand parachain multiplexers."] #[doc = ""] #[doc = " Bounded by the maximum of either of these two values:"] #[doc = " * The number of parachains and parathread multiplexers"] @@ -33699,7 +33696,7 @@ pub mod api { } #[doc = " One entry for each availability core. The `VecDeque` represents the assignments to be"] #[doc = " scheduled on that core. The value contained here will not be valid after the end of"] - #[doc = " a block. Runtime APIs should be used to determine scheduled cores/ for the upcoming block."] + #[doc = " a block. Runtime APIs should be used to determine scheduled cores for the upcoming block."] pub fn claim_queue( &self, ) -> ::subxt::storage::address::Address< @@ -57897,7 +57894,7 @@ pub mod api { #[doc = "Attest to a statement, needed to finalize the claims process."] #[doc = ""] #[doc = "WARNING: Insecure unless your chain includes `PrevalidateAttests` as a"] - #[doc = "`TransactionExtension`."] + #[doc = "`SignedExtension`."] #[doc = ""] #[doc = "Unsigned Validation:"] #[doc = "A call to attest is deemed valid if the sender has a `Preclaim` registered"] @@ -62163,8 +62160,6 @@ pub mod api { MandatoryValidation, #[codec(index = 10)] BadSigner, - #[codec(index = 11)] - IndeterminateImplicit, } #[derive( :: subxt :: ext :: codec :: Decode, From f7ef0a98d89cb6370e6acdc724dd0cf4b14b1788 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Mar 2024 11:35:19 +0200 Subject: [PATCH 52/66] build(deps): bump trybuild from 1.0.89 to 1.0.90 (#1485) Bumps [trybuild](https://github.com/dtolnay/trybuild) from 1.0.89 to 1.0.90. - [Release notes](https://github.com/dtolnay/trybuild/releases) - [Commits](https://github.com/dtolnay/trybuild/compare/1.0.89...1.0.90) --- updated-dependencies: - dependency-name: trybuild dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 15 +++------------ Cargo.toml | 2 +- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5a7af0594b..900c05b7f7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -553,15 +553,6 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" -[[package]] -name = "basic-toml" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2db21524cad41c5591204d22d75e1970a2d1f71060214ca931dc7d5afe2c14e5" -dependencies = [ - "serde", -] - [[package]] name = "beef" version = "0.5.2" @@ -5130,17 +5121,17 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "trybuild" -version = "1.0.89" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a9d3ba662913483d6722303f619e75ea10b7855b0f8e0d72799cf8621bb488f" +checksum = "2aa6f84ec205ebf87fb7a0abdbcd1467fa5af0e86878eb6d888b78ecbb10b6d5" dependencies = [ - "basic-toml", "glob 0.3.1", "once_cell", "serde", "serde_derive", "serde_json", "termcolor", + "toml", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index e8ae1da25b..7cd6f3b27c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -101,7 +101,7 @@ tokio = { version = "1.36", default-features = false } tracing = { version = "0.1.40", default-features = false } tracing-wasm = "0.2.1" tracing-subscriber = "0.3.18" -trybuild = "1.0.89" +trybuild = "1.0.90" url = "2.5.0" wabt = "0.10.0" wasm-bindgen-test = "0.3.24" From d9085344540f1fab47a10747939d98be7e1f8e85 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Mar 2024 11:37:05 +0200 Subject: [PATCH 53/66] build(deps): bump color-eyre from 0.6.2 to 0.6.3 (#1482) Bumps [color-eyre](https://github.com/eyre-rs/eyre) from 0.6.2 to 0.6.3. - [Commits](https://github.com/eyre-rs/eyre/compare/v0.6.2...color-eyre-v0.6.3) --- updated-dependencies: - dependency-name: color-eyre dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 900c05b7f7..c7b51c9722 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -903,9 +903,9 @@ dependencies = [ [[package]] name = "color-eyre" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a667583cca8c4f8436db8de46ea8233c42a7d9ae424a82d338f2e4675229204" +checksum = "55146f5e46f237f7423d74111267d4597b59b0dad0ffaf7303bce9945d843ad5" dependencies = [ "backtrace", "color-spantrace", diff --git a/Cargo.toml b/Cargo.toml index 7cd6f3b27c..987c441162 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -67,7 +67,7 @@ clap = { version = "4.5.2", features = ["derive", "cargo"] } cfg-if = "1.0.0" criterion = "0.4" codec = { package = "parity-scale-codec", version = "3.6.9", default-features = false } -color-eyre = "0.6.1" +color-eyre = "0.6.3" console_error_panic_hook = "0.1.7" darling = "0.20.8" derivative = "2.2.0" From f7108b9c87fda5f860777d976eaa3eca4a809d91 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Mar 2024 11:13:54 +0100 Subject: [PATCH 54/66] build(deps): bump proc-macro2 from 1.0.78 to 1.0.79 (#1481) Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.78 to 1.0.79. - [Release notes](https://github.com/dtolnay/proc-macro2/releases) - [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.78...1.0.79) --- updated-dependencies: - dependency-name: proc-macro2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c7b51c9722..a8964f5f4f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3099,9 +3099,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.78" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" dependencies = [ "unicode-ident", ] diff --git a/Cargo.toml b/Cargo.toml index 987c441162..fed7f01acb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -85,7 +85,7 @@ jsonrpsee = { version = "0.22" } pretty_assertions = "1.4.0" primitive-types = { version = "0.12.2", default-features = false } proc-macro-error = "1.0.4" -proc-macro2 = "1.0.78" +proc-macro2 = "1.0.79" quote = "1.0.35" regex = { version = "1.10.3", default-features = false } scale-info = { version = "2.11.0", default-features = false } From 793da7e29d58c27b173d00108cd8e793db991a0f Mon Sep 17 00:00:00 2001 From: Niklas Adolfsson Date: Mon, 18 Mar 2024 15:41:58 +0100 Subject: [PATCH 55/66] disable cargo doc for `subxt-cli` (#1486) * rename subxt to subxt-cli * disable doc for subxt-cli --- cli/Cargo.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/cli/Cargo.toml b/cli/Cargo.toml index fe5b70176c..5f0dca45d5 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -15,6 +15,7 @@ description = "Command line utilities for working with subxt codegen" [[bin]] name = "subxt" path = "src/main.rs" +doc = false [lints] workspace = true From caa6b5607cb20d93582a8904701b47906e2110ba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Mar 2024 14:41:11 +0000 Subject: [PATCH 56/66] build(deps): bump wasm-bindgen-futures from 0.4.41 to 0.4.42 (#1483) Bumps [wasm-bindgen-futures](https://github.com/rustwasm/wasm-bindgen) from 0.4.41 to 0.4.42. - [Release notes](https://github.com/rustwasm/wasm-bindgen/releases) - [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/rustwasm/wasm-bindgen/commits) --- updated-dependencies: - dependency-name: wasm-bindgen-futures dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Niklas Adolfsson --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a8964f5f4f..36324ef1df 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5369,9 +5369,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.41" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" dependencies = [ "cfg-if", "js-sys", diff --git a/Cargo.toml b/Cargo.toml index fed7f01acb..6473359b33 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -123,7 +123,7 @@ web-sys = { version = "0.3.67", features = ["BinaryType", "CloseEvent", "Message wasm-bindgen = "0.2.92" send_wrapper = "0.6.0" js-sys = "0.3.69" -wasm-bindgen-futures = "0.4.38" +wasm-bindgen-futures = "0.4.42" futures-timer = "3" instant = { version = "0.1.12", default-features = false } tokio-util = "0.7.10" From 98c4c0135b7c724ac9c87394b674be594393ccff Mon Sep 17 00:00:00 2001 From: James Wilson Date: Thu, 21 Mar 2024 15:18:00 +0000 Subject: [PATCH 57/66] chore: rename sp-core-hashing to sp-crypto-hashing (#1490) * rename sp-core-hashing to sp-crypto-hashing * fmt --- .github/dependabot.yml | 4 ++-- Cargo.lock | 20 +++++++++++++++++--- Cargo.toml | 2 +- examples/parachain-example/Cargo.lock | 8 ++++---- examples/wasm-example/Cargo.lock | 6 +++--- metadata/Cargo.toml | 2 +- metadata/src/utils/validation.rs | 2 +- signer/Cargo.toml | 4 ++-- signer/src/crypto/derive_junction.rs | 2 +- signer/src/ecdsa.rs | 8 ++++---- subxt/Cargo.toml | 2 +- subxt/src/config/substrate.rs | 2 +- subxt/src/events/events_client.rs | 4 ++-- subxt/src/storage/storage_type.rs | 6 ++++-- subxt/src/storage/utils.rs | 16 ++++++++-------- subxt/src/tx/tx_client.rs | 2 +- testing/no-std-tests/Cargo.lock | 6 +++--- testing/wasm-lightclient-tests/Cargo.lock | 6 +++--- testing/wasm-rpc-tests/Cargo.lock | 6 +++--- 19 files changed, 62 insertions(+), 46 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 1ccfdde27c..e36427e4ae 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -5,12 +5,12 @@ updates: schedule: interval: weekly ignore: - # these need to be updated together, so dependabot PRs + # these need to be updated together, so dependabot PRs # are just noise. So, ignore them: - dependency-name: sp-core - dependency-name: sp-keyring - dependency-name: sp-runtime - - dependency-name: sp-core-hashing + - dependency-name: sp-crypto-hashing - dependency-name: sp-version - package-ecosystem: github-actions directory: '/' diff --git a/Cargo.lock b/Cargo.lock index 36324ef1df..d0e71df7bb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4150,6 +4150,20 @@ dependencies = [ "twox-hash", ] +[[package]] +name = "sp-crypto-hashing" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc9927a7f81334ed5b8a98a4a978c81324d12bd9713ec76b5c68fd410174c5eb" +dependencies = [ + "blake2b_simd", + "byteorder", + "digest 0.10.7", + "sha2 0.10.8", + "sha3", + "twox-hash", +] + [[package]] name = "sp-debug-derive" version = "14.0.0" @@ -4539,7 +4553,7 @@ dependencies = [ "serde", "serde_json", "sp-core", - "sp-core-hashing", + "sp-crypto-hashing", "sp-keyring", "sp-runtime", "subxt-lightclient", @@ -4653,7 +4667,7 @@ dependencies = [ "hashbrown 0.14.3", "parity-scale-codec", "scale-info", - "sp-core-hashing", + "sp-crypto-hashing", ] [[package]] @@ -4674,7 +4688,7 @@ dependencies = [ "secrecy", "sha2 0.10.8", "sp-core", - "sp-core-hashing", + "sp-crypto-hashing", "sp-keyring", "subxt", "zeroize", diff --git a/Cargo.toml b/Cargo.toml index 6473359b33..005bf9c811 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -130,7 +130,7 @@ tokio-util = "0.7.10" # Substrate crates: sp-core = { version = "28.0.0", default-features = false } -sp-core-hashing = { version = "15.0.0", default-features = false } +sp-crypto-hashing = { version = "0.1.0", default-features = false } sp-runtime = "31.0.0" sp-keyring = "31.0.0" diff --git a/examples/parachain-example/Cargo.lock b/examples/parachain-example/Cargo.lock index c49f261820..2c523c588f 100644 --- a/examples/parachain-example/Cargo.lock +++ b/examples/parachain-example/Cargo.lock @@ -2512,7 +2512,7 @@ dependencies = [ ] [[package]] -name = "sp-core-hashing" +name = "sp-crypto-hashing" version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb8524f01591ee58b46cd83c9dbc0fcffd2fd730dabec4f59326cd58a00f17e2" @@ -2573,7 +2573,7 @@ dependencies = [ "scale-value", "serde", "serde_json", - "sp-core-hashing", + "sp-crypto-hashing", "subxt-lightclient", "subxt-macro", "subxt-metadata", @@ -2637,7 +2637,7 @@ dependencies = [ "frame-metadata 16.0.0", "parity-scale-codec", "scale-info", - "sp-core-hashing", + "sp-crypto-hashing", "thiserror", ] @@ -2655,7 +2655,7 @@ dependencies = [ "secp256k1", "secrecy", "sha2 0.10.8", - "sp-core-hashing", + "sp-crypto-hashing", "subxt", "thiserror", "zeroize", diff --git a/examples/wasm-example/Cargo.lock b/examples/wasm-example/Cargo.lock index 003fb839bc..c80bf6d404 100644 --- a/examples/wasm-example/Cargo.lock +++ b/examples/wasm-example/Cargo.lock @@ -2460,7 +2460,7 @@ dependencies = [ ] [[package]] -name = "sp-core-hashing" +name = "sp-crypto-hashing" version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e0f4990add7b2cefdeca883c0efa99bb4d912cb2196120e1500c0cc099553b0" @@ -2522,7 +2522,7 @@ dependencies = [ "scale-value", "serde", "serde_json", - "sp-core-hashing", + "sp-crypto-hashing", "subxt-lightclient", "subxt-macro", "subxt-metadata", @@ -2598,7 +2598,7 @@ dependencies = [ "hashbrown 0.14.3", "parity-scale-codec", "scale-info", - "sp-core-hashing", + "sp-crypto-hashing", ] [[package]] diff --git a/metadata/Cargo.toml b/metadata/Cargo.toml index a6e15de0aa..1423122ed5 100644 --- a/metadata/Cargo.toml +++ b/metadata/Cargo.toml @@ -21,7 +21,7 @@ std = ["scale-info/std", "frame-metadata/std"] scale-info = { workspace = true, default-features = false } frame-metadata = { workspace = true, default-features = false, features = ["current", "decode"] } codec = { package = "parity-scale-codec", workspace = true, default-features = false, features = ["derive"] } -sp-core-hashing = { workspace = true } +sp-crypto-hashing = { workspace = true } hashbrown = { workspace = true } derive_more = { workspace = true } diff --git a/metadata/src/utils/validation.rs b/metadata/src/utils/validation.rs index 2b1b1f5e33..dfa4f9b829 100644 --- a/metadata/src/utils/validation.rs +++ b/metadata/src/utils/validation.rs @@ -35,7 +35,7 @@ enum TypeBeingHashed { /// Hashing function utilized internally. fn hash(data: &[u8]) -> Hash { - sp_core_hashing::twox_256(data) + sp_crypto_hashing::twox_256(data) } /// XOR two hashes together. Only use this when you don't care about the order diff --git a/signer/Cargo.toml b/signer/Cargo.toml index 7678256460..7e307b2284 100644 --- a/signer/Cargo.toml +++ b/signer/Cargo.toml @@ -16,7 +16,7 @@ keywords = ["parity", "subxt", "extrinsic", "signer"] [features] default = ["sr25519", "ecdsa", "subxt", "std", "native"] -std = ["regex/std", "sp-core-hashing/std", "pbkdf2/std", "sha2/std", "hmac/std", "bip39/std", "schnorrkel/std", "secp256k1/std", "sp-core/std"] +std = ["regex/std", "sp-crypto-hashing/std", "pbkdf2/std", "sha2/std", "hmac/std", "bip39/std", "schnorrkel/std", "secp256k1/std", "sp-core/std"] # Pick the signer implementation(s) you need by enabling the # corresponding features. Note: I had more difficulties getting @@ -40,7 +40,7 @@ regex = { workspace = true, features = ["unicode"] } hex = { workspace = true } cfg-if = { workspace = true } codec = { package = "parity-scale-codec", workspace = true, features = ["derive"] } -sp-core-hashing = { workspace = true } +sp-crypto-hashing = { workspace = true } derive_more = { workspace = true } pbkdf2 = { workspace = true } sha2 = { workspace = true } diff --git a/signer/src/crypto/derive_junction.rs b/signer/src/crypto/derive_junction.rs index 87beee1717..b68f079986 100644 --- a/signer/src/crypto/derive_junction.rs +++ b/signer/src/crypto/derive_junction.rs @@ -40,7 +40,7 @@ impl DeriveJunction { let mut cc: [u8; JUNCTION_ID_LEN] = Default::default(); index.using_encoded(|data| { if data.len() > JUNCTION_ID_LEN { - cc.copy_from_slice(&sp_core_hashing::blake2_256(data)); + cc.copy_from_slice(&sp_crypto_hashing::blake2_256(data)); } else { cc[0..data.len()].copy_from_slice(data); } diff --git a/signer/src/ecdsa.rs b/signer/src/ecdsa.rs index a25c8cc776..de84d4bd9a 100644 --- a/signer/src/ecdsa.rs +++ b/signer/src/ecdsa.rs @@ -144,7 +144,7 @@ impl Keypair { DeriveJunction::Soft(_) => return Err(Error::SoftJunction), DeriveJunction::Hard(junction_bytes) => { acc = ("Secp256k1HDKD", acc, junction_bytes) - .using_encoded(sp_core_hashing::blake2_256) + .using_encoded(sp_crypto_hashing::blake2_256) } } } @@ -161,7 +161,7 @@ impl Keypair { /// Sign some message. These bytes can be used directly in a Substrate `MultiSignature::Ecdsa(..)`. pub fn sign(&self, message: &[u8]) -> Signature { // From sp_core::ecdsa::sign: - let message_hash = sp_core_hashing::blake2_256(message); + let message_hash = sp_crypto_hashing::blake2_256(message); // From sp_core::ecdsa::sign_prehashed: let wrapped = Message::from_digest_slice(&message_hash).expect("Message is 32 bytes; qed"); let recsig: RecoverableSignature = @@ -194,7 +194,7 @@ pub fn verify>(sig: &Signature, message: M, pubkey: &PublicKey) - let Ok(public) = secp256k1::PublicKey::from_slice(&pubkey.0) else { return false; }; - let message_hash = sp_core_hashing::blake2_256(message.as_ref()); + let message_hash = sp_crypto_hashing::blake2_256(message.as_ref()); let wrapped = Message::from_digest_slice(&message_hash).expect("Message is 32 bytes; qed"); Secp256k1::verification_only() @@ -299,7 +299,7 @@ mod subxt_compat { /// We often want this type, and using this method avoids any /// ambiguous type resolution issues. pub fn to_account_id(self) -> AccountId32 { - AccountId32(sp_core_hashing::blake2_256(&self.0)) + AccountId32(sp_crypto_hashing::blake2_256(&self.0)) } /// A shortcut to obtain a [`MultiAddress`] from a [`PublicKey`]. /// We often want this type, and using this method avoids any diff --git a/subxt/Cargo.toml b/subxt/Cargo.toml index 53c0074b3e..f91ec708a0 100644 --- a/subxt/Cargo.toml +++ b/subxt/Cargo.toml @@ -87,7 +87,7 @@ instant = { workspace = true } # Provides some deserialization, types like U256/H256 and hashing impls like twox/blake256: impl-serde = { workspace = true } primitive-types = { workspace = true, features = ["codec", "scale-info", "serde"] } -sp-core-hashing = { workspace = true } +sp-crypto-hashing = { workspace = true } # For ss58 encoding AccountId32 to serialize them properly: base58 = { workspace = true } diff --git a/subxt/src/config/substrate.rs b/subxt/src/config/substrate.rs index 44cfcf7b73..1ee3e83c5f 100644 --- a/subxt/src/config/substrate.rs +++ b/subxt/src/config/substrate.rs @@ -42,7 +42,7 @@ pub struct BlakeTwo256; impl Hasher for BlakeTwo256 { type Output = H256; fn hash(s: &[u8]) -> Self::Output { - sp_core_hashing::blake2_256(s).into() + sp_crypto_hashing::blake2_256(s).into() } } diff --git a/subxt/src/events/events_client.rs b/subxt/src/events/events_client.rs index 834e6cd64f..bb389b828c 100644 --- a/subxt/src/events/events_client.rs +++ b/subxt/src/events/events_client.rs @@ -76,8 +76,8 @@ where // The storage key needed to access events. fn system_events_key() -> [u8; 32] { - let a = sp_core_hashing::twox_128(b"System"); - let b = sp_core_hashing::twox_128(b"Events"); + let a = sp_crypto_hashing::twox_128(b"System"); + let b = sp_crypto_hashing::twox_128(b"Events"); let mut res = [0; 32]; res[0..16].clone_from_slice(&a); res[16..32].clone_from_slice(&b); diff --git a/subxt/src/storage/storage_type.rs b/subxt/src/storage/storage_type.rs index daa0eccf63..d072c1e40b 100644 --- a/subxt/src/storage/storage_type.rs +++ b/subxt/src/storage/storage_type.rs @@ -287,8 +287,10 @@ where // construct the storage key. This is done similarly in `frame_support::traits::metadata::StorageVersion::storage_key()`. pub const STORAGE_VERSION_STORAGE_KEY_POSTFIX: &[u8] = b":__STORAGE_VERSION__:"; let mut key_bytes: Vec = vec![]; - key_bytes.extend(&sp_core_hashing::twox_128(pallet_name.as_ref().as_bytes())); - key_bytes.extend(&sp_core_hashing::twox_128( + key_bytes.extend(&sp_crypto_hashing::twox_128( + pallet_name.as_ref().as_bytes(), + )); + key_bytes.extend(&sp_crypto_hashing::twox_128( STORAGE_VERSION_STORAGE_KEY_POSTFIX, )); diff --git a/subxt/src/storage/utils.rs b/subxt/src/storage/utils.rs index 12db5a922c..6024d9efc8 100644 --- a/subxt/src/storage/utils.rs +++ b/subxt/src/storage/utils.rs @@ -17,8 +17,8 @@ pub fn write_storage_address_root_bytes( addr: &Address, out: &mut Vec, ) { - out.extend(sp_core_hashing::twox_128(addr.pallet_name().as_bytes())); - out.extend(sp_core_hashing::twox_128(addr.entry_name().as_bytes())); + out.extend(sp_crypto_hashing::twox_128(addr.pallet_name().as_bytes())); + out.extend(sp_crypto_hashing::twox_128(addr.entry_name().as_bytes())); } /// Outputs the [`storage_address_root_bytes`] as well as any additional bytes that represent @@ -44,16 +44,16 @@ pub fn storage_address_root_bytes(addr: &Address) -> Ve pub fn hash_bytes(input: &[u8], hasher: StorageHasher, bytes: &mut Vec) { match hasher { StorageHasher::Identity => bytes.extend(input), - StorageHasher::Blake2_128 => bytes.extend(sp_core_hashing::blake2_128(input)), + StorageHasher::Blake2_128 => bytes.extend(sp_crypto_hashing::blake2_128(input)), StorageHasher::Blake2_128Concat => { - bytes.extend(sp_core_hashing::blake2_128(input)); + bytes.extend(sp_crypto_hashing::blake2_128(input)); bytes.extend(input); } - StorageHasher::Blake2_256 => bytes.extend(sp_core_hashing::blake2_256(input)), - StorageHasher::Twox128 => bytes.extend(sp_core_hashing::twox_128(input)), - StorageHasher::Twox256 => bytes.extend(sp_core_hashing::twox_256(input)), + StorageHasher::Blake2_256 => bytes.extend(sp_crypto_hashing::blake2_256(input)), + StorageHasher::Twox128 => bytes.extend(sp_crypto_hashing::twox_128(input)), + StorageHasher::Twox256 => bytes.extend(sp_crypto_hashing::twox_256(input)), StorageHasher::Twox64Concat => { - bytes.extend(sp_core_hashing::twox_64(input)); + bytes.extend(sp_crypto_hashing::twox_64(input)); bytes.extend(input); } } diff --git a/subxt/src/tx/tx_client.rs b/subxt/src/tx/tx_client.rs index 49b940d40c..c4a5924c11 100644 --- a/subxt/src/tx/tx_client.rs +++ b/subxt/src/tx/tx_client.rs @@ -17,7 +17,7 @@ use crate::{ }; use codec::{Compact, Decode, Encode}; use derivative::Derivative; -use sp_core_hashing::blake2_256; +use sp_crypto_hashing::blake2_256; /// A client for working with transactions. #[derive(Derivative)] diff --git a/testing/no-std-tests/Cargo.lock b/testing/no-std-tests/Cargo.lock index c04633ecae..dc29c67571 100644 --- a/testing/no-std-tests/Cargo.lock +++ b/testing/no-std-tests/Cargo.lock @@ -496,7 +496,7 @@ dependencies = [ ] [[package]] -name = "sp-core-hashing" +name = "sp-crypto-hashing" version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e0f4990add7b2cefdeca883c0efa99bb4d912cb2196120e1500c0cc099553b0" @@ -540,7 +540,7 @@ dependencies = [ "hashbrown", "parity-scale-codec", "scale-info", - "sp-core-hashing", + "sp-crypto-hashing", ] [[package]] @@ -558,7 +558,7 @@ dependencies = [ "schnorrkel", "secrecy", "sha2", - "sp-core-hashing", + "sp-crypto-hashing", "zeroize", ] diff --git a/testing/wasm-lightclient-tests/Cargo.lock b/testing/wasm-lightclient-tests/Cargo.lock index 3009f03623..90a02bd3c2 100644 --- a/testing/wasm-lightclient-tests/Cargo.lock +++ b/testing/wasm-lightclient-tests/Cargo.lock @@ -2272,7 +2272,7 @@ dependencies = [ ] [[package]] -name = "sp-core-hashing" +name = "sp-crypto-hashing" version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e0f4990add7b2cefdeca883c0efa99bb4d912cb2196120e1500c0cc099553b0" @@ -2334,7 +2334,7 @@ dependencies = [ "scale-value", "serde", "serde_json", - "sp-core-hashing", + "sp-crypto-hashing", "subxt-lightclient", "subxt-macro", "subxt-metadata", @@ -2410,7 +2410,7 @@ dependencies = [ "hashbrown", "parity-scale-codec", "scale-info", - "sp-core-hashing", + "sp-crypto-hashing", ] [[package]] diff --git a/testing/wasm-rpc-tests/Cargo.lock b/testing/wasm-rpc-tests/Cargo.lock index 8df1704f97..e2d2a7225a 100644 --- a/testing/wasm-rpc-tests/Cargo.lock +++ b/testing/wasm-rpc-tests/Cargo.lock @@ -2294,7 +2294,7 @@ dependencies = [ ] [[package]] -name = "sp-core-hashing" +name = "sp-crypto-hashing" version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb8524f01591ee58b46cd83c9dbc0fcffd2fd730dabec4f59326cd58a00f17e2" @@ -2362,7 +2362,7 @@ dependencies = [ "scale-value", "serde", "serde_json", - "sp-core-hashing", + "sp-crypto-hashing", "subxt-lightclient", "subxt-macro", "subxt-metadata", @@ -2434,7 +2434,7 @@ dependencies = [ "frame-metadata 16.0.0", "parity-scale-codec", "scale-info", - "sp-core-hashing", + "sp-crypto-hashing", "thiserror", ] From 852dab672f56e326d846fb713fc051c2a7683301 Mon Sep 17 00:00:00 2001 From: Niklas Adolfsson Date: Thu, 21 Mar 2024 16:46:04 +0100 Subject: [PATCH 58/66] chore: bump sp-core, sp-runtime and sp-keyring (#1491) --- Cargo.lock | 573 ++++++++++++++++++-------------- Cargo.toml | 6 +- testing/no-std-tests/Cargo.lock | 8 +- 3 files changed, 332 insertions(+), 255 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d0e71df7bb..6939e4acdc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -43,7 +43,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" dependencies = [ "crypto-common", - "generic-array 0.14.7", + "generic-array", ] [[package]] @@ -319,12 +319,6 @@ dependencies = [ "nodrop", ] -[[package]] -name = "arrayvec" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" - [[package]] name = "arrayvec" version = "0.7.4" @@ -482,7 +476,7 @@ checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.53", ] [[package]] @@ -529,6 +523,12 @@ dependencies = [ "rustc-demangle", ] +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + [[package]] name = "base58" version = "0.2.0" @@ -577,19 +577,33 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93f2635620bf0b9d4576eb7bb9a38a55df78bd1205d26fa994b25911a69f212f" dependencies = [ - "bitcoin_hashes", - "rand", - "rand_core 0.6.4", + "bitcoin_hashes 0.11.0", "serde", "unicode-normalization", ] +[[package]] +name = "bitcoin-internals" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9425c3bf7089c983facbae04de54513cce73b41c7f9ff8c845b54e7bc64ebbfb" + [[package]] name = "bitcoin_hashes" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90064b8dee6815a6470d60bad07bbbaee885c0e12d04177138fa3291a01b7bc4" +[[package]] +name = "bitcoin_hashes" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1930a4dabfebb8d7d9992db18ebe3ae2876f0a305fab206fd168df931ede293b" +dependencies = [ + "bitcoin-internals", + "hex-conservative", +] + [[package]] name = "bitflags" version = "1.3.2" @@ -644,25 +658,13 @@ dependencies = [ "constant_time_eq 0.3.0", ] -[[package]] -name = "block-buffer" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" -dependencies = [ - "block-padding", - "byte-tools", - "byteorder", - "generic-array 0.12.4", -] - [[package]] name = "block-buffer" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" dependencies = [ - "generic-array 0.14.7", + "generic-array", ] [[package]] @@ -671,16 +673,7 @@ version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "generic-array 0.14.7", -] - -[[package]] -name = "block-padding" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" -dependencies = [ - "byte-tools", + "generic-array", ] [[package]] @@ -701,9 +694,9 @@ dependencies = [ [[package]] name = "bounded-collections" -version = "0.1.9" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca548b6163b872067dc5eb82fd130c56881435e30367d2073594a3d9744120dd" +checksum = "d32385ecb91a31bddaf908e8dcf4a15aef1bcd3913cc03ebfad02ff6d568abc1" dependencies = [ "log", "parity-scale-codec", @@ -732,12 +725,6 @@ version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" -[[package]] -name = "byte-tools" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" - [[package]] name = "byteorder" version = "1.5.0" @@ -874,7 +861,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.53", ] [[package]] @@ -1107,13 +1094,25 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + [[package]] name = "crypto-common" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "generic-array 0.14.7", + "generic-array", "rand_core 0.6.4", "typenum", ] @@ -1124,33 +1123,10 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" dependencies = [ - "generic-array 0.14.7", + "generic-array", "subtle", ] -[[package]] -name = "crypto-mac" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25fab6889090c8133f3deb8f73ba3c65a7f456f66436fc012a1b1e272b1e103e" -dependencies = [ - "generic-array 0.14.7", - "subtle", -] - -[[package]] -name = "curve25519-dalek" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9b85542f99a2dfa2a1b8e192662741c9859a846b296bef1c92ef9b58b5a216" -dependencies = [ - "byteorder", - "digest 0.8.1", - "rand_core 0.5.1", - "subtle", - "zeroize", -] - [[package]] name = "curve25519-dalek" version = "3.2.0" @@ -1189,7 +1165,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.53", ] [[package]] @@ -1237,7 +1213,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.10.0", - "syn 2.0.48", + "syn 2.0.53", ] [[package]] @@ -1259,7 +1235,7 @@ checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" dependencies = [ "darling_core 0.20.8", "quote", - "syn 2.0.48", + "syn 2.0.53", ] [[package]] @@ -1313,22 +1289,13 @@ version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" -[[package]] -name = "digest" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" -dependencies = [ - "generic-array 0.12.4", -] - [[package]] name = "digest" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "generic-array 0.14.7", + "generic-array", ] [[package]] @@ -1338,6 +1305,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", + "const-oid", "crypto-common", "subtle", ] @@ -1363,7 +1331,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.48", + "syn 2.0.53", "termcolor", "toml", "walkdir", @@ -1402,6 +1370,21 @@ version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d" +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "serdect", + "signature", + "spki", +] + [[package]] name = "ed25519" version = "2.2.3" @@ -1461,6 +1444,26 @@ version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "serdect", + "subtle", + "zeroize", +] + [[package]] name = "environmental" version = "1.1.4" @@ -1541,7 +1544,7 @@ dependencies = [ "fs-err", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.53", ] [[package]] @@ -1554,12 +1557,6 @@ dependencies = [ "once_cell", ] -[[package]] -name = "fake-simd" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" - [[package]] name = "fallible-iterator" version = "0.2.0" @@ -1572,6 +1569,16 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +[[package]] +name = "ff" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "fiat-crypto" version = "0.2.6" @@ -1713,7 +1720,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.53", ] [[package]] @@ -1765,15 +1772,6 @@ dependencies = [ "scale-info", ] -[[package]] -name = "generic-array" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" -dependencies = [ - "typenum", -] - [[package]] name = "generic-array" version = "0.14.7" @@ -1782,6 +1780,7 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", + "zeroize", ] [[package]] @@ -1882,6 +1881,17 @@ dependencies = [ "web-sys", ] +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "h2" version = "0.3.24" @@ -1982,23 +1992,19 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "hex-conservative" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30ed443af458ccb6d81c1e7e661545f94d3176752fb1df2f543b902a1e0f51e2" + [[package]] name = "hmac" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" dependencies = [ - "crypto-mac 0.8.0", - "digest 0.9.0", -] - -[[package]] -name = "hmac" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" -dependencies = [ - "crypto-mac 0.11.0", + "crypto-mac", "digest 0.9.0", ] @@ -2018,7 +2024,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" dependencies = [ "digest 0.9.0", - "generic-array 0.14.7", + "generic-array", "hmac 0.8.1", ] @@ -2218,7 +2224,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" dependencies = [ - "generic-array 0.14.7", + "generic-array", ] [[package]] @@ -2260,7 +2266,7 @@ dependencies = [ "subxt-codegen", "subxt-metadata", "subxt-signer", - "syn 2.0.48", + "syn 2.0.53", "test-runtime", "tokio", "tracing", @@ -2419,6 +2425,20 @@ dependencies = [ "url", ] +[[package]] +name = "k256" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "serdect", + "sha2 0.10.8", +] + [[package]] name = "keccak" version = "0.1.5" @@ -2582,18 +2602,6 @@ dependencies = [ "hash-db", ] -[[package]] -name = "merlin" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e261cf0f8b3c42ded9f7d2bb59dea03aa52bc8a1cbc7482f9fc3fd1229d3b42" -dependencies = [ - "byteorder", - "keccak", - "rand_core 0.5.1", - "zeroize", -] - [[package]] name = "merlin" version = "3.0.0" @@ -2764,12 +2772,6 @@ version = "11.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" -[[package]] -name = "opaque-debug" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" - [[package]] name = "opaque-debug" version = "0.3.0" @@ -2800,6 +2802,19 @@ version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" +[[package]] +name = "parity-bip39" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" +dependencies = [ + "bitcoin_hashes 0.13.0", + "rand", + "rand_core 0.6.4", + "serde", + "unicode-normalization", +] + [[package]] name = "parity-scale-codec" version = "3.6.9" @@ -2873,15 +2888,6 @@ version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" -[[package]] -name = "pbkdf2" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa" -dependencies = [ - "crypto-mac 0.11.0", -] - [[package]] name = "pbkdf2" version = "0.12.2" @@ -2921,7 +2927,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.53", ] [[package]] @@ -2991,6 +2997,80 @@ dependencies = [ "plotters-backend", ] +[[package]] +name = "polkavm-common" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92c99f7eee94e7be43ba37eef65ad0ee8cbaf89b7c00001c3f6d2be985cb1817" + +[[package]] +name = "polkavm-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d9428a5cfcc85c5d7b9fc4b6a18c4b802d0173d768182a51cc7751640f08b92" + +[[package]] +name = "polkavm-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79fa916f7962348bd1bb1a65a83401675e6fc86c51a0fdbcf92a3108e58e6125" +dependencies = [ + "polkavm-derive-impl-macro 0.8.0", +] + +[[package]] +name = "polkavm-derive" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8c4bea6f3e11cd89bb18bcdddac10bd9a24015399bd1c485ad68a985a19606" +dependencies = [ + "polkavm-derive-impl-macro 0.9.0", +] + +[[package]] +name = "polkavm-derive-impl" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c10b2654a8a10a83c260bfb93e97b262cf0017494ab94a65d389e0eda6de6c9c" +dependencies = [ + "polkavm-common 0.8.0", + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "polkavm-derive-impl" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c4fdfc49717fb9a196e74a5d28e0bc764eb394a2c803eb11133a31ac996c60c" +dependencies = [ + "polkavm-common 0.9.0", + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "polkavm-derive-impl-macro" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15e85319a0d5129dc9f021c62607e0804f5fb777a05cdda44d750ac0732def66" +dependencies = [ + "polkavm-derive-impl 0.8.0", + "syn 2.0.53", +] + +[[package]] +name = "polkavm-derive-impl-macro" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ba81f7b5faac81e528eb6158a6f3c9e0bb1008e0ffa19653bc8dea925ecb429" +dependencies = [ + "polkavm-derive-impl 0.9.0", + "syn 2.0.53", +] + [[package]] name = "polling" version = "3.4.0" @@ -3012,7 +3092,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" dependencies = [ "cpufeatures", - "opaque-debug 0.3.0", + "opaque-debug", "universal-hash", ] @@ -3228,7 +3308,7 @@ checksum = "5fddb4f8d99b0a2ebafc65a87a69a7b9875e4b1ae1f00db265d300ef7f28bccc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.53", ] [[package]] @@ -3275,6 +3355,16 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac 0.12.1", + "subtle", +] + [[package]] name = "ring" version = "0.17.7" @@ -3584,7 +3674,7 @@ dependencies = [ "proc-macro2", "quote", "scale-info", - "syn 2.0.48", + "syn 2.0.53", "thiserror", ] @@ -3647,22 +3737,6 @@ dependencies = [ "hashbrown 0.13.2", ] -[[package]] -name = "schnorrkel" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "021b403afe70d81eea68f6ea12f6b3c9588e5d536a94c3bf80f15e7faa267862" -dependencies = [ - "arrayref", - "arrayvec 0.5.2", - "curve25519-dalek 2.1.3", - "merlin 2.0.1", - "rand_core 0.5.1", - "sha2 0.8.2", - "subtle", - "zeroize", -] - [[package]] name = "schnorrkel" version = "0.11.4" @@ -3674,7 +3748,7 @@ dependencies = [ "arrayvec 0.7.4", "curve25519-dalek 4.1.2", "getrandom_or_panic", - "merlin 3.0.0", + "merlin", "rand_core 0.6.4", "serde_bytes", "sha2 0.10.8", @@ -3698,6 +3772,21 @@ dependencies = [ "untrusted", ] +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "serdect", + "subtle", + "zeroize", +] + [[package]] name = "secp256k1" version = "0.28.2" @@ -3792,7 +3881,7 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.53", ] [[package]] @@ -3815,6 +3904,16 @@ dependencies = [ "serde", ] +[[package]] +name = "serdect" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "sha-1" version = "0.9.8" @@ -3825,19 +3924,7 @@ dependencies = [ "cfg-if", "cpufeatures", "digest 0.9.0", - "opaque-debug 0.3.0", -] - -[[package]] -name = "sha2" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" -dependencies = [ - "block-buffer 0.7.3", - "digest 0.8.1", - "fake-simd", - "opaque-debug 0.2.3", + "opaque-debug", ] [[package]] @@ -3850,7 +3937,7 @@ dependencies = [ "cfg-if", "cpufeatures", "digest 0.9.0", - "opaque-debug 0.3.0", + "opaque-debug", ] [[package]] @@ -3898,6 +3985,7 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ + "digest 0.10.7", "rand_core 0.6.4", ] @@ -3973,19 +4061,19 @@ dependencies = [ "itertools 0.12.1", "libm", "libsecp256k1", - "merlin 3.0.0", + "merlin", "no-std-net", "nom", "num-bigint", "num-rational", "num-traits", - "pbkdf2 0.12.2", + "pbkdf2", "pin-project", "poly1305", "rand", "rand_chacha", "ruzstd", - "schnorrkel 0.11.4", + "schnorrkel", "serde", "serde_json", "sha2 0.10.8", @@ -4063,9 +4151,9 @@ dependencies = [ [[package]] name = "sp-application-crypto" -version = "30.0.0" +version = "33.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e4fe7a9b7fa9da76272b201e2fb3c7900d97d32a46b66af9a04dad457f73c71" +checksum = "13ca6121c22c8bd3d1dce1f05c479101fd0d7b159bef2a3e8c834138d839c75c" dependencies = [ "parity-scale-codec", "scale-info", @@ -4077,9 +4165,9 @@ dependencies = [ [[package]] name = "sp-arithmetic" -version = "23.0.0" +version = "25.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f42721f072b421f292a072e8f52a3b3c0fbc27428f0c9fe24067bc47046bad63" +checksum = "910c07fa263b20bf7271fdd4adcb5d3217dfdac14270592e0780223542e7e114" dependencies = [ "integer-sqrt", "num-traits", @@ -4092,12 +4180,11 @@ dependencies = [ [[package]] name = "sp-core" -version = "28.0.0" +version = "31.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f230cb12575455070da0fc174815958423a0b9a641d5e304a9457113c7cb4007" +checksum = "26d7a0fd8f16dcc3761198fc83be12872f823b37b749bc72a3a6a1f702509366" dependencies = [ "array-bytes", - "bip39", "bitflags 1.3.2", "blake2", "bounded-collections", @@ -4109,20 +4196,22 @@ dependencies = [ "hash256-std-hasher", "impl-serde", "itertools 0.10.5", + "k256", "libsecp256k1", "log", - "merlin 3.0.0", + "merlin", + "parity-bip39", "parity-scale-codec", "parking_lot", "paste", "primitive-types", "rand", "scale-info", - "schnorrkel 0.11.4", + "schnorrkel", "secp256k1", "secrecy", "serde", - "sp-core-hashing", + "sp-crypto-hashing", "sp-debug-derive", "sp-externalities", "sp-runtime-interface", @@ -4136,20 +4225,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "sp-core-hashing" -version = "15.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0f4990add7b2cefdeca883c0efa99bb4d912cb2196120e1500c0cc099553b0" -dependencies = [ - "blake2b_simd", - "byteorder", - "digest 0.10.7", - "sha2 0.10.8", - "sha3", - "twox-hash", -] - [[package]] name = "sp-crypto-hashing" version = "0.1.0" @@ -4172,14 +4247,14 @@ checksum = "48d09fa0a5f7299fb81ee25ae3853d26200f7a348148aed6de76be905c007dbe" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.53", ] [[package]] name = "sp-externalities" -version = "0.25.0" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63867ec85950ced90d4ab1bba902a47db1b1efdf2829f653945669b2bb470a9c" +checksum = "a1d6a4572eadd4a63cff92509a210bf425501a0c5e76574b30a366ac77653787" dependencies = [ "environmental", "parity-scale-codec", @@ -4189,18 +4264,20 @@ dependencies = [ [[package]] name = "sp-io" -version = "30.0.0" +version = "33.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c55f26d89feedaf0faf81688b6e1e1e81329cd8b4c6a4fd6c5b97ed9dd068b8a" +checksum = "3e09bba780b55bd9e67979cd8f654a31e4a6cf45426ff371394a65953d2177f2" dependencies = [ "bytes", "ed25519-dalek", "libsecp256k1", "log", "parity-scale-codec", + "polkavm-derive 0.9.1", "rustversion", "secp256k1", "sp-core", + "sp-crypto-hashing", "sp-externalities", "sp-keystore", "sp-runtime-interface", @@ -4214,9 +4291,9 @@ dependencies = [ [[package]] name = "sp-keyring" -version = "31.0.0" +version = "34.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98165ce7c625a8cdb88d39c6bbd56fe8b32ada64ed0894032beba99795f557da" +checksum = "a07a31da596d705b3a3458d784a897af7fd2f8090de436dc386a112e8ea7f34f" dependencies = [ "sp-core", "sp-runtime", @@ -4225,15 +4302,14 @@ dependencies = [ [[package]] name = "sp-keystore" -version = "0.34.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96806a28a62ed9ddecd0b28857b1344d029390f7c5c42a2ff9199cbf5638635c" +checksum = "bdbab8b61bd61d5f8625a0c75753b5d5a23be55d3445419acd42caf59cf6236b" dependencies = [ "parity-scale-codec", "parking_lot", "sp-core", "sp-externalities", - "thiserror", ] [[package]] @@ -4249,9 +4325,9 @@ dependencies = [ [[package]] name = "sp-runtime" -version = "31.0.1" +version = "34.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3bb49a4475d390198dfd3d41bef4564ab569fbaf1b5e38ae69b35fc01199d91" +checksum = "ec3cb126971e7db2f0fcf8053dce740684c438c7180cfca1959598230f342c58" dependencies = [ "docify", "either", @@ -4274,13 +4350,14 @@ dependencies = [ [[package]] name = "sp-runtime-interface" -version = "24.0.0" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f66b66d8cec3d785fa6289336c1d9cbd4305d5d84f7134378c4d79ed7983e6fb" +checksum = "e48a675ea4858333d4d755899ed5ed780174aa34fec15953428d516af5452295" dependencies = [ "bytes", "impl-trait-for-tuples", "parity-scale-codec", + "polkavm-derive 0.8.0", "primitive-types", "sp-externalities", "sp-runtime-interface-proc-macro", @@ -4293,23 +4370,23 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" -version = "17.0.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfaf6e85b2ec12a4b99cd6d8d57d083e30c94b7f1b0d8f93547121495aae6f0c" +checksum = "0195f32c628fee3ce1dfbbf2e7e52a30ea85f3589da9fe62a8b816d70fc06294" dependencies = [ "Inflector", "expander", "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.53", ] [[package]] name = "sp-state-machine" -version = "0.35.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "718c779ad1d6fcc0be64c7ce030b33fa44b5c8914b3a1319ef63bb5f27fb98df" +checksum = "1eae0eac8034ba14437e772366336f579398a46d101de13dbb781ab1e35e67c5" dependencies = [ "hash-db", "log", @@ -4335,9 +4412,9 @@ checksum = "12f8ee986414b0a9ad741776762f4083cd3a5128449b982a3919c4df36874834" [[package]] name = "sp-storage" -version = "19.0.0" +version = "20.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fb92d7b24033a8a856d6e20dd980b653cbd7af7ec471cc988b1b7c1d2e3a32b" +checksum = "8dba5791cb3978e95daf99dad919ecb3ec35565604e88cd38d805d9d4981e8bd" dependencies = [ "impl-serde", "parity-scale-codec", @@ -4362,9 +4439,9 @@ dependencies = [ [[package]] name = "sp-trie" -version = "29.0.0" +version = "32.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e4d24d84a0beb44a71dcac1b41980e1edf7fb722c7f3046710136a283cd479b" +checksum = "f1aa91ad26c62b93d73e65f9ce7ebd04459c4bad086599348846a81988d6faa4" dependencies = [ "ahash 0.8.8", "hash-db", @@ -4401,9 +4478,9 @@ dependencies = [ [[package]] name = "sp-weights" -version = "27.0.0" +version = "30.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e874bdf9dd3fd3242f5b7867a4eaedd545b02f29041a46d222a9d9d5caaaa5c" +checksum = "9af6c661fe3066b29f9e1d258000f402ff5cc2529a9191972d214e5871d0ba87" dependencies = [ "bounded-collections", "parity-scale-codec", @@ -4503,14 +4580,14 @@ dependencies = [ [[package]] name = "substrate-bip39" -version = "0.4.5" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e620c7098893ba667438b47169c00aacdd9e7c10e042250ce2b60b087ec97328" +checksum = "a2b564c293e6194e8b222e52436bcb99f60de72043c7f845cf6c4406db4df121" dependencies = [ - "hmac 0.11.0", - "pbkdf2 0.8.0", - "schnorrkel 0.9.1", - "sha2 0.9.9", + "hmac 0.12.1", + "pbkdf2", + "schnorrkel", + "sha2 0.10.8", "zeroize", ] @@ -4592,7 +4669,7 @@ dependencies = [ "subxt", "subxt-codegen", "subxt-metadata", - "syn 2.0.48", + "syn 2.0.53", "thiserror", "tokio", ] @@ -4612,7 +4689,7 @@ dependencies = [ "scale-info", "scale-typegen", "subxt-metadata", - "syn 2.0.48", + "syn 2.0.53", "thiserror", "tokio", ] @@ -4652,7 +4729,7 @@ dependencies = [ "quote", "scale-typegen", "subxt-codegen", - "syn 2.0.48", + "syn 2.0.53", ] [[package]] @@ -4681,9 +4758,9 @@ dependencies = [ "hex", "hmac 0.12.1", "parity-scale-codec", - "pbkdf2 0.12.2", + "pbkdf2", "regex", - "schnorrkel 0.11.4", + "schnorrkel", "secp256k1", "secrecy", "sha2 0.10.8", @@ -4707,9 +4784,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.48" +version = "2.0.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032" dependencies = [ "proc-macro2", "quote", @@ -4776,7 +4853,7 @@ checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.53", ] [[package]] @@ -4839,7 +4916,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.53", ] [[package]] @@ -5014,7 +5091,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.53", ] [[package]] @@ -5377,7 +5454,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.53", "wasm-bindgen-shared", ] @@ -5411,7 +5488,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.53", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5933,7 +6010,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.53", ] [[package]] @@ -5953,5 +6030,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.53", ] diff --git a/Cargo.toml b/Cargo.toml index 005bf9c811..3481961709 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -129,10 +129,10 @@ instant = { version = "0.1.12", default-features = false } tokio-util = "0.7.10" # Substrate crates: -sp-core = { version = "28.0.0", default-features = false } +sp-core = { version = "31.0.0", default-features = false } sp-crypto-hashing = { version = "0.1.0", default-features = false } -sp-runtime = "31.0.0" -sp-keyring = "31.0.0" +sp-runtime = "34.0.0" +sp-keyring = "34.0.0" # Subxt workspace crates: subxt = { version = "0.34.0", path = "subxt", default-features = false } diff --git a/testing/no-std-tests/Cargo.lock b/testing/no-std-tests/Cargo.lock index dc29c67571..e69ddab2b3 100644 --- a/testing/no-std-tests/Cargo.lock +++ b/testing/no-std-tests/Cargo.lock @@ -420,9 +420,9 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7d66a1128282b7ef025a8ead62a4a9fcf017382ec53b8ffbf4d7bf77bd3c60" +checksum = "2ef2175c2907e7c8bc0a9c3f86aeb5ec1f3b275300ad58a44d0c3ae379a5e52e" dependencies = [ "cfg-if", "derive_more", @@ -497,9 +497,9 @@ dependencies = [ [[package]] name = "sp-crypto-hashing" -version = "15.0.0" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0f4990add7b2cefdeca883c0efa99bb4d912cb2196120e1500c0cc099553b0" +checksum = "bc9927a7f81334ed5b8a98a4a978c81324d12bd9713ec76b5c68fd410174c5eb" dependencies = [ "blake2b_simd", "byteorder", From 9810406db22c065ad446a3134e3179ffdbe6f125 Mon Sep 17 00:00:00 2001 From: James Wilson Date: Thu, 21 Mar 2024 16:37:12 +0000 Subject: [PATCH 59/66] Prep to release 0.35 (#1489) * Prep to release 0.35 * Remove newline Co-authored-by: Niklas Adolfsson * Fix a couple of small nits --------- Co-authored-by: Niklas Adolfsson --- CHANGELOG.md | 115 +++++++++++++++++++++- Cargo.lock | 26 ++--- Cargo.toml | 14 +-- examples/parachain-example/Cargo.lock | 12 +-- examples/wasm-example/Cargo.lock | 10 +- signer/src/crypto/mod.rs | 5 + testing/integration-tests/Cargo.toml | 2 +- testing/no-std-tests/Cargo.lock | 4 +- testing/wasm-lightclient-tests/Cargo.lock | 10 +- 9 files changed, 155 insertions(+), 43 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 448ee6af7d..7ece38f02b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,8 +4,115 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.35.0] - 2024-03-21 + +This release contains several fixes, adds `no_std` support to a couple of crates (`subxt-signer` and `subxt-metadata`) and introduces a few quality of life improvements, which I'll quickly cover: + +### Reworked light client ([#1475](https://github.com/paritytech/subxt/pull/1475)) + +This PR reworks the light client interface. The "basic" usage of connecting to a parachain now looks like this: + +```rust +#[subxt::subxt(runtime_metadata_path = "../artifacts/polkadot_metadata_small.scale")] +pub mod polkadot {} + +use subxt::lightclient::LightClient; + +// Instantiate a light client with the Polkadot relay chain given its chain spec. +let (lightclient, polkadot_rpc) = LightClient::relay_chain(POLKADOT_SPEC)?; +// Connect the light client to some parachain by giving a chain spec for it. +let asset_hub_rpc = lightclient.parachain(ASSET_HUB_SPEC)?; + +// Now, we can create Subxt clients from these Smoldot backed RPC clients: +let polkadot_api = OnlineClient::::from_rpc_client(polkadot_rpc).await?; +let asset_hub_api = OnlineClient::::from_rpc_client(asset_hub_rpc).await?; +``` + +This interface mirrors the requirement that we must connect to a relay chain before we can connect to a parachain. It also moves the light client specific logic into an `RpcClientT` implementation, rather than exposing it as a `subxt::client::LightClient`. + +### Typed Storage Keys ([#1419](https://github.com/paritytech/subxt/pull/1419)) + +This PR changes the storage interface so that, where possible, we now also decode the storage keys as well as the values when iterating over storage entries: + +```rust +#[subxt::subxt(runtime_metadata_path = "../artifacts/polkadot_metadata_small.scale")] +pub mod polkadot {} + +// Create a new API client, configured to talk to Polkadot nodes. +let api = OnlineClient::::new().await?; + +// Build a storage query to iterate over account information. +let storage_query = polkadot::storage().system().account_iter(); + +// Get back an iterator of results (here, we are fetching 10 items at +// a time from the node, but we always iterate over one at a time). +let mut results = api.storage().at_latest().await?.iter(storage_query).await?; + +while let Some(Ok(kv)) = results.next().await { + // We used to get a tuple of key bytes + value. Now we get back a + // `kv` struct containing the bytes and value as well as the actual + // decoded keys: + println!("Decoded key(s): {:?}", kv.keys); + println!("Key bytes: 0x{}", hex::encode(&kv.key_bytes)); + println!("Value: {:?}", kv.value); +} +``` + +When using the static interface, keys come back as a tuple of values corresponding to the different hashers used in constructing the key. When using a dynamic interface, keys will be encoded/decoded from the type given so long as it implements `subxt::storage::StorageKey`, eg `Vec`. + +### Extrinsic Params Refinement ([#1439](https://github.com/paritytech/subxt/pull/1439)) + +Prior to this PR, one could configure extrinsic signed extensions by providing some params like so: + +```rust +// Configure the transaction parameters; we give a small tip and set the +// transaction to live for 32 blocks from the `latest_block` above: +let tx_params = Params::new() + .tip(1_000) + .mortal(latest_block.header(), 32) + .build(); + +let hash = api.tx().sign_and_submit(&tx, &from, tx_params).await?; +``` + +If you want to customize the account nonce, you'd use a different call like `create_signed_with_nonce` instead. + +One of the downsides of the above approach is that, if you don't provide any explicit params, transactions will be immortal by default (because the signed extensions didn't have the information to do any better). + +Now, with the help of a `RefineParams` trait, transactions will default to being mortal and living for 32 blocks unless an explicit mortality is provided as above. + +One notable change is that the offline-only `create_signed_with_nonce` and `create_partial_signed_with_nonce` functions have lost the `_with_nonce` suffix. Since we can't discover nonce/mortality settings offline, you should now provide `Params` and set an explicit nonce (and mortality, if you like) when using these calls, otherwise the nonce will be set to 0 and the mortality to `Immortal`. + +For a full list of changes, please see the following: + +### Added + +- Reworked light client ([#1475](https://github.com/paritytech/subxt/pull/1475)) +- `no_std` compatibility for `subxt-signer` ([#1477](https://github.com/paritytech/subxt/pull/1477)) +- Typed Storage Keys ([#1419](https://github.com/paritytech/subxt/pull/1419)) +- Extrinsic Params Refinement ([#1439](https://github.com/paritytech/subxt/pull/1439)) +- Make storage_page_size for the LegacyBackend configurable ([#1458](https://github.com/paritytech/subxt/pull/1458)) +- `no_std` compatibility for `subxt-metadata` ([#1401](https://github.com/paritytech/subxt/pull/1401)) +- Experimental `reconnecting-rpc-client` ([#1396](https://github.com/paritytech/subxt/pull/1396)) + +### Changed + +- `scale-type-resolver` integration ([#1460](https://github.com/paritytech/subxt/pull/1460)) +- subxt: Derive `std::cmp` traits for subxt payloads and addresses ([#1429](https://github.com/paritytech/subxt/pull/1429)) +- CLI: Return error on wrongly specified type paths ([#1397](https://github.com/paritytech/subxt/pull/1397)) +- rpc v2: chainhead support multiple finalized block hashes in `FollowEvent::Initialized` ([#1476](https://github.com/paritytech/subxt/pull/1476)) +- rpc v2: rename transaction to transactionWatch ([#1399](https://github.com/paritytech/subxt/pull/1399)) + +### Fixed + +- Avoid a panic in case we try decoding naff bytes ([#1444](https://github.com/paritytech/subxt/pull/1444)) +- Fix error mapping to wrong transaction status ([#1445](https://github.com/paritytech/subxt/pull/1445)) +- Update DispatchError to match latest in polkadot-sdk ([#1442](https://github.com/paritytech/subxt/pull/1442)) +- Handle errors when fetching storage keys from Unstablebackend ([#1440](https://github.com/paritytech/subxt/pull/1440)) +- Swap type aliases around to be semantically correct ([#1441](https://github.com/paritytech/subxt/pull/1441)) + ## [0.34.0] - 2024-01-23 - + This release introduces a bunch of features that make subxt easier to use. Let's look at a few of them. ### Codegen - Integrating [`scale-typegen`](https://github.com/paritytech/scale-typegen) and adding type aliases ([#1249](https://github.com/paritytech/subxt/pull/1249)) @@ -23,7 +130,7 @@ If you provide an invalid type path, the macro will tell you so. It also suggest ```rust #[subxt::subxt( - runtime_metadata_path = "metadata.scale", + runtime_metadata_path = "metadata.scale", derive_for_type(path = "Junctions", derive = "Clone") )] pub mod polkadot {} @@ -34,7 +141,7 @@ This gives you a compile-time error like this: ```md Type `Junctions` does not exist at path `Junctions` -A type with the same name is present at: +A type with the same name is present at: xcm::v3::junctions::Junctions xcm::v2::multilocation::Junctions ``` @@ -78,7 +185,7 @@ Our CLI tool now allows you to explore runtime APIs and events ([#1290](https:// # Show details about a runtime API call: subxt explore --url wss://westend-rpc.polkadot.io api StakingAPI nominations_quota # Execute a runtime API call from the CLI: -subxt explore --url wss://westend-rpc.polkadot.io api core version -e +subxt explore --url wss://westend-rpc.polkadot.io api core version -e # Discover what events a pallet can emit: subxt explore --url wss://westend-rpc.polkadot.io pallet Balances events ``` diff --git a/Cargo.lock b/Cargo.lock index 6939e4acdc..27beed5c03 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -327,7 +327,7 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "artifacts" -version = "0.34.0" +version = "0.35.0" dependencies = [ "substrate-runner", ] @@ -1765,7 +1765,7 @@ dependencies = [ [[package]] name = "generate-custom-metadata" -version = "0.34.0" +version = "0.35.0" dependencies = [ "frame-metadata 16.0.0", "parity-scale-codec", @@ -2250,7 +2250,7 @@ dependencies = [ [[package]] name = "integration-tests" -version = "0.34.0" +version = "0.35.0" dependencies = [ "assert_matches", "frame-metadata 16.0.0", @@ -4593,7 +4593,7 @@ dependencies = [ [[package]] name = "substrate-runner" -version = "0.34.0" +version = "0.35.0" [[package]] name = "subtle" @@ -4603,7 +4603,7 @@ checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "subxt" -version = "0.34.0" +version = "0.35.0" dependencies = [ "assert_matches", "async-trait", @@ -4647,7 +4647,7 @@ dependencies = [ [[package]] name = "subxt-cli" -version = "0.34.0" +version = "0.35.0" dependencies = [ "clap 4.5.2", "color-eyre", @@ -4676,7 +4676,7 @@ dependencies = [ [[package]] name = "subxt-codegen" -version = "0.34.0" +version = "0.35.0" dependencies = [ "frame-metadata 16.0.0", "getrandom", @@ -4696,7 +4696,7 @@ dependencies = [ [[package]] name = "subxt-lightclient" -version = "0.34.0" +version = "0.35.0" dependencies = [ "futures", "futures-timer", @@ -4721,7 +4721,7 @@ dependencies = [ [[package]] name = "subxt-macro" -version = "0.34.0" +version = "0.35.0" dependencies = [ "darling 0.20.8", "parity-scale-codec", @@ -4734,7 +4734,7 @@ dependencies = [ [[package]] name = "subxt-metadata" -version = "0.34.0" +version = "0.35.0" dependencies = [ "assert_matches", "bitvec", @@ -4749,7 +4749,7 @@ dependencies = [ [[package]] name = "subxt-signer" -version = "0.34.0" +version = "0.35.0" dependencies = [ "bip39", "cfg-if", @@ -4816,7 +4816,7 @@ dependencies = [ [[package]] name = "test-runtime" -version = "0.34.0" +version = "0.35.0" dependencies = [ "hex", "impl-serde", @@ -5245,7 +5245,7 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ui-tests" -version = "0.34.0" +version = "0.35.0" dependencies = [ "frame-metadata 16.0.0", "generate-custom-metadata", diff --git a/Cargo.toml b/Cargo.toml index 3481961709..1f2c3591ad 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,7 +31,7 @@ resolver = "2" [workspace.package] authors = ["Parity Technologies "] edition = "2021" -version = "0.34.0" +version = "0.35.0" rust-version = "1.74.0" license = "Apache-2.0 OR GPL-3.0" repository = "https://github.com/paritytech/subxt" @@ -135,12 +135,12 @@ sp-runtime = "34.0.0" sp-keyring = "34.0.0" # Subxt workspace crates: -subxt = { version = "0.34.0", path = "subxt", default-features = false } -subxt-macro = { version = "0.34.0", path = "macro" } -subxt-metadata = { version = "0.34.0", path = "metadata", default-features = false } -subxt-codegen = { version = "0.34.0", path = "codegen" } -subxt-signer = { version = "0.34.0", path = "signer", default-features = false } -subxt-lightclient = { version = "0.34.0", path = "lightclient", default-features = false } +subxt = { version = "0.35.0", path = "subxt", default-features = false } +subxt-macro = { version = "0.35.0", path = "macro" } +subxt-metadata = { version = "0.35.0", path = "metadata", default-features = false } +subxt-codegen = { version = "0.35.0", path = "codegen" } +subxt-signer = { version = "0.35.0", path = "signer", default-features = false } +subxt-lightclient = { version = "0.35.0", path = "lightclient", default-features = false } test-runtime = { path = "testing/test-runtime" } substrate-runner = { path = "testing/substrate-runner" } diff --git a/examples/parachain-example/Cargo.lock b/examples/parachain-example/Cargo.lock index 2c523c588f..2739c41f4a 100644 --- a/examples/parachain-example/Cargo.lock +++ b/examples/parachain-example/Cargo.lock @@ -2551,7 +2551,7 @@ checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "subxt" -version = "0.34.0" +version = "0.35.0" dependencies = [ "async-trait", "base58", @@ -2585,7 +2585,7 @@ dependencies = [ [[package]] name = "subxt-codegen" -version = "0.34.0" +version = "0.35.0" dependencies = [ "frame-metadata 16.0.0", "heck", @@ -2604,7 +2604,7 @@ dependencies = [ [[package]] name = "subxt-lightclient" -version = "0.34.0" +version = "0.35.0" dependencies = [ "futures", "futures-util", @@ -2619,7 +2619,7 @@ dependencies = [ [[package]] name = "subxt-macro" -version = "0.34.0" +version = "0.35.0" dependencies = [ "darling 0.20.3", "parity-scale-codec", @@ -2632,7 +2632,7 @@ dependencies = [ [[package]] name = "subxt-metadata" -version = "0.34.0" +version = "0.35.0" dependencies = [ "frame-metadata 16.0.0", "parity-scale-codec", @@ -2643,7 +2643,7 @@ dependencies = [ [[package]] name = "subxt-signer" -version = "0.34.0" +version = "0.35.0" dependencies = [ "bip39", "hex", diff --git a/examples/wasm-example/Cargo.lock b/examples/wasm-example/Cargo.lock index c80bf6d404..87abb8f1d3 100644 --- a/examples/wasm-example/Cargo.lock +++ b/examples/wasm-example/Cargo.lock @@ -2499,7 +2499,7 @@ checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "subxt" -version = "0.34.0" +version = "0.35.0" dependencies = [ "async-trait", "base58", @@ -2533,7 +2533,7 @@ dependencies = [ [[package]] name = "subxt-codegen" -version = "0.34.0" +version = "0.35.0" dependencies = [ "frame-metadata 16.0.0", "getrandom", @@ -2553,7 +2553,7 @@ dependencies = [ [[package]] name = "subxt-lightclient" -version = "0.34.0" +version = "0.35.0" dependencies = [ "futures", "futures-timer", @@ -2578,7 +2578,7 @@ dependencies = [ [[package]] name = "subxt-macro" -version = "0.34.0" +version = "0.35.0" dependencies = [ "darling", "parity-scale-codec", @@ -2591,7 +2591,7 @@ dependencies = [ [[package]] name = "subxt-metadata" -version = "0.34.0" +version = "0.35.0" dependencies = [ "derive_more", "frame-metadata 16.0.0", diff --git a/signer/src/crypto/mod.rs b/signer/src/crypto/mod.rs index c47dfe08a6..5ccdb3df79 100644 --- a/signer/src/crypto/mod.rs +++ b/signer/src/crypto/mod.rs @@ -6,8 +6,13 @@ mod derive_junction; mod secret_uri; + +// No need for the cfg other than to avoid an unused_imports lint warning. +#[cfg(any(feature = "sr25519", feature = "ecdsa"))] mod seed_from_entropy; pub use derive_junction::DeriveJunction; pub use secret_uri::{SecretUri, SecretUriError, DEV_PHRASE}; + +#[cfg(any(feature = "sr25519", feature = "ecdsa"))] pub use seed_from_entropy::seed_from_entropy; diff --git a/testing/integration-tests/Cargo.toml b/testing/integration-tests/Cargo.toml index 27a2c83d9f..122af6a2d3 100644 --- a/testing/integration-tests/Cargo.toml +++ b/testing/integration-tests/Cargo.toml @@ -34,7 +34,7 @@ scale-info = { workspace = true, features = ["bit-vec"] } sp-core = { workspace = true } syn = { workspace = true } subxt = { workspace = true, features = ["unstable-metadata", "native", "jsonrpsee", "substrate-compat"] } -subxt-signer = { workspace = true } +subxt-signer = { workspace = true, features = ["default"] } subxt-codegen = { workspace = true } subxt-metadata = { workspace = true } test-runtime = { workspace = true } diff --git a/testing/no-std-tests/Cargo.lock b/testing/no-std-tests/Cargo.lock index e69ddab2b3..5414290a17 100644 --- a/testing/no-std-tests/Cargo.lock +++ b/testing/no-std-tests/Cargo.lock @@ -533,7 +533,7 @@ dependencies = [ [[package]] name = "subxt-metadata" -version = "0.34.0" +version = "0.35.0" dependencies = [ "derive_more", "frame-metadata", @@ -545,7 +545,7 @@ dependencies = [ [[package]] name = "subxt-signer" -version = "0.34.0" +version = "0.35.0" dependencies = [ "bip39", "cfg-if", diff --git a/testing/wasm-lightclient-tests/Cargo.lock b/testing/wasm-lightclient-tests/Cargo.lock index 90a02bd3c2..58b700e67e 100644 --- a/testing/wasm-lightclient-tests/Cargo.lock +++ b/testing/wasm-lightclient-tests/Cargo.lock @@ -2311,7 +2311,7 @@ checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "subxt" -version = "0.34.0" +version = "0.35.0" dependencies = [ "async-trait", "base58", @@ -2345,7 +2345,7 @@ dependencies = [ [[package]] name = "subxt-codegen" -version = "0.34.0" +version = "0.35.0" dependencies = [ "frame-metadata 16.0.0", "getrandom", @@ -2365,7 +2365,7 @@ dependencies = [ [[package]] name = "subxt-lightclient" -version = "0.34.0" +version = "0.35.0" dependencies = [ "futures", "futures-timer", @@ -2390,7 +2390,7 @@ dependencies = [ [[package]] name = "subxt-macro" -version = "0.34.0" +version = "0.35.0" dependencies = [ "darling 0.20.8", "parity-scale-codec", @@ -2403,7 +2403,7 @@ dependencies = [ [[package]] name = "subxt-metadata" -version = "0.34.0" +version = "0.35.0" dependencies = [ "derive_more", "frame-metadata 16.0.0", From 121323bb7eb736904f90b0aabb8c3fb5433f727f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Mar 2024 10:03:00 +0100 Subject: [PATCH 60/66] build(deps): bump web-sys from 0.3.68 to 0.3.69 (#1492) Bumps [web-sys](https://github.com/rustwasm/wasm-bindgen) from 0.3.68 to 0.3.69. - [Release notes](https://github.com/rustwasm/wasm-bindgen/releases) - [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/rustwasm/wasm-bindgen/commits) --- updated-dependencies: - dependency-name: web-sys dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 27beed5c03..1b9e36571c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5683,9 +5683,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", diff --git a/Cargo.toml b/Cargo.toml index 1f2c3591ad..22324d86d1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -119,7 +119,7 @@ rand = "0.8.5" pin-project = "1.1.5" # Light client wasm: -web-sys = { version = "0.3.67", features = ["BinaryType", "CloseEvent", "MessageEvent", "WebSocket"] } +web-sys = { version = "0.3.69", features = ["BinaryType", "CloseEvent", "MessageEvent", "WebSocket"] } wasm-bindgen = "0.2.92" send_wrapper = "0.6.0" js-sys = "0.3.69" From 0d82fc27447cb80587b3e45e930b229c23815d74 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Mar 2024 10:03:27 +0100 Subject: [PATCH 61/66] build(deps): bump thiserror from 1.0.57 to 1.0.58 (#1493) Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.57 to 1.0.58. - [Release notes](https://github.com/dtolnay/thiserror/releases) - [Commits](https://github.com/dtolnay/thiserror/compare/1.0.57...1.0.58) --- updated-dependencies: - dependency-name: thiserror dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1b9e36571c..1d06b33991 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4838,18 +4838,18 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.57" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" +checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.57" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" +checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 22324d86d1..6bbe235382 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -96,7 +96,7 @@ scale-encode = { version = "0.6.0", default-features = false } serde = { version = "1.0.197", default-features = false, features = ["derive"] } serde_json = { version = "1.0.114", default-features = false } syn = { version = "2.0.15", features = ["full", "extra-traits"] } -thiserror = "1.0.57" +thiserror = "1.0.58" tokio = { version = "1.36", default-features = false } tracing = { version = "0.1.40", default-features = false } tracing-wasm = "0.2.1" From 72d9359c18285b36ccebccda873ba7377c4db9b6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Mar 2024 10:04:03 +0100 Subject: [PATCH 62/66] build(deps): bump clap from 4.5.2 to 4.5.3 (#1495) Bumps [clap](https://github.com/clap-rs/clap) from 4.5.2 to 4.5.3. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/v4.5.2...v4.5.3) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 24 +++++++++++++++--------- Cargo.toml | 2 +- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1d06b33991..cb6368421a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -832,9 +832,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.2" +version = "4.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b230ab84b0ffdf890d5a10abdbc8b83ae1c4918275daea1ab8801f71536b2651" +checksum = "949626d00e063efc93b6dca932419ceb5432f99769911c0b995f7e884c778813" dependencies = [ "clap_builder", "clap_derive", @@ -854,11 +854,11 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.0" +version = "4.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47" +checksum = "90239a040c80f5e14809ca132ddc4176ab33d5e17e49691793296e3fcb34d72f" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.53", @@ -1971,6 +1971,12 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hermit-abi" version = "0.1.19" @@ -4571,7 +4577,7 @@ version = "0.24.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" dependencies = [ - "heck", + "heck 0.4.1", "proc-macro2", "quote", "rustversion", @@ -4649,10 +4655,10 @@ dependencies = [ name = "subxt-cli" version = "0.35.0" dependencies = [ - "clap 4.5.2", + "clap 4.5.3", "color-eyre", "frame-metadata 16.0.0", - "heck", + "heck 0.4.1", "hex", "indoc", "jsonrpsee", @@ -4680,7 +4686,7 @@ version = "0.35.0" dependencies = [ "frame-metadata 16.0.0", "getrandom", - "heck", + "heck 0.4.1", "hex", "jsonrpsee", "parity-scale-codec", diff --git a/Cargo.toml b/Cargo.toml index 6bbe235382..78dd19e0a1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -63,7 +63,7 @@ assert_matches = "1.5.0" base58 = { version = "0.2.0" } bitvec = { version = "1", default-features = false } blake2 = { version = "0.10.6", default-features = false } -clap = { version = "4.5.2", features = ["derive", "cargo"] } +clap = { version = "4.5.3", features = ["derive", "cargo"] } cfg-if = "1.0.0" criterion = "0.4" codec = { package = "parity-scale-codec", version = "3.6.9", default-features = false } From fb6df9296f6277284f269854a56b006a1192e915 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Mar 2024 10:34:08 +0100 Subject: [PATCH 63/66] build(deps): bump jsonrpsee from 0.22.2 to 0.22.3 (#1496) Bumps [jsonrpsee](https://github.com/paritytech/jsonrpsee) from 0.22.2 to 0.22.3. - [Release notes](https://github.com/paritytech/jsonrpsee/releases) - [Changelog](https://github.com/paritytech/jsonrpsee/blob/v0.22.3/CHANGELOG.md) - [Commits](https://github.com/paritytech/jsonrpsee/compare/v0.22.2...v0.22.3) --- updated-dependencies: - dependency-name: jsonrpsee dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cb6368421a..8eef2c723b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2326,9 +2326,9 @@ dependencies = [ [[package]] name = "jsonrpsee" -version = "0.22.2" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f3ae45a64cfc0882934f963be9431b2a165d667f53140358181f262aca0702" +checksum = "3cdbb7cb6f3ba28f5b212dd250ab4483105efc3e381f5c8bb90340f14f0a2cc3" dependencies = [ "jsonrpsee-client-transport", "jsonrpsee-core", @@ -2339,9 +2339,9 @@ dependencies = [ [[package]] name = "jsonrpsee-client-transport" -version = "0.22.2" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455fc882e56f58228df2aee36b88a1340eafd707c76af2fa68cf94b37d461131" +checksum = "9ab2e14e727d2faf388c99d9ca5210566ed3b044f07d92c29c3611718d178380" dependencies = [ "futures-channel", "futures-util", @@ -2362,9 +2362,9 @@ dependencies = [ [[package]] name = "jsonrpsee-core" -version = "0.22.2" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b75568f4f9696e3a47426e1985b548e1a9fcb13372a5e320372acaf04aca30d1" +checksum = "71962a1c49af43adf81d337e4ebc93f3c915faf6eccaa14d74e255107dfd7723" dependencies = [ "anyhow", "async-lock 3.3.0", @@ -2387,9 +2387,9 @@ dependencies = [ [[package]] name = "jsonrpsee-http-client" -version = "0.22.2" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e7a95e346f55df84fb167b7e06470e196e7d5b9488a21d69c5d9732043ba7ba" +checksum = "8c13987da51270bda2c1c9b40c19be0fe9b225c7a0553963d8f17e683a50ce84" dependencies = [ "async-trait", "hyper", @@ -2407,9 +2407,9 @@ dependencies = [ [[package]] name = "jsonrpsee-types" -version = "0.22.2" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3467fd35feeee179f71ab294516bdf3a81139e7aeebdd860e46897c12e1a3368" +checksum = "1e53c72de6cd2ad6ac1aa6e848206ef8b736f92ed02354959130373dfa5b3cbd" dependencies = [ "anyhow", "beef", @@ -2420,9 +2420,9 @@ dependencies = [ [[package]] name = "jsonrpsee-ws-client" -version = "0.22.2" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ca71e74983f624c0cb67828e480a981586074da8ad3a2f214c6a3f884edab9" +checksum = "c8a07ab8da9a283b906f6735ddd17d3680158bb72259e853441d1dd0167079ec" dependencies = [ "http", "jsonrpsee-client-transport", @@ -2816,7 +2816,7 @@ checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" dependencies = [ "bitcoin_hashes 0.13.0", "rand", - "rand_core 0.6.4", + "rand_core 0.5.1", "serde", "unicode-normalization", ] From d6ae5b4c307caeeba96d5f215f31f2057769738e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Mar 2024 11:30:17 +0100 Subject: [PATCH 64/66] build(deps): bump async-trait from 0.1.77 to 0.1.79 (#1500) Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.77 to 0.1.79. - [Release notes](https://github.com/dtolnay/async-trait/releases) - [Commits](https://github.com/dtolnay/async-trait/compare/0.1.77...0.1.79) --- updated-dependencies: - dependency-name: async-trait dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Alexandru Vasile <60601340+lexnv@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8eef2c723b..f374c7f25a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -470,9 +470,9 @@ checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" [[package]] name = "async-trait" -version = "0.1.77" +version = "0.1.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" +checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 78dd19e0a1..c61513dc6f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -58,7 +58,7 @@ type_complexity = "allow" all = "deny" [workspace.dependencies] -async-trait = "0.1.74" +async-trait = "0.1.79" assert_matches = "1.5.0" base58 = { version = "0.2.0" } bitvec = { version = "1", default-features = false } From 92c1ba7f663f559e9cffa2d0d59861e53c08b54b Mon Sep 17 00:00:00 2001 From: Alexandru Vasile <60601340+lexnv@users.noreply.github.com> Date: Tue, 26 Mar 2024 17:14:54 +0200 Subject: [PATCH 65/66] unstable_rpc: Add transactionBroadcast and transactionStop (#1497) * unstable_rpc: Add transactionBroadcast and transactionStop Signed-off-by: Alexandru Vasile * tests: Check transactionBroadcast works Signed-off-by: Alexandru Vasile * testing: Enable default feature for subxt-signer Signed-off-by: Alexandru Vasile * tests: Increase number of blocks to look for Signed-off-by: Alexandru Vasile * Fix clippy for unneed let binds Signed-off-by: Alexandru Vasile * Update subxt/src/backend/unstable/rpc_methods.rs Co-authored-by: Niklas Adolfsson * tests: Adjust txBroadcast test Signed-off-by: Alexandru Vasile * tests: Add test for txStop Signed-off-by: Alexandru Vasile * tests: Ignore compact encoded lenght prefix Signed-off-by: Alexandru Vasile --------- Signed-off-by: Alexandru Vasile Co-authored-by: Niklas Adolfsson --- subxt/src/backend/unstable/rpc_methods.rs | 22 ++++ .../src/full_client/client/unstable_rpcs.rs | 109 +++++++++++++++++- 2 files changed, 130 insertions(+), 1 deletion(-) diff --git a/subxt/src/backend/unstable/rpc_methods.rs b/subxt/src/backend/unstable/rpc_methods.rs index a1b04cad4a..fd2a1dcf9c 100644 --- a/subxt/src/backend/unstable/rpc_methods.rs +++ b/subxt/src/backend/unstable/rpc_methods.rs @@ -288,6 +288,28 @@ impl UnstableRpcMethods { Ok(TransactionSubscription { sub, done: false }) } + + /// Broadcast the transaction on the p2p network until the + /// [`Self::transaction_unstable_stop`] is called. + /// + /// Returns an operation ID that can be used to stop the broadcasting process. + /// Returns `None` if the server cannot handle the request at the moment. + pub async fn transaction_unstable_broadcast(&self, tx: &[u8]) -> Result, Error> { + self.client + .request("transaction_unstable_broadcast", rpc_params![to_hex(tx)]) + .await + } + + /// Stop the broadcasting process of the transaction. + /// + /// The operation ID is obtained from the [`Self::transaction_unstable_broadcast`] method. + /// + /// Returns an error if the operation ID does not correspond to any active transaction for this connection. + pub async fn transaction_unstable_stop(&self, operation_id: &str) -> Result<(), Error> { + self.client + .request("transaction_unstable_stop", rpc_params![operation_id]) + .await + } } /// This represents events generated by the `follow` method. diff --git a/testing/integration-tests/src/full_client/client/unstable_rpcs.rs b/testing/integration-tests/src/full_client/client/unstable_rpcs.rs index 66fcffdc9d..ba46681433 100644 --- a/testing/integration-tests/src/full_client/client/unstable_rpcs.rs +++ b/testing/integration-tests/src/full_client/client/unstable_rpcs.rs @@ -14,7 +14,9 @@ use subxt::{ FollowEvent, Initialized, MethodResponse, RuntimeEvent, RuntimeVersionEvent, StorageQuery, StorageQueryType, }, - utils::AccountId32, + config::Hasher, + utils::{AccountId32, MultiAddress}, + SubstrateConfig, }; use subxt_signer::sr25519::dev; @@ -309,3 +311,108 @@ async fn next_operation_event< panic!("Cannot find operation related event after {NUM_EVENTS} produced events"); } + +#[tokio::test] +async fn transaction_unstable_broadcast() { + let bob = dev::bob(); + let bob_address: MultiAddress = bob.public_key().into(); + + let ctx = test_context().await; + let api = ctx.client(); + let rpc = ctx.unstable_rpc_methods().await; + + let tx = node_runtime::tx() + .balances() + .transfer_allow_death(bob_address.clone(), 10_001); + + let tx_bytes = ctx + .client() + .tx() + .create_signed_offline(&tx, &dev::alice(), Default::default()) + .unwrap() + .into_encoded(); + + let tx_hash = ::Hasher::hash(&tx_bytes[2..]); + + // Subscribe to finalized blocks. + let mut finalized_sub = api.blocks().subscribe_finalized().await.unwrap(); + // Expect the tx to be encountered in a maximum number of blocks. + let mut num_blocks: usize = 10; + + // Submit the transaction. + let _operation_id = rpc + .transaction_unstable_broadcast(&tx_bytes) + .await + .unwrap() + .expect("Server is not overloaded by 1 tx; qed"); + + while let Some(finalized) = finalized_sub.next().await { + let finalized = finalized.unwrap(); + + // Started with positive, should not overflow. + num_blocks = num_blocks.saturating_sub(1); + if num_blocks == 0 { + panic!("Did not find the tx in due time"); + } + + let extrinsics = finalized.extrinsics().await.unwrap(); + let block_extrinsics = extrinsics + .iter() + .map(|res| res.unwrap()) + .collect::>(); + + let Some(ext) = block_extrinsics + .iter() + .find(|ext| ::Hasher::hash(ext.bytes()) == tx_hash) + else { + continue; + }; + + let ext = ext + .as_extrinsic::() + .unwrap() + .unwrap(); + assert_eq!(ext.value, 10_001); + return; + } +} + +#[tokio::test] +async fn transaction_unstable_stop() { + let bob = dev::bob(); + let bob_address: MultiAddress = bob.public_key().into(); + + let ctx = test_context().await; + let rpc = ctx.unstable_rpc_methods().await; + + // Cannot stop an operation that was not started. + let _err = rpc + .transaction_unstable_stop("non-existent-operation-id") + .await + .unwrap_err(); + + // Submit a transaction and stop it. + let tx = node_runtime::tx() + .balances() + .transfer_allow_death(bob_address.clone(), 10_001); + let tx_bytes = ctx + .client() + .tx() + .create_signed_offline(&tx, &dev::alice(), Default::default()) + .unwrap() + .into_encoded(); + + // Submit the transaction. + let operation_id = rpc + .transaction_unstable_broadcast(&tx_bytes) + .await + .unwrap() + .expect("Server is not overloaded by 1 tx; qed"); + + let _ = rpc.transaction_unstable_stop(&operation_id).await.unwrap(); + // Cannot stop it twice. + let _err = rpc + .transaction_unstable_stop(&operation_id) + .await + .unwrap_err(); +} From a0cb14aa4f5e60c9c88d7adea08a7dd6f0a6a22e Mon Sep 17 00:00:00 2001 From: Tadeo Hepperle <62739623+tadeohepperle@users.noreply.github.com> Date: Wed, 27 Mar 2024 09:55:08 +0100 Subject: [PATCH 66/66] `subxt-core` crate (#1466) * start migrating, broken * first iteration of updating * fmt and clippy * add Composite decoding via scale value patch * bump scale type gen versions * fix decoding with new scale decode * compiling with changed deps * core utils, condig, client, metadata * core crate compiling * signer crate no once lock * add core to no-std-tests, change imports * broken commit, start pulling everything together in subxt * port more things to subxt * events in core crate, extrinsics sadly much more difficult * almost all examples pass again * dynamic values fix in examples * fix no std issue and fmt * remove unused dependencies * fix lightclient impl * runtime version refactor * formatting and addressing nits * more comments addressed * update wasm example and no-std-signer tests * other nits and error impl on signer errors * fix feature flag * fix runtime version refactor * fix doc links * fix integration tests * fix feature flag gated client state * fix native feature in CI * fix lightclient utils * make imports more lean in subxt-core * integrate changes from subxt-core imports into subxt * other changes in subxt simplify imports more * fix and docs * doc false for cli * fix clippy * remove events block hash in tests * codegen no-std support in generated code * export alloc crate for no-std codegen * fix doc test * implement James comments * remove std traits, use core traits instead * address nits * remove unusued dep in no-std tests * fix Box import in no_std * sp-crypto-hashing instead of sp-core-hashing * bump scale-typegen, add no std codegen tests * fix some things * replace unmaintained derivative with derive_where to remove non-canonical warnings * fmt * remove unused dep * fix deps * update artifacts to fix type ID mismatches * bump to latest scale-typegen --------- Co-authored-by: James Wilson --- .github/workflows/rust.yml | 4 +- Cargo.lock | 67 +- Cargo.toml | 8 +- artifacts/demo_chain_specs/polkadot.json | 12 +- artifacts/polkadot_metadata_full.scale | Bin 402061 -> 288423 bytes artifacts/polkadot_metadata_small.scale | Bin 69879 -> 59331 bytes artifacts/polkadot_metadata_tiny.scale | Bin 38084 -> 37597 bytes cli/src/commands/codegen.rs | 2 +- cli/src/commands/explore/pallets/calls.rs | 5 +- codegen/src/api/calls.rs | 15 +- codegen/src/api/constants.rs | 7 +- codegen/src/api/custom_values.rs | 7 +- codegen/src/api/errors.rs | 5 +- codegen/src/api/events.rs | 14 +- codegen/src/api/mod.rs | 25 +- codegen/src/api/runtime_apis.rs | 5 +- codegen/src/api/storage.rs | 27 +- codegen/src/lib.rs | 15 +- core/Cargo.toml | 82 + core/README.md | 3 + core/src/blocks/mod.rs | 19 + core/src/client/mod.rs | 71 + .../src/config/default_extrinsic_params.rs | 0 .../src/config/extrinsic_params.rs | 46 +- {subxt => core}/src/config/mod.rs | 8 +- {subxt => core}/src/config/polkadot.rs | 2 +- {subxt => core}/src/config/refine_params.rs | 4 +- .../src/config/signed_extensions.rs | 70 +- {subxt => core}/src/config/substrate.rs | 61 +- .../src/constants/constant_address.rs | 30 +- core/src/constants/mod.rs | 59 + .../src/custom_values/custom_value_address.rs | 26 +- core/src/custom_values/mod.rs | 156 + {subxt => core}/src/dynamic.rs | 11 +- core/src/error.rs | 184 + .../events_type.rs => core/src/events/mod.rs | 124 +- core/src/lib.rs | 42 + core/src/macros.rs | 17 + .../src/metadata/decode_encode_traits.rs | 11 +- core/src/metadata/metadata_type.rs | 137 + {subxt => core}/src/metadata/mod.rs | 2 +- .../src/runtime_api/mod.rs | 23 +- core/src/storage/mod.rs | 22 + .../src/storage/storage_address.rs | 31 +- {subxt => core}/src/storage/storage_key.rs | 23 +- core/src/storage/utils.rs | 118 + .../tx/tx_payload.rs => core/src/tx/mod.rs | 32 +- {subxt => core}/src/tx/signer.rs | 0 {subxt => core}/src/utils/account_id.rs | 24 +- {subxt => core}/src/utils/bits.rs | 7 +- {subxt => core}/src/utils/era.rs | 0 core/src/utils/mod.rs | 83 + {subxt => core}/src/utils/multi_address.rs | 1 + {subxt => core}/src/utils/multi_signature.rs | 0 {subxt => core}/src/utils/static_type.rs | 10 +- .../src/utils/unchecked_extrinsic.rs | 5 +- {subxt => core}/src/utils/wrapper_opaque.rs | 26 +- examples/wasm-example/Cargo.lock | 28 +- examples/wasm-example/src/services.rs | 4 +- metadata/src/lib.rs | 39 - signer/Cargo.toml | 13 +- signer/src/ecdsa.rs | 6 +- signer/src/sr25519.rs | 8 +- subxt/Cargo.toml | 13 +- subxt/examples/setup_client_offline.rs | 5 +- subxt/examples/setup_config_custom.rs | 7 +- .../examples/setup_config_signed_extension.rs | 7 +- subxt/examples/storage_iterating_dynamic.rs | 4 +- subxt/src/backend/legacy/mod.rs | 16 +- subxt/src/backend/legacy/rpc_methods.rs | 5 +- subxt/src/backend/mod.rs | 22 +- subxt/src/backend/unstable/mod.rs | 7 +- subxt/src/backend/unstable/rpc_methods.rs | 5 +- subxt/src/blocks/blocks_client.rs | 5 +- subxt/src/blocks/extrinsic_types.rs | 56 +- subxt/src/client/mod.rs | 1 + subxt/src/client/offline_client.rs | 49 +- subxt/src/client/online_client.rs | 37 +- subxt/src/constants/constants_client.rs | 46 +- subxt/src/constants/mod.rs | 3 +- .../src/custom_values/custom_values_client.rs | 65 +- subxt/src/custom_values/mod.rs | 3 +- subxt/src/error/mod.rs | 104 +- subxt/src/events/events_client.rs | 11 +- subxt/src/events/mod.rs | 48 +- subxt/src/lib.rs | 44 +- subxt/src/macros.rs | 2 +- subxt/src/metadata/metadata_type.rs | 74 - subxt/src/runtime_api/mod.rs | 3 +- subxt/src/runtime_api/runtime_client.rs | 5 +- subxt/src/runtime_api/runtime_types.rs | 5 +- subxt/src/storage/mod.rs | 12 +- subxt/src/storage/storage_client.rs | 12 +- subxt/src/storage/storage_type.rs | 16 +- subxt/src/tx/mod.rs | 7 +- subxt/src/tx/tx_client.rs | 7 +- subxt/src/tx/tx_progress.rs | 18 +- subxt/src/utils/mod.rs | 79 +- .../src/full_client/client/unstable_rpcs.rs | 4 +- .../src/full_client/codegen/polkadot.rs | 46762 +++++++--------- .../src/full_client/frame/contracts.rs | 1 - testing/no-std-tests/Cargo.lock | 1733 +- testing/no-std-tests/Cargo.toml | 4 +- testing/no-std-tests/src/main.rs | 10 + testing/ui-tests/src/correct/custom_values.rs | 6 +- testing/ui-tests/src/lib.rs | 2 +- 106 files changed, 24329 insertions(+), 26882 deletions(-) create mode 100644 core/Cargo.toml create mode 100644 core/README.md create mode 100644 core/src/blocks/mod.rs create mode 100644 core/src/client/mod.rs rename {subxt => core}/src/config/default_extrinsic_params.rs (100%) rename {subxt => core}/src/config/extrinsic_params.rs (53%) rename {subxt => core}/src/config/mod.rs (97%) rename {subxt => core}/src/config/polkadot.rs (97%) rename {subxt => core}/src/config/refine_params.rs (94%) rename {subxt => core}/src/config/signed_extensions.rs (90%) rename {subxt => core}/src/config/substrate.rs (86%) rename {subxt => core}/src/constants/constant_address.rs (80%) create mode 100644 core/src/constants/mod.rs rename {subxt => core}/src/custom_values/custom_value_address.rs (78%) create mode 100644 core/src/custom_values/mod.rs rename {subxt => core}/src/dynamic.rs (93%) create mode 100644 core/src/error.rs rename subxt/src/events/events_type.rs => core/src/events/mod.rs (92%) create mode 100644 core/src/lib.rs create mode 100644 core/src/macros.rs rename {subxt => core}/src/metadata/decode_encode_traits.rs (88%) create mode 100644 core/src/metadata/metadata_type.rs rename {subxt => core}/src/metadata/mod.rs (90%) rename subxt/src/runtime_api/runtime_payload.rs => core/src/runtime_api/mod.rs (91%) create mode 100644 core/src/storage/mod.rs rename {subxt => core}/src/storage/storage_address.rs (86%) rename {subxt => core}/src/storage/storage_key.rs (97%) create mode 100644 core/src/storage/utils.rs rename subxt/src/tx/tx_payload.rs => core/src/tx/mod.rs (90%) rename {subxt => core}/src/tx/signer.rs (100%) rename {subxt => core}/src/utils/account_id.rs (92%) rename {subxt => core}/src/utils/bits.rs (98%) rename {subxt => core}/src/utils/era.rs (100%) create mode 100644 core/src/utils/mod.rs rename {subxt => core}/src/utils/multi_address.rs (99%) rename {subxt => core}/src/utils/multi_signature.rs (100%) rename {subxt => core}/src/utils/static_type.rs (91%) rename {subxt => core}/src/utils/unchecked_extrinsic.rs (98%) rename {subxt => core}/src/utils/wrapper_opaque.rs (94%) delete mode 100644 subxt/src/metadata/metadata_type.rs diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 327a77bd31..0f1843ca69 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -187,8 +187,8 @@ jobs: - name: Cargo check subxt-signer run: | cargo check -p subxt-signer - cargo check -p subxt-signer --no-default-features --features sr25519,native - cargo check -p subxt-signer --no-default-features --features ecdsa,native + cargo check -p subxt-signer --no-default-features --features sr25519 + cargo check -p subxt-signer --no-default-features --features ecdsa # We can't enable web features here, so no cargo hack. - name: Cargo check subxt-lightclient diff --git a/Cargo.lock b/Cargo.lock index f374c7f25a..7dc57d7b2f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1270,6 +1270,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive-where" +version = "1.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62d671cc41a825ebabc75757b62d3d168c577f9149b2d49ece1dad1f72119d25" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + [[package]] name = "derive_more" version = "0.99.17" @@ -2816,7 +2827,7 @@ checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" dependencies = [ "bitcoin_hashes 0.13.0", "rand", - "rand_core 0.5.1", + "rand_core 0.6.4", "serde", "unicode-normalization", ] @@ -3637,9 +3648,9 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ef2175c2907e7c8bc0a9c3f86aeb5ec1f3b275300ad58a44d0c3ae379a5e52e" +checksum = "788745a868b0e751750388f4e6546eb921ef714a4317fa6954f7cde114eb2eb7" dependencies = [ "bitvec", "cfg-if", @@ -3651,9 +3662,9 @@ dependencies = [ [[package]] name = "scale-info-derive" -version = "2.10.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abf2c68b89cafb3b8d918dd07b42be0da66ff202cf1155c5739a4e0c1ea0dc19" +checksum = "7dc2f4e8bc344b9fc3d5f74f72c2e55bfc38d28dc2ebc69c194a3df424e4d9ac" dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", @@ -3673,22 +3684,23 @@ dependencies = [ [[package]] name = "scale-typegen" -version = "0.2.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6108609f017741c78d35967c7afe4aeaa3999b848282581041428e10d23b63" +checksum = "0906a872e5733f2633457001962007b644d2e17e08e74340f79820e4951b653f" dependencies = [ "proc-macro2", "quote", "scale-info", + "smallvec", "syn 2.0.53", "thiserror", ] [[package]] name = "scale-typegen-description" -version = "0.2.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479f0b8b0d75cce8d284ace5a9b7f5a12c523c94387c710835695e8b194a17bb" +checksum = "1601f61a2ec4f278cc6102204860893b90abd938ec7e9d02799748a97169b3c9" dependencies = [ "anyhow", "peekmore", @@ -4613,10 +4625,8 @@ version = "0.35.0" dependencies = [ "assert_matches", "async-trait", - "base58", "bitvec", - "blake2", - "derivative", + "derive-where", "either", "frame-metadata 16.0.0", "futures", @@ -4639,6 +4649,7 @@ dependencies = [ "sp-crypto-hashing", "sp-keyring", "sp-runtime", + "subxt-core", "subxt-lightclient", "subxt-macro", "subxt-metadata", @@ -4700,6 +4711,36 @@ dependencies = [ "tokio", ] +[[package]] +name = "subxt-core" +version = "0.35.0" +dependencies = [ + "base58", + "bitvec", + "blake2", + "derive-where", + "derive_more", + "frame-metadata 16.0.0", + "hashbrown 0.14.3", + "hex", + "impl-serde", + "parity-scale-codec", + "primitive-types", + "scale-bits", + "scale-decode", + "scale-encode", + "scale-info", + "scale-value", + "serde", + "serde_json", + "sp-core", + "sp-crypto-hashing", + "sp-keyring", + "sp-runtime", + "subxt-metadata", + "tracing", +] + [[package]] name = "subxt-lightclient" version = "0.35.0" @@ -4773,7 +4814,7 @@ dependencies = [ "sp-core", "sp-crypto-hashing", "sp-keyring", - "subxt", + "subxt-core", "zeroize", ] diff --git a/Cargo.toml b/Cargo.toml index c61513dc6f..2f50bc5ceb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,6 +2,7 @@ members = [ "cli", "codegen", + "core", "lightclient", "testing/substrate-runner", "testing/test-runtime", @@ -70,7 +71,7 @@ codec = { package = "parity-scale-codec", version = "3.6.9", default-features = color-eyre = "0.6.3" console_error_panic_hook = "0.1.7" darling = "0.20.8" -derivative = "2.2.0" +derive-where = "1.2.7" derive_more = "0.99.17" either = { version = "1.10.0", default-features = false } frame-metadata = { version = "16.0.0", default-features = false } @@ -93,6 +94,8 @@ scale-value = { version = "0.14.1", default-features = false } scale-bits = { version = "0.5.0", default-features = false } scale-decode = { version = "0.11.1", default-features = false } scale-encode = { version = "0.6.0", default-features = false } +scale-typegen = "0.4.2" +scale-typegen-description = "0.4.2" serde = { version = "1.0.197", default-features = false, features = ["derive"] } serde_json = { version = "1.0.114", default-features = false } syn = { version = "2.0.15", features = ["full", "extra-traits"] } @@ -106,8 +109,6 @@ url = "2.5.0" wabt = "0.10.0" wasm-bindgen-test = "0.3.24" which = "5.0.0" -scale-typegen-description = "0.2.0" -scale-typegen = "0.2.0" strip-ansi-escapes = "0.2.0" # Light client support: @@ -136,6 +137,7 @@ sp-keyring = "34.0.0" # Subxt workspace crates: subxt = { version = "0.35.0", path = "subxt", default-features = false } +subxt-core = { version = "0.35.0", path = "core", default-features = false } subxt-macro = { version = "0.35.0", path = "macro" } subxt-metadata = { version = "0.35.0", path = "metadata", default-features = false } subxt-codegen = { version = "0.35.0", path = "codegen" } diff --git a/artifacts/demo_chain_specs/polkadot.json b/artifacts/demo_chain_specs/polkadot.json index 74ce0faa6e..e3ebd6b34a 100644 --- a/artifacts/demo_chain_specs/polkadot.json +++ b/artifacts/demo_chain_specs/polkadot.json @@ -15,8 +15,8 @@ "/dns/boot-node.helikon.io/tcp/7072/wss/p2p/12D3KooWS9ZcvRxyzrSf6p63QfTCWs12nLoNKhGux865crgxVA4H", "/dns/polkadot.bootnode.amforc.com/tcp/30333/p2p/12D3KooWAsuCEVCzUVUrtib8W82Yne3jgVGhQZN3hizko5FTnDg3", "/dns/polkadot.bootnode.amforc.com/tcp/30334/wss/p2p/12D3KooWAsuCEVCzUVUrtib8W82Yne3jgVGhQZN3hizko5FTnDg3", - "/dns/polkadot-bootnode.polkadotters.com/tcp/30333/p2p/12D3KooWPAVUgBaBk6n8SztLrMk8ESByncbAfRKUdxY1nygb9zG3", - "/dns/polkadot-bootnode.polkadotters.com/tcp/30334/wss/p2p/12D3KooWPAVUgBaBk6n8SztLrMk8ESByncbAfRKUdxY1nygb9zG3", + "/dns/polkadot.bootnodes.polkadotters.com/tcp/30314/p2p/12D3KooWPAVUgBaBk6n8SztLrMk8ESByncbAfRKUdxY1nygb9zG3", + "/dns/polkadot.bootnodes.polkadotters.com/tcp/30316/wss/p2p/12D3KooWPAVUgBaBk6n8SztLrMk8ESByncbAfRKUdxY1nygb9zG3", "/dns/boot-cr.gatotech.network/tcp/33100/p2p/12D3KooWK4E16jKk9nRhvC4RfrDVgcZzExg8Q3Q2G7ABUUitks1w", "/dns/boot-cr.gatotech.network/tcp/35100/wss/p2p/12D3KooWK4E16jKk9nRhvC4RfrDVgcZzExg8Q3Q2G7ABUUitks1w", "/dns/boot-polkadot.metaspan.io/tcp/13012/p2p/12D3KooWRjHFApinuqSBjoaDjQHvxwubQSpEVy5hrgC9Smvh92WF", @@ -43,10 +43,10 @@ }, "id": "polkadot", "lightSyncState": { - "babeEpochChanges": "0x0458f6448501174951cd92aa253e1dca05ff4487a8b86ca45b699e2e7bef36456f4644300101b38bfe10000000001395fe100000000004dc81f2058c70567f7c85ded467631941c2efb85ba96e2c9328f10be4774092dc904d3001011395fe1000000000739efe10000000001064de6cab75353df51c9bc549ea19c3fd6bb2094b10745ec5aa63db9576b9d15de456300101739efe1000000000d3a7fe1000000000007921f499584ea60af4fc6c621d1585b79e3852fcc929fce53d68e7d6f5f16c8fe456300101739efe1000000000d3a7fe1000000000009ea154e5d5448f812bcac06720992209518325b0527502738bbbcedc30413c24e456300101739efe1000000000d3a7fe100000000000ffb5d0e61bb7150459291768cdad47428dce5d980d4975c4e1e21ad0b43a059fe456300101739efe1000000000d3a7fe100000000000001858f6448501174951cd92aa253e1dca05ff4487a8b86ca45b699e2e7bef36456f46443001019b20000000000000b38bfe10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f280100000000000000ba395fcb33327501109ed40712c7a372d25bf3339edfabe2a1964fb7b5d4d82401000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e010000000000000026db7c5786fddc15f7e96905024905d877537451ed444cb97d3786361a59f64b0100000000000000c67b1b3084dc3eb2cc7a3cc4f742defc21b733e787737cbaf3b146a052633e0f01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000a6f10752adf745ad55866031836194ad027ed8d6710d9853ef62982bcf45fd0e010000000000000078c35105ea4cd9d6ea0ba91b2c19e78f60931bef5918c1bd2e14259229e7c330010000000000000006d2846642c835b0fb1ff1ef908449376aa8e7c0f3352e55da9a1e97e9528b230100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e47758878972010000000000000090d25f2368ee57fb5c100140b7507d5831fb035e7632c53b532b65e6d14ba8480100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a0100000000000000a42289d68c963358f3c450a850242bb53121e73e17f0e2ea2b93327446bea33c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc35310010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f010000000000000024532b17fc5fb786660c52aeb03150799165dd05e88ce359189189a4b771f51e01000000000000008610e1f00a1eba67d13225867c1f2972e60604e49bea7e5c1b10b29d4841b84a0100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b0100000000000000acef6dc8da16677955c38451be5a1b369fdc3c20bc249a1aec917276dfc2da580100000000000000c49cfd152ce3ac1fa142b3b6e720cb173eb7f43c82f021418253a070036f870c01000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e01000000000000009237113cf97fee5fafbeb82de593f6125e9c498bd59f0369625f46b326c7d9170100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f0678771701000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f510100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e010000000000000088f9a16886165d00612032cb1b36669ad62b7325536f499191e711134c71b6070100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f010000000000000032636c64cae326ea37dfa4ddad688feb9829ada7a7d580a91ce03a50a673d01c01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c560100000000000000c65c0a74887e9fe5cc56696fac7e7f5f1cd4a68f9661c8384b300bcdfbe67a1801000000000000003690e6ef639f685849ed93a6386d1fccf026c3fb64520940aa46af97f929e112010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e70210100000000000000ee82f2670e36b9ad136ae1ab1607c35f3b49a8c93b86802c06df3ca62a2e3561010000000000000024a0c6db2090170748a7bae71b6f77b5dcc14c6acc5c58e8de78d317ccafe14401000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf0801000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b0100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c39070100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d707600501000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb550100000000000000220d3f26072ad42aa5ca04b7253284d185f8bf95650faa170cbda8d7a47ea84a01000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c01000000000000007480edf84ab569e559dccc99b87ecb9ae9db670b45a259b7f6e618b063e43113010000000000000020bedd48a5965e2fc0e221bd164deecdee849eb69cb8dc63a37df80b50a3093b010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e5101000000000000004628f93047462b43ec0886f2c7d7318ddad1764fd32af4f32ef0b2dcfa4b297a010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000003635c55546f19bfe62d84a220c4396b1c9d71a1acdb2da917a82f0c1415a2b020100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa7401000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000008c64cd873a53fec10c4624239ce35d31d4422e32a109605a162fcbf632427733010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000da98e4363908fa4d7980fe5574ceeac74fae49bf77b3a191654c7731214a565e0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a0100000000000000b2518044cc31062ee50fa81cb6983f314291a0300865fa5cfe149829c5050d24010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a5201000000000000004e8cc21504fda961cf1cfe78e651d033b10f8ab1a4a0c757bd4848a7f2827f0601000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000a6cd7eca570e90e2efeeda8f1c09480884a073c66fc7c41b2464e11822b12f0c0100000000000000944ad19383a9ae136f4f11c15687923b9b21319efab021336a3e8f2bd5b5ca20010000000000000068508b2ca3e01d7c8d79d99f1bb06a93058d14f1061d5fed4df13d4bc30aa557010000000000000074f02ed037d28c883df643034a596e4d2a97a23782ee8483c9ae3429ede7e7090100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a01000000000000005c252543704920d6bea67453cdd61b464b001badf73a3ea3b9e9fb35b224947201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b3515010000000000000004734733edcd9cf662389208fb8ccb5f274a7db8187ccc53dc84250f8599d54d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b010000000000000010fee28789d45569ac0c95b7287fc7c5f087d93516cbd06e3c074a392d86da300100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e6380100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb190100000000000000b071e9d6b444a555e034ecdc4d04f2528cc36b347b231b33388564a40fd32b2c0100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000f894d159aa4b63402119985e2243e77fc35787fb086867659412c8c6918b2a670100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f61001000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c8400100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000024190e384934261c444897054262813c65a73aaf371806db97762e995e5b350e0100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f76010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000022a66dd6397c2631df509db3482baac28b546729e6ce965472a9ba2e648ccc74010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a2520100000000000000767cb742c94b22fff80da70a4ea77069aecde7ded53fbf5d957b01196924cd2d0100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea840010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e66010000000000000016f34c9e6687012c42f9c02de75b9499849fe771f2ad2e666f965dc6627735540100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd0401000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000076fa252aeca5b108fe76ce12e395ed8105d5c98e4abae38bfc7cb4fbd4d43d5501000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000fa30595578d5e253a0a3701616665cb205fc02eb560c023454c280bfc6cd8d090100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000c670e2b0f864f126be43807610aab3295cb4ed6a684d95de331d700f74e2985e0100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a52401000000000000004a1069d2203a75cd1078c39de35c16a6c4c12acbad34f1cba8efc065f80398610100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e176010000000000000062c6c1f6f2478ee092c958842ac4351973bfeb49f55e33b8415ac0296a967b5f01000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c721535901000000000000009a64daca74d14dab93385e52ca70940732a8d45ae4b853ce156c3eeca06f0c5f0100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c230100000000000000b2ddb9eab0545b9ac7a46e37d6fc4605c34227d848416bd3637da7156efe612601000000000000001a15acd9aec8d1dd06c7b6a46be298c3fc2ecd51be6724a63da4da286e306f72010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e7630100000000000000140fbeeabfb02dede7214a17c2cf78279d076c80d962431f35d1105c87b8d95501000000000000007cb1f225b90c00f426c33ac4338eeb2dae6467b8a9da5c1556e6588c12ca977b0100000000000000b261a66b9bae17b65e7f6a88d65efb4519925d6c418c9e2ba17bfdbf684b776301000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c491420100000000000000ce60d2c987bbeeaceff8463484b717ce80cbcf3d8f8b2102e95effc88000d95d01000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a0100000000000000c686fbbc968476537924f90aaa4993eef8314685d150228c462f8ae4e5e1e57f01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b2001000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a77480100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000002001d47fbff7291a50650047b27cc47f1d22a0bdfbbfb0b8b7a6e8bbf350bf620100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000005e0fa84f762f7d6e4c4b0c18a86e1b7da6cb4fe7dfcf6b5c0056a7ccd8eb201401000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe0837215600100000000000000c280e82e46ecabc4d68169e292c59cef96432f25fe849b8a147db5ca0ce7e17b010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000006ca32996225021dadb0b3f22460db6ce243faa3a0df7b33ef28e5fbcb9cf6f2f01000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000f0c0cc64f8973ebc2322273e684b4f73f412503f124c130be0be1589718cdd780100000000000000322dcdf3a5f50091af8b876983da0e0e98e358339e6033cdb865cd64995f86130100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000003213885ba6fd707b0716aeaad959cd824ab2f854e55963d9e69af006d194d51f0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e01000000000000008013bf5a25c703e64dc4ae7e1248c0f2c7abad9e43672d82611d109740199856010000000000000004ea82190bfc6f5f845f2ba785032a5d772b1cb44b3023c18af302f626e7df190100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f01000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e670100000000000000d23c53a531e356646133db73065cd83999693a5bdfc05931238434f5b031522f01000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de32010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b0100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a5003010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d01000000000000000469db5710f30dc9ed7411417170efd62ce8bbe36ccab6df758a94aa7b7f720b010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b01000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf460100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f010000000000000072f2ff3d21f4126e217f10f9d9bd18069c12eaab6922d073dd5241ac718e91200100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b010000000000000096ef8b525c38b9a74a3014bd99979230dab2f20221e8c7d1db50c7a61a02e97e01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a01000000000000008c45a06f479923e10cc400ae1600234f85906e26195bde9023350efaf0bc622c01000000000000006053f4e41a4db1dd6ddcd2304b62de45cda832c4e63a831ce9e634fab830d40d0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad21020100000000000000104b3d784f0ae26bf3268fb7342a99fcbb1ea61068e03337df050ef2e0895374010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e0100000000000000bae8e68bc8f1b66fe3229ee72d77137b394c6b7dfbf55e424f9d2c82d5c99600010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc24010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e01000000000000001c103b038f0515bb77061128200e1f117a531cb4474cf5f9430535345f54196701000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c2801000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b3040100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e210100000000000000a2259245fb5a7251b99ee8f307b97ec6e7f20081c1f75284aa9b433153d888160100000000000000068245d8a483bdbd4e9d88b49e17a651ec168f25e6851fc52c2e36a516031d5e0100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000dc1d6d9b878558829a87267a578e1d044b2033888074dcc3a9fcd69cd5e60d3e0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b01000000000000007e0da5500e4e91faec6b7c3763c52058a7a9350be3009f2fe00a8e3bf0c59e790100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a1843220100000000000000c322115db35bcba5a2c0755dd59c0278ef7f91ae39592cd8a98e481d64604428010000000000000004000000000000000264de6cab75353df51c9bc549ea19c3fd6bb2094b10745ec5aa63db9576b9d15de4563001019d20000000000000739efe10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f280100000000000000ba395fcb33327501109ed40712c7a372d25bf3339edfabe2a1964fb7b5d4d82401000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e010000000000000026db7c5786fddc15f7e96905024905d877537451ed444cb97d3786361a59f64b0100000000000000c67b1b3084dc3eb2cc7a3cc4f742defc21b733e787737cbaf3b146a052633e0f01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000a6f10752adf745ad55866031836194ad027ed8d6710d9853ef62982bcf45fd0e010000000000000078c35105ea4cd9d6ea0ba91b2c19e78f60931bef5918c1bd2e14259229e7c330010000000000000006d2846642c835b0fb1ff1ef908449376aa8e7c0f3352e55da9a1e97e9528b230100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e47758878972010000000000000090d25f2368ee57fb5c100140b7507d5831fb035e7632c53b532b65e6d14ba8480100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a0100000000000000a42289d68c963358f3c450a850242bb53121e73e17f0e2ea2b93327446bea33c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc35310010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f010000000000000024532b17fc5fb786660c52aeb03150799165dd05e88ce359189189a4b771f51e01000000000000008610e1f00a1eba67d13225867c1f2972e60604e49bea7e5c1b10b29d4841b84a0100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b0100000000000000acef6dc8da16677955c38451be5a1b369fdc3c20bc249a1aec917276dfc2da580100000000000000c49cfd152ce3ac1fa142b3b6e720cb173eb7f43c82f021418253a070036f870c01000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e01000000000000009237113cf97fee5fafbeb82de593f6125e9c498bd59f0369625f46b326c7d9170100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f0678771701000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f510100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e010000000000000088f9a16886165d00612032cb1b36669ad62b7325536f499191e711134c71b6070100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f010000000000000032636c64cae326ea37dfa4ddad688feb9829ada7a7d580a91ce03a50a673d01c01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c560100000000000000c65c0a74887e9fe5cc56696fac7e7f5f1cd4a68f9661c8384b300bcdfbe67a1801000000000000003690e6ef639f685849ed93a6386d1fccf026c3fb64520940aa46af97f929e112010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e70210100000000000000ee82f2670e36b9ad136ae1ab1607c35f3b49a8c93b86802c06df3ca62a2e3561010000000000000024a0c6db2090170748a7bae71b6f77b5dcc14c6acc5c58e8de78d317ccafe14401000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf0801000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b0100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c39070100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d707600501000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb550100000000000000220d3f26072ad42aa5ca04b7253284d185f8bf95650faa170cbda8d7a47ea84a01000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c01000000000000007480edf84ab569e559dccc99b87ecb9ae9db670b45a259b7f6e618b063e43113010000000000000020bedd48a5965e2fc0e221bd164deecdee849eb69cb8dc63a37df80b50a3093b010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e5101000000000000004628f93047462b43ec0886f2c7d7318ddad1764fd32af4f32ef0b2dcfa4b297a010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000003635c55546f19bfe62d84a220c4396b1c9d71a1acdb2da917a82f0c1415a2b020100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa7401000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000008c64cd873a53fec10c4624239ce35d31d4422e32a109605a162fcbf632427733010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000da98e4363908fa4d7980fe5574ceeac74fae49bf77b3a191654c7731214a565e0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a0100000000000000b2518044cc31062ee50fa81cb6983f314291a0300865fa5cfe149829c5050d24010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a5201000000000000004e8cc21504fda961cf1cfe78e651d033b10f8ab1a4a0c757bd4848a7f2827f0601000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000a6cd7eca570e90e2efeeda8f1c09480884a073c66fc7c41b2464e11822b12f0c0100000000000000944ad19383a9ae136f4f11c15687923b9b21319efab021336a3e8f2bd5b5ca20010000000000000068508b2ca3e01d7c8d79d99f1bb06a93058d14f1061d5fed4df13d4bc30aa557010000000000000074f02ed037d28c883df643034a596e4d2a97a23782ee8483c9ae3429ede7e7090100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a01000000000000005c252543704920d6bea67453cdd61b464b001badf73a3ea3b9e9fb35b224947201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b3515010000000000000004734733edcd9cf662389208fb8ccb5f274a7db8187ccc53dc84250f8599d54d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b010000000000000010fee28789d45569ac0c95b7287fc7c5f087d93516cbd06e3c074a392d86da300100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e6380100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb190100000000000000b071e9d6b444a555e034ecdc4d04f2528cc36b347b231b33388564a40fd32b2c0100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000f894d159aa4b63402119985e2243e77fc35787fb086867659412c8c6918b2a670100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f61001000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c8400100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000024190e384934261c444897054262813c65a73aaf371806db97762e995e5b350e0100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f76010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000022a66dd6397c2631df509db3482baac28b546729e6ce965472a9ba2e648ccc74010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a2520100000000000000767cb742c94b22fff80da70a4ea77069aecde7ded53fbf5d957b01196924cd2d0100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea840010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e66010000000000000016f34c9e6687012c42f9c02de75b9499849fe771f2ad2e666f965dc6627735540100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd0401000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000076fa252aeca5b108fe76ce12e395ed8105d5c98e4abae38bfc7cb4fbd4d43d5501000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000fa30595578d5e253a0a3701616665cb205fc02eb560c023454c280bfc6cd8d090100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000c670e2b0f864f126be43807610aab3295cb4ed6a684d95de331d700f74e2985e0100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a52401000000000000004a1069d2203a75cd1078c39de35c16a6c4c12acbad34f1cba8efc065f80398610100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e176010000000000000062c6c1f6f2478ee092c958842ac4351973bfeb49f55e33b8415ac0296a967b5f01000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c721535901000000000000009a64daca74d14dab93385e52ca70940732a8d45ae4b853ce156c3eeca06f0c5f0100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c230100000000000000b2ddb9eab0545b9ac7a46e37d6fc4605c34227d848416bd3637da7156efe612601000000000000001a15acd9aec8d1dd06c7b6a46be298c3fc2ecd51be6724a63da4da286e306f72010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e7630100000000000000140fbeeabfb02dede7214a17c2cf78279d076c80d962431f35d1105c87b8d95501000000000000007cb1f225b90c00f426c33ac4338eeb2dae6467b8a9da5c1556e6588c12ca977b0100000000000000b261a66b9bae17b65e7f6a88d65efb4519925d6c418c9e2ba17bfdbf684b776301000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c491420100000000000000ce60d2c987bbeeaceff8463484b717ce80cbcf3d8f8b2102e95effc88000d95d01000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a0100000000000000c686fbbc968476537924f90aaa4993eef8314685d150228c462f8ae4e5e1e57f01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b2001000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a77480100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000002001d47fbff7291a50650047b27cc47f1d22a0bdfbbfb0b8b7a6e8bbf350bf620100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000005e0fa84f762f7d6e4c4b0c18a86e1b7da6cb4fe7dfcf6b5c0056a7ccd8eb201401000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe0837215600100000000000000c280e82e46ecabc4d68169e292c59cef96432f25fe849b8a147db5ca0ce7e17b010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000006ca32996225021dadb0b3f22460db6ce243faa3a0df7b33ef28e5fbcb9cf6f2f01000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000f0c0cc64f8973ebc2322273e684b4f73f412503f124c130be0be1589718cdd780100000000000000322dcdf3a5f50091af8b876983da0e0e98e358339e6033cdb865cd64995f86130100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000003213885ba6fd707b0716aeaad959cd824ab2f854e55963d9e69af006d194d51f0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e01000000000000008013bf5a25c703e64dc4ae7e1248c0f2c7abad9e43672d82611d10974019985601000000000000007075de5f3cae26e005560440e9cc633c9fe8d7143b1fb8dc67e0d1ed7871e77d0100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f01000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e670100000000000000d23c53a531e356646133db73065cd83999693a5bdfc05931238434f5b031522f01000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de32010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b0100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a5003010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d01000000000000000469db5710f30dc9ed7411417170efd62ce8bbe36ccab6df758a94aa7b7f720b010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b01000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf460100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f010000000000000072f2ff3d21f4126e217f10f9d9bd18069c12eaab6922d073dd5241ac718e91200100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b010000000000000096ef8b525c38b9a74a3014bd99979230dab2f20221e8c7d1db50c7a61a02e97e01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a01000000000000008c45a06f479923e10cc400ae1600234f85906e26195bde9023350efaf0bc622c01000000000000006053f4e41a4db1dd6ddcd2304b62de45cda832c4e63a831ce9e634fab830d40d0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad21020100000000000000104b3d784f0ae26bf3268fb7342a99fcbb1ea61068e03337df050ef2e0895374010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e0100000000000000bae8e68bc8f1b66fe3229ee72d77137b394c6b7dfbf55e424f9d2c82d5c99600010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc24010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e01000000000000001c103b038f0515bb77061128200e1f117a531cb4474cf5f9430535345f54196701000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c2801000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b3040100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e21010000000000000096e0b71982f3e7ba6ab06d28dfbf803caf4ac51b7633bee848f4f3fadc0dac480100000000000000068245d8a483bdbd4e9d88b49e17a651ec168f25e6851fc52c2e36a516031d5e0100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000dc1d6d9b878558829a87267a578e1d044b2033888074dcc3a9fcd69cd5e60d3e0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b01000000000000007e0da5500e4e91faec6b7c3763c52058a7a9350be3009f2fe00a8e3bf0c59e790100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a18432201000000000000005d9f86b7514745bf41299f7fb39969966e4b7556bc3942a51c95052f5233493901000000000000000400000000000000027921f499584ea60af4fc6c621d1585b79e3852fcc929fce53d68e7d6f5f16c8fe4563001019d20000000000000739efe10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f280100000000000000ba395fcb33327501109ed40712c7a372d25bf3339edfabe2a1964fb7b5d4d82401000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e010000000000000026db7c5786fddc15f7e96905024905d877537451ed444cb97d3786361a59f64b0100000000000000c67b1b3084dc3eb2cc7a3cc4f742defc21b733e787737cbaf3b146a052633e0f01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000a6f10752adf745ad55866031836194ad027ed8d6710d9853ef62982bcf45fd0e010000000000000078c35105ea4cd9d6ea0ba91b2c19e78f60931bef5918c1bd2e14259229e7c330010000000000000006d2846642c835b0fb1ff1ef908449376aa8e7c0f3352e55da9a1e97e9528b230100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e47758878972010000000000000090d25f2368ee57fb5c100140b7507d5831fb035e7632c53b532b65e6d14ba8480100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a0100000000000000a42289d68c963358f3c450a850242bb53121e73e17f0e2ea2b93327446bea33c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc35310010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f010000000000000024532b17fc5fb786660c52aeb03150799165dd05e88ce359189189a4b771f51e01000000000000008610e1f00a1eba67d13225867c1f2972e60604e49bea7e5c1b10b29d4841b84a0100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b0100000000000000acef6dc8da16677955c38451be5a1b369fdc3c20bc249a1aec917276dfc2da580100000000000000c49cfd152ce3ac1fa142b3b6e720cb173eb7f43c82f021418253a070036f870c01000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e01000000000000009237113cf97fee5fafbeb82de593f6125e9c498bd59f0369625f46b326c7d9170100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f0678771701000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f510100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e010000000000000088f9a16886165d00612032cb1b36669ad62b7325536f499191e711134c71b6070100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f010000000000000032636c64cae326ea37dfa4ddad688feb9829ada7a7d580a91ce03a50a673d01c01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c560100000000000000c65c0a74887e9fe5cc56696fac7e7f5f1cd4a68f9661c8384b300bcdfbe67a1801000000000000003690e6ef639f685849ed93a6386d1fccf026c3fb64520940aa46af97f929e112010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e70210100000000000000ee82f2670e36b9ad136ae1ab1607c35f3b49a8c93b86802c06df3ca62a2e3561010000000000000024a0c6db2090170748a7bae71b6f77b5dcc14c6acc5c58e8de78d317ccafe14401000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf0801000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b0100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c39070100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d707600501000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb550100000000000000220d3f26072ad42aa5ca04b7253284d185f8bf95650faa170cbda8d7a47ea84a01000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c01000000000000007480edf84ab569e559dccc99b87ecb9ae9db670b45a259b7f6e618b063e43113010000000000000020bedd48a5965e2fc0e221bd164deecdee849eb69cb8dc63a37df80b50a3093b010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e5101000000000000004628f93047462b43ec0886f2c7d7318ddad1764fd32af4f32ef0b2dcfa4b297a010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000003635c55546f19bfe62d84a220c4396b1c9d71a1acdb2da917a82f0c1415a2b020100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa7401000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000008c64cd873a53fec10c4624239ce35d31d4422e32a109605a162fcbf632427733010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000da98e4363908fa4d7980fe5574ceeac74fae49bf77b3a191654c7731214a565e0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a0100000000000000b2518044cc31062ee50fa81cb6983f314291a0300865fa5cfe149829c5050d24010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a5201000000000000004e8cc21504fda961cf1cfe78e651d033b10f8ab1a4a0c757bd4848a7f2827f0601000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000a6cd7eca570e90e2efeeda8f1c09480884a073c66fc7c41b2464e11822b12f0c0100000000000000944ad19383a9ae136f4f11c15687923b9b21319efab021336a3e8f2bd5b5ca20010000000000000068508b2ca3e01d7c8d79d99f1bb06a93058d14f1061d5fed4df13d4bc30aa557010000000000000074f02ed037d28c883df643034a596e4d2a97a23782ee8483c9ae3429ede7e7090100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a01000000000000005c252543704920d6bea67453cdd61b464b001badf73a3ea3b9e9fb35b224947201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b3515010000000000000004734733edcd9cf662389208fb8ccb5f274a7db8187ccc53dc84250f8599d54d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b010000000000000010fee28789d45569ac0c95b7287fc7c5f087d93516cbd06e3c074a392d86da300100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e6380100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb190100000000000000b071e9d6b444a555e034ecdc4d04f2528cc36b347b231b33388564a40fd32b2c0100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000f894d159aa4b63402119985e2243e77fc35787fb086867659412c8c6918b2a670100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f61001000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c8400100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000024190e384934261c444897054262813c65a73aaf371806db97762e995e5b350e0100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f76010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000022a66dd6397c2631df509db3482baac28b546729e6ce965472a9ba2e648ccc74010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a2520100000000000000767cb742c94b22fff80da70a4ea77069aecde7ded53fbf5d957b01196924cd2d0100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea840010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e66010000000000000016f34c9e6687012c42f9c02de75b9499849fe771f2ad2e666f965dc6627735540100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd0401000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000076fa252aeca5b108fe76ce12e395ed8105d5c98e4abae38bfc7cb4fbd4d43d5501000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000fa30595578d5e253a0a3701616665cb205fc02eb560c023454c280bfc6cd8d090100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000c670e2b0f864f126be43807610aab3295cb4ed6a684d95de331d700f74e2985e0100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a52401000000000000004a1069d2203a75cd1078c39de35c16a6c4c12acbad34f1cba8efc065f80398610100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e176010000000000000062c6c1f6f2478ee092c958842ac4351973bfeb49f55e33b8415ac0296a967b5f01000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c721535901000000000000009a64daca74d14dab93385e52ca70940732a8d45ae4b853ce156c3eeca06f0c5f0100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c230100000000000000b2ddb9eab0545b9ac7a46e37d6fc4605c34227d848416bd3637da7156efe612601000000000000001a15acd9aec8d1dd06c7b6a46be298c3fc2ecd51be6724a63da4da286e306f72010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e7630100000000000000140fbeeabfb02dede7214a17c2cf78279d076c80d962431f35d1105c87b8d95501000000000000007cb1f225b90c00f426c33ac4338eeb2dae6467b8a9da5c1556e6588c12ca977b0100000000000000b261a66b9bae17b65e7f6a88d65efb4519925d6c418c9e2ba17bfdbf684b776301000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c491420100000000000000ce60d2c987bbeeaceff8463484b717ce80cbcf3d8f8b2102e95effc88000d95d01000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a0100000000000000c686fbbc968476537924f90aaa4993eef8314685d150228c462f8ae4e5e1e57f01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b2001000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a77480100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000002001d47fbff7291a50650047b27cc47f1d22a0bdfbbfb0b8b7a6e8bbf350bf620100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000005e0fa84f762f7d6e4c4b0c18a86e1b7da6cb4fe7dfcf6b5c0056a7ccd8eb201401000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe0837215600100000000000000c280e82e46ecabc4d68169e292c59cef96432f25fe849b8a147db5ca0ce7e17b010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000006ca32996225021dadb0b3f22460db6ce243faa3a0df7b33ef28e5fbcb9cf6f2f01000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000f0c0cc64f8973ebc2322273e684b4f73f412503f124c130be0be1589718cdd780100000000000000322dcdf3a5f50091af8b876983da0e0e98e358339e6033cdb865cd64995f86130100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000003213885ba6fd707b0716aeaad959cd824ab2f854e55963d9e69af006d194d51f0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e01000000000000008013bf5a25c703e64dc4ae7e1248c0f2c7abad9e43672d82611d10974019985601000000000000007075de5f3cae26e005560440e9cc633c9fe8d7143b1fb8dc67e0d1ed7871e77d0100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f01000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e670100000000000000d23c53a531e356646133db73065cd83999693a5bdfc05931238434f5b031522f01000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de32010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b0100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a5003010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d01000000000000000469db5710f30dc9ed7411417170efd62ce8bbe36ccab6df758a94aa7b7f720b010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b01000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf460100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f010000000000000072f2ff3d21f4126e217f10f9d9bd18069c12eaab6922d073dd5241ac718e91200100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b010000000000000096ef8b525c38b9a74a3014bd99979230dab2f20221e8c7d1db50c7a61a02e97e01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a01000000000000008c45a06f479923e10cc400ae1600234f85906e26195bde9023350efaf0bc622c01000000000000006053f4e41a4db1dd6ddcd2304b62de45cda832c4e63a831ce9e634fab830d40d0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad21020100000000000000104b3d784f0ae26bf3268fb7342a99fcbb1ea61068e03337df050ef2e0895374010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e0100000000000000bae8e68bc8f1b66fe3229ee72d77137b394c6b7dfbf55e424f9d2c82d5c99600010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc24010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e01000000000000001c103b038f0515bb77061128200e1f117a531cb4474cf5f9430535345f54196701000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c2801000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b3040100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e21010000000000000096e0b71982f3e7ba6ab06d28dfbf803caf4ac51b7633bee848f4f3fadc0dac480100000000000000068245d8a483bdbd4e9d88b49e17a651ec168f25e6851fc52c2e36a516031d5e0100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000dc1d6d9b878558829a87267a578e1d044b2033888074dcc3a9fcd69cd5e60d3e0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b01000000000000007e0da5500e4e91faec6b7c3763c52058a7a9350be3009f2fe00a8e3bf0c59e790100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a18432201000000000000005d9f86b7514745bf41299f7fb39969966e4b7556bc3942a51c95052f5233493901000000000000000400000000000000029ea154e5d5448f812bcac06720992209518325b0527502738bbbcedc30413c24e4563001019d20000000000000739efe10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f280100000000000000ba395fcb33327501109ed40712c7a372d25bf3339edfabe2a1964fb7b5d4d82401000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e010000000000000026db7c5786fddc15f7e96905024905d877537451ed444cb97d3786361a59f64b0100000000000000c67b1b3084dc3eb2cc7a3cc4f742defc21b733e787737cbaf3b146a052633e0f01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000a6f10752adf745ad55866031836194ad027ed8d6710d9853ef62982bcf45fd0e010000000000000078c35105ea4cd9d6ea0ba91b2c19e78f60931bef5918c1bd2e14259229e7c330010000000000000006d2846642c835b0fb1ff1ef908449376aa8e7c0f3352e55da9a1e97e9528b230100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e47758878972010000000000000090d25f2368ee57fb5c100140b7507d5831fb035e7632c53b532b65e6d14ba8480100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a0100000000000000a42289d68c963358f3c450a850242bb53121e73e17f0e2ea2b93327446bea33c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc35310010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f010000000000000024532b17fc5fb786660c52aeb03150799165dd05e88ce359189189a4b771f51e01000000000000008610e1f00a1eba67d13225867c1f2972e60604e49bea7e5c1b10b29d4841b84a0100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b0100000000000000acef6dc8da16677955c38451be5a1b369fdc3c20bc249a1aec917276dfc2da580100000000000000c49cfd152ce3ac1fa142b3b6e720cb173eb7f43c82f021418253a070036f870c01000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e01000000000000009237113cf97fee5fafbeb82de593f6125e9c498bd59f0369625f46b326c7d9170100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f0678771701000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f510100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e010000000000000088f9a16886165d00612032cb1b36669ad62b7325536f499191e711134c71b6070100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f010000000000000032636c64cae326ea37dfa4ddad688feb9829ada7a7d580a91ce03a50a673d01c01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c560100000000000000c65c0a74887e9fe5cc56696fac7e7f5f1cd4a68f9661c8384b300bcdfbe67a1801000000000000003690e6ef639f685849ed93a6386d1fccf026c3fb64520940aa46af97f929e112010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e70210100000000000000ee82f2670e36b9ad136ae1ab1607c35f3b49a8c93b86802c06df3ca62a2e3561010000000000000024a0c6db2090170748a7bae71b6f77b5dcc14c6acc5c58e8de78d317ccafe14401000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf0801000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b0100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c39070100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d707600501000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb550100000000000000220d3f26072ad42aa5ca04b7253284d185f8bf95650faa170cbda8d7a47ea84a01000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c01000000000000007480edf84ab569e559dccc99b87ecb9ae9db670b45a259b7f6e618b063e43113010000000000000020bedd48a5965e2fc0e221bd164deecdee849eb69cb8dc63a37df80b50a3093b010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e5101000000000000004628f93047462b43ec0886f2c7d7318ddad1764fd32af4f32ef0b2dcfa4b297a010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000003635c55546f19bfe62d84a220c4396b1c9d71a1acdb2da917a82f0c1415a2b020100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa7401000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000008c64cd873a53fec10c4624239ce35d31d4422e32a109605a162fcbf632427733010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000da98e4363908fa4d7980fe5574ceeac74fae49bf77b3a191654c7731214a565e0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a0100000000000000b2518044cc31062ee50fa81cb6983f314291a0300865fa5cfe149829c5050d24010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a5201000000000000004e8cc21504fda961cf1cfe78e651d033b10f8ab1a4a0c757bd4848a7f2827f0601000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000a6cd7eca570e90e2efeeda8f1c09480884a073c66fc7c41b2464e11822b12f0c0100000000000000944ad19383a9ae136f4f11c15687923b9b21319efab021336a3e8f2bd5b5ca20010000000000000068508b2ca3e01d7c8d79d99f1bb06a93058d14f1061d5fed4df13d4bc30aa557010000000000000074f02ed037d28c883df643034a596e4d2a97a23782ee8483c9ae3429ede7e7090100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a01000000000000005c252543704920d6bea67453cdd61b464b001badf73a3ea3b9e9fb35b224947201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b3515010000000000000004734733edcd9cf662389208fb8ccb5f274a7db8187ccc53dc84250f8599d54d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b010000000000000010fee28789d45569ac0c95b7287fc7c5f087d93516cbd06e3c074a392d86da300100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e6380100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb190100000000000000b071e9d6b444a555e034ecdc4d04f2528cc36b347b231b33388564a40fd32b2c0100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000f894d159aa4b63402119985e2243e77fc35787fb086867659412c8c6918b2a670100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f61001000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c8400100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000024190e384934261c444897054262813c65a73aaf371806db97762e995e5b350e0100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f76010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000022a66dd6397c2631df509db3482baac28b546729e6ce965472a9ba2e648ccc74010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a2520100000000000000767cb742c94b22fff80da70a4ea77069aecde7ded53fbf5d957b01196924cd2d0100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea840010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e66010000000000000016f34c9e6687012c42f9c02de75b9499849fe771f2ad2e666f965dc6627735540100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd0401000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000076fa252aeca5b108fe76ce12e395ed8105d5c98e4abae38bfc7cb4fbd4d43d5501000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000fa30595578d5e253a0a3701616665cb205fc02eb560c023454c280bfc6cd8d090100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000c670e2b0f864f126be43807610aab3295cb4ed6a684d95de331d700f74e2985e0100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a52401000000000000004a1069d2203a75cd1078c39de35c16a6c4c12acbad34f1cba8efc065f80398610100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e176010000000000000062c6c1f6f2478ee092c958842ac4351973bfeb49f55e33b8415ac0296a967b5f01000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c721535901000000000000009a64daca74d14dab93385e52ca70940732a8d45ae4b853ce156c3eeca06f0c5f0100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c230100000000000000b2ddb9eab0545b9ac7a46e37d6fc4605c34227d848416bd3637da7156efe612601000000000000001a15acd9aec8d1dd06c7b6a46be298c3fc2ecd51be6724a63da4da286e306f72010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e7630100000000000000140fbeeabfb02dede7214a17c2cf78279d076c80d962431f35d1105c87b8d95501000000000000007cb1f225b90c00f426c33ac4338eeb2dae6467b8a9da5c1556e6588c12ca977b0100000000000000b261a66b9bae17b65e7f6a88d65efb4519925d6c418c9e2ba17bfdbf684b776301000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c491420100000000000000ce60d2c987bbeeaceff8463484b717ce80cbcf3d8f8b2102e95effc88000d95d01000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a0100000000000000c686fbbc968476537924f90aaa4993eef8314685d150228c462f8ae4e5e1e57f01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b2001000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a77480100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000002001d47fbff7291a50650047b27cc47f1d22a0bdfbbfb0b8b7a6e8bbf350bf620100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000005e0fa84f762f7d6e4c4b0c18a86e1b7da6cb4fe7dfcf6b5c0056a7ccd8eb201401000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe0837215600100000000000000c280e82e46ecabc4d68169e292c59cef96432f25fe849b8a147db5ca0ce7e17b010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000006ca32996225021dadb0b3f22460db6ce243faa3a0df7b33ef28e5fbcb9cf6f2f01000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000f0c0cc64f8973ebc2322273e684b4f73f412503f124c130be0be1589718cdd780100000000000000322dcdf3a5f50091af8b876983da0e0e98e358339e6033cdb865cd64995f86130100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000003213885ba6fd707b0716aeaad959cd824ab2f854e55963d9e69af006d194d51f0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e01000000000000008013bf5a25c703e64dc4ae7e1248c0f2c7abad9e43672d82611d10974019985601000000000000007075de5f3cae26e005560440e9cc633c9fe8d7143b1fb8dc67e0d1ed7871e77d0100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f01000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e670100000000000000d23c53a531e356646133db73065cd83999693a5bdfc05931238434f5b031522f01000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de32010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b0100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a5003010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d01000000000000000469db5710f30dc9ed7411417170efd62ce8bbe36ccab6df758a94aa7b7f720b010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b01000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf460100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f010000000000000072f2ff3d21f4126e217f10f9d9bd18069c12eaab6922d073dd5241ac718e91200100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b010000000000000096ef8b525c38b9a74a3014bd99979230dab2f20221e8c7d1db50c7a61a02e97e01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a01000000000000008c45a06f479923e10cc400ae1600234f85906e26195bde9023350efaf0bc622c01000000000000006053f4e41a4db1dd6ddcd2304b62de45cda832c4e63a831ce9e634fab830d40d0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad21020100000000000000104b3d784f0ae26bf3268fb7342a99fcbb1ea61068e03337df050ef2e0895374010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e0100000000000000bae8e68bc8f1b66fe3229ee72d77137b394c6b7dfbf55e424f9d2c82d5c99600010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc24010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e01000000000000001c103b038f0515bb77061128200e1f117a531cb4474cf5f9430535345f54196701000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c2801000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b3040100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e21010000000000000096e0b71982f3e7ba6ab06d28dfbf803caf4ac51b7633bee848f4f3fadc0dac480100000000000000068245d8a483bdbd4e9d88b49e17a651ec168f25e6851fc52c2e36a516031d5e0100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000dc1d6d9b878558829a87267a578e1d044b2033888074dcc3a9fcd69cd5e60d3e0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b01000000000000007e0da5500e4e91faec6b7c3763c52058a7a9350be3009f2fe00a8e3bf0c59e790100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a18432201000000000000005d9f86b7514745bf41299f7fb39969966e4b7556bc3942a51c95052f523349390100000000000000040000000000000002dc81f2058c70567f7c85ded467631941c2efb85ba96e2c9328f10be4774092dc904d3001019c200000000000001395fe10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f280100000000000000ba395fcb33327501109ed40712c7a372d25bf3339edfabe2a1964fb7b5d4d82401000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e010000000000000026db7c5786fddc15f7e96905024905d877537451ed444cb97d3786361a59f64b0100000000000000c67b1b3084dc3eb2cc7a3cc4f742defc21b733e787737cbaf3b146a052633e0f01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000a6f10752adf745ad55866031836194ad027ed8d6710d9853ef62982bcf45fd0e010000000000000078c35105ea4cd9d6ea0ba91b2c19e78f60931bef5918c1bd2e14259229e7c330010000000000000006d2846642c835b0fb1ff1ef908449376aa8e7c0f3352e55da9a1e97e9528b230100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e47758878972010000000000000090d25f2368ee57fb5c100140b7507d5831fb035e7632c53b532b65e6d14ba8480100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a0100000000000000a42289d68c963358f3c450a850242bb53121e73e17f0e2ea2b93327446bea33c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc35310010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f010000000000000024532b17fc5fb786660c52aeb03150799165dd05e88ce359189189a4b771f51e01000000000000008610e1f00a1eba67d13225867c1f2972e60604e49bea7e5c1b10b29d4841b84a0100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b0100000000000000acef6dc8da16677955c38451be5a1b369fdc3c20bc249a1aec917276dfc2da580100000000000000c49cfd152ce3ac1fa142b3b6e720cb173eb7f43c82f021418253a070036f870c01000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e01000000000000009237113cf97fee5fafbeb82de593f6125e9c498bd59f0369625f46b326c7d9170100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f0678771701000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f510100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e010000000000000088f9a16886165d00612032cb1b36669ad62b7325536f499191e711134c71b6070100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f010000000000000032636c64cae326ea37dfa4ddad688feb9829ada7a7d580a91ce03a50a673d01c01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c560100000000000000c65c0a74887e9fe5cc56696fac7e7f5f1cd4a68f9661c8384b300bcdfbe67a1801000000000000003690e6ef639f685849ed93a6386d1fccf026c3fb64520940aa46af97f929e112010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e70210100000000000000ee82f2670e36b9ad136ae1ab1607c35f3b49a8c93b86802c06df3ca62a2e3561010000000000000024a0c6db2090170748a7bae71b6f77b5dcc14c6acc5c58e8de78d317ccafe14401000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf0801000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b0100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c39070100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d707600501000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb550100000000000000220d3f26072ad42aa5ca04b7253284d185f8bf95650faa170cbda8d7a47ea84a01000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c01000000000000007480edf84ab569e559dccc99b87ecb9ae9db670b45a259b7f6e618b063e43113010000000000000020bedd48a5965e2fc0e221bd164deecdee849eb69cb8dc63a37df80b50a3093b010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e5101000000000000004628f93047462b43ec0886f2c7d7318ddad1764fd32af4f32ef0b2dcfa4b297a010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000003635c55546f19bfe62d84a220c4396b1c9d71a1acdb2da917a82f0c1415a2b020100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa7401000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000008c64cd873a53fec10c4624239ce35d31d4422e32a109605a162fcbf632427733010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000da98e4363908fa4d7980fe5574ceeac74fae49bf77b3a191654c7731214a565e0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a0100000000000000b2518044cc31062ee50fa81cb6983f314291a0300865fa5cfe149829c5050d24010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a5201000000000000004e8cc21504fda961cf1cfe78e651d033b10f8ab1a4a0c757bd4848a7f2827f0601000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000a6cd7eca570e90e2efeeda8f1c09480884a073c66fc7c41b2464e11822b12f0c0100000000000000944ad19383a9ae136f4f11c15687923b9b21319efab021336a3e8f2bd5b5ca20010000000000000068508b2ca3e01d7c8d79d99f1bb06a93058d14f1061d5fed4df13d4bc30aa557010000000000000074f02ed037d28c883df643034a596e4d2a97a23782ee8483c9ae3429ede7e7090100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a01000000000000005c252543704920d6bea67453cdd61b464b001badf73a3ea3b9e9fb35b224947201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b3515010000000000000004734733edcd9cf662389208fb8ccb5f274a7db8187ccc53dc84250f8599d54d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b010000000000000010fee28789d45569ac0c95b7287fc7c5f087d93516cbd06e3c074a392d86da300100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e6380100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb190100000000000000b071e9d6b444a555e034ecdc4d04f2528cc36b347b231b33388564a40fd32b2c0100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000f894d159aa4b63402119985e2243e77fc35787fb086867659412c8c6918b2a670100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f61001000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c8400100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000024190e384934261c444897054262813c65a73aaf371806db97762e995e5b350e0100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f76010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000022a66dd6397c2631df509db3482baac28b546729e6ce965472a9ba2e648ccc74010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a2520100000000000000767cb742c94b22fff80da70a4ea77069aecde7ded53fbf5d957b01196924cd2d0100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea840010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e66010000000000000016f34c9e6687012c42f9c02de75b9499849fe771f2ad2e666f965dc6627735540100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd0401000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000076fa252aeca5b108fe76ce12e395ed8105d5c98e4abae38bfc7cb4fbd4d43d5501000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000fa30595578d5e253a0a3701616665cb205fc02eb560c023454c280bfc6cd8d090100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000c670e2b0f864f126be43807610aab3295cb4ed6a684d95de331d700f74e2985e0100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a52401000000000000004a1069d2203a75cd1078c39de35c16a6c4c12acbad34f1cba8efc065f80398610100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e176010000000000000062c6c1f6f2478ee092c958842ac4351973bfeb49f55e33b8415ac0296a967b5f01000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c721535901000000000000009a64daca74d14dab93385e52ca70940732a8d45ae4b853ce156c3eeca06f0c5f0100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c230100000000000000b2ddb9eab0545b9ac7a46e37d6fc4605c34227d848416bd3637da7156efe612601000000000000001a15acd9aec8d1dd06c7b6a46be298c3fc2ecd51be6724a63da4da286e306f72010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e7630100000000000000140fbeeabfb02dede7214a17c2cf78279d076c80d962431f35d1105c87b8d95501000000000000007cb1f225b90c00f426c33ac4338eeb2dae6467b8a9da5c1556e6588c12ca977b0100000000000000b261a66b9bae17b65e7f6a88d65efb4519925d6c418c9e2ba17bfdbf684b776301000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c491420100000000000000ce60d2c987bbeeaceff8463484b717ce80cbcf3d8f8b2102e95effc88000d95d01000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a0100000000000000c686fbbc968476537924f90aaa4993eef8314685d150228c462f8ae4e5e1e57f01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b2001000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a77480100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000002001d47fbff7291a50650047b27cc47f1d22a0bdfbbfb0b8b7a6e8bbf350bf620100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000005e0fa84f762f7d6e4c4b0c18a86e1b7da6cb4fe7dfcf6b5c0056a7ccd8eb201401000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe0837215600100000000000000c280e82e46ecabc4d68169e292c59cef96432f25fe849b8a147db5ca0ce7e17b010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000006ca32996225021dadb0b3f22460db6ce243faa3a0df7b33ef28e5fbcb9cf6f2f01000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000f0c0cc64f8973ebc2322273e684b4f73f412503f124c130be0be1589718cdd780100000000000000322dcdf3a5f50091af8b876983da0e0e98e358339e6033cdb865cd64995f86130100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000003213885ba6fd707b0716aeaad959cd824ab2f854e55963d9e69af006d194d51f0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e01000000000000008013bf5a25c703e64dc4ae7e1248c0f2c7abad9e43672d82611d109740199856010000000000000064214c3864c6011c684c9189e62616eff43fd4709c37755b41d432a6ee03fc020100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f01000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e670100000000000000d23c53a531e356646133db73065cd83999693a5bdfc05931238434f5b031522f01000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de32010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b0100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a5003010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d01000000000000000469db5710f30dc9ed7411417170efd62ce8bbe36ccab6df758a94aa7b7f720b010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b01000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf460100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f010000000000000072f2ff3d21f4126e217f10f9d9bd18069c12eaab6922d073dd5241ac718e91200100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b010000000000000096ef8b525c38b9a74a3014bd99979230dab2f20221e8c7d1db50c7a61a02e97e01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a01000000000000008c45a06f479923e10cc400ae1600234f85906e26195bde9023350efaf0bc622c01000000000000006053f4e41a4db1dd6ddcd2304b62de45cda832c4e63a831ce9e634fab830d40d0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad21020100000000000000104b3d784f0ae26bf3268fb7342a99fcbb1ea61068e03337df050ef2e0895374010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e0100000000000000bae8e68bc8f1b66fe3229ee72d77137b394c6b7dfbf55e424f9d2c82d5c99600010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc24010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e01000000000000001c103b038f0515bb77061128200e1f117a531cb4474cf5f9430535345f54196701000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c2801000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b3040100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e21010000000000000096e0b71982f3e7ba6ab06d28dfbf803caf4ac51b7633bee848f4f3fadc0dac480100000000000000068245d8a483bdbd4e9d88b49e17a651ec168f25e6851fc52c2e36a516031d5e0100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000dc1d6d9b878558829a87267a578e1d044b2033888074dcc3a9fcd69cd5e60d3e0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b01000000000000007e0da5500e4e91faec6b7c3763c52058a7a9350be3009f2fe00a8e3bf0c59e790100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a1843220100000000000000389a3d1a5e1e8099f5b05213b5e20bf7f80c50e945831f1309f1d0623dc514e60100000000000000040000000000000002ffb5d0e61bb7150459291768cdad47428dce5d980d4975c4e1e21ad0b43a059fe4563001019d20000000000000739efe10000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000c681c1acaa82eddba6e394ddc9a2fd1af34418448d544c34966a31c837667f280100000000000000ba395fcb33327501109ed40712c7a372d25bf3339edfabe2a1964fb7b5d4d82401000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e010000000000000026db7c5786fddc15f7e96905024905d877537451ed444cb97d3786361a59f64b0100000000000000c67b1b3084dc3eb2cc7a3cc4f742defc21b733e787737cbaf3b146a052633e0f01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000a6f10752adf745ad55866031836194ad027ed8d6710d9853ef62982bcf45fd0e010000000000000078c35105ea4cd9d6ea0ba91b2c19e78f60931bef5918c1bd2e14259229e7c330010000000000000006d2846642c835b0fb1ff1ef908449376aa8e7c0f3352e55da9a1e97e9528b230100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec32654010000000000000000b84e6e296de1009aeca95ee09bc5173aec6e91b1145b247d69e47758878972010000000000000090d25f2368ee57fb5c100140b7507d5831fb035e7632c53b532b65e6d14ba8480100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a0100000000000000a42289d68c963358f3c450a850242bb53121e73e17f0e2ea2b93327446bea33c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc35310010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f010000000000000024532b17fc5fb786660c52aeb03150799165dd05e88ce359189189a4b771f51e01000000000000008610e1f00a1eba67d13225867c1f2972e60604e49bea7e5c1b10b29d4841b84a0100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b0100000000000000acef6dc8da16677955c38451be5a1b369fdc3c20bc249a1aec917276dfc2da580100000000000000c49cfd152ce3ac1fa142b3b6e720cb173eb7f43c82f021418253a070036f870c01000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000b89cbc83a386d6f5d4fed93289ee50fdf69d77369ca0c9a8b962554e3fc0d37e01000000000000009237113cf97fee5fafbeb82de593f6125e9c498bd59f0369625f46b326c7d9170100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f0678771701000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f510100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e010000000000000088f9a16886165d00612032cb1b36669ad62b7325536f499191e711134c71b6070100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f010000000000000032636c64cae326ea37dfa4ddad688feb9829ada7a7d580a91ce03a50a673d01c01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c560100000000000000c65c0a74887e9fe5cc56696fac7e7f5f1cd4a68f9661c8384b300bcdfbe67a1801000000000000003690e6ef639f685849ed93a6386d1fccf026c3fb64520940aa46af97f929e112010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e70210100000000000000ee82f2670e36b9ad136ae1ab1607c35f3b49a8c93b86802c06df3ca62a2e3561010000000000000024a0c6db2090170748a7bae71b6f77b5dcc14c6acc5c58e8de78d317ccafe14401000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000e41b3ecad757b0a5ecbc6b29691681df25b3d2b5f1ea325b648e607a5d76cf0801000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b0100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c39070100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d707600501000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb550100000000000000220d3f26072ad42aa5ca04b7253284d185f8bf95650faa170cbda8d7a47ea84a01000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c01000000000000007480edf84ab569e559dccc99b87ecb9ae9db670b45a259b7f6e618b063e43113010000000000000020bedd48a5965e2fc0e221bd164deecdee849eb69cb8dc63a37df80b50a3093b010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e5101000000000000004628f93047462b43ec0886f2c7d7318ddad1764fd32af4f32ef0b2dcfa4b297a010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000003635c55546f19bfe62d84a220c4396b1c9d71a1acdb2da917a82f0c1415a2b020100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa7401000000000000007c4b93d862704aad434ab3dc2cbef824df738c5dbe1ba7b34daa38b2aabf7c36010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000008c64cd873a53fec10c4624239ce35d31d4422e32a109605a162fcbf632427733010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000da98e4363908fa4d7980fe5574ceeac74fae49bf77b3a191654c7731214a565e0100000000000000ae2e94f092fbcfe263519f950b5ade09c474258a4e0d5e62570d02b3f71d85480100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a0100000000000000b2518044cc31062ee50fa81cb6983f314291a0300865fa5cfe149829c5050d24010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a5201000000000000004e8cc21504fda961cf1cfe78e651d033b10f8ab1a4a0c757bd4848a7f2827f0601000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000a6cd7eca570e90e2efeeda8f1c09480884a073c66fc7c41b2464e11822b12f0c0100000000000000944ad19383a9ae136f4f11c15687923b9b21319efab021336a3e8f2bd5b5ca20010000000000000068508b2ca3e01d7c8d79d99f1bb06a93058d14f1061d5fed4df13d4bc30aa557010000000000000074f02ed037d28c883df643034a596e4d2a97a23782ee8483c9ae3429ede7e7090100000000000000b045bf0235bbe708e4d6918758650c9c7f9ab4d638e4a841807ed7c82ff7f63a01000000000000005c252543704920d6bea67453cdd61b464b001badf73a3ea3b9e9fb35b224947201000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b3515010000000000000004734733edcd9cf662389208fb8ccb5f274a7db8187ccc53dc84250f8599d54d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b010000000000000010fee28789d45569ac0c95b7287fc7c5f087d93516cbd06e3c074a392d86da300100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e6380100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb190100000000000000b071e9d6b444a555e034ecdc4d04f2528cc36b347b231b33388564a40fd32b2c0100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000f894d159aa4b63402119985e2243e77fc35787fb086867659412c8c6918b2a670100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f61001000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c8400100000000000000c60a9f5f89ea3a56499bcd39bac7e038c25f5b7720d873fdc12b68d2531eb650010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000cef0feb2602582b96fec882181d34bd5504645c544c983b1a962188239eed90a0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000024190e384934261c444897054262813c65a73aaf371806db97762e995e5b350e0100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f76010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000022a66dd6397c2631df509db3482baac28b546729e6ce965472a9ba2e648ccc74010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a2520100000000000000767cb742c94b22fff80da70a4ea77069aecde7ded53fbf5d957b01196924cd2d0100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea840010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e66010000000000000016f34c9e6687012c42f9c02de75b9499849fe771f2ad2e666f965dc6627735540100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd0401000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000076fa252aeca5b108fe76ce12e395ed8105d5c98e4abae38bfc7cb4fbd4d43d5501000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000fa30595578d5e253a0a3701616665cb205fc02eb560c023454c280bfc6cd8d090100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000c670e2b0f864f126be43807610aab3295cb4ed6a684d95de331d700f74e2985e0100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d8066640100000000000000742c0a1ea78a09c7454b48897bfde87bf4959b89c898623c8eeace7af714147d01000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a52401000000000000004a1069d2203a75cd1078c39de35c16a6c4c12acbad34f1cba8efc065f80398610100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e176010000000000000062c6c1f6f2478ee092c958842ac4351973bfeb49f55e33b8415ac0296a967b5f01000000000000008a6dbf87f769167b4eb982f63b946f96a1f223b6a6f2789183fec09581b8e906010000000000000056927fdc8bff2063e108fe1b05bbde2f6219bda7d8663fafcf3d2976c721535901000000000000009a64daca74d14dab93385e52ca70940732a8d45ae4b853ce156c3eeca06f0c5f0100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c230100000000000000b2ddb9eab0545b9ac7a46e37d6fc4605c34227d848416bd3637da7156efe612601000000000000001a15acd9aec8d1dd06c7b6a46be298c3fc2ecd51be6724a63da4da286e306f72010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e7630100000000000000140fbeeabfb02dede7214a17c2cf78279d076c80d962431f35d1105c87b8d95501000000000000007cb1f225b90c00f426c33ac4338eeb2dae6467b8a9da5c1556e6588c12ca977b0100000000000000b261a66b9bae17b65e7f6a88d65efb4519925d6c418c9e2ba17bfdbf684b776301000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c491420100000000000000ce60d2c987bbeeaceff8463484b717ce80cbcf3d8f8b2102e95effc88000d95d01000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a0100000000000000c686fbbc968476537924f90aaa4993eef8314685d150228c462f8ae4e5e1e57f01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b2001000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a77480100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000002001d47fbff7291a50650047b27cc47f1d22a0bdfbbfb0b8b7a6e8bbf350bf620100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000003491cc113ef8fe1165bb10e65cbb461955f92f8f0d82f2dcfe6664430dab853601000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000005e0fa84f762f7d6e4c4b0c18a86e1b7da6cb4fe7dfcf6b5c0056a7ccd8eb201401000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe0837215600100000000000000c280e82e46ecabc4d68169e292c59cef96432f25fe849b8a147db5ca0ce7e17b010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000006ca32996225021dadb0b3f22460db6ce243faa3a0df7b33ef28e5fbcb9cf6f2f01000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000f0c0cc64f8973ebc2322273e684b4f73f412503f124c130be0be1589718cdd780100000000000000322dcdf3a5f50091af8b876983da0e0e98e358339e6033cdb865cd64995f86130100000000000000b63f9ab3a147d76614bfb688751f79fb9a120d40af7ba3bb123c1957b91a411d010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000003213885ba6fd707b0716aeaad959cd824ab2f854e55963d9e69af006d194d51f0100000000000000fa1b0afc9ce9e9742c4825890f6d93bb87bd199e55e86ce66ba7c34ce43e273e01000000000000008013bf5a25c703e64dc4ae7e1248c0f2c7abad9e43672d82611d10974019985601000000000000007075de5f3cae26e005560440e9cc633c9fe8d7143b1fb8dc67e0d1ed7871e77d0100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f01000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e670100000000000000d23c53a531e356646133db73065cd83999693a5bdfc05931238434f5b031522f01000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de32010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b0100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a5003010000000000000092cca18f264bdcfc19e5c01515ea9d61a0bf0b4e46b2bcae372a428b9dc35e390100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d01000000000000000469db5710f30dc9ed7411417170efd62ce8bbe36ccab6df758a94aa7b7f720b010000000000000008e80cc5ada5e557a1cea3658402bc83f9892b5c4e112b6e157e6e7d3663c47b01000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf460100000000000000ea82745d9978e47fc6bb25fc01383aad42aeee65662b6af304474f0e4101b06f010000000000000072f2ff3d21f4126e217f10f9d9bd18069c12eaab6922d073dd5241ac718e91200100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b010000000000000096ef8b525c38b9a74a3014bd99979230dab2f20221e8c7d1db50c7a61a02e97e01000000000000001827754b7465edb9bf4ce981bdd3a33057f9450fc895e39654dbd51c3ab9835a01000000000000008c45a06f479923e10cc400ae1600234f85906e26195bde9023350efaf0bc622c01000000000000006053f4e41a4db1dd6ddcd2304b62de45cda832c4e63a831ce9e634fab830d40d0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad21020100000000000000104b3d784f0ae26bf3268fb7342a99fcbb1ea61068e03337df050ef2e0895374010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e0100000000000000bae8e68bc8f1b66fe3229ee72d77137b394c6b7dfbf55e424f9d2c82d5c99600010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b01000000000000008ca0a873b2685dde8c4792832cabe50ea5a1f8a9a661a336689859319b66ba6201000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc24010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e01000000000000001c103b038f0515bb77061128200e1f117a531cb4474cf5f9430535345f54196701000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c2801000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b3040100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c0100000000000000e6a08fa6af54d2308215f4a62d554dd5b82deaec8ba22a2e6ebade7202ab9e21010000000000000096e0b71982f3e7ba6ab06d28dfbf803caf4ac51b7633bee848f4f3fadc0dac480100000000000000068245d8a483bdbd4e9d88b49e17a651ec168f25e6851fc52c2e36a516031d5e0100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000dc1d6d9b878558829a87267a578e1d044b2033888074dcc3a9fcd69cd5e60d3e0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b01000000000000007e0da5500e4e91faec6b7c3763c52058a7a9350be3009f2fe00a8e3bf0c59e790100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a18432201000000000000005d9f86b7514745bf41299f7fb39969966e4b7556bc3942a51c95052f523349390100000000000000040000000000000002", - "babeFinalizedBlockWeight": 4980440, - "finalizedBlockHeader": "0x08fc7d82be90fc446540dfc7fa84ea9654e4b325c371287af36fc682b35de5003662c1045aa42cc757a09c3e25503e09011b5d42bda04ae837625b94fc8b5707fc720a1e1542f33045f3c148004d12449a85939443875ed22a6b784d0b98bcd23e8d94700c0642414245b50103c5000000be96fe1000000000b23bf90dbb77221a32ecce7d972f2329400d1f1e63ad35dceeea1da85b70db291c684e274e48e2209af241ba33af42ffb5d146744563a182f2a9e5f19eed2807cc6de44d4cd6122378107fdc2e911e1dbb48ad8e3128c2704fffd376f897770a0442454546840339ee35d495af3a52ded5bf12f7d0199ba9a2ef6b7fad55d4a43b1d3d298b149c05424142450101a67b1f75fc1754699d7be1faae0fc2607c30bfbf391a214842ad1a28bf11d257d89dba14f111563675fe3f407e0b6068ca17e42da4e34311471673b233f0b680", - "grandpaAuthoritySet": "0xa5046f706506065685b322054d22e8a1f23ca9df75c32a88dda5214ad58b553b4cca01000000000000008a239af78d4659897af698b5670533fa6d215864be8c41e3a2fc4309f9f83dcb0100000000000000e2b9e72d9202e99526fa626d9a6651dfd7c1daec8fc6ba1130af96f7d21a42da010000000000000056b838dd2005e499be47ceef086df4ca9c5fbc1f81968391c31af062a8a8bef301000000000000004a3fc0fe1020c7f460c7bd23d0b657c03368552b2f0a12d80a1c406fd066e0db01000000000000009b992b5e9b99eb2cd3b2b648d6db81ed722a2feb4938d998b58dcb5d159fadfa0100000000000000aee9de3938173700b3e3f4fbf2b200ae296173a0854157f40de2598dd4cad8f10100000000000000243f110deac5efe8e963d794eb8706a1895ae1942523ab0fe9e1623515b7dea80100000000000000e8d7333e457fa740db924866152f31c3bfa6124c0367b0878a61aff2d5d6e27e0100000000000000426b2be4596a759a15028d84e08c5c56440e6cede68d088f47c671cc3387c3e6010000000000000070ba6e5985990ba1b1392713236f1b50df750f10f744cc6eb95fa7c5cfbc68760100000000000000d343862beda4cf485b4a3b7e9b62d3b7e6263b47f65a7c88c88f6e0f1350c7a50100000000000000116768c765c7ce5a5e895a5342d1f56f1a118901d8d36fe584bab325506f3b2801000000000000007d09df0a629a0eee12da27d7fad8b18833a7d1edc7c6c8b7701e425ae449fa820100000000000000e511d441d6d3c822cb276bb2a14b1c8071d9fe1995802383fb5dcf8a92edcfc20100000000000000be2235b9d9c9164f494dd688000fb569a37d5c47912ef99b9ebda9318d13345e010000000000000049c0902ee37b569482da5474a15458b5dee16102fbc09b45878bb05f4a717acf01000000000000000e0ac68072ac35b8f19f98d13385b6eb75cf6fd4d513d9a2abfe9711b19883bb01000000000000007818639057900f8fb58e3aa8180f6108c251884a9fcb8041ca645cf612bc1eda0100000000000000a8dbfc6cb88ac105e25b9dc7f11e883631824647cd4d0c18014bb6239627b2900100000000000000a5b094ae7c156592baa68ce18dab6368d5b665e9a0f07dfc5f54f58309e086c101000000000000005ce9f5dbcde6b3a066cfe93e07f0066fa7aa3ef8511d34dede8aa8f7cba5b68b010000000000000041ef4a31eb7dc1e01f4630604e1908e644d7cdee3f66a60f98d6d59605326f8b0100000000000000890f5c296681b8c23038b3d36a491ca9e0e7e809e6455b2bcd28a13700f81abb010000000000000008cc1d6c743da905511a39a6f0a68809a6bc32f8ac25e53bb2d6aca4f493fc9b0100000000000000acd71d4269b3ba2a9de822d494c4d841708e1519c08de41d7fc6153eaf48da8101000000000000007c1024f3b93e54cb1cdde0d2f685e2e16cadabe59e407ebc45eabb07efebca6101000000000000000f42866aa6927f1c5916a8a1a5a5cba2d88e1fff957d80df701617d93ee6407801000000000000005cba2c6f569da1edc3778308da406f266aa53140381dbb3f14f22909ba6e30040100000000000000dac2e90de824b109043f70818d53eabe05e79d518bda504e951d7f4056b0b2720100000000000000652f455eb3d30486151c716a4031bc02bd00254ef3e8290fd29f946d958a46b60100000000000000589fc35b132ef9d7ed9a6787a203e5a3a37f8cd6c775f47ac5e589d55d381a640100000000000000a34b3f8e84aa86be3b47260f67720030795fc96379e5b31cc6c87c2f4d1cc3e001000000000000007977808620ade75f3efeb26b0926229e0817c6163399f1d48f39ece8159c9ec20100000000000000dccafad8bba5affbc80095564afc9376881907073a060979fabbb962bef08d560100000000000000cba3e016511b2fea3ba7738f807f31d6dc0679b877910dff84cf12bc357105d30100000000000000aa3be8112cdf851411fe9e00fe9ef0a6b58217326ba7c1ab7ed9ce8a34620b250100000000000000c1c1ff5f66fefb5c0849e3b2333411d1f7e9dd4888600e334e7a33623f15fa360100000000000000fe240e80ff8a48a77947b394979cf361017cd906ddaab637d72cf72e729d79bf01000000000000002f40f2660559a4472aa7d2b5dac22c8925b9baeaec9fa2463cef2a77eb9d3a1b0100000000000000fa2c21f1a03638d4cb35202102240c2b85f5667924d5838cc503721117049da601000000000000008aabd4f6d7ecec7a749c83fc7be33f3b4818cca6f93a4927b4964900df9454e50100000000000000fcc0d954c7d519851e0094cd9a015b4789022a37091e3a04791d0731bd85f0d301000000000000003948bfd09bbbc2fe6ac5dfe53146e32df50828eecf7b2b18cdcff8dc385cbd750100000000000000a2a4af2a11ae7ba812fcc32845583d0354a0f2ffb1271a53c9a976a0f47fff4401000000000000002385953f1ac49461b9c243159d9668b26e7322e19fff7bc18d90634f0f767ce8010000000000000058e304af91397247f704ce95d60845629aa59a50fba1c13896bb2300708db47201000000000000008663371a5899d5e7a8bc99b9a6ce24c8c3f5f1149c1e70accf9560405c1a5bf201000000000000003d28789c6d574f3aa6d14360471901c5bf8255d072c2209fa22ac773bd32e5bf010000000000000041763df8284ae8248ee0f649982ffc7d4f613e07c7bb83cd554aca5dcf8f56250100000000000000cc0c6a91c7971438b621cd9a3bd37a67f52ec4093336585d1e2c73416195e28a010000000000000094040fd277c75d7227bf8d55973060bde3809b3b7d6ec79602f19cdf68e775cc0100000000000000de52bfa88c4a76bb22fbebb0f078dfcc5a327034e0044e8f8034f2a96e7adfef0100000000000000bf3fd3d4065b306638662c3e789d830a63d9b343cef5f863d346058387844b58010000000000000005197187ac7eb8d0a3cfadd32f1a7fb662e7e4a16ea718af3f1e4437b865205b0100000000000000c84074bb67af84cdf84b9df1dadc1188cd75709a8d11bba65f2835d76f38c4730100000000000000aaecb94cc62ac90656976daa8955353e0ff22fcabd55715903be2f958988bc070100000000000000b98c920666586f392d129d480e78a965764ac82de45e691589b3aab7831a7f020100000000000000cb92ffeace78dbafe6fbf275741b4b38657fb81590712aa0bca7877931f6ad39010000000000000034a18d21097f479eecbe51b91c522a798582caafc787134bab6888854742406e010000000000000027791275ae7d4735aa45e70210663067f7d268aa57126a26044c8f6d8572a7d80100000000000000f7c9f4bc8669969246cfb748ac6996db6cd4c1fc634d981a1093b2c3d7a2eadf0100000000000000b0b60d160bed8c1484f5359eb5282e523c47daaf880cb2d32edf97f633aeffd10100000000000000106ea6714f4bd7ecc914d6b6696f031f4d04a74afc55051068d3c44edfc6ecbc0100000000000000f001e2e99b378fa4f2d1a50b28c3fcefcd7da3a66314af1280fb7f9cb429dd380100000000000000ffd82ddc49373448bed6feb0032744e20068f4e21adc4cb6d2cbf05ce73f4ce40100000000000000507b0289bfb2f55c7a62ec3c3298690909013c916dd5885b05b330fdc0caf1270100000000000000c8185ca8ae6330a1e03490e132163adf517f76402ecac6881a51c8a14ed62f940100000000000000c49e3cd2c701bb845963c2870dcca12ed070c3f67ffc20144327a93aa6e896ec010000000000000081b1fce3ee9e31723f1023eaa9f8793e8663e72c50fbb0fbcea9bc78bacc491b01000000000000002dad5b2212ee688f2eeb9ca1fb6a90574f006dc1c6680ac3a8523363a248940b01000000000000004bb953c285fc6de7ef27baf835e8d905e60d86fb1bca0e52af8323e9d1ff219d010000000000000050f9fd6c0623020debb7843bcb832ee1d80db9b156d8e6083ccebd434fe979470100000000000000b8183b905f28b87c68c2d5b2f39f009f2ee22b47235f6c6d6cf6e63121b490300100000000000000b7c13f1239888cda5c8e6ac9ea10675df17633368906e66a487f91ddd3268ca601000000000000002cd51e09c3197e04155b78f3d97742ceffface390dc46f81f2613a94b2e483fd0100000000000000affb713ecdae328aa4436756f6a3e8add6b274d5ef1cc19d7aa69ab82c80e472010000000000000086cddc46c9a3a42c3821183d597e76872f1d4904b84a92e8160ab4e0fb4d39a8010000000000000052912b3dfd0ccacd00586b97f1abe32431a2f6fa9c2b3bb17837a1ecde61728001000000000000008a2b50acd1a4955fc814bf6720c7427902a6ce709f3a2d7c17c55b67f6f1c0630100000000000000ff80f99fcf0f4072402a4e522aecd41ff231c5b579d978d0383dda0407ee498b0100000000000000fd856413411b2e50cf1d32f8253c9bf7b055df259c42fc3a501ced6850173f8f01000000000000006565187c86eca2aaf37db6d59405535a5e6dd85e2743a07ebf50e55c2b7fbc890100000000000000aa674be249403288a8078e209231e764e3679f2f66a1070ea5d9b5b420fc53ab0100000000000000d1c146d2429a5a827660008721c7a880e71f44feaa3dc75524c1a9281bac48cd01000000000000005d2b07941a21adb6ba52298c2f0b0bdb6023e4a1713018762a5f61973b2fd1e80100000000000000e4b2cffd0b9cacfc500050b27ecae3c55b9b51bd9a416d62605118c8ad4fb09f0100000000000000f42c2e2a4157d51d22d5997dea1342f65e1882e207fd0e64e8e5d44330857eef0100000000000000f6d74de7b39455519a5d6480c8f12c93fc7a4cfc9af39154fc60857a39ad888b0100000000000000c8be78d05f652edd0a64a5865455de36d0fadb0d91c470fd344f8de23c8a6b9c01000000000000006ad5224d5c8f7fb3ae15dcb3766c0956ca627a6c91e93c4e770a2908e8f590150100000000000000f5fef7a87c9f3917fd28640907ce59ad26f33e41baa25d8ead8033ae0b944d7901000000000000005d0124063ede3e49f037df33948477235e5a58f93f8b98bf7203f25e11d4f0b4010000000000000049bfee2608fe8c9d280c80fe2e7e50d15980deeb1d29a2edc7507d17b319e7760100000000000000be95095d93298171c6fb8a1847adfa173d127e13f53482dcb694f891d68f0c58010000000000000085b714accac0654ba57fac59b626dd35802269d2c1d995cea7c335cb05a88f7f0100000000000000098e7f6085499cc37621458acc5a44dd928202482d456fed047f76a7edf1c08a01000000000000009c11e35911f023df6e4d218e53412ab4e4a20c17961d63ba381c913b51f394c001000000000000007448b6f6db7cfffd8650a1f3f08ddad1e114321ea770c9cfe6154882f586edb50100000000000000eea0e8d1a0aae5e5cd38dda0e172b49f8ea02287fd7d2ca79ffcdf6e593a2831010000000000000037483029302a84623f0a8db165fbed905b0a4fc25e7cfb56e975a0e98336a59b010000000000000053b5918f72e73f92f32b578d1b602f0cc554d98bee8c4e131ef0ac7a63399fb40100000000000000178838772f4eb26785673a57c8365e98a21ede2ed8d1ca3aeccbf7ef2631da110100000000000000587473ac474bbd8c99d14bec88d614426944b5c84dbf2912abac7610741560ff01000000000000001935d43843c66ecf76a9f4c4229de9ed7c172f52aa53d1a279f2856a736661b80100000000000000e1d3d955e446b13a28abadadd28971475035b3f25fcd414111bde54b53a3faab0100000000000000501c3978722a089f663f75c7865626a43d13ce19bd924583e43a46720584ed140100000000000000cdeaed45451971dcdcf886df977f31b3c004c497037d9940bcbbf2bd6dd2e3340100000000000000cc5dc1c5155dfcf43ee8dc4443292e966cb3226aea4fdf88e73daa259d66b673010000000000000008cb5d0ff7f138698c9fb80a1383155cff65ec7e127c5b3614e2e17963969f100100000000000000a7ae34bd517afa9f7563b73483435a14c56d9901a78f9459566355ec60a7cc8501000000000000006727561447ed474ff4e15645b952a37fa5008d4e694d4853bb55594fa34c4f340100000000000000c05f72a55f91f613b2da541ae27eb6053e80f267c906c135a4ebd848ecfb49db0100000000000000ec295fb809e22c332aa36a57afe05f2c093b2d13e52b0971d8265c5514e4e9690100000000000000a47880b0265ec6d2348a47b2df5b8cffd9c3221c1c9ed0e623d68641f4172c060100000000000000efb5f1e4c4ba37f8c159d452d897c607a58518b8355a8454620b3e3ccc3271230100000000000000099a9eb71f9cb1b7d15eae384790b4ec35045a19acea1730ba62f3e7caf31e8b0100000000000000d34560b879f8f4dd8d2fbd4f6d51b9b6f41b76656860646fcef4e1498859a190010000000000000061914b4dba0a1e42e692016cb74943266b257339008ffed4644231a2b48df21a0100000000000000a703a37bd5d93619bfb6ad72c24840b396b2ddb8700db2e1d372a82363ec7d580100000000000000a892342c56149812a43e98c82b6a3dfee7eff384d9b6d832002ea63838f64900010000000000000081bbaa3313b09e3b0ea2817c3e968a33587ec8928539c3f3a6d0e65644612f4901000000000000003d884e3f58913c10c26d8af2a095e231079a3a0b69f775052f7173ff1c3ace2e0100000000000000c13b603b5fe774d98e59c26fac03f8096ccc42c57d0cbc6a443b4f07a3c077920100000000000000be6b59cb464fadec4e0b22a9f12857ba5cf7a14c4f9551439d36305d582dd7fb0100000000000000f916634f9fd7e54374e30ac6b722ad1793c13cb2d5f2ad38769eaca2f79d414b01000000000000007ba967a2dae0d8839cf44710591db994d18e53b25ec6d0f861da0037c4a4366a0100000000000000222ee6c6a6c62d56cadb4eaad5104d595fe962fbbdd551c81562d3b509212907010000000000000055ca63358082034ddaf76b75f41a396081dd4f39a61eff13f7575e506e1033560100000000000000faa7af0f76a660a8c8c89fabf7290f2938798fcf0d522902d5d8b1d3a177e05d01000000000000000aadf1b2009026f8f5dd75d532e91dc756fd47572aa0f3c15d26790e6d6b2f27010000000000000050e16d897010823670148ef157d77933bc1721d82c45e80eb73b46b12b5daab601000000000000000228d7fc42b304906518cbd91d73a5384c4893de6cbfe1e7346999df642d3d0001000000000000004f950be5bf61958a0ae6e6a036b85b33ba838de8bd5508b558cbe2602d341168010000000000000082e6b6bf1f275c59fbde0dad91393ae690d5e644d11d23898a9ccfdda025920a010000000000000074b60dfb12745236ba9dc8f925efa21482b50c870c567638ba3240a05fe363d90100000000000000d761043f405069ac01285f1ff258450aac675f08d906b1ae0a1ce54eabcb36d901000000000000000dfbc1b5757e1f0ba348f8af64fb631aaff86cd21fa0529e0bb1fbab2508792601000000000000004abc35969775726127370e3bef6da0c45c5e281ed03b11bc32eb5d736d197e380100000000000000d791b58285e2c4f17c82a518e099812d2a3f63e1090f1cb2576e2c7695ee24970100000000000000de74612da9080d47be35bf4ded2094e23c1de14477114ddcd7b76b815456ec0c0100000000000000d3b3d9703a265a51a137b9de348587c645a168981ef3e01c9dc482856751b8ef010000000000000003dd543dddd6ad00137ddf94a218bfa19d2f08b4365d696765dc25deef76598b0100000000000000cfb9f7f1fcf903a51af729ed1647aee928630e148990309f9dc9f3b14b114b7601000000000000005216ff912251cd2bcf9db256b3927e737cf909e4b53a375586dad21bb7b907ef0100000000000000d14a779884de1b2fbf079b8e47e8c0edb1c29e282996899a4eab5aaf1f4f41130100000000000000b5b64e522ece2a1a3325f95082e33bbf5832e6116d378ac0f437b7b49727292401000000000000004bf6037c3820cb7468601051701164948b7f7cbbe1ac8cad97e809c76170dddf010000000000000061f8830d235dc8b50288a606b3570c8335eefac47874c26a45f170cd29a5dd3301000000000000001ec0811cbe4f2ea1e5a714d3ba08c6d7fdec138bcc6406da3c6cd32f1686616d010000000000000025ebbb2a00126545bbedf00318a78b6e61a0b52c81e30231ff45bd32e311472f01000000000000008b7baa89dbac95969a0042fa876a37eaccfcecd3591c4d7ed0e8051aea814cfa01000000000000004715211e268489d1eeccfbd8a5e67235244322c17127226184448741ae332ba10100000000000000dc5289899ba3e91edf93781843f9abbc99b3ae0beb940c385edf706acdf0d2540100000000000000ddac76c2a61c9aef4a9b3247aa0953187533f346466f02840235662440d2945c0100000000000000055c25dcc9cf8a08ad007ed9c8afb0ba53cebd129a20f194d272535ca9fa06490100000000000000cc8db7467349129a20ab4ba7e705044216651c0eba9d39f1054849edbcd677af01000000000000004df6e4d7da2c11ddb9153c714699f9ab625bbcd5e8e38f1cdeee567dc04abc610100000000000000982d9e3cc8ef3f8d99638b6f9df32c82356e1cd88f123d1e586a604d1d4b0cb401000000000000009cfeed14dd2f96550a0e7edebd9c9a8c8b1d8f7efdd1abca01987654239f3c860100000000000000736925c31654df870fbc29437c9b2a488ac3262e5d80798534ad00c43a61e5470100000000000000e08ce24248f3f8c0cdd313a5d46e6d491fccf6711788b6aca2de82f6700ced5101000000000000008404cabeb0674765bb77af690fa838ba28fa2045d602994a89f07680f4851c83010000000000000006b9e740c0a0e1f8fd31717438d5918ed8680eaccb70fdc9511931ce0d164ae50100000000000000b8cf76a8082d518016ea5588be57b64e156ed23b0f72248975522c23d15ef16101000000000000002565e04c6e0b665fac87f8238bee74837f8f621ed63409f3838d263603400a980100000000000000373b26b330a41547971874dd81c2cbbf8b7e3eda05b861c57205ad7e8c15bbcf0100000000000000362589a96b0adb6b0d48e51e0870986ff75719ac8f348fc7b906dabf616531090100000000000000620c78305072857b43dadced80ebc057dbfc82b58c14c7b63372ef021408676501000000000000001de97cc443740a0e0e0fdf166ef4515c387fec450fc4d4e141cebb41e1b7f8e90100000000000000546ce2099b3863d2d75324d5866bfd5324d8ee4701a99dd53528f8a8c898ca4801000000000000004dc2e72680dbf0156818114fa34d3591f8e6948df25a128e191190c66f6ac35301000000000000001ebe41ca4cd399901ffe5f6f52642630820500e4a96cbef4c80c560cae38d2c601000000000000005d50d6099c7c88f367568fa473b44785acccd030251627cb371de16e5fa704260100000000000000301b983e5e1320b7c9ff0f2525121b9f3007f68c273ba8ff662b7244f1f95f210100000000000000ef5b937d1eb14d07785430ca8efb57cb965060fac808b9a25ab9d4ab52cf0ad10100000000000000b1f748c87b12edf7242b4719cfe68e6761acaa4329beee538d6ff740941d3cd3010000000000000014a3f3f45d0bc1352f8665d1e24cb13d72d95b48c595913cc985dcf58e63c123010000000000000072341ca1eb3a0fd4e790318b51ace114315573d5355c9d5336e39382ba0642560100000000000000a79cd2241bd68004641baac25c1900da3a9e6d83101aea3ef2a58d78c657272f010000000000000028139ae721b771cf57d5afa58579d8dc0f04f04c1e1b631cac64a9fdfaf8b5250100000000000000b66e24ea84d5e02a7b2b58e20bbf17a0f2a19c4654bf8b07669ba3b9fc4a468101000000000000003c1dcee818434058b7de26ee874ade21bd1149185d6dcba1f67048b931ec3dda01000000000000000d8e0ceb31d11634ff50f20c90d57239a9307602e221baa190c784b144a7eb980100000000000000d1f73fb97dc0b0c3244c8d879f134dc90f614eb30505e8f27eff58e558d221f5010000000000000015b49bdd8cb8b9110a45bd1985746655b330829e1dbe7580ade2fab6531799d301000000000000000428e3ccdba17d779ffba05c9ec7a6264187d13bf89b6009e97200474ad3439701000000000000004c43a374e6b3e6f7d6c5a6b8518ae0d0d232a1c46d63af8fbc800045a14cbe930100000000000000c34f62968a87b2e4a9340a75004029dff5777a020f60fb287f08038491881f220100000000000000f54bb82d58c665ce3289b8765c40e60d84f74da663c164c38e16784d5c142b2c0100000000000000607737116e62ba11852c68515933afb8165f3174d594eef6d01dd7eaddb60ec30100000000000000dea32ed7afbb5b31cb45b6e5daff40fb33e80042994d8d6527ee262e32fb2131010000000000000065dc4c53802befd2acfc3d6d3f66eeb84947e5c15fc7a2165a375352a4faace101000000000000007c39d28f80a16bf0cedb70e36c5ac9063dd9b513c5fbbe2c2222389f428921340100000000000000bdee8597e248688fddc627ad9c95cbebf7d3b5f248b9a742aa2d8e761fa365050100000000000000a128a73c5eaa1803618a75bc368c38e4c5cd40999cb72d615b8af1d30cb8cf1d010000000000000020270811c3dc453f37b27d958ef7ad7dd4c7f217c83f94bd0ecd84c60018a86601000000000000006bed5c36442ab221e4d825e3ef41e30bddd8bb3847153706d69d851e186092c1010000000000000020869a63e7a343094ad0b4ffaa3d83344ffec8c7fb9b177008f78d17eda7dcbf0100000000000000f549e094ce2c081069b7a39b67a13a00899882b79ed9ce8c63b2599cbb0900950100000000000000d64083c00178b8dd224afade9792fed8076031bdfe9efc5b8128e6372a9261e201000000000000001c6842f07fb07b318a8d00ce6258844374f8e894853ae5fd4a85c867d3fc32e30100000000000000417e120dbfd0297d59458b48407b62570987f1e907dd6dfa9a20bfe64eb489d80100000000000000443bd12fcb944a0e19b2f76ddd066a713a99d2dd3530a5f39275300d11ac96590100000000000000be724139e9bdd099b70f7edab7d1acf0d05fa1a4ca212f5e2958d31f4272dcda0100000000000000134cf4720486824c6a27fa7892c8d82e805653ba1d98480267ec284a76b792c20100000000000000f701f07489e11959ace47ce003808f4248a6c64b35f51f0551f4a69aa0572e2f0100000000000000c2eb94269c5e5d2ab9a1a300387358679640763b053aca99ba5c1c9083ee717f0100000000000000316bafdefb60951da2738d6c9c2ef1866d139b34b5eab6944d6bae754dd3fb110100000000000000b65475766e6229c87ff34263f5ca58525ab133962bc599ca0eab096ff296f4e60100000000000000ebb1834a568ea7653bc66f394937a0aa4f2f617118d2161e2c11c0d7d2febb9d0100000000000000b6d7ac98d6667fe8f4a186ef12a66b017df05a54e11b45d3f2967cb3d6b6827f010000000000000042f47dad5949be7b7b8f81faaec17b1b53465b01b9f8f81e6a45f2fc74e12daf01000000000000007a1291795805dbe300425311ae50ed698450b1912b62e5b5a3264c68bfa970760100000000000000826fea075408d2c9331974dad61f4fedb0a7a306711c696997bc63b4b0e73e4c0100000000000000e0df5b2f299314d2d419b46d15c3c8a739182d91c3d4b98cd16c013c3a25c04b01000000000000000150276c1b3d28d42630801c1d4a738ae723887d9286e40ba48d10b0752f7dcc010000000000000098a6defcfeb3dfca36ec46eb373734627a2c395cdd2d886046a11788ed6467af0100000000000000853ba986f8785e8fc1a2ae2fb86f17cc91886d931182ccb8d148379a35cbf02701000000000000009bbc024bfe4f072b94735afda064dc3c7da2b4bc0c50cfad44722543583a372e010000000000000086dee2a2c1977cb6ff99dde8fc5b0cb10dcac44b50b19b80f8252899b091c84b0100000000000000496826b538d97906e14d417b48598d7d591a483ab5f4c6786cd0b96239c2f4cf0100000000000000c4b54db8b5dc6346d0367c6c69a191cc826a90643d93c6230763a9e92806a33f0100000000000000c7009be830fe78c42f12f0753923131d16300bac230650001636b6a546cf0aa3010000000000000045f84b0909eb669ce3d2099a935e269d6ebb091f1f8055fbfcf07d6efe7f43ab0100000000000000425d9edc1cc5cf795f0caee680a379215cb77d71c69bfe41296df63cb2ac34430100000000000000ed3f97f83ee7799c4aeba9f40bd18134c862c1a30875fc1e038cd27bae3a739a0100000000000000348e8bacc2d40191a6a00e137c745a422ff8fb03148d2ff9cad75efbb7a67014010000000000000066b964258b3239799608ad4ffde6214a7b04ab3e0fd889fc7eb078548b3518ec0100000000000000efb31c5039e45fda750af5d2ea31b3210a407b168adec8f98db1f3dbc4cd94380100000000000000525661070154e9eebb48a7befd2c03e125b218eadb27cb121786678c0f67e5d901000000000000003b88c653be781a322afaacf2a4774b4fe4d72c9837c7d3ac1ec848679c6a48f90100000000000000d227434a77cd7b7127c039eb9995aeb025a242c36ca7116372c7c8fe5bc921b50100000000000000510a0c61dca3e1044d3540c08272054462c6353aac4dc06cda265753b126b38501000000000000005db4206baa8706a1b1de0ac7edacbd2a2c93452481808b8fe6c582265b57a60d0100000000000000761ce3eef4bd0d15601aef70728f54ca72a9859e90841c3d02d5060201671878010000000000000000132d9e682cf8d45ce8efd4bef165a26da5d1349ea1fe9f51abd6dc7622720201000000000000001262625cc59c0e4b7548904c31a02231a601305881a231d4dea45eec6cbbbdcc0100000000000000c3576342cbf99792896ee5329b04ff2eee2fc2bb6d53c5c03d52c8957ee793fb01000000000000006ad4bc289673029ab44f3045eb6fdd3589d05e0e5fd76ee017f650a662f898fb0100000000000000a82f563264d1892dd46873205d03c098d8b03f53e21c797839737e4e5f66a87e010000000000000059dadf17dc0f84c1c334e6a815a04bdfcd0988a3f3bcb713c66ae29e17276cc60100000000000000297dc7cf28b3d40a42c5e8faac876bf7227c670e6e031dd0e0537f4fb70e6fbe010000000000000043601ae31cf5b03cb49395dda13809f7398d8670ee4d2172b14a1ab05986ac3b0100000000000000e7f57bd0bc756f24574e3a77c90616adb393e9d4ffceb2c63df19f605cb6a0240100000000000000a5f788e86ee2d311357b7aa4a128f063fa4ee36958baf10304c10bde7421aa2c0100000000000000290321d793b7dcb12ad148c2438bb60821bd938b7e9164a0c3d0fc82987f8b6301000000000000002ef11bc5ce1e7b53f788ba01ba581b9171ef36449719ff3eb20973342a4a82850100000000000000ab45f730dd495f657b61b2777091fa8cd11b5a626bea2b514e5e61180210379701000000000000003bb30832d06cdd3e081afef0cf2b7770bfe81dc58081d1886443e4e4547da8a101000000000000002832b59000d2027d2bf57fdb40da04bd8aac1498923397517181cc487a92815201000000000000000cd7067f96a2d63fa72065302432f48690485fa5f47c9afab17123e0482785230100000000000000f6f23ae9bb4c269a5959d51f9173270ddefcc354b63de77b672bce58cabe60c801000000000000007a1df073f4a474faa4616f9a6f5d93cedf25716cbe8d05a08afafb570b6e6f9501000000000000002ada479e1fde7211de15900ed29035f6f07506cdbadc4c232aab96d62006b9de0100000000000000be223d49fdccd102646c9b0d62130fbc8e7f0324d55a3eabaaffb5ed1616795a010000000000000062a91ffda8611ffce3edeb628ea6d3b8b12e5b2448beda6da8334e77a9ecbdd7010000000000000071893ca83ebe6ee06c3eb10dcbfaf70d8267959f6159b4ca36929a69604cadbc0100000000000000dea69c3badff9b8d7571cb6c538cd099544da7460a19e1b8651c5c530a6dd53c01000000000000004ad600cc461daf6d287d5d2ff0791f74fd7c6aab5714ad50340187a7ce509ea9010000000000000005062bede97a45c6e1c6b593675ee07ce969fae45136cc2b2afc6e705a77f4700100000000000000dc6e03f650e4304ca8d1598dde8d4faf45891987bfc49ef785ace47c4c0b5573010000000000000026cdfb88461d7125f438c599e062799219b385bacca93f3cdbe5418c9d4d499301000000000000000f19c3ed807ad5f2b7546f5e6c5e9bb934835d54ed1f4f989540b86a2ca02b550100000000000000e4c1d1377894eee032e1a60dbac6252e23f35bbb43ce51d5f98652cfee58d5bf01000000000000000e7bc96895730726225e47e31c742fd44d3936f31ecd32658c694fc11df2522401000000000000000bf0e21672e2d888dfb361e7dac6bcfaeecd1de5192b6db710fd362d7378e431010000000000000081b197220d996795477a7f5929b629a3a669e43a59033ef1538a5b669e6238b30100000000000000b426ef68c50245a003dd068c5c086fc9012c08a7f9ec53fbf7df4318261c8c2c01000000000000004383e891024a29ed0fe106e7869c7e05ef8487ef13a6ac390076bf43456c6d450100000000000000e7931a825260ba7d4fdb5f4990d39a71e2a8b215a776ebf770102ca772f103a3010000000000000095fde7b91441fae9d2a6360d30228392519293be5e78cf3305667595cb15e566010000000000000096847258e5fdd261a8df1b3958366b29d28363aeb96a71c2b705e4c8864b97e10100000000000000e7eb7de26e0e24fd528fbbcecf837f26579784dfd4db512c9237e2811139738701000000000000009f677785cfbf44140bdf38770f3d8076f222aa1c9997842d89d580b0f256198f01000000000000009a0ea02dca493accceb975732f31c9d249d4c90ff1ca0bd86cbe00f1728146b401000000000000003adbd2d5abdb70ef56c2d8bd4a7c0d67882a1c2050a856937491e98496a496fe0100000000000000716a181407939b3ea68289e09265d3b9d8a8f21ba7d9f50d8ef8a86fa3c0fd0301000000000000004d960a5b5cfc68f32236a14f5e094ec24c9bd0f73df19086c27cff9a78fd5dbb01000000000000008e3d1c8c0261e193e87403c8959919ef035ba39175d3ba22f31190303601412e010000000000000094416582fe359e0a310da59bf93df8ff9665b89071d4977a9a9f3390b75c0c450100000000000000ac5230e4338aa51c44ab6a0fb903e6fd914fd029dab8f7ca447be54ceba749340100000000000000a76b32c8c28cce206ddf70ff3ad591ed01a0067f9f9baa77f9052ce938d359c701000000000000003a4bfd825ccd308def4a61bac80c579db42b02ea5f1a0768656a326e83a0dd8801000000000000007fab4769c41af85b9de8e784d3b1cda093fc0a8dffcdff21e914c62f131c77580100000000000000d2f1b3b5f7eb1b0d8328911d9ec920327d7a30729e80c1238f86dfe27c4fa3470100000000000000841584e602ab975c936fe7c2025fcea2b5a0061e839b1ad96528942b33d0974b0100000000000000e056900cabddb471de9e1846d7efdddd8b5ad400b02fc54b4402ba725c78bf9a010000000000000085b6321d0044ba1f9ed6baf255065c5d9947cd2fd6067f66dfddc74511fe583b0100000000000000daffd43670286cbddbf38953e6e33ba093f8c719e9fbf0a4aa76ff3ee97df307010000000000000098763eb72b3f7dbb7a793bd1d4367af5f072ff45a1a6eae0e002e1eaa24c5d550100000000000000d39f98bb0dd1dcda91cbe0104afc0ae7456cd77c8bb6630e2bb4c86db1cbb5b0010000000000000079f73931b31ce353119fb4063412e844b16cb3eb92e592ebd822a8c21303554801000000000000006d698963e0fa3c04ef2b32f638e0176e053cd021f6a49b55a4a4ebd4d5fbb11701000000000000002929dacc53614cea1848e7ba20fdeed7cb0bd81571aa72dfb63dfc84d3965d2b010000000000000031a46e639e57d1a11119b17f76617a35b3606d206fb5c3e87710f464f7a57de50100000000000000ed25d7114e2aef2f0e57dc2be1401a4994d8aaafb30223162634a512604a23660100000000000000600700000000000000018d58300100811d00000000000000002904050001000000000000002a0d050002000000000000002f16050003000000000000008e1f05000400000000000000ee28050005000000000000004d32050006000000000000009d3b05000700000000000000fd44050008000000000000005c4e05000900000000000000b75705000a00000000000000176105000b00000000000000766a05000c00000000000000d67305000d00000000000000357d05000e00000000000000958605000f00000000000000f58f0500100000000000000055990500110000000000000095a205001200000000000000d8ab050013000000000000000db50500140000000000000024da05001500000000000000aaec05001600000000000000f4f5050017000000000000003bff050018000000000000008b0806001900000000000000992406001a00000000000000f92d06001b000000000000000d4a06001c00000000000000685306001d00000000000000b65c06001e00000000000000f76506001f00000000000000308b060020000000000000007b940600210000000000000025a70600220000000000000033c3060023000000000000007fcc06002400000000000000c3d50600250000000000000011df060026000000000000005ae806002700000000000000a0f106002800000000000000410407002900000000000000880d07002a000000000000001b3c07002b00000000000000764507002c00000000000000357407002d00000000000000239907002e000000000000006fa207002f00000000000000c3ab070030000000000000006abe07003100000000000000bdc7070032000000000000000fd107003300000000000000b2e3070034000000000000000aed07003500000000000000971b080036000000000000009d24080037000000000000009c4008003800000000000000255308003900000000000000735c08003a000000000000000c6f08003b00000000000000048b08003c00000000000000589408003d00000000000000d3c208003e00000000000000e4de08003f000000000000003fe808004000000000000000f7fa08004100000000000000aa0d09004200000000000000153309004300000000000000fc6a090044000000000000003e74090045000000000000009a7d0900460000000000000000a30900470000000000000014db0900480000000000000020130a004900000000000000791c0a004a00000000000000364b0a004b0000000000000043830a004c00000000000000e5950a004d0000000000000045bb0a004e0000000000000059f30a004f000000000000000e060b005000000000000000812b0b005100000000000000dc340b005200000000000000ef500b005300000000000000a3630b005400000000000000b69b0b005500000000000000c7d30b005600000000000000dd0b0c005700000000000000f3430c005800000000000000087c0c00590000000000000052b30c005a0000000000000060eb0c005b00000000000000baf40c005c0000000000000072230d005d00000000000000805b0d005e000000000000007e930d005f000000000000007ccb0d00600000000000000076030e006100000000000000793b0e00620000000000000088730e00630000000000000092ab0e00640000000000000083e30e006500000000000000731b0f00660000000000000079530f006700000000000000748b0f0068000000000000001fc30f006900000000000000d0fa0f006a00000000000000633210006b00000000000000826a10006c0000000000000028a210006d0000000000000005b310006e0000000000000055d810006f000000000000004810110070000000000000006548110071000000000000008e8011007200000000000000bfb811007300000000000000bbf011007400000000000000e828120075000000000000001561120076000000000000003b991200770000000000000058d112007800000000000000770913007900000000000000944113007a00000000000000c07913007b00000000000000e7b113007c000000000000000cea13007d0000000000000067f313007e00000000000000d31814007f000000000000002e22140080000000000000008c2b14008100000000000000545a14008200000000000000ad63140083000000000000000e89140084000000000000006892140085000000000000008dca14008600000000000000b00215008700000000000000d03a15008800000000000000f3721500890000000000000015ab15008a000000000000003be315008b000000000000005d1b16008c00000000000000855316008d00000000000000b18b16008e00000000000000d3c316008f00000000000000e9fb16009000000000000000073417009100000000000000bf4617009200000000000000286c1700930000000000000029a41700940000000000000041dc17009500000000000000591418009600000000000000bf3918009700000000000000704c18009800000000000000948418009900000000000000f28d18009a00000000000000bcbc18009b00000000000000e4f418009c000000000000000b2d19009d000000000000002c6519009e00000000000000896e19009f00000000000000519d1900a00000000000000075d51900a100000000000000920d1a00a200000000000000ec161a00a300000000000000b6451a00a400000000000000887d1a00a50000000000000077b51a00a600000000000000cdbe1a00a70000000000000070ed1a00a80000000000000083091b00a9000000000000004e251b00aa00000000000000fe371b00ab00000000000000065d1b00ac000000000000005f661b00ad00000000000000bd6f1b00ae00000000000000de941b00af00000000000000fecc1b00b0000000000000001f041c00b1000000000000000c321c00b2000000000000002f3b1c00b3000000000000002e721c00b4000000000000000ca01c00b50000000000000044a91c00b60000000000000022e11c00b70000000000000044191d00b8000000000000000c481d00b9000000000000006b511d00ba000000000000008b891d00bb00000000000000a5c11d00bc0000000000000053f91d00bd00000000000000ff301e00be00000000000000054d1e00bf0000000000000002691e00c000000000000000d1a01e00c100000000000000c5d81e00c200000000000000cf101f00c30000000000000083481f00c400000000000000af801f00c500000000000000d0b81f00c600000000000000f0f01f00c7000000000000001b292000c80000000000000039612000c90000000000000054992000ca000000000000004fd12000cb000000000000004c092100cc00000000000000031c2100cd000000000000006d412100ce00000000000000cc4a2100cf0000000000000098792100d000000000000000c4b12100d100000000000000eee92100d20000000000000011222200d300000000000000325a2200d40000000000000055922200d50000000000000075ca2200d6000000000000008f022300d700000000000000b13a2300d800000000000000cd722300d90000000000000078852300da00000000000000ce8e2300db00000000000000bdaa2300dc00000000000000abe22300dd0000000000000012112400de00000000000000501a2400df0000000000000045512400e000000000000000a1882400e1000000000000005fc02400e20000000000000013f82400e30000000000000007302500e40000000000000013682500e500000000000000c37a2500e600000000000000a8962500e700000000000000fb9f2500e80000000000000000d82500e90000000000000019102600ea000000000000002b482600eb0000000000000028802600ec000000000000002eb82600ed0000000000000044d42600ee0000000000000058f02600ef00000000000000b3f92600f00000000000000065282700f10000000000000057602700f20000000000000064982700f3000000000000008dd02700f400000000000000a7ec2700f500000000000000b9082800f600000000000000e0402800f700000000000000f6782800f80000000000000019b12800f90000000000000040e92800fa000000000000006c212900fb00000000000000a0592900fc00000000000000107f2900fd00000000000000bc912900fe00000000000000eac92900ff00000000000000fd012a000001000000000000ff1d2a0001010000000000000c3a2a0002010000000000002b722a00030100000000000005aa2a000401000000000000fce12a0005010000000000004ceb2a000601000000000000e0fd2a000701000000000000c3192b000801000000000000be512b0009010000000000000a772b000a01000000000000ae892b000b01000000000000b0a52b000c01000000000000abc12b000d010000000000009bf92b000e0100000000000093312c000f0100000000000087692c00100100000000000075a12c00110100000000000074d92c00120100000000000089112d00130100000000000099492d001401000000000000b0812d001501000000000000c3b92d001601000000000000d1f12d001701000000000000d6292e001801000000000000e9612e001901000000000000ea992e001a01000000000000efd12e001b01000000000000f8092f001c01000000000000f0412f001d01000000000000e9792f001e0100000000000036832f001f01000000000000b2b12f002001000000000000a9cd2f00210100000000000094e92f0022010000000000007121300023010000000000003b5930002401000000000000089130002501000000000000599a30002601000000000000f6c830002701000000000000e30031002801000000000000c03831002901000000000000a17031002a01000000000000f27931002b010000000000007fa831002c010000000000005de031002d01000000000000aae931002e01000000000000441832002f01000000000000295032003001000000000000fe8732003101000000000000aa9a3200320100000000000010c0320033010000000000003af8320034010000000000005f303300350100000000000059683300360100000000000078a0330037010000000000009bd833003801000000000000cb1034003901000000000000f44834003a010000000000001c8134003b0100000000000044b934003c0100000000000055f134003d010000000000009dfa34003e01000000000000302935003f01000000000000c6573500400100000000000023613500410100000000000053993500420100000000000080d135004301000000000000560036004401000000000000b10936004501000000000000ce4136004601000000000000037a3600470100000000000031b2360048010000000000005fea360049010000000000007b2237004a01000000000000995a37004b01000000000000f56337004c01000000000000c69237004d01000000000000feca37004e01000000000000340338004f01000000000000683b380050010000000000009e7338005101000000000000c9ab38005201000000000000dcc7380053010000000000003cd138005401000000000000f8e338005501000000000000b0f6380056010000000000001c1c390057010000000000007a2539005801000000000000da2e39005901000000000000525439005a01000000000000878c39005b01000000000000bbc439005c01000000000000f3fc39005d0100000000000028353a005e010000000000005f6d3a005f0100000000000098a53a006001000000000000cedd3a0061010000000000000c163b006201000000000000404e3b00630100000000000019853b006401000000000000608e3b006501000000000000b8973b0066010000000000000fa13b006701000000000000a7b33b006801000000000000fabc3b00690100000000000049c63b006a010000000000009ccf3b006b01000000000000eed83b006c01000000000000c1f43b006d0100000000000014fe3b006e0100000000000066073c006f01000000000000b7103c0070010000000000009e2c3c007101000000000000ee353c00720100000000000094483c007301000000000000e0513c0074010000000000007c643c0075010000000000001d773c0076010000000000004b9c3c00770100000000000010d43c007801000000000000d80b3d0079010000000000001a153d007a0100000000000053433d007b01000000000000ea553d007c01000000000000225f3d007d0100000000000072683d007e01000000000000b4713d007f01000000000000fb7a3d0080010000000000007a8d3d008101000000000000b8963d00820100000000000006a03d00830100000000000088b23d008401000000000000c8bb3d0085010000000000000bc53d0086010000000000001dea3d008701000000000000e9053e008801000000000000b5213e0089010000000000003b343e008a01000000000000843d3e008b010000000000005e593e008c010000000000001f913e008d0100000000000065c83e008e010000000000006bed3e008f01000000000000a9f63e009001000000000000f6ff3e009101000000000000c1373f0092010000000000005c4a3f0093010000000000003b663f009401000000000000856f3f009501000000000000cf783f0096010000000000003ea73f009701000000000000ccde3f0098010000000000008516400099010000000000001e2940009a010000000000006e4e40009b01000000000000c35740009c010000000000009b8640009d01000000000000cebe40009e0100000000000001f740009f01000000000000372f4100a00100000000000097384100a10100000000000070674100a201000000000000a99f4100a30100000000000065b24100a401000000000000ddd74100a50100000000000096ea4100a6010000000000000b104200a70100000000000044484200a8010000000000009c514200a9010000000000003b804200aa0100000000000051b84200ab010000000000006fd44200ac010000000000005ef04200ad01000000000000b9f94200ae010000000000006a284300af0100000000000078604300b00100000000000077984300b101000000000000abd04300b20100000000000064e34300b30100000000000072ff4300b401000000000000d2084400b50100000000000008414400b6010000000000002e794400b7010000000000005eb14400b8010000000000007de94400b9010000000000009e214500ba010000000000005d344500bb01000000000000d0594500bc0100000000000006924500bd010000000000001aca4500be010000000000004a024600bf01000000000000603a4600c00100000000000084724600c101000000000000abaa4600c20100000000000047bd4600c3010000000000009ec64600c401000000000000a0e24600c5010000000000005df54600c601000000000000bf1a4700c701000000000000d1524700c8010000000000007f814700c901000000000000dd8a4700ca0100000000000039944700cb01000000000000f2c24700cc0100000000000010fb4700cd01000000000000d5294800ce010000000000002c334800cf01000000000000f9614800d001000000000000596b4800d10100000000000078874800d2010000000000008da34800d301000000000000aadb4800d401000000000000c6134900d501000000000000eb4b4900d601000000000000e7834900d701000000000000f9bb4900d801000000000000b6ce4900d9010000000000001bf44900da010000000000004a2c4a00db0100000000000066644a00dc010000000000002f7d4a00dd0100000000000019994a00de01000000000000c0ab4a00df01000000000000aec74a00e001000000000000fed04a00e101000000000000bbff4a00e20100000000000019094b00e301000000000000902e4b00e40100000000000041414b00e50100000000000010704b00e6010000000000006e794b00e7010000000000002b8c4b00e80100000000000094b14b00e901000000000000a4e94b00ea01000000000000d4214c00eb01000000000000d7594c00ec01000000000000e8914c00ed0100000000000004ae4c00ee01000000000000ebc94c00ef0100000000000014024d00f001000000000000fe394d00f1010000000000000a724d00f201000000000000667b4d00f30100000000000013aa4d00f40100000000000031c64d00f50100000000000037e24d00f6010000000000004afe4d00f7010000000000002c1a4e00f801000000000000ea2c4e00f90100000000000049364e00fa010000000000004e524e00fb01000000000000628a4e00fc0100000000000079a64e00fd010000000000001ab94e00fe0100000000000079c24e00ff0100000000000094de4e000002000000000000aafa4e00010200000000000059324f00020200000000000004654f000302000000000000ff764f0004020000000000000d804f0005020000000000007e924f000602000000000000c29b4f000702000000000000f4d34f000802000000000000160c50000902000000000000504450000a02000000000000877c50000b02000000000000b6b450000c02000000000000e7ec50000d0200000000000046f650000e02000000000000b61b51000f020000000000001625510010020000000000004f5d510011020000000000000f7051001202000000000000889551001302000000000000b5cd5100140200000000000014d751001502000000000000e605520016020000000000001f3e5200170200000000000053765200180200000000000089ae52001902000000000000e8b752001a02000000000000b7e652001b0200000000000074f952001c02000000000000e81e53001d020000000000001a5753001e02000000000000558f53001f020000000000008ac753002002000000000000b9ff53002102000000000000f13754002202000000000000277054002302000000000000418c54002402000000000000d1a354002502000000000000d9c8540026020000000000007edb54002702000000000000b81355002802000000000000e34b55002902000000000000c58355002a02000000000000d6bb55002b0200000000000007f455002c02000000000000c30656002d020000000000002c2c56002e020000000000005d6456002f020000000000008f9c56003002000000000000c9d456003102000000000000070d570032020000000000004345570033020000000000007a7d570034020000000000007d99570035020000000000009ab557003602000000000000b4ed57003702000000000000f225580038020000000000002f5e580039020000000000006b9658003a02000000000000a6ce58003b02000000000000e30659003c02000000000000183f59003d02000000000000517759003e02000000000000ad8059003f020000000000008baf59004002000000000000e9b859004102000000000000c5e75900420200000000000002205a0043020000000000003f585a0044020000000000007c905a004502000000000000bcc85a004602000000000000f1005b004702000000000000111d5b00480200000000000030395b0049020000000000006f715b004a02000000000000aca95b004b02000000000000e9e15b004c02000000000000251a5c004d0200000000000060525c004e020000000000009f8a5c004f02000000000000dbc25c00500200000000000019fb5c00510200000000000058335d005202000000000000956b5d005302000000000000c7a35d005402000000000000f7db5d00550200000000000031145e0056020000000000006f4c5e005702000000000000a7845e005802000000000000e0bc5e0059020000000000003fc65e005a020000000000001cf55e005b02000000000000582d5f005c0200000000000093655f005d02000000000000cf9d5f005e0200000000000005d65f005f02000000000000440e600060020000000000008346600061020000000000006a7e6000620200000000000056b46000630200000000000000ec60006402000000000000a72361006502000000000000e25b61006602000000000000f293610067020000000000001bcc61006802000000000000dade61006902000000000000590462006a02000000000000963c62006b02000000000000cc7462006c020000000000008c8762006d02000000000000ffac62006e020000000000003ae562006f02000000000000731d63007002000000000000b05563007102000000000000e98d630072020000000000001dc6630073020000000000005dfe63007402000000000000993664007502000000000000d86e6400760200000000000017a76400770200000000000051df640078020000000000008a1765007902000000000000c34f65007a02000000000000018865007b020000000000003ec065007c020000000000007af865007d02000000000000b63066007e02000000000000f06866007f0200000000000004a16600800200000000000041d966008102000000000000711167008202000000000000ac4967008302000000000000de8167008402000000000000f8b967008502000000000000b8cc6700860200000000000035f2670087020000000000006e2a680088020000000000001c3d680089020000000000007f6268008a02000000000000ba9a68008b02000000000000f3d268008c02000000000000310b69008d02000000000000704369008e02000000000000ae7b69008f02000000000000eeb3690090020000000000002bec6900910200000000000065246a009202000000000000a45c6a009302000000000000e0946a0094020000000000001dcd6a009502000000000000dbdf6a00960200000000000059056b00970200000000000018186b009802000000000000923d6b009902000000000000b0756b009a02000000000000e6ad6b009b0200000000000021e66b009c020000000000005e1e6c009d0200000000000096566c009e02000000000000d28e6c009f020000000000000ac76c00a00200000000000047ff6c00a10200000000000077376d00a202000000000000876f6d00a3020000000000000fa76d00a40200000000000059dc6d00a50200000000000022146e00a602000000000000464c6e00a70200000000000071846e00a802000000000000eea96e00a902000000000000aabc6e00aa0200000000000085eb6e00ab02000000000000e4f46e00ac020000000000001c2d6f00ad02000000000000da3f6f00ae0200000000000053656f00af020000000000008c9d6f00b002000000000000c4d56f00b102000000000000d90d7000b202000000000000d7457000b302000000000000f67d7000b402000000000000deb57000b502000000000000b2ed7000b602000000000000a9257100b702000000000000975d7100b802000000000000338c7100b9020000000000007e957100ba0200000000000068b17100bb0200000000000050cd7100bc020000000000001c057200bd02000000000000610e7200be02000000000000c13c7200bf020000000000006b747200c0020000000000005aac7200c10200000000000032e47200c202000000000000dcf67200c302000000000000321c7300c4020000000000002b547300c5020000000000007d8b7300c60200000000000020c37300c702000000000000cefa7300c8020000000000003c327400c9020000000000009b697400ca02000000000000eda07400cb0200000000000056d87400cc0200000000000090107500cd02000000000000ad2c7500ce020000000000000b367500cf02000000000000c7487500d002000000000000fe807500d10200000000000039b97500d20200000000000073f17500d30200000000000030047600d4020000000000004b207600d502000000000000a9297600d60200000000000006337600d702000000000000d3617600d80200000000000090747600d902000000000000089a7600da020000000000002fd27600db020000000000001a0a7700dc0200000000000022427700dd02000000000000007a7700de02000000000000d2b17700df02000000000000f8e97700e0020000000000002b227800e102000000000000635a7800e202000000000000a0927800e302000000000000daca7800e40200000000000011037900e502000000000000483b7900e60200000000000085737900e702000000000000b1ab7900e802000000000000dae37900e902000000000000121c7a00ea0200000000000049547a00eb02000000000000878c7a00ec02000000000000bfc47a00ed02000000000000edfc7a00ee0200000000000026357b00ef02000000000000606d7b00f0020000000000009da57b00f102000000000000cddd7b00f20200000000000006167c00f3020000000000003f4e7c00f402000000000000fb607c00f50200000000000077867c00f602000000000000b4be7c00f70200000000000014c87c00f802000000000000e0f67c00f9020000000000001b2f7d00fa0200000000000058677d00fb02000000000000959f7d00fc02000000000000d2d77d00fd02000000000000ec0f7e00fe0200000000000025487e00ff020000000000005f807e0000030000000000009ab87e000103000000000000d3f07e000203000000000000ee0c7f0003030000000000000a297f000403000000000000c53b7f00050300000000000043617f0006030000000000007b997f000703000000000000b9d17f000803000000000000f20980000903000000000000284280000a030000000000005e7a80000b0300000000000099b280000c03000000000000d2ea80000d03000000000000082381000e030000000000003e5b81000f030000000000007b9381001003000000000000b8cb81001103000000000000f30382001203000000000000313c82001303000000000000697482001403000000000000a6ac82001503000000000000c4c882001603000000000000e0e482001703000000000000ff00830018030000000000001e1d83001903000000000000dd2f83001a030000000000005b5583001b03000000000000988d83001c03000000000000d5c583001d0300000000000010fe83001e030000000000004e3684001f03000000000000826e84002003000000000000bba684002103000000000000f5de840022030000000000006f0485002303000000000000cc0d850024030000000000002c1785002503000000000000ea2985002603000000000000634f850027030000000000007e6b850028030000000000009a878500290300000000000017ad85002a03000000000000d2bf85002b0300000000000031c985002c030000000000000ef885002d030000000000004a3086002e03000000000000866886002f03000000000000bea086003003000000000000f2d8860031030000000000002a1187003203000000000000871a870033030000000000006449870034030000000000001d5c87003503000000000000998187003603000000000000cfb987003703000000000000eed5870038030000000000000cf2870039030000000000004a2a88003a03000000000000a83388003b03000000000000826288003c03000000000000b69a88003d03000000000000efd288003e030000000000002d0b89003f030000000000004d27890040030000000000006c4389004103000000000000ab7b89004203000000000000eab38900430300000000000028ec8900440300000000000068248a004503000000000000a05c8a004603000000000000b4948a004703000000000000f4cc8a00480300000000000030058b0049030000000000006f3d8b004a030000000000008e598b004b03000000000000ae758b004c03000000000000ecad8b004d0300000000000028e68b004e03000000000000331e8c004f030000000000004f568c0050030000000000008e8e8c005103000000000000c7c68c00520300000000000005ff8c00530300000000000041378d005403000000000000746f8d005503000000000000a4a78d00560300000000000064ba8d005703000000000000e4df8d0058030000000000000a188e00590300000000000023508e005a0300000000000027888e005b03000000000000d89a8e005c0300000000000043c08e005d0300000000000082f88e005e03000000000000c0308f005f03000000000000ff688f0060030000000000001ba18f00610300000000000059d98f006203000000000000981190006303000000000000d64990006403000000000000f56590006503000000000000158290006603000000000000758b9000670300000000000053ba9000680300000000000092f290006903000000000000d22a91006a03000000000000106391006b03000000000000489b91006c03000000000000a2a491006d030000000000001bd391006e03000000000000530992006f03000000000000d32e9200700300000000000090419200710300000000000074799200720300000000000094b19200730300000000000072e092007403000000000000d2e992007503000000000000b21893007603000000000000122293007703000000000000445a93007803000000000000739293007903000000000000f3b793007a03000000000000abca93007b030000000000005ddd93007c03000000000000c40294007d03000000000000e13a94007e03000000000000217394007f0300000000000059ab9400800300000000000090e394008103000000000000c31b95008203000000000000ea53950083030000000000009866950084030000000000000b8c9500850300000000000046c49500860300000000000057fc950087030000000000008f3496008803000000000000cf6c960089030000000000000ba596008a0300000000000045dd96008b03000000000000a3e696008c03000000000000801597008d03000000000000bc4d97008e03000000000000f78597008f030000000000002ebe9700900300000000000030f6970091030000000000005a2e98009203000000000000956698009303000000000000d49e9800940300000000000014d7980095030000000000003b0f990096030000000000006c4799009703000000000000ac7f9900980300000000000078b79900990300000000000026ca99009a030000000000007cef99009b0300000000000085279a009c03000000000000be5f9a009d03000000000000fd979a009e03000000000000b9aa9a009f0300000000000022d09a00a0030000000000003dec9a00a10300000000000058089b00a20300000000000074249b00a3030000000000008b409b00a403000000000000e4499b00a50300000000000038789b00a60300000000000076819b00a703000000000000e4af9b00a803000000000000b7e79b00a903000000000000731f9c00aa03000000000000a6289c00ab030000000000002f3b9c00ac0300000000000012579c00ad030000000000005d609c00ae03000000000000cb8e9c00af0300000000000057a19c00b00300000000000086c69c00b1030000000000005afe9c00b20300000000000002369d00b303000000000000bc6d9d00b40300000000000099a59d00b5030000000000004edd9d00b603000000000000db149e00b703000000000000e0399e00b803000000000000724c9e00b9030000000000002a849e00ba03000000000000ee9f9e00bb03000000000000d1bb9e00bc030000000000007df39e00bd03000000000000f02a9f00be030000000000006a629f00bf03000000000000ff999f00c0030000000000002ed19f00c1030000000000004608a000c203000000000000893fa000c303000000000000a476a000c403000000000000dfada000c5030000000000001cb7a000c6030000000000003ce5a000c703000000000000921ca100c8030000000000008c53a100c903000000000000988aa100ca0300000000000010a6a100cb03000000000000a0c1a100cc03000000000000e5d3a100cd0300000000000072f8a100ce030000000000007c2fa200cf030000000000003766a200d003000000000000389da200d10300000000000056a6a200d203000000000000a9b8a200d303000000000000cac1a200d4030000000000001ad4a200d503000000000000200ba300d6030000000000002714a300d703000000000000bc41a300d8030000000000006778a300d9030000000000000aafa300da0300000000000046dca300db0300000000000065e5a300dc03000000000000a81ba400dd03000000000000d72da400de030000000000002352a400df030000000000006288a400e003000000000000c1bea400e103000000000000f8f4a400e203000000000000212ba500e3030000000000003f61a500e403000000000000656aa500e503000000000000e497a500e60300000000000040cea500e703000000000000b204a600e803000000000000fc3aa600e9030000000000009471a600ea0300000000000037a8a600eb030000000000001adfa600ec03000000000000ea0ca700ed030000000000000e16a700ee030000000000005228a700ef030000000000007d31a700f003000000000000034da700f1030000000000002084a700f2030000000000004a8da700f303000000000000a99fa700f403000000000000f6baa700f503000000000000c1f1a700f603000000000000be28a800f703000000000000a65fa800f8030000000000003e7ba800f903000000000000c296a800fa03000000000000c3cda800fb03000000000000d504a900fc03000000000000f83ba900fd030000000000005f73a900fe03000000000000ceaaa900ff030000000000000bb4a900000400000000000005e2a90001040000000000005e19aa000204000000000000c12baa0003040000000000008e50aa000404000000000000fd62aa0005040000000000008175aa000604000000000000fa87aa0007040000000000002f91aa0008040000000000005dbfaa000904000000000000a3c8aa000a04000000000000e5f6aa000b04000000000000e41bab000c040000000000005b2eab000d04000000000000e765ab000e040000000000004c9dab000f0400000000000085a6ab001004000000000000b8d4ab001104000000000000fdddab0012040000000000003b0cac001304000000000000d043ac001404000000000000827bac001504000000000000b8a0ac0016040000000000005bb3ac00170400000000000029ebac0018040000000000006af4ac0019040000000000000e07ad001a04000000000000f422ad001b04000000000000432cad001c040000000000009935ad001d04000000000000ee3ead001e04000000000000d55aad001f04000000000000bd76ad002004000000000000a592ad00210400000000000076caad002204000000000000f6dcad002304000000000000e001ae0024040000000000004f39ae0025040000000000001371ae0026040000000000005f7aae002704000000000000fc8cae002804000000000000cda8ae0029040000000000005ebbae002a0400000000000081e0ae002b040000000000004f18af002c040000000000001e50af002d04000000000000e687af002e04000000000000a0bfaf002f040000000000005ff7af003004000000000000042fb0003104000000000000da66b00032040000000000009a9eb000330400000000000063d6b0003404000000000000300eb1003504000000000000da45b10036040000000000009a7db100370400000000000050b5b100380400000000000029edb1003904000000000000971bb2003a04000000000000e024b2003b04000000000000995cb2003c040000000000006694b2003d0400000000000048b0b2003e040000000000002eccb2003f0400000000000075d5b200400400000000000008e8b2004104000000000000e703b3004204000000000000ce1fb3004304000000000000b63bb30044040000000000000d45b30045040000000000009f57b30046040000000000007573b3004704000000000000c67cb30048040000000000003aabb3004904000000000000e4e2b3004a04000000000000651ab4004b04000000000000f951b4004c040000000000009389b4004d0400000000000025c1b4004e04000000000000f6f8b4004f04000000000000241eb5005004000000000000b130b50051040000000000007068b500520400000000000040a0b5005304000000000000ecd7b50054040000000000000510b60055040000000000003e48b60056040000000000007a80b6005704000000000000b7b8b6005804000000000000f3f0b60059040000000000002f29b7005a04000000000000ae4eb7005b040000000000006861b7005c04000000000000a599b7005d04000000000000ded1b7005e040000000000005cf7b7005f04000000000000160ab80060040000000000005042b8006104000000000000964bb8006204000000000000687ab8006304000000000000a6b2b800640400000000000066c5b8006504000000000000e5eab80066040000000000000423b90067040000000000003f5bb90068040000000000005d77b90069040000000000007b93b9006a04000000000000b7cbb9006b04000000000000ef03ba006c04000000000000133cba006d040000000000003358ba006e040000000000005174ba006f0400000000000042acba0070040000000000006ce4ba007104000000000000a21cbb007204000000000000e054bb007304000000000000405ebb0074040000000000001b8dbb0075040000000000002ec5bb0076040000000000006dfdbb007704000000000000a435bc007804000000000000d06dbc0079040000000000000ca6bc007a040000000000004adebc007b040000000000008716bd007c04000000000000c34ebd007d04000000000000fc86bd007e040000000000003bbfbd007f040000000000007af7bd008004000000000000d500be008104000000000000b32fbe008204000000000000ea67be00830400000000000027a0be00840400000000000065d8be008504000000000000a410bf008604000000000000dd48bf0087040000000000003b52bf0088040000000000001881bf0089040000000000008fb8bf008a04000000000000cbc1bf008b04000000000000f8efbf008c040000000000007602c0008d040000000000008327c0008e04000000000000075fc0008f040000000000005d96c000900400000000000009cec00091040000000000003b06c10092040000000000002d3ec10093040000000000006476c10094040000000000007aaec1009504000000000000b9e6c1009604000000000000ef1ec20097040000000000002c57c2009804000000000000698fc20099040000000000008cc7c2009a040000000000009effc2009b04000000000000da37c3009c04000000000000ee6fc3009d0400000000000029a8c3009e0400000000000067e0c3009f04000000000000240fc400a0040000000000008218c400a104000000000000b150c400a204000000000000c088c400a304000000000000d2c0c400a404000000000000f6f8c400a5040000000000001231c500a604000000000000d143c500a7040000000000004d69c500a80400000000000089a1c500a904000000000000c4d9c500aa040000000000000112c600ab040000000000005c1bc600ac040000000000003a4ac600ad040000000000007482c600ae04000000000000abbac600af04000000000000e4f2c600b0040000000000001d2bc700b1040000000000002e47c700b2040000000000004863c700b304000000000000687fc700b404000000000000829bc700b5040000000000009bd3c700b604000000000000d80bc800b7040000000000001144c800b804000000000000704dc800b904000000000000d056c800ba040000000000004e7cc800bb0400000000000080b4c800bc04000000000000b1ecc800bd040000000000009808c900be040000000000008d24c900bf04000000000000c75cc900c004000000000000df94c900c104000000000000feb0c900c2040000000000001dcdc900c3040000000000004605ca00c4040000000000006e3dca00c5040000000000009e75ca00c604000000000000029bca00c704000000000000aeadca00c8040000000000008adcca00c904000000000000eae5ca00ca04000000000000251ecb00cb04000000000000fa55cb00cc04000000000000778ccb00cd04000000000000eec3cb00ce0400000000000005fccb00cf040000000000004134cc00d004000000000000716ccc00d10400000000000096a4cc00d204000000000000d3dccc00d30400000000000086efcc00d4040000000000000215cd00d504000000000000ac27cd00d604000000000000264dcd00d7040000000000008656cd00d8040000000000006385cd00d9040000000000003bb4cd00da0400000000000099bdcd00db04000000000000d8f5cd00dc04000000000000172ece00dd040000000000005366ce00de04000000000000909ece00df04000000000000b7d6ce00e00400000000000068e9ce00e104000000000000cc0ecf00e2040000000000000547cf00e304000000000000427fcf00e40400000000000079b7cf00e504000000000000b8efcf00e604000000000000f427d000e7040000000000000b60d000e8040000000000004698d000e90400000000000083d0d000ea04000000000000c008d100eb04000000000000fa40d100ec040000000000003679d100ed0400000000000073b1d100ee0400000000000087cdd100ef04000000000000a6e9d100f004000000000000e521d200f1040000000000001e5ad200f2040000000000005692d200f30400000000000092cad200f40400000000000052ddd200f504000000000000ce02d300f604000000000000e13ad300f7040000000000003444d300f804000000000000dc56d300f904000000000000ef72d300fa040000000000004d7cd300fb0400000000000024abd300fc04000000000000a1d0d300fd040000000000005be3d300fe04000000000000901bd400ff04000000000000ce53d40000050000000000000a8cd40001050000000000003ac4d40002050000000000004ae0d400030500000000000069fcd4000405000000000000a134d50005050000000000006047d5000605000000000000de6cd50007050000000000001ba5d500080500000000000058ddd50009050000000000009415d6000a05000000000000d24dd6000b05000000000000f085d6000c050000000000001ebed6000d05000000000000fbecd6000e050000000000005bf6d6000f050000000000008b2ed7001005000000000000c566d7001105000000000000029fd700120500000000000036d7d70013050000000000006f0fd80014050000000000009f47d8001505000000000000c97fd8001605000000000000e4b7d80017050000000000001ff0d80018050000000000005928d90019050000000000009560d9001a050000000000005473d9001b05000000000000718fd9001c05000000000000d198d9001d0500000000000031a2d9001e050000000000000fd1d9001f05000000000000cfe3d90020050000000000004f09da0021050000000000008941da002205000000000000b979da002305000000000000edb1da00240500000000000047bbda00250500000000000054d7da00260500000000000007eada00270500000000000067f3da0028050000000000003a22db0029050000000000005e5adb002a050000000000007892db002b05000000000000b0cadb002c05000000000000e702dc002d05000000000000183bdc002e050000000000007644dc002f050000000000002773dc003005000000000000dd85dc0031050000000000004dabdc00320500000000000086e3dc003305000000000000bb1bdd003405000000000000944add003505000000000000f453dd003605000000000000ad66dd003705000000000000298cdd00380500000000000060c4dd0039050000000000009cfcdd003a05000000000000fa05de003b05000000000000d734de003c05000000000000b56cde003d0500000000000045a4de003e05000000000000a1d2de003f05000000000000e4dbde0040050000000000002fe5de0041050000000000003c05df004205000000000000d81adf004305000000000000d636df0044050000000000002840df004505000000000000d252df004605000000000000cf6edf004705000000000000a9a6df004805000000000000eeafdf00490500000000000047b9df004a05000000000000b1dedf004b050000000000000de8df004c050000000000006e0de0004d05000000000000cb16e0004e05000000000000d84ee0004f050000000000007886e0005005000000000000b3bee0005105000000000000c3f6e0005205000000000000fe2ee10053050000000000002c67e1005405000000000000e679e1005505000000000000a68ce1005605000000000000629fe10057050000000000009bd7e10058050000000000005806e2005905000000000000b10fe2005a05000000000000e647e2005b050000000000001880e2005c050000000000007689e2005d050000000000004cb8e2005e050000000000007ef0e2005f05000000000000b228e3006005000000000000e760e30061050000000000002499e300620500000000000060d1e30063050000000000009c09e4006405000000000000d441e4006505000000000000334be40066050000000000000a7ae4006705000000000000e0a8e400680500000000000040b2e40069050000000000006feae4006a05000000000000a022e5006b05000000000000de5ae5006c050000000000001a93e5006d0500000000000055cbe5006e050000000000000bdee5006f050000000000008203e6007005000000000000db0ce6007105000000000000b53be6007205000000000000f073e60073050000000000004e7de60074050000000000002cace60075050000000000008cb5e60076050000000000006be4e6007705000000000000a51ce7007805000000000000dc54e7007905000000000000168de7007a050000000000004ac5e7007b0500000000000057fde7007c050000000000009335e8007d05000000000000d06de8007e050000000000002e77e8007f0500000000000004a6e80080050000000000003fdee80081050000000000007b16e9008205000000000000b74ee9008305000000000000e886e900840500000000000015bfe900850500000000000046f7e9008605000000000000602fea0087050000000000000442ea0088050000000000005a4bea0089050000000000006a67ea008a05000000000000889fea008b05000000000000daa8ea008c0500000000000079d7ea008d050000000000009f0feb008e050000000000005c22eb008f050000000000001c35eb009005000000000000d847eb0091050000000000000e80eb0092050000000000003eb8eb00930500000000000076f0eb009405000000000000ad28ec009505000000000000e660ec0096050000000000002399ec00970500000000000060d1ec0098050000000000009e09ed0099050000000000005e1ced009a05000000000000da41ed009b050000000000009654ed009c050000000000005567ed009d05000000000000127aed009e050000000000004ab2ed009f0500000000000082eaed00a005000000000000e1f3ed00a105000000000000bd22ee00a205000000000000fa5aee00a3050000000000003493ee00a405000000000000929cee00a50500000000000070cbee00a605000000000000ac03ef00a705000000000000eb3bef00a805000000000000fb73ef00a905000000000000feabef00aa05000000000000bebeef00ab0500000000000038e4ef00ac050000000000004e1cf000ad050000000000008854f000ae05000000000000958cf000af05000000000000c5c4f000b005000000000000fffcf000b1050000000000002e35f100b205000000000000de47f100b305000000000000466df100b4050000000000005da5f100b50500000000000094ddf100b605000000000000c115f200b705000000000000fa4df200b8050000000000002d86f200b90500000000000067bef200ba05000000000000a0f6f200bb05000000000000b52ef300bc050000000000003254f300bd05000000000000ef66f300be05000000000000239ff300bf0500000000000032d7f300c005000000000000dde9f300c1050000000000001e0ff400c2050000000000004f47f400c3050000000000008d7ff400c4050000000000006bb7f400c5050000000000009beff400c605000000000000c927f500c705000000000000ff5ff500c8050000000000003198f500c90500000000000063d0f500ca050000000000008908f600cb05000000000000c240f600cc050000000000001d66f600cd05000000000000ca78f600ce05000000000000fbb0f600cf0500000000000031e9f600d0050000000000006021f700d1050000000000009e59f700d205000000000000d891f700d3050000000000000acaf700d4050000000000004402f800d5050000000000007b3af800d605000000000000fa5ff800d705000000000000b672f800d805000000000000ebaaf800d90500000000000048b4f800da0500000000000024e3f800db05000000000000601bf900dc050000000000009753f900dd05000000000000ac8bf900de05000000000000e3c3f900df050000000000001cfcf900e0050000000000005934fa00e105000000000000936cfa00e205000000000000a7a4fa00e305000000000000dfdcfa00e4050000000000001a15fb00e5050000000000004d4dfb00e605000000000000a656fb00e7050000000000007b85fb00e805000000000000a2bdfb00e905000000000000dff5fb00ea050000000000005f1bfc00eb050000000000001e2efc00ec050000000000005266fc00ed050000000000000c79fc00ee05000000000000cc8bfc00ef050000000000002995fc00f005000000000000899efc00f105000000000000c1d6fc00f2050000000000007ee9fc00f3050000000000003dfcfc00f405000000000000f00efd00f5050000000000004c18fd00f6050000000000001a47fd00f7050000000000004a7ffd00f80500000000000086b7fd00f905000000000000beeffd00fa050000000000001ef9fd00fb05000000000000ee27fe00fc050000000000000944fe00fd050000000000002560fe00fe05000000000000307cfe00ff050000000000002798fe000006000000000000e2aafe00010600000000000042b4fe0002060000000000005dd0fe0003060000000000009a08ff000406000000000000ca40ff000506000000000000244aff000606000000000000f278ff0007060000000000002db1ff00080600000000000063e9ff000906000000000000712100010a06000000000000313400010b060000000000004c5000010c06000000000000ac5900010d06000000000000b49100010e06000000000000e3c900010f06000000000000f60101011006000000000000103a010111060000000000003056010112060000000000004c720101130600000000000084aa01011406000000000000c2e201011506000000000000fe1a02011606000000000000235302011706000000000000618b020118060000000000009dc3020119060000000000005ad602011a06000000000000badf02011b06000000000000d7fb02011c06000000000000370503011d06000000000000f71703011e06000000000000133403011f06000000000000516c03012006000000000000107f030121060000000000008da403012206000000000000cadc03012306000000000000f81404012406000000000000324d0401250600000000000070850401260600000000000080bd040127060000000000008bf504012806000000000000842d05012906000000000000d73605012a060000000000008b6505012b06000000000000c19d05012c06000000000000f9d505012d060000000000002e0e06012e06000000000000664606012f060000000000009d7e06013006000000000000d7b60601310600000000000011ef06013206000000000000442707013306000000000000725f07013406000000000000af9707013506000000000000e7cf070136060000000000001f0808013706000000000000372408013806000000000000544008013906000000000000917808013a06000000000000c8b008013b0600000000000001e908013c060000000000000f2109013d06000000000000085909013e06000000000000a99009013f06000000000000b5c809014006000000000000c5000a014106000000000000d2380a01420600000000000006710a014306000000000000f5a80a0144060000000000002be10a01450600000000000012190b01460600000000000048510b01470600000000000086890b014806000000000000e5920b014906000000000000c4c10b014a0600000000000000fa0b014b060000000000001d320c014c060000000000000b6a0c014d06000000000000c5980c014e060000000000001aa20c014f06000000000000d7d00c0150060000000000002dda0c01510600000000000069120d015206000000000000a44a0d015306000000000000df820d0154060000000000001dbb0d01550600000000000055f30d015606000000000000852b0e01570600000000000083630e015806000000000000c39b0e0159060000000000001ba50e015a060000000000007bae0e015b06000000000000f7d30e015c06000000000000afe60e015d06000000000000290c0f015e0600000000000065440f015f06000000000000db690f016006000000000000977c0f016106000000000000d2b40f016206000000000000ecec0f016306000000000000062510016406000000000000ea5c10016506000000000000f49410016606000000000000ffcc100167060000000000005ed610016806000000000000d6fb10016906000000000000340511016a06000000000000613d11016b060000000000008b7511016c06000000000000919111016d06000000000000abad11016e06000000000000e0e511016f060000000000001d1e120170060000000000005556120171060000000000006c8e120172060000000000008aaa12017306000000000000a3c612017406000000000000bdfe12017506000000000000f83613017606000000000000126f130177060000000000006c9413017806000000000000c99d1301790600000000000029a713017a060000000000005bdf13017b06000000000000b8e813017c0600000000000016f213017d060000000000008d1714017e06000000000000ec2014017f06000000000000a43314018006000000000000bc4f14018106000000000000d58714018206000000000000919a1401830600000000000005c0140184060000000000005fc914018506000000000000f8f714018606000000000000a10a15018706000000000000fa1315018806000000000000561d15018906000000000000fa2f15018a06000000000000513915018b06000000000000aa4215018c06000000000000106815018d060000000000002f8415018e060000000000004ba015018f060000000000002cbc15019006000000000000ccce1501910600000000000019d81501920600000000000076e115019306000000000000331016019406000000000000664816019506000000000000998016019606000000000000d5b81601970600000000000093cb16019806000000000000f3d4160199060000000000000ff116019a06000000000000cd0317019b06000000000000492917019c06000000000000a33217019d06000000000000444517019e060000000000003a6117019f06000000000000117d1701a0060000000000001c991701a10600000000000059d11701a2060000000000008c091801a306000000000000c2411801a4060000000000001e4b1801a50600000000000037671801a606000000000000f2791801a7060000000000001fb21801a806000000000000dec41801a90600000000000056ea1801aa0600000000000005fd1801ab0600000000000079221901ac06000000000000b25a1901ad06000000000000e5921901ae06000000000000f9ca1901af060000000000005df01901b00600000000000017031a01b1060000000000003a3b1a01b206000000000000e64d1a01b30600000000000044731a01b406000000000000a37c1a01b50600000000000078ab1a01b6060000000000006ee31a01b706000000000000921b1b01b806000000000000be531b01b9060000000000001d5d1b01ba06000000000000ec8b1b01bb0600000000000009c41b01bc06000000000000e5fb1b01bd06000000000000f1331c01be06000000000000ef6b1c01bf06000000000000a39a1c01c006000000000000fba31c01c106000000000000f2db1c01c206000000000000f8131d01c306000000000000df4b1d01c40600000000000075831d01c506000000000000aaa81d01c6060000000000003bbb1d01c7060000000000002fd71d01c80600000000000017f31d01c90600000000000067fc1d01ca06000000000000ad211e01cb06000000000000fb2a1e01cc0600000000000052341e01cd06000000000000da621e01ce06000000000000c87e1e01cf06000000000000b09a1e01d00600000000000089d21e01d1060000000000000fe51e01d2060000000000005fee1e01d3060000000000003b0a1f01d406000000000000f8411f01d50600000000000098541f01d606000000000000ac5d1f01d70600000000000094791f01d8060000000000006eb11f01d90600000000000038e91f01da060000000000000b212001db06000000000000e6582001dc06000000000000c8902001dd0600000000000062a32001de060000000000007ac82001df060000000000001cdb2001e0060000000000005d002101e10600000000000021382101e206000000000000f76f2101e3060000000000003d792101e406000000000000cea72101e50600000000000095df2101e6060000000000006e172201e706000000000000334f2201e80600000000000085582201e90600000000000010872201ea06000000000000eea22201eb06000000000000cbbe2201ec06000000000000a9da2201ed060000000000009ef62201ee060000000000003d092301ef06000000000000782e2301f0060000000000000c412301f1060000000000005e4a2301f20600000000000045662301f3060000000000003b822301f406000000000000299e2301f506000000000000fed52301f606000000000000990d2401f7060000000000002c202401f806000000000000173c2401f90600000000000063452401fa06000000000000fd572401fb060000000000002a7d2401fc0600000000000000b52401fd06000000000000b8ec2401fe0600000000000037242501ff06000000000000155c25010007000000000000e69325010107000000000000a6cb25010207000000000000630326010307000000000000b30c260104070000000000000916260105070000000000005b1f26010607000000000000523b260107070000000000004857260108070000000000002d732601090700000000000018ab26010a07000000000000fdc626010b07000000000000ede226010c070000000000008d1127010d07000000000000e31a27010e07000000000000cc5227010f07000000000000ac8a270110070000000000004b9d2701110700000000000090c22701120700000000000087fa27011307000000000000583228011407000000000000fe6928011507000000000000557328011607000000000000f4a128011707000000000000ced9280118070000000000007d1129011907000000000000414929011a070000000000001a8129011b07000000000000deb829011c07000000000000bff029011d07000000000000a8282a011e070000000000008b602a011f07000000000000dc692a0120070000000000002d732a0121070000000000007a7c2a012207000000000000198f2a01230700000000000069982a01240700000000000003ab2a0125070000000000004ab42a0126070000000000009ebd2a01270700000000000041d02a012807000000000000e7e22a01290700000000000089f52a012a0700000000000023082b012b07000000000000cb1a2b012c0700000000000018242b012d070000000000006b2d2b012e07000000000000ba362b012f070000000000000e402b013007000000000000af522b013107000000000000035c2b0132070000000000004c652b0133070000000000009b6e2b013407000000000000e4772b013507000000000000abaf2b013607000000000000f8b82b01370700000000000052c22b013807000000000000f0d42b0139070000000000008de72b013a0700000000000081032c013b070000000000005e1f2c013c070000000000004a3b2c013d0700000000000037572c013e070000000000000a8f2c013f070000000000005e982c014007000000000000eeaa2c0141070000000000007fbd2c014207000000000000d2c62c014307000000000000b6fe2c0144070000000000008f362d014507000000000000426e2d014607000000000000d9a52d014707000000000000a0dd2d0148070000000000003df02d0149070000000000004f152e014a07000000000000971e2e014b07000000000000e2272e014c0700000000000035312e014d07000000000000cb432e014e07000000000000174d2e014f07000000000000a57b2e015007000000000000f8842e015107000000000000e0bc2e015207000000000000bdf42e0153070000000000009d2c2f015407000000000000e9352f015507000000000000353f2f015607000000000000cf512f0157070000000000006e642f0158070000000000001b772f015907000000000000659c2f015a070000000000005bd42f015b0700000000000001e72f015c07000000000000470c30015d07000000000000464430015e07000000000000904d30015f07000000000000e4563001" + "babeEpochChanges": "0x04123ae85881861156a074a07110a5f59142b0b762ac89422d0a601116ee1e8c49721f320101d369001100000000337300110000000004efc8cb869ae5714a4f4f590372f3a9a76d748e084658d023958a3a549d616486cb283201013373001100000000937c00110000000004100d6ae96c2f95f1bcfbedfa0dd48a4b97a6ffee38103c65d55cc8e7d609125f1a32320101937c001100000000f38500110000000000000c100d6ae96c2f95f1bcfbedfa0dd48a4b97a6ffee38103c65d55cc8e7d609125f1a32320101d020000000000000937c0011000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000da663fef002e63d5de9676a1a930abe7b0d8088657d67a3f24076bce08c661490100000000000000a86e2248480b1f6ad903a965344ecef69838aae812ba3c39d3d9eaae22963f2a01000000000000004ceef9b2b8e3b5cd971f7557c3a3ad02c9c7a7bbc7365c2db5622fa74853790d0100000000000000f03555628bc649cebf75046ab9663faa1a5421df323f99c82782b7a3d162ce080100000000000000aca7a86b6fcf25daa7f0767bfe36b284f3100dc1ee4dcc971fbb3244bb57221c0100000000000000ba395fcb33327501109ed40712c7a372d25bf3339edfabe2a1964fb7b5d4d82401000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b01000000000000006869737a2873891c0e4ef80a69e331f64ffc3663c9f3cdf86b440bb41827a252010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f70010000000000000078c35105ea4cd9d6ea0ba91b2c19e78f60931bef5918c1bd2e14259229e7c330010000000000000006d2846642c835b0fb1ff1ef908449376aa8e7c0f3352e55da9a1e97e9528b230100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec326540100000000000000ac8b2b59f77eb5f3725961767878166a3817747018f18cf48c933e284320b90e010000000000000064838c162c251bc34c0f5a2696183fb518527d4681821dbc3ad53b004a8da7220100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a0100000000000000a42289d68c963358f3c450a850242bb53121e73e17f0e2ea2b93327446bea33c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc35310010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f010000000000000024532b17fc5fb786660c52aeb03150799165dd05e88ce359189189a4b771f51e0100000000000000b0033313d23127061d7f052a965bfeead348e6fe54f9915474ed52b843382e790100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b010000000000000072a85a9dcc0af833b5a21a51ecbc4a9855c2bef8848e080ed70ac48cd1efdd5f0100000000000000c49cfd152ce3ac1fa142b3b6e720cb173eb7f43c82f021418253a070036f870c01000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e09360100000000000000125becf853d8dc03bc97114ca0c751f6045bd7ef5580e58d32e3b47d7ac5b60301000000000000009237113cf97fee5fafbeb82de593f6125e9c498bd59f0369625f46b326c7d9170100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000acfd0e585d89c54d57bdbcfcbef574217ce0997c82fab720b2d4e12ce61bd3610100000000000000562fd7529c92f9370dd6d7ce60d06ea4a826cbefa238231993ecfc9e7725ca240100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f0678771701000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f510100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e010000000000000088f9a16886165d00612032cb1b36669ad62b7325536f499191e711134c71b6070100000000000000d6152835cb59040a40a5a4ee3a4d481937b7ee9d4a5649abeac6c535d9e177080100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c560100000000000000ee0c4369d7e5dca53a68ef223db7c858f2a97f47394c7bc678a8edf719a49e130100000000000000c65c0a74887e9fe5cc56696fac7e7f5f1cd4a68f9661c8384b300bcdfbe67a1801000000000000003690e6ef639f685849ed93a6386d1fccf026c3fb64520940aa46af97f929e112010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e702101000000000000000e76ad5033ec80da424503f80ce2bff64d8cad0e807d7c6516a369b46ed0355f01000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000f8cb6b856e416fc9e9eec947c6f76eefed65cfe5f1e117a7271396729e5cc8490100000000000000bad91c9aefe173441dae1f273e55090706d412b0723d39bd6c3af053feb183200100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c39070100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d707600501000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb5501000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c01000000000000007480edf84ab569e559dccc99b87ecb9ae9db670b45a259b7f6e618b063e43113010000000000000020bedd48a5965e2fc0e221bd164deecdee849eb69cb8dc63a37df80b50a3093b010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e51010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa740100000000000000a64dd29103d43e3e898a41f3630ff88b2420953febb931c70ff543673efa251b01000000000000005ca58c138fe321d15a82c8562ea9b1f3e5e608e0cba12e361c3a5c977153e77d01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c01000000000000002cf9dbc1e451ba3ead20d5d826533b9315699b3ba0784bd812e15ac9ad31f85d0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000008c64cd873a53fec10c4624239ce35d31d4422e32a109605a162fcbf632427733010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b010000000000000094af0a39f196a145c9406ace38b2b2b9b9ccec2bf2da2e95d0b0b8507b6f38560100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a0100000000000000b2518044cc31062ee50fa81cb6983f314291a0300865fa5cfe149829c5050d24010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a5201000000000000004e8cc21504fda961cf1cfe78e651d033b10f8ab1a4a0c757bd4848a7f2827f0601000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000001285919470b092c61b3deaa9ad83226d41f36d58f0ca5f2e14d11d0724f6f00a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000944ad19383a9ae136f4f11c15687923b9b21319efab021336a3e8f2bd5b5ca20010000000000000068508b2ca3e01d7c8d79d99f1bb06a93058d14f1061d5fed4df13d4bc30aa557010000000000000074f02ed037d28c883df643034a596e4d2a97a23782ee8483c9ae3429ede7e7090100000000000000566948c62b699e382e5379592d1ad3e1823640d386936142cb9b82915ed02d1801000000000000009493e6de34e09c9679b6dca602e38d8c07abb77b3cc487ae3a80661968caa37f01000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b3515010000000000000004734733edcd9cf662389208fb8ccb5f274a7db8187ccc53dc84250f8599d54d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000ba78c26db96a9ce3ccc2980dfef7346042ade9769f95afaea559f784af167a5d0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e6380100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb190100000000000000b071e9d6b444a555e034ecdc4d04f2528cc36b347b231b33388564a40fd32b2c01000000000000004e047857f2ec0c7cf295a0673fcc750d4c268cf852711196c4f05bd9dc6414260100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f61001000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c840010000000000000042bbfd10e95a6a1a57b34cbe01ab26605536797742d6d24394ebe95f87bd925c010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000009463e59f6b021a1dbdbf65e56f568ac5736baf96470440d7123605a4bcd93f0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd8780100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f76010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000022a66dd6397c2631df509db3482baac28b546729e6ce965472a9ba2e648ccc74010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a2520100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea840010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e660100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd0401000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000076fa252aeca5b108fe76ce12e395ed8105d5c98e4abae38bfc7cb4fbd4d43d5501000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca220100000000000000fcf8846340018e82ccee12f3fa59b0ce9d69bcc1c062435658455674427d481201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000a8731d355eefdfbdb7fb12cfa5a280c0b1e408aca264ef585d42bf97fcfba1160100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d80666401000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a52401000000000000004a1069d2203a75cd1078c39de35c16a6c4c12acbad34f1cba8efc065f80398610100000000000000eedea8652413b5a97c1eda13e1e050b777bd0a8ca31dafd63aeab576a68fb75e0100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000245a9f1c784e83aa6e1a22b7a560de42348ae1c3402060929d669f110da1b749010000000000000062c6c1f6f2478ee092c958842ac4351973bfeb49f55e33b8415ac0296a967b5f01000000000000005c25d331b2e023d12ee512689c3ea95edaadc300c9dc804e98806117f2edf57c01000000000000006205ea8c9da2e39792b9504100d0ce7eec4b9c732297afea3c2a885fe4f5832401000000000000009a64daca74d14dab93385e52ca70940732a8d45ae4b853ce156c3eeca06f0c5f0100000000000000c63e31fd558807e07f9c7dc51f8fa8110679bb1b1cf5585e56d0b6164179b9790100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c2301000000000000001e534cbbe982369a968006efa465cf2a16807a88a5c877d45f090192ea619c6001000000000000001a15acd9aec8d1dd06c7b6a46be298c3fc2ecd51be6724a63da4da286e306f72010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e7630100000000000000140fbeeabfb02dede7214a17c2cf78279d076c80d962431f35d1105c87b8d95501000000000000007cb1f225b90c00f426c33ac4338eeb2dae6467b8a9da5c1556e6588c12ca977b0100000000000000b261a66b9bae17b65e7f6a88d65efb4519925d6c418c9e2ba17bfdbf684b776301000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c491420100000000000000fe9d62e17387326c0e4b75697b2f0fbdff9506992e745d61b4c536c4dc10f57d01000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a0100000000000000c686fbbc968476537924f90aaa4993eef8314685d150228c462f8ae4e5e1e57f0100000000000000464d95a7c8cce76af088d8f781e3073fc194333ab20956b4dd2c25d4a29ac56d01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b2001000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a77480100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000002001d47fbff7291a50650047b27cc47f1d22a0bdfbbfb0b8b7a6e8bbf350bf620100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000005c3615a5e2072a618f0e434f7c572f4e4b1a89348dfe0f7939c99de095d54a55010000000000000006adb1e6e78084fd5e5df37fafc180d1ed84377ca41de3b5ca43b764f0cb19090100000000000000a496ba57e511f86ff4cf264f9fd7bd3595b37ae55ad671c7790574c87d40415201000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a856700100000000000000c28c2dbe1a9bc290af0d795ef11c1d1b694b91ae685e891e599596aaafbab73b01000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe0837215600100000000000000c280e82e46ecabc4d68169e292c59cef96432f25fe849b8a147db5ca0ce7e17b010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000009295a1f023157921d346b73484b120d46048382107015aa9ed998f1fae95970e010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a0100000000000000d8de542a748c14224ee7faa16157727c852ce502a45b408de0975c88a39c690f01000000000000008013bf5a25c703e64dc4ae7e1248c0f2c7abad9e43672d82611d109740199856010000000000000004a3d449da9c2c02c963df1433b66d0b6599e7a667e3818ecebe84357081703b0100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f01000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e670100000000000000d23c53a531e356646133db73065cd83999693a5bdfc05931238434f5b031522f0100000000000000585ecf59c1396544c1f1dfa5693ded0c96daaf05cc70d55fc8c6fab487b2022e01000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f53343010000000000000032fdd22fdc3662f97008fbb6f52d0fbe7b62c24956849fe04f9b023007a8932301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de32010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b01000000000000001810712fbe92f2394892a99e3a825490baf1efaf7a3dd1c9bd0e58da0d6711330100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a50030100000000000000163687f38841bbbd2b93787f7f65cc74a2ab94478888abce52207e1b81f46c4d0100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe83233001000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d01000000000000000469db5710f30dc9ed7411417170efd62ce8bbe36ccab6df758a94aa7b7f720b01000000000000007a661c99fd40492b4893407b03822464e7d4853e9ba47fc9e9960c3800d6725f01000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf460100000000000000386f18b82ffe824f7ee1fda0f511d5112dee1c677bee0069f3d8e3d8be1a321d0100000000000000d636bcd260e36a2bea4bb1667bbc86285967381ad5822f8cd98ff7d5c88c7430010000000000000072f2ff3d21f4126e217f10f9d9bd18069c12eaab6922d073dd5241ac718e91200100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b010000000000000096ef8b525c38b9a74a3014bd99979230dab2f20221e8c7d1db50c7a61a02e97e0100000000000000769d9f8b45bcbed8fd84b86d2203ee20d199212007387b10216f8fd9441dfa28010000000000000092c996c1fedd09190bb0fa8cc79e4075ad79eca3d6895d2a99d20e6f89e4182b0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad2102010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e0100000000000000bae8e68bc8f1b66fe3229ee72d77137b394c6b7dfbf55e424f9d2c82d5c99600010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b0100000000000000a8c366514ae829385912b04b0192e934a20045b36cf1911bccc4c064d6d3c46101000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc24010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e01000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c280100000000000000e05c7c7d82498be85294ee984e1f0caf23c53fa9a64cc7e6c5053304c4bb785101000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d610100000000000000a61667ea6442054b56111477f57ecf39b6e90480bfadf54c3e6cb5ac3a3e275801000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b3040100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c0100000000000000229fcd7685d064b9c265aaa3a771582b6600cef963f57af160b34a81c9f84a690100000000000000b225550bd99c7b1ebfce319d76f52fe96c661d6106a4b4c37fd4eede1ba4654f010000000000000024ad842dcdc5f4d84262c6aee5116e88116fb191dbbd1331453202d3583b1f4401000000000000005474f03ced668a1459e8ed416f510a16f551ec1415c42b292670545a3967d311010000000000000096e0b71982f3e7ba6ab06d28dfbf803caf4ac51b7633bee848f4f3fadc0dac480100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c010000000000000078fd4f7b7da839a4112a456fb1bf7a1f935087b4d456153f04fec37ee0f7a90e0100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a1843220100000000000000756735333d79a12166b3932837c94c9de2b85bc1a5230264408416140c16ca700100000000000000040000000000000002123ae85881861156a074a07110a5f59142b0b762ac89422d0a601116ee1e8c49721f320101ce20000000000000d3690011000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000da663fef002e63d5de9676a1a930abe7b0d8088657d67a3f24076bce08c661490100000000000000a86e2248480b1f6ad903a965344ecef69838aae812ba3c39d3d9eaae22963f2a0100000000000000f03555628bc649cebf75046ab9663faa1a5421df323f99c82782b7a3d162ce080100000000000000aca7a86b6fcf25daa7f0767bfe36b284f3100dc1ee4dcc971fbb3244bb57221c0100000000000000ba395fcb33327501109ed40712c7a372d25bf3339edfabe2a1964fb7b5d4d82401000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f72010000000000000026db7c5786fddc15f7e96905024905d877537451ed444cb97d3786361a59f64b01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b01000000000000006869737a2873891c0e4ef80a69e331f64ffc3663c9f3cdf86b440bb41827a252010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f70010000000000000078c35105ea4cd9d6ea0ba91b2c19e78f60931bef5918c1bd2e14259229e7c330010000000000000006d2846642c835b0fb1ff1ef908449376aa8e7c0f3352e55da9a1e97e9528b230100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec326540100000000000000ac8b2b59f77eb5f3725961767878166a3817747018f18cf48c933e284320b90e0100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a0100000000000000a42289d68c963358f3c450a850242bb53121e73e17f0e2ea2b93327446bea33c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc35310010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f010000000000000024532b17fc5fb786660c52aeb03150799165dd05e88ce359189189a4b771f51e0100000000000000b0033313d23127061d7f052a965bfeead348e6fe54f9915474ed52b843382e790100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b010000000000000072a85a9dcc0af833b5a21a51ecbc4a9855c2bef8848e080ed70ac48cd1efdd5f0100000000000000c49cfd152ce3ac1fa142b3b6e720cb173eb7f43c82f021418253a070036f870c01000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e0936010000000000000078f674626909d11d18b6b9d6c21ec4023a2073965c68b2172197f5a12e3e17600100000000000000125becf853d8dc03bc97114ca0c751f6045bd7ef5580e58d32e3b47d7ac5b60301000000000000009237113cf97fee5fafbeb82de593f6125e9c498bd59f0369625f46b326c7d9170100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000562fd7529c92f9370dd6d7ce60d06ea4a826cbefa238231993ecfc9e7725ca240100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f0678771701000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f510100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e010000000000000088f9a16886165d00612032cb1b36669ad62b7325536f499191e711134c71b6070100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c560100000000000000ee0c4369d7e5dca53a68ef223db7c858f2a97f47394c7bc678a8edf719a49e130100000000000000c65c0a74887e9fe5cc56696fac7e7f5f1cd4a68f9661c8384b300bcdfbe67a1801000000000000003690e6ef639f685849ed93a6386d1fccf026c3fb64520940aa46af97f929e112010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e702101000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000f8cb6b856e416fc9e9eec947c6f76eefed65cfe5f1e117a7271396729e5cc8490100000000000000bad91c9aefe173441dae1f273e55090706d412b0723d39bd6c3af053feb183200100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c390701000000000000006e3d07ca7f680aee933830ff37197bba65eea7d3645ac0190cab4715d024bf780100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d70760050100000000000000dc19020c36e3442a05940551f1d6b4b7dffb3343dea0418a8203fc22ac129e6101000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb5501000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c01000000000000007480edf84ab569e559dccc99b87ecb9ae9db670b45a259b7f6e618b063e43113010000000000000020bedd48a5965e2fc0e221bd164deecdee849eb69cb8dc63a37df80b50a3093b010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e51010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa740100000000000000a64dd29103d43e3e898a41f3630ff88b2420953febb931c70ff543673efa251b01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c01000000000000002cf9dbc1e451ba3ead20d5d826533b9315699b3ba0784bd812e15ac9ad31f85d0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000008c64cd873a53fec10c4624239ce35d31d4422e32a109605a162fcbf632427733010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000da98e4363908fa4d7980fe5574ceeac74fae49bf77b3a191654c7731214a565e010000000000000094af0a39f196a145c9406ace38b2b2b9b9ccec2bf2da2e95d0b0b8507b6f38560100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a0100000000000000b2518044cc31062ee50fa81cb6983f314291a0300865fa5cfe149829c5050d24010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a5201000000000000004e8cc21504fda961cf1cfe78e651d033b10f8ab1a4a0c757bd4848a7f2827f0601000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000001285919470b092c61b3deaa9ad83226d41f36d58f0ca5f2e14d11d0724f6f00a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000944ad19383a9ae136f4f11c15687923b9b21319efab021336a3e8f2bd5b5ca20010000000000000068508b2ca3e01d7c8d79d99f1bb06a93058d14f1061d5fed4df13d4bc30aa557010000000000000074f02ed037d28c883df643034a596e4d2a97a23782ee8483c9ae3429ede7e7090100000000000000566948c62b699e382e5379592d1ad3e1823640d386936142cb9b82915ed02d1801000000000000009493e6de34e09c9679b6dca602e38d8c07abb77b3cc487ae3a80661968caa37f01000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b3515010000000000000004734733edcd9cf662389208fb8ccb5f274a7db8187ccc53dc84250f8599d54d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e6380100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb190100000000000000b071e9d6b444a555e034ecdc4d04f2528cc36b347b231b33388564a40fd32b2c01000000000000004e047857f2ec0c7cf295a0673fcc750d4c268cf852711196c4f05bd9dc6414260100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f61001000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c840010000000000000042bbfd10e95a6a1a57b34cbe01ab26605536797742d6d24394ebe95f87bd925c010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000009463e59f6b021a1dbdbf65e56f568ac5736baf96470440d7123605a4bcd93f0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd8780100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f76010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000022a66dd6397c2631df509db3482baac28b546729e6ce965472a9ba2e648ccc74010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a2520100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea840010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e6601000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd0401000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000076fa252aeca5b108fe76ce12e395ed8105d5c98e4abae38bfc7cb4fbd4d43d5501000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000a8731d355eefdfbdb7fb12cfa5a280c0b1e408aca264ef585d42bf97fcfba1160100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d80666401000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a52401000000000000004a1069d2203a75cd1078c39de35c16a6c4c12acbad34f1cba8efc065f80398610100000000000000eedea8652413b5a97c1eda13e1e050b777bd0a8ca31dafd63aeab576a68fb75e0100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000245a9f1c784e83aa6e1a22b7a560de42348ae1c3402060929d669f110da1b7490100000000000000feebe707a9a5eb136d04e5b3b2124627fa76129c1e33cba1d1323047f76b3f22010000000000000062c6c1f6f2478ee092c958842ac4351973bfeb49f55e33b8415ac0296a967b5f01000000000000005c25d331b2e023d12ee512689c3ea95edaadc300c9dc804e98806117f2edf57c01000000000000006205ea8c9da2e39792b9504100d0ce7eec4b9c732297afea3c2a885fe4f5832401000000000000009a64daca74d14dab93385e52ca70940732a8d45ae4b853ce156c3eeca06f0c5f0100000000000000c63e31fd558807e07f9c7dc51f8fa8110679bb1b1cf5585e56d0b6164179b9790100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c2301000000000000001e534cbbe982369a968006efa465cf2a16807a88a5c877d45f090192ea619c6001000000000000001a15acd9aec8d1dd06c7b6a46be298c3fc2ecd51be6724a63da4da286e306f72010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e7630100000000000000140fbeeabfb02dede7214a17c2cf78279d076c80d962431f35d1105c87b8d95501000000000000007cb1f225b90c00f426c33ac4338eeb2dae6467b8a9da5c1556e6588c12ca977b0100000000000000b261a66b9bae17b65e7f6a88d65efb4519925d6c418c9e2ba17bfdbf684b776301000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf712010000000000000050cb54b1bf159465d07933eb2bb1f435edd935c308418ffdd6f25d43bac8362b0100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c491420100000000000000fe9d62e17387326c0e4b75697b2f0fbdff9506992e745d61b4c536c4dc10f57d01000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a0100000000000000464d95a7c8cce76af088d8f781e3073fc194333ab20956b4dd2c25d4a29ac56d01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b2001000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a77480100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000002001d47fbff7291a50650047b27cc47f1d22a0bdfbbfb0b8b7a6e8bbf350bf620100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e8529010000000000000006adb1e6e78084fd5e5df37fafc180d1ed84377ca41de3b5ca43b764f0cb19090100000000000000a496ba57e511f86ff4cf264f9fd7bd3595b37ae55ad671c7790574c87d40415201000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe0837215600100000000000000c280e82e46ecabc4d68169e292c59cef96432f25fe849b8a147db5ca0ce7e17b010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000009295a1f023157921d346b73484b120d46048382107015aa9ed998f1fae95970e010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a0100000000000000d8de542a748c14224ee7faa16157727c852ce502a45b408de0975c88a39c690f01000000000000008013bf5a25c703e64dc4ae7e1248c0f2c7abad9e43672d82611d109740199856010000000000000004a3d449da9c2c02c963df1433b66d0b6599e7a667e3818ecebe84357081703b0100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f01000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e670100000000000000d23c53a531e356646133db73065cd83999693a5bdfc05931238434f5b031522f0100000000000000585ecf59c1396544c1f1dfa5693ded0c96daaf05cc70d55fc8c6fab487b2022e01000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de32010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f3401000000000000008e3509e2bcb4497b4bd7b09dbc1d5647212386afc663222f97602067211607160100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b01000000000000001810712fbe92f2394892a99e3a825490baf1efaf7a3dd1c9bd0e58da0d6711330100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a50030100000000000000163687f38841bbbd2b93787f7f65cc74a2ab94478888abce52207e1b81f46c4d0100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d01000000000000000469db5710f30dc9ed7411417170efd62ce8bbe36ccab6df758a94aa7b7f720b01000000000000007a661c99fd40492b4893407b03822464e7d4853e9ba47fc9e9960c3800d6725f01000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf460100000000000000386f18b82ffe824f7ee1fda0f511d5112dee1c677bee0069f3d8e3d8be1a321d0100000000000000d636bcd260e36a2bea4bb1667bbc86285967381ad5822f8cd98ff7d5c88c7430010000000000000072f2ff3d21f4126e217f10f9d9bd18069c12eaab6922d073dd5241ac718e91200100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b010000000000000096ef8b525c38b9a74a3014bd99979230dab2f20221e8c7d1db50c7a61a02e97e0100000000000000769d9f8b45bcbed8fd84b86d2203ee20d199212007387b10216f8fd9441dfa28010000000000000092c996c1fedd09190bb0fa8cc79e4075ad79eca3d6895d2a99d20e6f89e4182b0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad2102010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e0100000000000000bae8e68bc8f1b66fe3229ee72d77137b394c6b7dfbf55e424f9d2c82d5c99600010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b0100000000000000a8c366514ae829385912b04b0192e934a20045b36cf1911bccc4c064d6d3c46101000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc24010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e01000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c280100000000000000e05c7c7d82498be85294ee984e1f0caf23c53fa9a64cc7e6c5053304c4bb785101000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d610100000000000000a61667ea6442054b56111477f57ecf39b6e90480bfadf54c3e6cb5ac3a3e275801000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b3040100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c0100000000000000229fcd7685d064b9c265aaa3a771582b6600cef963f57af160b34a81c9f84a690100000000000000b225550bd99c7b1ebfce319d76f52fe96c661d6106a4b4c37fd4eede1ba4654f010000000000000024ad842dcdc5f4d84262c6aee5116e88116fb191dbbd1331453202d3583b1f44010000000000000008c21904ad29b5bb3f450de1e5bc20687a45865b5fa3794b3ca089e8c6af761f0100000000000000247e193d802c4416d584533476f39f42cbfc5f35236bbafa4c3bde394eb17f1301000000000000005474f03ced668a1459e8ed416f510a16f551ec1415c42b292670545a3967d311010000000000000096e0b71982f3e7ba6ab06d28dfbf803caf4ac51b7633bee848f4f3fadc0dac48010000000000000052add6e82367acf14eb6bba76b60b8bbe010dd1a58d62ed7814d1c385467a2730100000000000000267e26d0bda346533f2d75c1f49329e20c962cb487d933919647ee110e9e24750100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000206997febf44c717312b9dd8e0a2601abb9cd8bfcf04ae893aee5788702fb9520100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a1843220100000000000000ee52af7afebbad49a1631a96d790be136a9ae9ef0befcef3944ca16214484af90100000000000000040000000000000002efc8cb869ae5714a4f4f590372f3a9a76d748e084658d023958a3a549d616486cb28320101cf2000000000000033730011000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000488d520146f681678e9d229f5e29354edf65e521246b28a4175c0502e060b9200100000000000000da663fef002e63d5de9676a1a930abe7b0d8088657d67a3f24076bce08c661490100000000000000a86e2248480b1f6ad903a965344ecef69838aae812ba3c39d3d9eaae22963f2a0100000000000000f03555628bc649cebf75046ab9663faa1a5421df323f99c82782b7a3d162ce080100000000000000aca7a86b6fcf25daa7f0767bfe36b284f3100dc1ee4dcc971fbb3244bb57221c0100000000000000ba395fcb33327501109ed40712c7a372d25bf3339edfabe2a1964fb7b5d4d82401000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f72010000000000000026db7c5786fddc15f7e96905024905d877537451ed444cb97d3786361a59f64b01000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b01000000000000006869737a2873891c0e4ef80a69e331f64ffc3663c9f3cdf86b440bb41827a252010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f70010000000000000078c35105ea4cd9d6ea0ba91b2c19e78f60931bef5918c1bd2e14259229e7c330010000000000000006d2846642c835b0fb1ff1ef908449376aa8e7c0f3352e55da9a1e97e9528b230100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec326540100000000000000ac8b2b59f77eb5f3725961767878166a3817747018f18cf48c933e284320b90e0100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a0100000000000000a42289d68c963358f3c450a850242bb53121e73e17f0e2ea2b93327446bea33c01000000000000006c50859d9dde209012eb3868c1a3a6e80ae8fa528ace9df68e92dbbae60368200100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc35310010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f010000000000000024532b17fc5fb786660c52aeb03150799165dd05e88ce359189189a4b771f51e0100000000000000b0033313d23127061d7f052a965bfeead348e6fe54f9915474ed52b843382e790100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b010000000000000072a85a9dcc0af833b5a21a51ecbc4a9855c2bef8848e080ed70ac48cd1efdd5f0100000000000000c49cfd152ce3ac1fa142b3b6e720cb173eb7f43c82f021418253a070036f870c01000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e0936010000000000000078f674626909d11d18b6b9d6c21ec4023a2073965c68b2172197f5a12e3e17600100000000000000125becf853d8dc03bc97114ca0c751f6045bd7ef5580e58d32e3b47d7ac5b60301000000000000009237113cf97fee5fafbeb82de593f6125e9c498bd59f0369625f46b326c7d9170100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000562fd7529c92f9370dd6d7ce60d06ea4a826cbefa238231993ecfc9e7725ca240100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f0678771701000000000000005c0494412a296a92296160ac510697d97288753829a5e9d02eafb5f101e60f510100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e010000000000000088f9a16886165d00612032cb1b36669ad62b7325536f499191e711134c71b6070100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c560100000000000000ee0c4369d7e5dca53a68ef223db7c858f2a97f47394c7bc678a8edf719a49e130100000000000000c65c0a74887e9fe5cc56696fac7e7f5f1cd4a68f9661c8384b300bcdfbe67a1801000000000000003690e6ef639f685849ed93a6386d1fccf026c3fb64520940aa46af97f929e112010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e702101000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000f8cb6b856e416fc9e9eec947c6f76eefed65cfe5f1e117a7271396729e5cc8490100000000000000bad91c9aefe173441dae1f273e55090706d412b0723d39bd6c3af053feb183200100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c390701000000000000006e3d07ca7f680aee933830ff37197bba65eea7d3645ac0190cab4715d024bf780100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d70760050100000000000000dc19020c36e3442a05940551f1d6b4b7dffb3343dea0418a8203fc22ac129e6101000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b0100000000000000946071eab9c0fa1de9be2ad3c18041f1326faab41d84d9daf9f89c0daf9c0f00010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb5501000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c01000000000000007480edf84ab569e559dccc99b87ecb9ae9db670b45a259b7f6e618b063e43113010000000000000020bedd48a5965e2fc0e221bd164deecdee849eb69cb8dc63a37df80b50a3093b010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e51010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa190100000000000000844b691aa95ff9a15b50f5e5f4f0e582db6621326cf18d7533f55bc27549497a01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa740100000000000000a64dd29103d43e3e898a41f3630ff88b2420953febb931c70ff543673efa251b01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c01000000000000002cf9dbc1e451ba3ead20d5d826533b9315699b3ba0784bd812e15ac9ad31f85d0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d01000000000000008c64cd873a53fec10c4624239ce35d31d4422e32a109605a162fcbf632427733010000000000000026d7422872cbf4d4918046f240a13a37219a272f4326b3f3bd1249829bbcd12b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000da98e4363908fa4d7980fe5574ceeac74fae49bf77b3a191654c7731214a565e010000000000000094af0a39f196a145c9406ace38b2b2b9b9ccec2bf2da2e95d0b0b8507b6f38560100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a0100000000000000b2518044cc31062ee50fa81cb6983f314291a0300865fa5cfe149829c5050d24010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a5201000000000000004e8cc21504fda961cf1cfe78e651d033b10f8ab1a4a0c757bd4848a7f2827f0601000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000001285919470b092c61b3deaa9ad83226d41f36d58f0ca5f2e14d11d0724f6f00a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000944ad19383a9ae136f4f11c15687923b9b21319efab021336a3e8f2bd5b5ca20010000000000000068508b2ca3e01d7c8d79d99f1bb06a93058d14f1061d5fed4df13d4bc30aa557010000000000000074f02ed037d28c883df643034a596e4d2a97a23782ee8483c9ae3429ede7e7090100000000000000566948c62b699e382e5379592d1ad3e1823640d386936142cb9b82915ed02d1801000000000000009493e6de34e09c9679b6dca602e38d8c07abb77b3cc487ae3a80661968caa37f01000000000000006e7a78e9fdfe275f3e000382ba30452729970578258839db6c0fc568e20b3515010000000000000004734733edcd9cf662389208fb8ccb5f274a7db8187ccc53dc84250f8599d54d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e6380100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb190100000000000000b071e9d6b444a555e034ecdc4d04f2528cc36b347b231b33388564a40fd32b2c01000000000000004e047857f2ec0c7cf295a0673fcc750d4c268cf852711196c4f05bd9dc6414260100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f61001000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c840010000000000000042bbfd10e95a6a1a57b34cbe01ab26605536797742d6d24394ebe95f87bd925c010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000009463e59f6b021a1dbdbf65e56f568ac5736baf96470440d7123605a4bcd93f0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd8780100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f76010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000022a66dd6397c2631df509db3482baac28b546729e6ce965472a9ba2e648ccc74010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a2520100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea840010000000000000078c91c4ee02089ea86612f66d6022a0cbd54afe470a162a72036611623924f6d01000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e6601000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd0401000000000000004ed5f55ec45727a57e2d8d6914f6d2acffb17b9515d347ba045067502a0b140201000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e010000000000000076fa252aeca5b108fe76ce12e395ed8105d5c98e4abae38bfc7cb4fbd4d43d5501000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca2201000000000000007a07e4b6b4daf45f4af2a98e7458034447ae0e67e9a22596848e58d4ba73b9530100000000000000a8731d355eefdfbdb7fb12cfa5a280c0b1e408aca264ef585d42bf97fcfba1160100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed526401000000000000001cc40fa83cd0a4431aa63315b55c669370a4037756089f3402a9021e2d80666401000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a52401000000000000004a1069d2203a75cd1078c39de35c16a6c4c12acbad34f1cba8efc065f80398610100000000000000eedea8652413b5a97c1eda13e1e050b777bd0a8ca31dafd63aeab576a68fb75e0100000000000000cebdabff22e607a75aa8db1bf875511a563200cce3f089972aca719649b6e1760100000000000000245a9f1c784e83aa6e1a22b7a560de42348ae1c3402060929d669f110da1b7490100000000000000feebe707a9a5eb136d04e5b3b2124627fa76129c1e33cba1d1323047f76b3f22010000000000000062c6c1f6f2478ee092c958842ac4351973bfeb49f55e33b8415ac0296a967b5f01000000000000005c25d331b2e023d12ee512689c3ea95edaadc300c9dc804e98806117f2edf57c01000000000000006205ea8c9da2e39792b9504100d0ce7eec4b9c732297afea3c2a885fe4f5832401000000000000009a64daca74d14dab93385e52ca70940732a8d45ae4b853ce156c3eeca06f0c5f0100000000000000c63e31fd558807e07f9c7dc51f8fa8110679bb1b1cf5585e56d0b6164179b9790100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fa49d3457520dd98ca1489b78354d7d30a9bdf2181140072ebda1c3dc3371e450100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c2301000000000000001e534cbbe982369a968006efa465cf2a16807a88a5c877d45f090192ea619c6001000000000000001a15acd9aec8d1dd06c7b6a46be298c3fc2ecd51be6724a63da4da286e306f72010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e7630100000000000000140fbeeabfb02dede7214a17c2cf78279d076c80d962431f35d1105c87b8d95501000000000000007cb1f225b90c00f426c33ac4338eeb2dae6467b8a9da5c1556e6588c12ca977b0100000000000000b261a66b9bae17b65e7f6a88d65efb4519925d6c418c9e2ba17bfdbf684b776301000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf712010000000000000050cb54b1bf159465d07933eb2bb1f435edd935c308418ffdd6f25d43bac8362b0100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c491420100000000000000fe9d62e17387326c0e4b75697b2f0fbdff9506992e745d61b4c536c4dc10f57d01000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a0100000000000000464d95a7c8cce76af088d8f781e3073fc194333ab20956b4dd2c25d4a29ac56d01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b2001000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a77480100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000002001d47fbff7291a50650047b27cc47f1d22a0bdfbbfb0b8b7a6e8bbf350bf620100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e8529010000000000000006adb1e6e78084fd5e5df37fafc180d1ed84377ca41de3b5ca43b764f0cb19090100000000000000a496ba57e511f86ff4cf264f9fd7bd3595b37ae55ad671c7790574c87d40415201000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000003cfa50228b841c7d2fab03db7e4bf282cf14e127ab9b31c23fca1a79be54e823010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe0837215600100000000000000c280e82e46ecabc4d68169e292c59cef96432f25fe849b8a147db5ca0ce7e17b010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000009295a1f023157921d346b73484b120d46048382107015aa9ed998f1fae95970e010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a0100000000000000d8de542a748c14224ee7faa16157727c852ce502a45b408de0975c88a39c690f01000000000000008013bf5a25c703e64dc4ae7e1248c0f2c7abad9e43672d82611d109740199856010000000000000004a3d449da9c2c02c963df1433b66d0b6599e7a667e3818ecebe84357081703b0100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f01000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e670100000000000000d23c53a531e356646133db73065cd83999693a5bdfc05931238434f5b031522f0100000000000000585ecf59c1396544c1f1dfa5693ded0c96daaf05cc70d55fc8c6fab487b2022e01000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f0100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de32010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f3401000000000000008e3509e2bcb4497b4bd7b09dbc1d5647212386afc663222f97602067211607160100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b01000000000000001810712fbe92f2394892a99e3a825490baf1efaf7a3dd1c9bd0e58da0d6711330100000000000000fecb15325d9baf603112dd397d2e83d3694414f529d75c4b639c7e775b979b14010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a50030100000000000000163687f38841bbbd2b93787f7f65cc74a2ab94478888abce52207e1b81f46c4d0100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d01000000000000000469db5710f30dc9ed7411417170efd62ce8bbe36ccab6df758a94aa7b7f720b01000000000000007a661c99fd40492b4893407b03822464e7d4853e9ba47fc9e9960c3800d6725f01000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf460100000000000000386f18b82ffe824f7ee1fda0f511d5112dee1c677bee0069f3d8e3d8be1a321d0100000000000000d636bcd260e36a2bea4bb1667bbc86285967381ad5822f8cd98ff7d5c88c7430010000000000000072f2ff3d21f4126e217f10f9d9bd18069c12eaab6922d073dd5241ac718e91200100000000000000f25d3265659fca9d24ca877823644f1223714b0167d0a676cf3c9c447173d12f01000000000000009ab493c4c8007f49a3e7d1e9f1aef39b39cd66a496e90486e62664725c6ba06f010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b010000000000000096ef8b525c38b9a74a3014bd99979230dab2f20221e8c7d1db50c7a61a02e97e0100000000000000769d9f8b45bcbed8fd84b86d2203ee20d199212007387b10216f8fd9441dfa28010000000000000092c996c1fedd09190bb0fa8cc79e4075ad79eca3d6895d2a99d20e6f89e4182b0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad2102010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e0100000000000000bae8e68bc8f1b66fe3229ee72d77137b394c6b7dfbf55e424f9d2c82d5c99600010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000248cddedee20dbb65f20a1715c2490c09241f6800b72d0c4029a1c234f2ce74b0100000000000000a8c366514ae829385912b04b0192e934a20045b36cf1911bccc4c064d6d3c46101000000000000001cf3abc7c9d8027488ea2f5f2463fd091b194fbeeebf560875e8648fbc67dc24010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e01000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c280100000000000000e05c7c7d82498be85294ee984e1f0caf23c53fa9a64cc7e6c5053304c4bb785101000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d610100000000000000a61667ea6442054b56111477f57ecf39b6e90480bfadf54c3e6cb5ac3a3e275801000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b3040100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c0100000000000000229fcd7685d064b9c265aaa3a771582b6600cef963f57af160b34a81c9f84a690100000000000000b225550bd99c7b1ebfce319d76f52fe96c661d6106a4b4c37fd4eede1ba4654f010000000000000024ad842dcdc5f4d84262c6aee5116e88116fb191dbbd1331453202d3583b1f44010000000000000008c21904ad29b5bb3f450de1e5bc20687a45865b5fa3794b3ca089e8c6af761f0100000000000000247e193d802c4416d584533476f39f42cbfc5f35236bbafa4c3bde394eb17f1301000000000000005474f03ced668a1459e8ed416f510a16f551ec1415c42b292670545a3967d311010000000000000096e0b71982f3e7ba6ab06d28dfbf803caf4ac51b7633bee848f4f3fadc0dac48010000000000000052add6e82367acf14eb6bba76b60b8bbe010dd1a58d62ed7814d1c385467a2730100000000000000267e26d0bda346533f2d75c1f49329e20c962cb487d933919647ee110e9e24750100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000206997febf44c717312b9dd8e0a2601abb9cd8bfcf04ae893aee5788702fb9520100000000000000b41546275611fa185c88c7016e909222b3a757b476316766a72729d074d8e92b0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c0100000000000000e0ee8ff76b364ad2ccc3e82e69cd700c0895607a449c5af3745bb3018a1843220100000000000000d45eba22870b24bf516e7df25b67c81986e93d3327e8b10c32d8a1b3208f9efc0100000000000000040000000000000002", + "babeFinalizedBlockWeight": 5011401, + "finalizedBlockHeader": "0xe054f8f24f0d2997d51756fce6cc7ecb7731a656dc50abb672766ecf0ec6d20fa2e6c804fd14c44bcfc4f7a1f66608af6d08e9b52feff6130ad0eb519fbefad408e6919a7755b0321b2c6b9d3ebd65f57347dd9abf9d1213988a24eea6c41c1063fdd8c90c0642414245b5010311000000cd7a0011000000003cd64eeb4d432862e7ed6446ded0b2e42934b6349bebc98e7e3179938e5d2350696bea1b896f6cd45e2f05baddb61aed7ba6b4edecc5399f8049f909db29820f7c8b859264a59c98872a9716e83af46db366cca16d8a2e1ed64e49488095b30d044245454684030752c33f306b93f0ac407f15fc50c711a0a540d37531e0720ac1eb5a0ea53fa605424142450101b2984693bdc6dc781fcbb1114cd597c7ab6827faebe7d71c9dc2da43f376a416428caad6394a6b745f695c85b06698683c7277d633f85405068f7028feb54681", + "grandpaAuthoritySet": "0xa5046f706506065685b322054d22e8a1f23ca9df75c32a88dda5214ad58b553b4cca01000000000000008a239af78d4659897af698b5670533fa6d215864be8c41e3a2fc4309f9f83dcb0100000000000000e2b9e72d9202e99526fa626d9a6651dfd7c1daec8fc6ba1130af96f7d21a42da010000000000000056b838dd2005e499be47ceef086df4ca9c5fbc1f81968391c31af062a8a8bef301000000000000004a3fc0fe1020c7f460c7bd23d0b657c03368552b2f0a12d80a1c406fd066e0db01000000000000009b992b5e9b99eb2cd3b2b648d6db81ed722a2feb4938d998b58dcb5d159fadfa0100000000000000aee9de3938173700b3e3f4fbf2b200ae296173a0854157f40de2598dd4cad8f10100000000000000262562429feb60edcc7f1db025cc39e6c7b113e26e884338b3f844168e6f6f420100000000000000e3606b27e4146ffe1437860746968e0a026071120cc09d88494126a86d7281090100000000000000b9284bdf22aa83317140b91288555c900d208634f50d07ce8b772d149364085101000000000000005a40b78008713bef1a35714bd32e0ec4c8905dd0728aeb4943280efe766936080100000000000000e8d7333e457fa740db924866152f31c3bfa6124c0367b0878a61aff2d5d6e27e0100000000000000426b2be4596a759a15028d84e08c5c56440e6cede68d088f47c671cc3387c3e6010000000000000070ba6e5985990ba1b1392713236f1b50df750f10f744cc6eb95fa7c5cfbc68760100000000000000116768c765c7ce5a5e895a5342d1f56f1a118901d8d36fe584bab325506f3b280100000000000000e511d441d6d3c822cb276bb2a14b1c8071d9fe1995802383fb5dcf8a92edcfc2010000000000000003e385d1bbcaeed57930ff625035cd65781e3fe9de1d350d783ba261e678c0ac0100000000000000be2235b9d9c9164f494dd688000fb569a37d5c47912ef99b9ebda9318d13345e01000000000000000e0ac68072ac35b8f19f98d13385b6eb75cf6fd4d513d9a2abfe9711b19883bb01000000000000007818639057900f8fb58e3aa8180f6108c251884a9fcb8041ca645cf612bc1eda0100000000000000a8dbfc6cb88ac105e25b9dc7f11e883631824647cd4d0c18014bb6239627b2900100000000000000ed7a7ea18c2d3b3effd9e8d7031592bc99517ca321c1faf7370f7d6d0fdebc47010000000000000041ef4a31eb7dc1e01f4630604e1908e644d7cdee3f66a60f98d6d59605326f8b0100000000000000890f5c296681b8c23038b3d36a491ca9e0e7e809e6455b2bcd28a13700f81abb010000000000000008cc1d6c743da905511a39a6f0a68809a6bc32f8ac25e53bb2d6aca4f493fc9b0100000000000000acd71d4269b3ba2a9de822d494c4d841708e1519c08de41d7fc6153eaf48da8101000000000000007c1024f3b93e54cb1cdde0d2f685e2e16cadabe59e407ebc45eabb07efebca6101000000000000000f42866aa6927f1c5916a8a1a5a5cba2d88e1fff957d80df701617d93ee6407801000000000000005cba2c6f569da1edc3778308da406f266aa53140381dbb3f14f22909ba6e30040100000000000000dac2e90de824b109043f70818d53eabe05e79d518bda504e951d7f4056b0b2720100000000000000652f455eb3d30486151c716a4031bc02bd00254ef3e8290fd29f946d958a46b60100000000000000589fc35b132ef9d7ed9a6787a203e5a3a37f8cd6c775f47ac5e589d55d381a640100000000000000a34b3f8e84aa86be3b47260f67720030795fc96379e5b31cc6c87c2f4d1cc3e001000000000000007a99eb5f9dd892ab541176abfcb3a9b87e184c9f5737f0c1e69b90f62c522aef0100000000000000dccafad8bba5affbc80095564afc9376881907073a060979fabbb962bef08d5601000000000000003bf5b70cb5789c7ac4f6a4c97e6fabfe7a58fe9fed1d79f39c2aabc2c5816ece0100000000000000aa3be8112cdf851411fe9e00fe9ef0a6b58217326ba7c1ab7ed9ce8a34620b250100000000000000c1c1ff5f66fefb5c0849e3b2333411d1f7e9dd4888600e334e7a33623f15fa3601000000000000001e6ce7e1c936b8872d22b1d24f0d5f4eb0ce13d6cda46bbc9b1b93812cbe674c0100000000000000594f51d31b1ae51a8c8ec48f5ab2428607440dd9c8f690ea377e99444529acb501000000000000002f40f2660559a4472aa7d2b5dac22c8925b9baeaec9fa2463cef2a77eb9d3a1b0100000000000000fa2c21f1a03638d4cb35202102240c2b85f5667924d5838cc503721117049da601000000000000008c461493dcd314f4b384169f3741954d8cde37bc8ad988149e40ddf18b4b95e101000000000000008aabd4f6d7ecec7a749c83fc7be33f3b4818cca6f93a4927b4964900df9454e50100000000000000fcc0d954c7d519851e0094cd9a015b4789022a37091e3a04791d0731bd85f0d301000000000000003948bfd09bbbc2fe6ac5dfe53146e32df50828eecf7b2b18cdcff8dc385cbd750100000000000000a2a4af2a11ae7ba812fcc32845583d0354a0f2ffb1271a53c9a976a0f47fff4401000000000000002385953f1ac49461b9c243159d9668b26e7322e19fff7bc18d90634f0f767ce8010000000000000058e304af91397247f704ce95d60845629aa59a50fba1c13896bb2300708db47201000000000000008663371a5899d5e7a8bc99b9a6ce24c8c3f5f1149c1e70accf9560405c1a5bf201000000000000003d28789c6d574f3aa6d14360471901c5bf8255d072c2209fa22ac773bd32e5bf010000000000000041763df8284ae8248ee0f649982ffc7d4f613e07c7bb83cd554aca5dcf8f56250100000000000000cc0c6a91c7971438b621cd9a3bd37a67f52ec4093336585d1e2c73416195e28a0100000000000000de52bfa88c4a76bb22fbebb0f078dfcc5a327034e0044e8f8034f2a96e7adfef0100000000000000bf3fd3d4065b306638662c3e789d830a63d9b343cef5f863d346058387844b58010000000000000005197187ac7eb8d0a3cfadd32f1a7fb662e7e4a16ea718af3f1e4437b865205b01000000000000007d09497b4d65162d28d4940f8eaf8342798e7794ec0f5028d163fea6156cb4f30100000000000000c84074bb67af84cdf84b9df1dadc1188cd75709a8d11bba65f2835d76f38c4730100000000000000aaecb94cc62ac90656976daa8955353e0ff22fcabd55715903be2f958988bc070100000000000000b98c920666586f392d129d480e78a965764ac82de45e691589b3aab7831a7f020100000000000000cb92ffeace78dbafe6fbf275741b4b38657fb81590712aa0bca7877931f6ad39010000000000000034a18d21097f479eecbe51b91c522a798582caafc787134bab6888854742406e010000000000000027791275ae7d4735aa45e70210663067f7d268aa57126a26044c8f6d8572a7d80100000000000000f7c9f4bc8669969246cfb748ac6996db6cd4c1fc634d981a1093b2c3d7a2eadf0100000000000000f001e2e99b378fa4f2d1a50b28c3fcefcd7da3a66314af1280fb7f9cb429dd380100000000000000604ac1feb76a5f2e7100ea7c8546c1b40bd6c59fd96ef9d58c2e93d7afc8aa20010000000000000083a8ca034fded71f681224d5f905b69084b17a51c18f0a06aeff60e868898bb20100000000000000c8185ca8ae6330a1e03490e132163adf517f76402ecac6881a51c8a14ed62f9401000000000000004a68c3ada00a5c4248e74840b836cdb87eec6adbf99dabbb90a8ded6e04de6c60100000000000000c49e3cd2c701bb845963c2870dcca12ed070c3f67ffc20144327a93aa6e896ec010000000000000081b1fce3ee9e31723f1023eaa9f8793e8663e72c50fbb0fbcea9bc78bacc491b01000000000000002dad5b2212ee688f2eeb9ca1fb6a90574f006dc1c6680ac3a8523363a248940b01000000000000004bb953c285fc6de7ef27baf835e8d905e60d86fb1bca0e52af8323e9d1ff219d0100000000000000c69539d72b0745440a1fb4323bd3ce26e309d801d13d5002ba23da25e18e1ce5010000000000000050f9fd6c0623020debb7843bcb832ee1d80db9b156d8e6083ccebd434fe979470100000000000000b8183b905f28b87c68c2d5b2f39f009f2ee22b47235f6c6d6cf6e63121b490300100000000000000b7c13f1239888cda5c8e6ac9ea10675df17633368906e66a487f91ddd3268ca601000000000000002cd51e09c3197e04155b78f3d97742ceffface390dc46f81f2613a94b2e483fd0100000000000000affb713ecdae328aa4436756f6a3e8add6b274d5ef1cc19d7aa69ab82c80e472010000000000000052912b3dfd0ccacd00586b97f1abe32431a2f6fa9c2b3bb17837a1ecde61728001000000000000008a2b50acd1a4955fc814bf6720c7427902a6ce709f3a2d7c17c55b67f6f1c0630100000000000000ff80f99fcf0f4072402a4e522aecd41ff231c5b579d978d0383dda0407ee498b0100000000000000fd856413411b2e50cf1d32f8253c9bf7b055df259c42fc3a501ced6850173f8f01000000000000006565187c86eca2aaf37db6d59405535a5e6dd85e2743a07ebf50e55c2b7fbc890100000000000000d1c146d2429a5a827660008721c7a880e71f44feaa3dc75524c1a9281bac48cd0100000000000000e4b2cffd0b9cacfc500050b27ecae3c55b9b51bd9a416d62605118c8ad4fb09f0100000000000000f42c2e2a4157d51d22d5997dea1342f65e1882e207fd0e64e8e5d44330857eef01000000000000001a13a82af5e22b9863c01e5f0f6bdcebc4a295934e339fa915cada1d5eba7eb801000000000000006ad5224d5c8f7fb3ae15dcb3766c0956ca627a6c91e93c4e770a2908e8f590150100000000000000c898dac07a659dcf7a5d8cd593ce9b463a3a7452678f9a6b4f6ae3785823e5cf0100000000000000f5fef7a87c9f3917fd28640907ce59ad26f33e41baa25d8ead8033ae0b944d7901000000000000005d0124063ede3e49f037df33948477235e5a58f93f8b98bf7203f25e11d4f0b4010000000000000049bfee2608fe8c9d280c80fe2e7e50d15980deeb1d29a2edc7507d17b319e7760100000000000000be95095d93298171c6fb8a1847adfa173d127e13f53482dcb694f891d68f0c58010000000000000085b714accac0654ba57fac59b626dd35802269d2c1d995cea7c335cb05a88f7f0100000000000000098e7f6085499cc37621458acc5a44dd928202482d456fed047f76a7edf1c08a010000000000000033346b5629c0c499b8cce8b797ee9a312d06155fbe898c8a4a09777ecf8ba91c01000000000000007448b6f6db7cfffd8650a1f3f08ddad1e114321ea770c9cfe6154882f586edb50100000000000000eea0e8d1a0aae5e5cd38dda0e172b49f8ea02287fd7d2ca79ffcdf6e593a2831010000000000000037483029302a84623f0a8db165fbed905b0a4fc25e7cfb56e975a0e98336a59b010000000000000053b5918f72e73f92f32b578d1b602f0cc554d98bee8c4e131ef0ac7a63399fb40100000000000000178838772f4eb26785673a57c8365e98a21ede2ed8d1ca3aeccbf7ef2631da110100000000000000587473ac474bbd8c99d14bec88d614426944b5c84dbf2912abac7610741560ff0100000000000000f3300017c9cadc38d61b118edd05c0540768521f88c5092215e47a9d0403fc7a01000000000000001935d43843c66ecf76a9f4c4229de9ed7c172f52aa53d1a279f2856a736661b80100000000000000501c3978722a089f663f75c7865626a43d13ce19bd924583e43a46720584ed140100000000000000cdeaed45451971dcdcf886df977f31b3c004c497037d9940bcbbf2bd6dd2e3340100000000000000cc5dc1c5155dfcf43ee8dc4443292e966cb3226aea4fdf88e73daa259d66b6730100000000000000f14cb581296c3261284a2ed4e5a85dc0280e5618cc8dc1e76d8ab4ab415ecdd30100000000000000096e6c93e51502bdb63438d1cc1207bc5fa4cc1a1330b152ce46ca62f0c88ffd01000000000000006727561447ed474ff4e15645b952a37fa5008d4e694d4853bb55594fa34c4f340100000000000000c05f72a55f91f613b2da541ae27eb6053e80f267c906c135a4ebd848ecfb49db0100000000000000ec295fb809e22c332aa36a57afe05f2c093b2d13e52b0971d8265c5514e4e9690100000000000000efb5f1e4c4ba37f8c159d452d897c607a58518b8355a8454620b3e3ccc3271230100000000000000099a9eb71f9cb1b7d15eae384790b4ec35045a19acea1730ba62f3e7caf31e8b0100000000000000d34560b879f8f4dd8d2fbd4f6d51b9b6f41b76656860646fcef4e1498859a190010000000000000061914b4dba0a1e42e692016cb74943266b257339008ffed4644231a2b48df21a0100000000000000a703a37bd5d93619bfb6ad72c24840b396b2ddb8700db2e1d372a82363ec7d580100000000000000a892342c56149812a43e98c82b6a3dfee7eff384d9b6d832002ea63838f64900010000000000000081bbaa3313b09e3b0ea2817c3e968a33587ec8928539c3f3a6d0e65644612f4901000000000000003d884e3f58913c10c26d8af2a095e231079a3a0b69f775052f7173ff1c3ace2e0100000000000000a81425a86503d911cf060b51310f0bb796f5ce2cb656e524d23f7fac3c9c48000100000000000000c13b603b5fe774d98e59c26fac03f8096ccc42c57d0cbc6a443b4f07a3c077920100000000000000be6b59cb464fadec4e0b22a9f12857ba5cf7a14c4f9551439d36305d582dd7fb0100000000000000f916634f9fd7e54374e30ac6b722ad1793c13cb2d5f2ad38769eaca2f79d414b01000000000000007ba967a2dae0d8839cf44710591db994d18e53b25ec6d0f861da0037c4a4366a0100000000000000222ee6c6a6c62d56cadb4eaad5104d595fe962fbbdd551c81562d3b509212907010000000000000055ca63358082034ddaf76b75f41a396081dd4f39a61eff13f7575e506e10335601000000000000000aadf1b2009026f8f5dd75d532e91dc756fd47572aa0f3c15d26790e6d6b2f27010000000000000050e16d897010823670148ef157d77933bc1721d82c45e80eb73b46b12b5daab601000000000000000228d7fc42b304906518cbd91d73a5384c4893de6cbfe1e7346999df642d3d000100000000000000db9e49a8dc2d75fc63151f9dadc11b7d2d435b9625f62747928fbf7f1be8506f010000000000000082e6b6bf1f275c59fbde0dad91393ae690d5e644d11d23898a9ccfdda025920a01000000000000001bfc78866edf1c38c02c1d1fbea39a2a33f46227dca527ed002d96532e61114a0100000000000000d761043f405069ac01285f1ff258450aac675f08d906b1ae0a1ce54eabcb36d901000000000000000dfbc1b5757e1f0ba348f8af64fb631aaff86cd21fa0529e0bb1fbab250879260100000000000000d791b58285e2c4f17c82a518e099812d2a3f63e1090f1cb2576e2c7695ee24970100000000000000de74612da9080d47be35bf4ded2094e23c1de14477114ddcd7b76b815456ec0c0100000000000000d3b3d9703a265a51a137b9de348587c645a168981ef3e01c9dc482856751b8ef010000000000000003dd543dddd6ad00137ddf94a218bfa19d2f08b4365d696765dc25deef76598b0100000000000000cfb9f7f1fcf903a51af729ed1647aee928630e148990309f9dc9f3b14b114b7601000000000000005216ff912251cd2bcf9db256b3927e737cf909e4b53a375586dad21bb7b907ef0100000000000000d14a779884de1b2fbf079b8e47e8c0edb1c29e282996899a4eab5aaf1f4f41130100000000000000b5b64e522ece2a1a3325f95082e33bbf5832e6116d378ac0f437b7b49727292401000000000000004bf6037c3820cb7468601051701164948b7f7cbbe1ac8cad97e809c76170dddf01000000000000001ec0811cbe4f2ea1e5a714d3ba08c6d7fdec138bcc6406da3c6cd32f1686616d010000000000000025ebbb2a00126545bbedf00318a78b6e61a0b52c81e30231ff45bd32e311472f01000000000000008b7baa89dbac95969a0042fa876a37eaccfcecd3591c4d7ed0e8051aea814cfa01000000000000004715211e268489d1eeccfbd8a5e67235244322c17127226184448741ae332ba10100000000000000055c25dcc9cf8a08ad007ed9c8afb0ba53cebd129a20f194d272535ca9fa06490100000000000000cc8db7467349129a20ab4ba7e705044216651c0eba9d39f1054849edbcd677af01000000000000004df6e4d7da2c11ddb9153c714699f9ab625bbcd5e8e38f1cdeee567dc04abc610100000000000000982d9e3cc8ef3f8d99638b6f9df32c82356e1cd88f123d1e586a604d1d4b0cb401000000000000009cfeed14dd2f96550a0e7edebd9c9a8c8b1d8f7efdd1abca01987654239f3c860100000000000000736925c31654df870fbc29437c9b2a488ac3262e5d80798534ad00c43a61e5470100000000000000e08ce24248f3f8c0cdd313a5d46e6d491fccf6711788b6aca2de82f6700ced5101000000000000008404cabeb0674765bb77af690fa838ba28fa2045d602994a89f07680f4851c83010000000000000006b9e740c0a0e1f8fd31717438d5918ed8680eaccb70fdc9511931ce0d164ae50100000000000000b8cf76a8082d518016ea5588be57b64e156ed23b0f72248975522c23d15ef16101000000000000002565e04c6e0b665fac87f8238bee74837f8f621ed63409f3838d263603400a980100000000000000373b26b330a41547971874dd81c2cbbf8b7e3eda05b861c57205ad7e8c15bbcf0100000000000000056986ef8b6f0f9e092e29540e8d220b40bed9e459e7b9d0247e0e156601e3c20100000000000000620c78305072857b43dadced80ebc057dbfc82b58c14c7b63372ef02140867650100000000000000546ce2099b3863d2d75324d5866bfd5324d8ee4701a99dd53528f8a8c898ca4801000000000000004dc2e72680dbf0156818114fa34d3591f8e6948df25a128e191190c66f6ac35301000000000000005d50d6099c7c88f367568fa473b44785acccd030251627cb371de16e5fa704260100000000000000301b983e5e1320b7c9ff0f2525121b9f3007f68c273ba8ff662b7244f1f95f210100000000000000ef5b937d1eb14d07785430ca8efb57cb965060fac808b9a25ab9d4ab52cf0ad10100000000000000a85e95b303450b71e03368ab702fe362ddb6710e9f374e0814f65fe4b46bd3f20100000000000000b1f748c87b12edf7242b4719cfe68e6761acaa4329beee538d6ff740941d3cd301000000000000009e4dc072780c293ebda8107e014d03b3dea3d3f14bc9d02cb0c9c0776ce63b990100000000000000eedd48a4e6e202e92845fc2fb09da5e1eb2b839e48227f2531142e5fdeb44b2b010000000000000014a3f3f45d0bc1352f8665d1e24cb13d72d95b48c595913cc985dcf58e63c1230100000000000000b1fb5116f8c92bf1d763969194db84f09eaac810117f40a8f84410dd54d6518f010000000000000081a47767e6abad1d3c805d4eedb10a226dd9efb967d5f78f8ac4cec55027f1ac010000000000000028139ae721b771cf57d5afa58579d8dc0f04f04c1e1b631cac64a9fdfaf8b5250100000000000000c5f7618b9d80d894e37364f041cc37cb1350386bc5e236dc91a41948e976c0e60100000000000000b66e24ea84d5e02a7b2b58e20bbf17a0f2a19c4654bf8b07669ba3b9fc4a468101000000000000003c1dcee818434058b7de26ee874ade21bd1149185d6dcba1f67048b931ec3dda01000000000000000d8e0ceb31d11634ff50f20c90d57239a9307602e221baa190c784b144a7eb980100000000000000cab191a66c54e412fbe7fbc074ea0d916279d55d856d870d15bdf88c00538dda010000000000000015b49bdd8cb8b9110a45bd1985746655b330829e1dbe7580ade2fab6531799d301000000000000000428e3ccdba17d779ffba05c9ec7a6264187d13bf89b6009e97200474ad3439701000000000000004c43a374e6b3e6f7d6c5a6b8518ae0d0d232a1c46d63af8fbc800045a14cbe930100000000000000c34f62968a87b2e4a9340a75004029dff5777a020f60fb287f08038491881f220100000000000000f54bb82d58c665ce3289b8765c40e60d84f74da663c164c38e16784d5c142b2c0100000000000000607737116e62ba11852c68515933afb8165f3174d594eef6d01dd7eaddb60ec30100000000000000dea32ed7afbb5b31cb45b6e5daff40fb33e80042994d8d6527ee262e32fb2131010000000000000065dc4c53802befd2acfc3d6d3f66eeb84947e5c15fc7a2165a375352a4faace101000000000000007c39d28f80a16bf0cedb70e36c5ac9063dd9b513c5fbbe2c2222389f428921340100000000000000bdee8597e248688fddc627ad9c95cbebf7d3b5f248b9a742aa2d8e761fa365050100000000000000d28bb3ab66767f313a9510e83fc686e576f0886c03faa6fd2b61eca4e0d5a7d90100000000000000a128a73c5eaa1803618a75bc368c38e4c5cd40999cb72d615b8af1d30cb8cf1d010000000000000020270811c3dc453f37b27d958ef7ad7dd4c7f217c83f94bd0ecd84c60018a8660100000000000000f595e043c5f1974fe8467f514a656265c4e64896b47c6dedddd35bbdcff2bded010000000000000020869a63e7a343094ad0b4ffaa3d83344ffec8c7fb9b177008f78d17eda7dcbf01000000000000003ee731da725307266b32393e3d353b49dcf27f3b55220edbe210af3094f1b2940100000000000000d64083c00178b8dd224afade9792fed8076031bdfe9efc5b8128e6372a9261e201000000000000001c6842f07fb07b318a8d00ce6258844374f8e894853ae5fd4a85c867d3fc32e30100000000000000417e120dbfd0297d59458b48407b62570987f1e907dd6dfa9a20bfe64eb489d80100000000000000443bd12fcb944a0e19b2f76ddd066a713a99d2dd3530a5f39275300d11ac96590100000000000000be724139e9bdd099b70f7edab7d1acf0d05fa1a4ca212f5e2958d31f4272dcda0100000000000000134cf4720486824c6a27fa7892c8d82e805653ba1d98480267ec284a76b792c20100000000000000f701f07489e11959ace47ce003808f4248a6c64b35f51f0551f4a69aa0572e2f0100000000000000c2eb94269c5e5d2ab9a1a300387358679640763b053aca99ba5c1c9083ee717f0100000000000000316bafdefb60951da2738d6c9c2ef1866d139b34b5eab6944d6bae754dd3fb110100000000000000b65475766e6229c87ff34263f5ca58525ab133962bc599ca0eab096ff296f4e60100000000000000ebb1834a568ea7653bc66f394937a0aa4f2f617118d2161e2c11c0d7d2febb9d0100000000000000a51a49fa663cbea3b953fee99f911391d75d638349a2681e30759820c6f3c60b01000000000000000c802c4d0fda23bc38f40210827903d520a0a4cf44ae4da7fb36ff933188faae010000000000000042f47dad5949be7b7b8f81faaec17b1b53465b01b9f8f81e6a45f2fc74e12daf01000000000000007a1291795805dbe300425311ae50ed698450b1912b62e5b5a3264c68bfa970760100000000000000e0df5b2f299314d2d419b46d15c3c8a739182d91c3d4b98cd16c013c3a25c04b01000000000000000150276c1b3d28d42630801c1d4a738ae723887d9286e40ba48d10b0752f7dcc010000000000000098a6defcfeb3dfca36ec46eb373734627a2c395cdd2d886046a11788ed6467af0100000000000000853ba986f8785e8fc1a2ae2fb86f17cc91886d931182ccb8d148379a35cbf02701000000000000009bbc024bfe4f072b94735afda064dc3c7da2b4bc0c50cfad44722543583a372e010000000000000086dee2a2c1977cb6ff99dde8fc5b0cb10dcac44b50b19b80f8252899b091c84b0100000000000000496826b538d97906e14d417b48598d7d591a483ab5f4c6786cd0b96239c2f4cf010000000000000021235f4afb5b0d8ea5123cd4be4205ed27dc25e5e08813563e47f363590928400100000000000000348e8bacc2d40191a6a00e137c745a422ff8fb03148d2ff9cad75efbb7a670140100000000000000768d47629bf074d88ded200706ce2f2ae38434c192129d1736ef8f6af01562b20100000000000000525661070154e9eebb48a7befd2c03e125b218eadb27cb121786678c0f67e5d90100000000000000e12f2b7cb74e1af470eb75f366ab1942e1daa3d84b812d2614b1fbcce156e5c00100000000000000d227434a77cd7b7127c039eb9995aeb025a242c36ca7116372c7c8fe5bc921b50100000000000000510a0c61dca3e1044d3540c08272054462c6353aac4dc06cda265753b126b38501000000000000005db4206baa8706a1b1de0ac7edacbd2a2c93452481808b8fe6c582265b57a60d0100000000000000f8e50e8b63b242e30e5bd266584b6fc690817455d2eac1e04d146dfc1dd3614d0100000000000000761ce3eef4bd0d15601aef70728f54ca72a9859e90841c3d02d5060201671878010000000000000000132d9e682cf8d45ce8efd4bef165a26da5d1349ea1fe9f51abd6dc7622720201000000000000001262625cc59c0e4b7548904c31a02231a601305881a231d4dea45eec6cbbbdcc0100000000000000c3576342cbf99792896ee5329b04ff2eee2fc2bb6d53c5c03d52c8957ee793fb01000000000000006ad4bc289673029ab44f3045eb6fdd3589d05e0e5fd76ee017f650a662f898fb0100000000000000a82f563264d1892dd46873205d03c098d8b03f53e21c797839737e4e5f66a87e010000000000000059dadf17dc0f84c1c334e6a815a04bdfcd0988a3f3bcb713c66ae29e17276cc60100000000000000a54cf1007cb124c12d4fe9c27e1d9aa2c4a238f35be9d6ef4c321f061039ea3f0100000000000000297dc7cf28b3d40a42c5e8faac876bf7227c670e6e031dd0e0537f4fb70e6fbe010000000000000043601ae31cf5b03cb49395dda13809f7398d8670ee4d2172b14a1ab05986ac3b0100000000000000e7f57bd0bc756f24574e3a77c90616adb393e9d4ffceb2c63df19f605cb6a0240100000000000000d207ebfe07d6c8bfd5badd7a25373ef5a9ddac08da3e542e5a9d36439259e8370100000000000000a5f788e86ee2d311357b7aa4a128f063fa4ee36958baf10304c10bde7421aa2c0100000000000000290321d793b7dcb12ad148c2438bb60821bd938b7e9164a0c3d0fc82987f8b6301000000000000002ef11bc5ce1e7b53f788ba01ba581b9171ef36449719ff3eb20973342a4a82850100000000000000ab45f730dd495f657b61b2777091fa8cd11b5a626bea2b514e5e6118021037970100000000000000b79f919442f4ca5ac9195fd09a1239b1a80bd225f8372f1b36a24a8c55de61f201000000000000002832b59000d2027d2bf57fdb40da04bd8aac1498923397517181cc487a92815201000000000000000cd7067f96a2d63fa72065302432f48690485fa5f47c9afab17123e0482785230100000000000000f6f23ae9bb4c269a5959d51f9173270ddefcc354b63de77b672bce58cabe60c801000000000000007a1df073f4a474faa4616f9a6f5d93cedf25716cbe8d05a08afafb570b6e6f9501000000000000004ab3fb4afcd05ee5df8e2bdc39a0a7ec1008355062b9d493fda9158a29f8bee40100000000000000be223d49fdccd102646c9b0d62130fbc8e7f0324d55a3eabaaffb5ed1616795a010000000000000062a91ffda8611ffce3edeb628ea6d3b8b12e5b2448beda6da8334e77a9ecbdd7010000000000000071893ca83ebe6ee06c3eb10dcbfaf70d8267959f6159b4ca36929a69604cadbc010000000000000006cfc80018342011eef81de0346bbc3997cd97f04dcbeccaa30bd4529388976701000000000000007e05f9592cac9232e17c222d076c6abdb6f5f5b8175d5b3858ffdae0324b411f01000000000000004ad600cc461daf6d287d5d2ff0791f74fd7c6aab5714ad50340187a7ce509ea9010000000000000005062bede97a45c6e1c6b593675ee07ce969fae45136cc2b2afc6e705a77f4700100000000000000dc6e03f650e4304ca8d1598dde8d4faf45891987bfc49ef785ace47c4c0b5573010000000000000026cdfb88461d7125f438c599e062799219b385bacca93f3cdbe5418c9d4d499301000000000000000f19c3ed807ad5f2b7546f5e6c5e9bb934835d54ed1f4f989540b86a2ca02b550100000000000000e4c1d1377894eee032e1a60dbac6252e23f35bbb43ce51d5f98652cfee58d5bf0100000000000000666bc268601f06ff4b004b1509bf379603d3f4b7ea684f9638060c0ee5d400620100000000000000f2e75ee2303b2cf903b882c9888cc1c51f978abd58ba88354dcdad717f4b8a590100000000000000b426ef68c50245a003dd068c5c086fc9012c08a7f9ec53fbf7df4318261c8c2c0100000000000000e7931a825260ba7d4fdb5f4990d39a71e2a8b215a776ebf770102ca772f103a3010000000000000095fde7b91441fae9d2a6360d30228392519293be5e78cf3305667595cb15e566010000000000000096847258e5fdd261a8df1b3958366b29d28363aeb96a71c2b705e4c8864b97e10100000000000000e7eb7de26e0e24fd528fbbcecf837f26579784dfd4db512c9237e2811139738701000000000000009f677785cfbf44140bdf38770f3d8076f222aa1c9997842d89d580b0f256198f0100000000000000fe76110186e8a72cb09ec93757b5447cc21d543888903f50e95c68dbea91b06301000000000000003adbd2d5abdb70ef56c2d8bd4a7c0d67882a1c2050a856937491e98496a496fe0100000000000000716a181407939b3ea68289e09265d3b9d8a8f21ba7d9f50d8ef8a86fa3c0fd0301000000000000008e3d1c8c0261e193e87403c8959919ef035ba39175d3ba22f31190303601412e0100000000000000e2cbfcc26562b49e656aed7d837a26fe0f9802db088b10330227b6147e150012010000000000000094416582fe359e0a310da59bf93df8ff9665b89071d4977a9a9f3390b75c0c4501000000000000003c718ab91d9b10efbe954734920955972fcb714627739f8cd97280ea67aa5a020100000000000000ac5230e4338aa51c44ab6a0fb903e6fd914fd029dab8f7ca447be54ceba749340100000000000000a76b32c8c28cce206ddf70ff3ad591ed01a0067f9f9baa77f9052ce938d359c701000000000000003a4bfd825ccd308def4a61bac80c579db42b02ea5f1a0768656a326e83a0dd8801000000000000007fab4769c41af85b9de8e784d3b1cda093fc0a8dffcdff21e914c62f131c77580100000000000000d2f1b3b5f7eb1b0d8328911d9ec920327d7a30729e80c1238f86dfe27c4fa3470100000000000000841584e602ab975c936fe7c2025fcea2b5a0061e839b1ad96528942b33d0974b0100000000000000c6b8a9bf9c374cc7c6bf921877097081f5127027a31739fc472e1099c5b3b0ef0100000000000000280084dd48c4c3ebf743e3a8448e2815fcf183dfd0121c19453278da053c20a30100000000000000ca35d63347f9deafb433ec20ef8c469bf2e21dc5e67c0c048a5a04fa369424ac0100000000000000a4f4bbd302c06389ee3614c0943af03d52364f172ef05021aa93d12aef53c3290100000000000000fe3a0547055f2f40e6a286fd5f0f184ad1cc3cbb43bb7ef8ca03b946ab469c0401000000000000009d56cbbe3020b94ea8cb122df6527ceecc8cade4632e81f23b485e773d27b58c010000000000000085b6321d0044ba1f9ed6baf255065c5d9947cd2fd6067f66dfddc74511fe583b0100000000000000db8e840e99078eaf04cb3f1a4d7973607f3e54060b8d100a966f370daf9adc8f0100000000000000fecf7a7926767c290749d398205bdc5460218121022740d3bbf464ec7de046c4010000000000000098763eb72b3f7dbb7a793bd1d4367af5f072ff45a1a6eae0e002e1eaa24c5d5501000000000000008f95a0bd1121c1269f4cab1936bb6017c778d51fed4f204c52ce7b4fac645df1010000000000000079f73931b31ce353119fb4063412e844b16cb3eb92e592ebd822a8c21303554801000000000000002929dacc53614cea1848e7ba20fdeed7cb0bd81571aa72dfb63dfc84d3965d2b010000000000000031a46e639e57d1a11119b17f76617a35b3606d206fb5c3e87710f464f7a57de50100000000000000ed25d7114e2aef2f0e57dc2be1401a4994d8aaafb30223162634a512604a236601000000000000006e070000000000000001a839320100b91d00000000000000002904050001000000000000002a0d050002000000000000002f16050003000000000000008e1f05000400000000000000ee28050005000000000000004d32050006000000000000009d3b05000700000000000000fd44050008000000000000005c4e05000900000000000000b75705000a00000000000000176105000b00000000000000766a05000c00000000000000d67305000d00000000000000357d05000e00000000000000958605000f00000000000000f58f0500100000000000000055990500110000000000000095a205001200000000000000d8ab050013000000000000000db50500140000000000000024da05001500000000000000aaec05001600000000000000f4f5050017000000000000003bff050018000000000000008b0806001900000000000000992406001a00000000000000f92d06001b000000000000000d4a06001c00000000000000685306001d00000000000000b65c06001e00000000000000f76506001f00000000000000308b060020000000000000007b940600210000000000000025a70600220000000000000033c3060023000000000000007fcc06002400000000000000c3d50600250000000000000011df060026000000000000005ae806002700000000000000a0f106002800000000000000410407002900000000000000880d07002a000000000000001b3c07002b00000000000000764507002c00000000000000357407002d00000000000000239907002e000000000000006fa207002f00000000000000c3ab070030000000000000006abe07003100000000000000bdc7070032000000000000000fd107003300000000000000b2e3070034000000000000000aed07003500000000000000971b080036000000000000009d24080037000000000000009c4008003800000000000000255308003900000000000000735c08003a000000000000000c6f08003b00000000000000048b08003c00000000000000589408003d00000000000000d3c208003e00000000000000e4de08003f000000000000003fe808004000000000000000f7fa08004100000000000000aa0d09004200000000000000153309004300000000000000fc6a090044000000000000003e74090045000000000000009a7d0900460000000000000000a30900470000000000000014db0900480000000000000020130a004900000000000000791c0a004a00000000000000364b0a004b0000000000000043830a004c00000000000000e5950a004d0000000000000045bb0a004e0000000000000059f30a004f000000000000000e060b005000000000000000812b0b005100000000000000dc340b005200000000000000ef500b005300000000000000a3630b005400000000000000b69b0b005500000000000000c7d30b005600000000000000dd0b0c005700000000000000f3430c005800000000000000087c0c00590000000000000052b30c005a0000000000000060eb0c005b00000000000000baf40c005c0000000000000072230d005d00000000000000805b0d005e000000000000007e930d005f000000000000007ccb0d00600000000000000076030e006100000000000000793b0e00620000000000000088730e00630000000000000092ab0e00640000000000000083e30e006500000000000000731b0f00660000000000000079530f006700000000000000748b0f0068000000000000001fc30f006900000000000000d0fa0f006a00000000000000633210006b00000000000000826a10006c0000000000000028a210006d0000000000000005b310006e0000000000000055d810006f000000000000004810110070000000000000006548110071000000000000008e8011007200000000000000bfb811007300000000000000bbf011007400000000000000e828120075000000000000001561120076000000000000003b991200770000000000000058d112007800000000000000770913007900000000000000944113007a00000000000000c07913007b00000000000000e7b113007c000000000000000cea13007d0000000000000067f313007e00000000000000d31814007f000000000000002e22140080000000000000008c2b14008100000000000000545a14008200000000000000ad63140083000000000000000e89140084000000000000006892140085000000000000008dca14008600000000000000b00215008700000000000000d03a15008800000000000000f3721500890000000000000015ab15008a000000000000003be315008b000000000000005d1b16008c00000000000000855316008d00000000000000b18b16008e00000000000000d3c316008f00000000000000e9fb16009000000000000000073417009100000000000000bf4617009200000000000000286c1700930000000000000029a41700940000000000000041dc17009500000000000000591418009600000000000000bf3918009700000000000000704c18009800000000000000948418009900000000000000f28d18009a00000000000000bcbc18009b00000000000000e4f418009c000000000000000b2d19009d000000000000002c6519009e00000000000000896e19009f00000000000000519d1900a00000000000000075d51900a100000000000000920d1a00a200000000000000ec161a00a300000000000000b6451a00a400000000000000887d1a00a50000000000000077b51a00a600000000000000cdbe1a00a70000000000000070ed1a00a80000000000000083091b00a9000000000000004e251b00aa00000000000000fe371b00ab00000000000000065d1b00ac000000000000005f661b00ad00000000000000bd6f1b00ae00000000000000de941b00af00000000000000fecc1b00b0000000000000001f041c00b1000000000000000c321c00b2000000000000002f3b1c00b3000000000000002e721c00b4000000000000000ca01c00b50000000000000044a91c00b60000000000000022e11c00b70000000000000044191d00b8000000000000000c481d00b9000000000000006b511d00ba000000000000008b891d00bb00000000000000a5c11d00bc0000000000000053f91d00bd00000000000000ff301e00be00000000000000054d1e00bf0000000000000002691e00c000000000000000d1a01e00c100000000000000c5d81e00c200000000000000cf101f00c30000000000000083481f00c400000000000000af801f00c500000000000000d0b81f00c600000000000000f0f01f00c7000000000000001b292000c80000000000000039612000c90000000000000054992000ca000000000000004fd12000cb000000000000004c092100cc00000000000000031c2100cd000000000000006d412100ce00000000000000cc4a2100cf0000000000000098792100d000000000000000c4b12100d100000000000000eee92100d20000000000000011222200d300000000000000325a2200d40000000000000055922200d50000000000000075ca2200d6000000000000008f022300d700000000000000b13a2300d800000000000000cd722300d90000000000000078852300da00000000000000ce8e2300db00000000000000bdaa2300dc00000000000000abe22300dd0000000000000012112400de00000000000000501a2400df0000000000000045512400e000000000000000a1882400e1000000000000005fc02400e20000000000000013f82400e30000000000000007302500e40000000000000013682500e500000000000000c37a2500e600000000000000a8962500e700000000000000fb9f2500e80000000000000000d82500e90000000000000019102600ea000000000000002b482600eb0000000000000028802600ec000000000000002eb82600ed0000000000000044d42600ee0000000000000058f02600ef00000000000000b3f92600f00000000000000065282700f10000000000000057602700f20000000000000064982700f3000000000000008dd02700f400000000000000a7ec2700f500000000000000b9082800f600000000000000e0402800f700000000000000f6782800f80000000000000019b12800f90000000000000040e92800fa000000000000006c212900fb00000000000000a0592900fc00000000000000107f2900fd00000000000000bc912900fe00000000000000eac92900ff00000000000000fd012a000001000000000000ff1d2a0001010000000000000c3a2a0002010000000000002b722a00030100000000000005aa2a000401000000000000fce12a0005010000000000004ceb2a000601000000000000e0fd2a000701000000000000c3192b000801000000000000be512b0009010000000000000a772b000a01000000000000ae892b000b01000000000000b0a52b000c01000000000000abc12b000d010000000000009bf92b000e0100000000000093312c000f0100000000000087692c00100100000000000075a12c00110100000000000074d92c00120100000000000089112d00130100000000000099492d001401000000000000b0812d001501000000000000c3b92d001601000000000000d1f12d001701000000000000d6292e001801000000000000e9612e001901000000000000ea992e001a01000000000000efd12e001b01000000000000f8092f001c01000000000000f0412f001d01000000000000e9792f001e0100000000000036832f001f01000000000000b2b12f002001000000000000a9cd2f00210100000000000094e92f0022010000000000007121300023010000000000003b5930002401000000000000089130002501000000000000599a30002601000000000000f6c830002701000000000000e30031002801000000000000c03831002901000000000000a17031002a01000000000000f27931002b010000000000007fa831002c010000000000005de031002d01000000000000aae931002e01000000000000441832002f01000000000000295032003001000000000000fe8732003101000000000000aa9a3200320100000000000010c0320033010000000000003af8320034010000000000005f303300350100000000000059683300360100000000000078a0330037010000000000009bd833003801000000000000cb1034003901000000000000f44834003a010000000000001c8134003b0100000000000044b934003c0100000000000055f134003d010000000000009dfa34003e01000000000000302935003f01000000000000c6573500400100000000000023613500410100000000000053993500420100000000000080d135004301000000000000560036004401000000000000b10936004501000000000000ce4136004601000000000000037a3600470100000000000031b2360048010000000000005fea360049010000000000007b2237004a01000000000000995a37004b01000000000000f56337004c01000000000000c69237004d01000000000000feca37004e01000000000000340338004f01000000000000683b380050010000000000009e7338005101000000000000c9ab38005201000000000000dcc7380053010000000000003cd138005401000000000000f8e338005501000000000000b0f6380056010000000000001c1c390057010000000000007a2539005801000000000000da2e39005901000000000000525439005a01000000000000878c39005b01000000000000bbc439005c01000000000000f3fc39005d0100000000000028353a005e010000000000005f6d3a005f0100000000000098a53a006001000000000000cedd3a0061010000000000000c163b006201000000000000404e3b00630100000000000019853b006401000000000000608e3b006501000000000000b8973b0066010000000000000fa13b006701000000000000a7b33b006801000000000000fabc3b00690100000000000049c63b006a010000000000009ccf3b006b01000000000000eed83b006c01000000000000c1f43b006d0100000000000014fe3b006e0100000000000066073c006f01000000000000b7103c0070010000000000009e2c3c007101000000000000ee353c00720100000000000094483c007301000000000000e0513c0074010000000000007c643c0075010000000000001d773c0076010000000000004b9c3c00770100000000000010d43c007801000000000000d80b3d0079010000000000001a153d007a0100000000000053433d007b01000000000000ea553d007c01000000000000225f3d007d0100000000000072683d007e01000000000000b4713d007f01000000000000fb7a3d0080010000000000007a8d3d008101000000000000b8963d00820100000000000006a03d00830100000000000088b23d008401000000000000c8bb3d0085010000000000000bc53d0086010000000000001dea3d008701000000000000e9053e008801000000000000b5213e0089010000000000003b343e008a01000000000000843d3e008b010000000000005e593e008c010000000000001f913e008d0100000000000065c83e008e010000000000006bed3e008f01000000000000a9f63e009001000000000000f6ff3e009101000000000000c1373f0092010000000000005c4a3f0093010000000000003b663f009401000000000000856f3f009501000000000000cf783f0096010000000000003ea73f009701000000000000ccde3f0098010000000000008516400099010000000000001e2940009a010000000000006e4e40009b01000000000000c35740009c010000000000009b8640009d01000000000000cebe40009e0100000000000001f740009f01000000000000372f4100a00100000000000097384100a10100000000000070674100a201000000000000a99f4100a30100000000000065b24100a401000000000000ddd74100a50100000000000096ea4100a6010000000000000b104200a70100000000000044484200a8010000000000009c514200a9010000000000003b804200aa0100000000000051b84200ab010000000000006fd44200ac010000000000005ef04200ad01000000000000b9f94200ae010000000000006a284300af0100000000000078604300b00100000000000077984300b101000000000000abd04300b20100000000000064e34300b30100000000000072ff4300b401000000000000d2084400b50100000000000008414400b6010000000000002e794400b7010000000000005eb14400b8010000000000007de94400b9010000000000009e214500ba010000000000005d344500bb01000000000000d0594500bc0100000000000006924500bd010000000000001aca4500be010000000000004a024600bf01000000000000603a4600c00100000000000084724600c101000000000000abaa4600c20100000000000047bd4600c3010000000000009ec64600c401000000000000a0e24600c5010000000000005df54600c601000000000000bf1a4700c701000000000000d1524700c8010000000000007f814700c901000000000000dd8a4700ca0100000000000039944700cb01000000000000f2c24700cc0100000000000010fb4700cd01000000000000d5294800ce010000000000002c334800cf01000000000000f9614800d001000000000000596b4800d10100000000000078874800d2010000000000008da34800d301000000000000aadb4800d401000000000000c6134900d501000000000000eb4b4900d601000000000000e7834900d701000000000000f9bb4900d801000000000000b6ce4900d9010000000000001bf44900da010000000000004a2c4a00db0100000000000066644a00dc010000000000002f7d4a00dd0100000000000019994a00de01000000000000c0ab4a00df01000000000000aec74a00e001000000000000fed04a00e101000000000000bbff4a00e20100000000000019094b00e301000000000000902e4b00e40100000000000041414b00e50100000000000010704b00e6010000000000006e794b00e7010000000000002b8c4b00e80100000000000094b14b00e901000000000000a4e94b00ea01000000000000d4214c00eb01000000000000d7594c00ec01000000000000e8914c00ed0100000000000004ae4c00ee01000000000000ebc94c00ef0100000000000014024d00f001000000000000fe394d00f1010000000000000a724d00f201000000000000667b4d00f30100000000000013aa4d00f40100000000000031c64d00f50100000000000037e24d00f6010000000000004afe4d00f7010000000000002c1a4e00f801000000000000ea2c4e00f90100000000000049364e00fa010000000000004e524e00fb01000000000000628a4e00fc0100000000000079a64e00fd010000000000001ab94e00fe0100000000000079c24e00ff0100000000000094de4e000002000000000000aafa4e00010200000000000059324f00020200000000000004654f000302000000000000ff764f0004020000000000000d804f0005020000000000007e924f000602000000000000c29b4f000702000000000000f4d34f000802000000000000160c50000902000000000000504450000a02000000000000877c50000b02000000000000b6b450000c02000000000000e7ec50000d0200000000000046f650000e02000000000000b61b51000f020000000000001625510010020000000000004f5d510011020000000000000f7051001202000000000000889551001302000000000000b5cd5100140200000000000014d751001502000000000000e605520016020000000000001f3e5200170200000000000053765200180200000000000089ae52001902000000000000e8b752001a02000000000000b7e652001b0200000000000074f952001c02000000000000e81e53001d020000000000001a5753001e02000000000000558f53001f020000000000008ac753002002000000000000b9ff53002102000000000000f13754002202000000000000277054002302000000000000418c54002402000000000000d1a354002502000000000000d9c8540026020000000000007edb54002702000000000000b81355002802000000000000e34b55002902000000000000c58355002a02000000000000d6bb55002b0200000000000007f455002c02000000000000c30656002d020000000000002c2c56002e020000000000005d6456002f020000000000008f9c56003002000000000000c9d456003102000000000000070d570032020000000000004345570033020000000000007a7d570034020000000000007d99570035020000000000009ab557003602000000000000b4ed57003702000000000000f225580038020000000000002f5e580039020000000000006b9658003a02000000000000a6ce58003b02000000000000e30659003c02000000000000183f59003d02000000000000517759003e02000000000000ad8059003f020000000000008baf59004002000000000000e9b859004102000000000000c5e75900420200000000000002205a0043020000000000003f585a0044020000000000007c905a004502000000000000bcc85a004602000000000000f1005b004702000000000000111d5b00480200000000000030395b0049020000000000006f715b004a02000000000000aca95b004b02000000000000e9e15b004c02000000000000251a5c004d0200000000000060525c004e020000000000009f8a5c004f02000000000000dbc25c00500200000000000019fb5c00510200000000000058335d005202000000000000956b5d005302000000000000c7a35d005402000000000000f7db5d00550200000000000031145e0056020000000000006f4c5e005702000000000000a7845e005802000000000000e0bc5e0059020000000000003fc65e005a020000000000001cf55e005b02000000000000582d5f005c0200000000000093655f005d02000000000000cf9d5f005e0200000000000005d65f005f02000000000000440e600060020000000000008346600061020000000000006a7e6000620200000000000056b46000630200000000000000ec60006402000000000000a72361006502000000000000e25b61006602000000000000f293610067020000000000001bcc61006802000000000000dade61006902000000000000590462006a02000000000000963c62006b02000000000000cc7462006c020000000000008c8762006d02000000000000ffac62006e020000000000003ae562006f02000000000000731d63007002000000000000b05563007102000000000000e98d630072020000000000001dc6630073020000000000005dfe63007402000000000000993664007502000000000000d86e6400760200000000000017a76400770200000000000051df640078020000000000008a1765007902000000000000c34f65007a02000000000000018865007b020000000000003ec065007c020000000000007af865007d02000000000000b63066007e02000000000000f06866007f0200000000000004a16600800200000000000041d966008102000000000000711167008202000000000000ac4967008302000000000000de8167008402000000000000f8b967008502000000000000b8cc6700860200000000000035f2670087020000000000006e2a680088020000000000001c3d680089020000000000007f6268008a02000000000000ba9a68008b02000000000000f3d268008c02000000000000310b69008d02000000000000704369008e02000000000000ae7b69008f02000000000000eeb3690090020000000000002bec6900910200000000000065246a009202000000000000a45c6a009302000000000000e0946a0094020000000000001dcd6a009502000000000000dbdf6a00960200000000000059056b00970200000000000018186b009802000000000000923d6b009902000000000000b0756b009a02000000000000e6ad6b009b0200000000000021e66b009c020000000000005e1e6c009d0200000000000096566c009e02000000000000d28e6c009f020000000000000ac76c00a00200000000000047ff6c00a10200000000000077376d00a202000000000000876f6d00a3020000000000000fa76d00a40200000000000059dc6d00a50200000000000022146e00a602000000000000464c6e00a70200000000000071846e00a802000000000000eea96e00a902000000000000aabc6e00aa0200000000000085eb6e00ab02000000000000e4f46e00ac020000000000001c2d6f00ad02000000000000da3f6f00ae0200000000000053656f00af020000000000008c9d6f00b002000000000000c4d56f00b102000000000000d90d7000b202000000000000d7457000b302000000000000f67d7000b402000000000000deb57000b502000000000000b2ed7000b602000000000000a9257100b702000000000000975d7100b802000000000000338c7100b9020000000000007e957100ba0200000000000068b17100bb0200000000000050cd7100bc020000000000001c057200bd02000000000000610e7200be02000000000000c13c7200bf020000000000006b747200c0020000000000005aac7200c10200000000000032e47200c202000000000000dcf67200c302000000000000321c7300c4020000000000002b547300c5020000000000007d8b7300c60200000000000020c37300c702000000000000cefa7300c8020000000000003c327400c9020000000000009b697400ca02000000000000eda07400cb0200000000000056d87400cc0200000000000090107500cd02000000000000ad2c7500ce020000000000000b367500cf02000000000000c7487500d002000000000000fe807500d10200000000000039b97500d20200000000000073f17500d30200000000000030047600d4020000000000004b207600d502000000000000a9297600d60200000000000006337600d702000000000000d3617600d80200000000000090747600d902000000000000089a7600da020000000000002fd27600db020000000000001a0a7700dc0200000000000022427700dd02000000000000007a7700de02000000000000d2b17700df02000000000000f8e97700e0020000000000002b227800e102000000000000635a7800e202000000000000a0927800e302000000000000daca7800e40200000000000011037900e502000000000000483b7900e60200000000000085737900e702000000000000b1ab7900e802000000000000dae37900e902000000000000121c7a00ea0200000000000049547a00eb02000000000000878c7a00ec02000000000000bfc47a00ed02000000000000edfc7a00ee0200000000000026357b00ef02000000000000606d7b00f0020000000000009da57b00f102000000000000cddd7b00f20200000000000006167c00f3020000000000003f4e7c00f402000000000000fb607c00f50200000000000077867c00f602000000000000b4be7c00f70200000000000014c87c00f802000000000000e0f67c00f9020000000000001b2f7d00fa0200000000000058677d00fb02000000000000959f7d00fc02000000000000d2d77d00fd02000000000000ec0f7e00fe0200000000000025487e00ff020000000000005f807e0000030000000000009ab87e000103000000000000d3f07e000203000000000000ee0c7f0003030000000000000a297f000403000000000000c53b7f00050300000000000043617f0006030000000000007b997f000703000000000000b9d17f000803000000000000f20980000903000000000000284280000a030000000000005e7a80000b0300000000000099b280000c03000000000000d2ea80000d03000000000000082381000e030000000000003e5b81000f030000000000007b9381001003000000000000b8cb81001103000000000000f30382001203000000000000313c82001303000000000000697482001403000000000000a6ac82001503000000000000c4c882001603000000000000e0e482001703000000000000ff00830018030000000000001e1d83001903000000000000dd2f83001a030000000000005b5583001b03000000000000988d83001c03000000000000d5c583001d0300000000000010fe83001e030000000000004e3684001f03000000000000826e84002003000000000000bba684002103000000000000f5de840022030000000000006f0485002303000000000000cc0d850024030000000000002c1785002503000000000000ea2985002603000000000000634f850027030000000000007e6b850028030000000000009a878500290300000000000017ad85002a03000000000000d2bf85002b0300000000000031c985002c030000000000000ef885002d030000000000004a3086002e03000000000000866886002f03000000000000bea086003003000000000000f2d8860031030000000000002a1187003203000000000000871a870033030000000000006449870034030000000000001d5c87003503000000000000998187003603000000000000cfb987003703000000000000eed5870038030000000000000cf2870039030000000000004a2a88003a03000000000000a83388003b03000000000000826288003c03000000000000b69a88003d03000000000000efd288003e030000000000002d0b89003f030000000000004d27890040030000000000006c4389004103000000000000ab7b89004203000000000000eab38900430300000000000028ec8900440300000000000068248a004503000000000000a05c8a004603000000000000b4948a004703000000000000f4cc8a00480300000000000030058b0049030000000000006f3d8b004a030000000000008e598b004b03000000000000ae758b004c03000000000000ecad8b004d0300000000000028e68b004e03000000000000331e8c004f030000000000004f568c0050030000000000008e8e8c005103000000000000c7c68c00520300000000000005ff8c00530300000000000041378d005403000000000000746f8d005503000000000000a4a78d00560300000000000064ba8d005703000000000000e4df8d0058030000000000000a188e00590300000000000023508e005a0300000000000027888e005b03000000000000d89a8e005c0300000000000043c08e005d0300000000000082f88e005e03000000000000c0308f005f03000000000000ff688f0060030000000000001ba18f00610300000000000059d98f006203000000000000981190006303000000000000d64990006403000000000000f56590006503000000000000158290006603000000000000758b9000670300000000000053ba9000680300000000000092f290006903000000000000d22a91006a03000000000000106391006b03000000000000489b91006c03000000000000a2a491006d030000000000001bd391006e03000000000000530992006f03000000000000d32e9200700300000000000090419200710300000000000074799200720300000000000094b19200730300000000000072e092007403000000000000d2e992007503000000000000b21893007603000000000000122293007703000000000000445a93007803000000000000739293007903000000000000f3b793007a03000000000000abca93007b030000000000005ddd93007c03000000000000c40294007d03000000000000e13a94007e03000000000000217394007f0300000000000059ab9400800300000000000090e394008103000000000000c31b95008203000000000000ea53950083030000000000009866950084030000000000000b8c9500850300000000000046c49500860300000000000057fc950087030000000000008f3496008803000000000000cf6c960089030000000000000ba596008a0300000000000045dd96008b03000000000000a3e696008c03000000000000801597008d03000000000000bc4d97008e03000000000000f78597008f030000000000002ebe9700900300000000000030f6970091030000000000005a2e98009203000000000000956698009303000000000000d49e9800940300000000000014d7980095030000000000003b0f990096030000000000006c4799009703000000000000ac7f9900980300000000000078b79900990300000000000026ca99009a030000000000007cef99009b0300000000000085279a009c03000000000000be5f9a009d03000000000000fd979a009e03000000000000b9aa9a009f0300000000000022d09a00a0030000000000003dec9a00a10300000000000058089b00a20300000000000074249b00a3030000000000008b409b00a403000000000000e4499b00a50300000000000038789b00a60300000000000076819b00a703000000000000e4af9b00a803000000000000b7e79b00a903000000000000731f9c00aa03000000000000a6289c00ab030000000000002f3b9c00ac0300000000000012579c00ad030000000000005d609c00ae03000000000000cb8e9c00af0300000000000057a19c00b00300000000000086c69c00b1030000000000005afe9c00b20300000000000002369d00b303000000000000bc6d9d00b40300000000000099a59d00b5030000000000004edd9d00b603000000000000db149e00b703000000000000e0399e00b803000000000000724c9e00b9030000000000002a849e00ba03000000000000ee9f9e00bb03000000000000d1bb9e00bc030000000000007df39e00bd03000000000000f02a9f00be030000000000006a629f00bf03000000000000ff999f00c0030000000000002ed19f00c1030000000000004608a000c203000000000000893fa000c303000000000000a476a000c403000000000000dfada000c5030000000000001cb7a000c6030000000000003ce5a000c703000000000000921ca100c8030000000000008c53a100c903000000000000988aa100ca0300000000000010a6a100cb03000000000000a0c1a100cc03000000000000e5d3a100cd0300000000000072f8a100ce030000000000007c2fa200cf030000000000003766a200d003000000000000389da200d10300000000000056a6a200d203000000000000a9b8a200d303000000000000cac1a200d4030000000000001ad4a200d503000000000000200ba300d6030000000000002714a300d703000000000000bc41a300d8030000000000006778a300d9030000000000000aafa300da0300000000000046dca300db0300000000000065e5a300dc03000000000000a81ba400dd03000000000000d72da400de030000000000002352a400df030000000000006288a400e003000000000000c1bea400e103000000000000f8f4a400e203000000000000212ba500e3030000000000003f61a500e403000000000000656aa500e503000000000000e497a500e60300000000000040cea500e703000000000000b204a600e803000000000000fc3aa600e9030000000000009471a600ea0300000000000037a8a600eb030000000000001adfa600ec03000000000000ea0ca700ed030000000000000e16a700ee030000000000005228a700ef030000000000007d31a700f003000000000000034da700f1030000000000002084a700f2030000000000004a8da700f303000000000000a99fa700f403000000000000f6baa700f503000000000000c1f1a700f603000000000000be28a800f703000000000000a65fa800f8030000000000003e7ba800f903000000000000c296a800fa03000000000000c3cda800fb03000000000000d504a900fc03000000000000f83ba900fd030000000000005f73a900fe03000000000000ceaaa900ff030000000000000bb4a900000400000000000005e2a90001040000000000005e19aa000204000000000000c12baa0003040000000000008e50aa000404000000000000fd62aa0005040000000000008175aa000604000000000000fa87aa0007040000000000002f91aa0008040000000000005dbfaa000904000000000000a3c8aa000a04000000000000e5f6aa000b04000000000000e41bab000c040000000000005b2eab000d04000000000000e765ab000e040000000000004c9dab000f0400000000000085a6ab001004000000000000b8d4ab001104000000000000fdddab0012040000000000003b0cac001304000000000000d043ac001404000000000000827bac001504000000000000b8a0ac0016040000000000005bb3ac00170400000000000029ebac0018040000000000006af4ac0019040000000000000e07ad001a04000000000000f422ad001b04000000000000432cad001c040000000000009935ad001d04000000000000ee3ead001e04000000000000d55aad001f04000000000000bd76ad002004000000000000a592ad00210400000000000076caad002204000000000000f6dcad002304000000000000e001ae0024040000000000004f39ae0025040000000000001371ae0026040000000000005f7aae002704000000000000fc8cae002804000000000000cda8ae0029040000000000005ebbae002a0400000000000081e0ae002b040000000000004f18af002c040000000000001e50af002d04000000000000e687af002e04000000000000a0bfaf002f040000000000005ff7af003004000000000000042fb0003104000000000000da66b00032040000000000009a9eb000330400000000000063d6b0003404000000000000300eb1003504000000000000da45b10036040000000000009a7db100370400000000000050b5b100380400000000000029edb1003904000000000000971bb2003a04000000000000e024b2003b04000000000000995cb2003c040000000000006694b2003d0400000000000048b0b2003e040000000000002eccb2003f0400000000000075d5b200400400000000000008e8b2004104000000000000e703b3004204000000000000ce1fb3004304000000000000b63bb30044040000000000000d45b30045040000000000009f57b30046040000000000007573b3004704000000000000c67cb30048040000000000003aabb3004904000000000000e4e2b3004a04000000000000651ab4004b04000000000000f951b4004c040000000000009389b4004d0400000000000025c1b4004e04000000000000f6f8b4004f04000000000000241eb5005004000000000000b130b50051040000000000007068b500520400000000000040a0b5005304000000000000ecd7b50054040000000000000510b60055040000000000003e48b60056040000000000007a80b6005704000000000000b7b8b6005804000000000000f3f0b60059040000000000002f29b7005a04000000000000ae4eb7005b040000000000006861b7005c04000000000000a599b7005d04000000000000ded1b7005e040000000000005cf7b7005f04000000000000160ab80060040000000000005042b8006104000000000000964bb8006204000000000000687ab8006304000000000000a6b2b800640400000000000066c5b8006504000000000000e5eab80066040000000000000423b90067040000000000003f5bb90068040000000000005d77b90069040000000000007b93b9006a04000000000000b7cbb9006b04000000000000ef03ba006c04000000000000133cba006d040000000000003358ba006e040000000000005174ba006f0400000000000042acba0070040000000000006ce4ba007104000000000000a21cbb007204000000000000e054bb007304000000000000405ebb0074040000000000001b8dbb0075040000000000002ec5bb0076040000000000006dfdbb007704000000000000a435bc007804000000000000d06dbc0079040000000000000ca6bc007a040000000000004adebc007b040000000000008716bd007c04000000000000c34ebd007d04000000000000fc86bd007e040000000000003bbfbd007f040000000000007af7bd008004000000000000d500be008104000000000000b32fbe008204000000000000ea67be00830400000000000027a0be00840400000000000065d8be008504000000000000a410bf008604000000000000dd48bf0087040000000000003b52bf0088040000000000001881bf0089040000000000008fb8bf008a04000000000000cbc1bf008b04000000000000f8efbf008c040000000000007602c0008d040000000000008327c0008e04000000000000075fc0008f040000000000005d96c000900400000000000009cec00091040000000000003b06c10092040000000000002d3ec10093040000000000006476c10094040000000000007aaec1009504000000000000b9e6c1009604000000000000ef1ec20097040000000000002c57c2009804000000000000698fc20099040000000000008cc7c2009a040000000000009effc2009b04000000000000da37c3009c04000000000000ee6fc3009d0400000000000029a8c3009e0400000000000067e0c3009f04000000000000240fc400a0040000000000008218c400a104000000000000b150c400a204000000000000c088c400a304000000000000d2c0c400a404000000000000f6f8c400a5040000000000001231c500a604000000000000d143c500a7040000000000004d69c500a80400000000000089a1c500a904000000000000c4d9c500aa040000000000000112c600ab040000000000005c1bc600ac040000000000003a4ac600ad040000000000007482c600ae04000000000000abbac600af04000000000000e4f2c600b0040000000000001d2bc700b1040000000000002e47c700b2040000000000004863c700b304000000000000687fc700b404000000000000829bc700b5040000000000009bd3c700b604000000000000d80bc800b7040000000000001144c800b804000000000000704dc800b904000000000000d056c800ba040000000000004e7cc800bb0400000000000080b4c800bc04000000000000b1ecc800bd040000000000009808c900be040000000000008d24c900bf04000000000000c75cc900c004000000000000df94c900c104000000000000feb0c900c2040000000000001dcdc900c3040000000000004605ca00c4040000000000006e3dca00c5040000000000009e75ca00c604000000000000029bca00c704000000000000aeadca00c8040000000000008adcca00c904000000000000eae5ca00ca04000000000000251ecb00cb04000000000000fa55cb00cc04000000000000778ccb00cd04000000000000eec3cb00ce0400000000000005fccb00cf040000000000004134cc00d004000000000000716ccc00d10400000000000096a4cc00d204000000000000d3dccc00d30400000000000086efcc00d4040000000000000215cd00d504000000000000ac27cd00d604000000000000264dcd00d7040000000000008656cd00d8040000000000006385cd00d9040000000000003bb4cd00da0400000000000099bdcd00db04000000000000d8f5cd00dc04000000000000172ece00dd040000000000005366ce00de04000000000000909ece00df04000000000000b7d6ce00e00400000000000068e9ce00e104000000000000cc0ecf00e2040000000000000547cf00e304000000000000427fcf00e40400000000000079b7cf00e504000000000000b8efcf00e604000000000000f427d000e7040000000000000b60d000e8040000000000004698d000e90400000000000083d0d000ea04000000000000c008d100eb04000000000000fa40d100ec040000000000003679d100ed0400000000000073b1d100ee0400000000000087cdd100ef04000000000000a6e9d100f004000000000000e521d200f1040000000000001e5ad200f2040000000000005692d200f30400000000000092cad200f40400000000000052ddd200f504000000000000ce02d300f604000000000000e13ad300f7040000000000003444d300f804000000000000dc56d300f904000000000000ef72d300fa040000000000004d7cd300fb0400000000000024abd300fc04000000000000a1d0d300fd040000000000005be3d300fe04000000000000901bd400ff04000000000000ce53d40000050000000000000a8cd40001050000000000003ac4d40002050000000000004ae0d400030500000000000069fcd4000405000000000000a134d50005050000000000006047d5000605000000000000de6cd50007050000000000001ba5d500080500000000000058ddd50009050000000000009415d6000a05000000000000d24dd6000b05000000000000f085d6000c050000000000001ebed6000d05000000000000fbecd6000e050000000000005bf6d6000f050000000000008b2ed7001005000000000000c566d7001105000000000000029fd700120500000000000036d7d70013050000000000006f0fd80014050000000000009f47d8001505000000000000c97fd8001605000000000000e4b7d80017050000000000001ff0d80018050000000000005928d90019050000000000009560d9001a050000000000005473d9001b05000000000000718fd9001c05000000000000d198d9001d0500000000000031a2d9001e050000000000000fd1d9001f05000000000000cfe3d90020050000000000004f09da0021050000000000008941da002205000000000000b979da002305000000000000edb1da00240500000000000047bbda00250500000000000054d7da00260500000000000007eada00270500000000000067f3da0028050000000000003a22db0029050000000000005e5adb002a050000000000007892db002b05000000000000b0cadb002c05000000000000e702dc002d05000000000000183bdc002e050000000000007644dc002f050000000000002773dc003005000000000000dd85dc0031050000000000004dabdc00320500000000000086e3dc003305000000000000bb1bdd003405000000000000944add003505000000000000f453dd003605000000000000ad66dd003705000000000000298cdd00380500000000000060c4dd0039050000000000009cfcdd003a05000000000000fa05de003b05000000000000d734de003c05000000000000b56cde003d0500000000000045a4de003e05000000000000a1d2de003f05000000000000e4dbde0040050000000000002fe5de0041050000000000003c05df004205000000000000d81adf004305000000000000d636df0044050000000000002840df004505000000000000d252df004605000000000000cf6edf004705000000000000a9a6df004805000000000000eeafdf00490500000000000047b9df004a05000000000000b1dedf004b050000000000000de8df004c050000000000006e0de0004d05000000000000cb16e0004e05000000000000d84ee0004f050000000000007886e0005005000000000000b3bee0005105000000000000c3f6e0005205000000000000fe2ee10053050000000000002c67e1005405000000000000e679e1005505000000000000a68ce1005605000000000000629fe10057050000000000009bd7e10058050000000000005806e2005905000000000000b10fe2005a05000000000000e647e2005b050000000000001880e2005c050000000000007689e2005d050000000000004cb8e2005e050000000000007ef0e2005f05000000000000b228e3006005000000000000e760e30061050000000000002499e300620500000000000060d1e30063050000000000009c09e4006405000000000000d441e4006505000000000000334be40066050000000000000a7ae4006705000000000000e0a8e400680500000000000040b2e40069050000000000006feae4006a05000000000000a022e5006b05000000000000de5ae5006c050000000000001a93e5006d0500000000000055cbe5006e050000000000000bdee5006f050000000000008203e6007005000000000000db0ce6007105000000000000b53be6007205000000000000f073e60073050000000000004e7de60074050000000000002cace60075050000000000008cb5e60076050000000000006be4e6007705000000000000a51ce7007805000000000000dc54e7007905000000000000168de7007a050000000000004ac5e7007b0500000000000057fde7007c050000000000009335e8007d05000000000000d06de8007e050000000000002e77e8007f0500000000000004a6e80080050000000000003fdee80081050000000000007b16e9008205000000000000b74ee9008305000000000000e886e900840500000000000015bfe900850500000000000046f7e9008605000000000000602fea0087050000000000000442ea0088050000000000005a4bea0089050000000000006a67ea008a05000000000000889fea008b05000000000000daa8ea008c0500000000000079d7ea008d050000000000009f0feb008e050000000000005c22eb008f050000000000001c35eb009005000000000000d847eb0091050000000000000e80eb0092050000000000003eb8eb00930500000000000076f0eb009405000000000000ad28ec009505000000000000e660ec0096050000000000002399ec00970500000000000060d1ec0098050000000000009e09ed0099050000000000005e1ced009a05000000000000da41ed009b050000000000009654ed009c050000000000005567ed009d05000000000000127aed009e050000000000004ab2ed009f0500000000000082eaed00a005000000000000e1f3ed00a105000000000000bd22ee00a205000000000000fa5aee00a3050000000000003493ee00a405000000000000929cee00a50500000000000070cbee00a605000000000000ac03ef00a705000000000000eb3bef00a805000000000000fb73ef00a905000000000000feabef00aa05000000000000bebeef00ab0500000000000038e4ef00ac050000000000004e1cf000ad050000000000008854f000ae05000000000000958cf000af05000000000000c5c4f000b005000000000000fffcf000b1050000000000002e35f100b205000000000000de47f100b305000000000000466df100b4050000000000005da5f100b50500000000000094ddf100b605000000000000c115f200b705000000000000fa4df200b8050000000000002d86f200b90500000000000067bef200ba05000000000000a0f6f200bb05000000000000b52ef300bc050000000000003254f300bd05000000000000ef66f300be05000000000000239ff300bf0500000000000032d7f300c005000000000000dde9f300c1050000000000001e0ff400c2050000000000004f47f400c3050000000000008d7ff400c4050000000000006bb7f400c5050000000000009beff400c605000000000000c927f500c705000000000000ff5ff500c8050000000000003198f500c90500000000000063d0f500ca050000000000008908f600cb05000000000000c240f600cc050000000000001d66f600cd05000000000000ca78f600ce05000000000000fbb0f600cf0500000000000031e9f600d0050000000000006021f700d1050000000000009e59f700d205000000000000d891f700d3050000000000000acaf700d4050000000000004402f800d5050000000000007b3af800d605000000000000fa5ff800d705000000000000b672f800d805000000000000ebaaf800d90500000000000048b4f800da0500000000000024e3f800db05000000000000601bf900dc050000000000009753f900dd05000000000000ac8bf900de05000000000000e3c3f900df050000000000001cfcf900e0050000000000005934fa00e105000000000000936cfa00e205000000000000a7a4fa00e305000000000000dfdcfa00e4050000000000001a15fb00e5050000000000004d4dfb00e605000000000000a656fb00e7050000000000007b85fb00e805000000000000a2bdfb00e905000000000000dff5fb00ea050000000000005f1bfc00eb050000000000001e2efc00ec050000000000005266fc00ed050000000000000c79fc00ee05000000000000cc8bfc00ef050000000000002995fc00f005000000000000899efc00f105000000000000c1d6fc00f2050000000000007ee9fc00f3050000000000003dfcfc00f405000000000000f00efd00f5050000000000004c18fd00f6050000000000001a47fd00f7050000000000004a7ffd00f80500000000000086b7fd00f905000000000000beeffd00fa050000000000001ef9fd00fb05000000000000ee27fe00fc050000000000000944fe00fd050000000000002560fe00fe05000000000000307cfe00ff050000000000002798fe000006000000000000e2aafe00010600000000000042b4fe0002060000000000005dd0fe0003060000000000009a08ff000406000000000000ca40ff000506000000000000244aff000606000000000000f278ff0007060000000000002db1ff00080600000000000063e9ff000906000000000000712100010a06000000000000313400010b060000000000004c5000010c06000000000000ac5900010d06000000000000b49100010e06000000000000e3c900010f06000000000000f60101011006000000000000103a010111060000000000003056010112060000000000004c720101130600000000000084aa01011406000000000000c2e201011506000000000000fe1a02011606000000000000235302011706000000000000618b020118060000000000009dc3020119060000000000005ad602011a06000000000000badf02011b06000000000000d7fb02011c06000000000000370503011d06000000000000f71703011e06000000000000133403011f06000000000000516c03012006000000000000107f030121060000000000008da403012206000000000000cadc03012306000000000000f81404012406000000000000324d0401250600000000000070850401260600000000000080bd040127060000000000008bf504012806000000000000842d05012906000000000000d73605012a060000000000008b6505012b06000000000000c19d05012c06000000000000f9d505012d060000000000002e0e06012e06000000000000664606012f060000000000009d7e06013006000000000000d7b60601310600000000000011ef06013206000000000000442707013306000000000000725f07013406000000000000af9707013506000000000000e7cf070136060000000000001f0808013706000000000000372408013806000000000000544008013906000000000000917808013a06000000000000c8b008013b0600000000000001e908013c060000000000000f2109013d06000000000000085909013e06000000000000a99009013f06000000000000b5c809014006000000000000c5000a014106000000000000d2380a01420600000000000006710a014306000000000000f5a80a0144060000000000002be10a01450600000000000012190b01460600000000000048510b01470600000000000086890b014806000000000000e5920b014906000000000000c4c10b014a0600000000000000fa0b014b060000000000001d320c014c060000000000000b6a0c014d06000000000000c5980c014e060000000000001aa20c014f06000000000000d7d00c0150060000000000002dda0c01510600000000000069120d015206000000000000a44a0d015306000000000000df820d0154060000000000001dbb0d01550600000000000055f30d015606000000000000852b0e01570600000000000083630e015806000000000000c39b0e0159060000000000001ba50e015a060000000000007bae0e015b06000000000000f7d30e015c06000000000000afe60e015d06000000000000290c0f015e0600000000000065440f015f06000000000000db690f016006000000000000977c0f016106000000000000d2b40f016206000000000000ecec0f016306000000000000062510016406000000000000ea5c10016506000000000000f49410016606000000000000ffcc100167060000000000005ed610016806000000000000d6fb10016906000000000000340511016a06000000000000613d11016b060000000000008b7511016c06000000000000919111016d06000000000000abad11016e06000000000000e0e511016f060000000000001d1e120170060000000000005556120171060000000000006c8e120172060000000000008aaa12017306000000000000a3c612017406000000000000bdfe12017506000000000000f83613017606000000000000126f130177060000000000006c9413017806000000000000c99d1301790600000000000029a713017a060000000000005bdf13017b06000000000000b8e813017c0600000000000016f213017d060000000000008d1714017e06000000000000ec2014017f06000000000000a43314018006000000000000bc4f14018106000000000000d58714018206000000000000919a1401830600000000000005c0140184060000000000005fc914018506000000000000f8f714018606000000000000a10a15018706000000000000fa1315018806000000000000561d15018906000000000000fa2f15018a06000000000000513915018b06000000000000aa4215018c06000000000000106815018d060000000000002f8415018e060000000000004ba015018f060000000000002cbc15019006000000000000ccce1501910600000000000019d81501920600000000000076e115019306000000000000331016019406000000000000664816019506000000000000998016019606000000000000d5b81601970600000000000093cb16019806000000000000f3d4160199060000000000000ff116019a06000000000000cd0317019b06000000000000492917019c06000000000000a33217019d06000000000000444517019e060000000000003a6117019f06000000000000117d1701a0060000000000001c991701a10600000000000059d11701a2060000000000008c091801a306000000000000c2411801a4060000000000001e4b1801a50600000000000037671801a606000000000000f2791801a7060000000000001fb21801a806000000000000dec41801a90600000000000056ea1801aa0600000000000005fd1801ab0600000000000079221901ac06000000000000b25a1901ad06000000000000e5921901ae06000000000000f9ca1901af060000000000005df01901b00600000000000017031a01b1060000000000003a3b1a01b206000000000000e64d1a01b30600000000000044731a01b406000000000000a37c1a01b50600000000000078ab1a01b6060000000000006ee31a01b706000000000000921b1b01b806000000000000be531b01b9060000000000001d5d1b01ba06000000000000ec8b1b01bb0600000000000009c41b01bc06000000000000e5fb1b01bd06000000000000f1331c01be06000000000000ef6b1c01bf06000000000000a39a1c01c006000000000000fba31c01c106000000000000f2db1c01c206000000000000f8131d01c306000000000000df4b1d01c40600000000000075831d01c506000000000000aaa81d01c6060000000000003bbb1d01c7060000000000002fd71d01c80600000000000017f31d01c90600000000000067fc1d01ca06000000000000ad211e01cb06000000000000fb2a1e01cc0600000000000052341e01cd06000000000000da621e01ce06000000000000c87e1e01cf06000000000000b09a1e01d00600000000000089d21e01d1060000000000000fe51e01d2060000000000005fee1e01d3060000000000003b0a1f01d406000000000000f8411f01d50600000000000098541f01d606000000000000ac5d1f01d70600000000000094791f01d8060000000000006eb11f01d90600000000000038e91f01da060000000000000b212001db06000000000000e6582001dc06000000000000c8902001dd0600000000000062a32001de060000000000007ac82001df060000000000001cdb2001e0060000000000005d002101e10600000000000021382101e206000000000000f76f2101e3060000000000003d792101e406000000000000cea72101e50600000000000095df2101e6060000000000006e172201e706000000000000334f2201e80600000000000085582201e90600000000000010872201ea06000000000000eea22201eb06000000000000cbbe2201ec06000000000000a9da2201ed060000000000009ef62201ee060000000000003d092301ef06000000000000782e2301f0060000000000000c412301f1060000000000005e4a2301f20600000000000045662301f3060000000000003b822301f406000000000000299e2301f506000000000000fed52301f606000000000000990d2401f7060000000000002c202401f806000000000000173c2401f90600000000000063452401fa06000000000000fd572401fb060000000000002a7d2401fc0600000000000000b52401fd06000000000000b8ec2401fe0600000000000037242501ff06000000000000155c25010007000000000000e69325010107000000000000a6cb25010207000000000000630326010307000000000000b30c260104070000000000000916260105070000000000005b1f26010607000000000000523b260107070000000000004857260108070000000000002d732601090700000000000018ab26010a07000000000000fdc626010b07000000000000ede226010c070000000000008d1127010d07000000000000e31a27010e07000000000000cc5227010f07000000000000ac8a270110070000000000004b9d2701110700000000000090c22701120700000000000087fa27011307000000000000583228011407000000000000fe6928011507000000000000557328011607000000000000f4a128011707000000000000ced9280118070000000000007d1129011907000000000000414929011a070000000000001a8129011b07000000000000deb829011c07000000000000bff029011d07000000000000a8282a011e070000000000008b602a011f07000000000000dc692a0120070000000000002d732a0121070000000000007a7c2a012207000000000000198f2a01230700000000000069982a01240700000000000003ab2a0125070000000000004ab42a0126070000000000009ebd2a01270700000000000041d02a012807000000000000e7e22a01290700000000000089f52a012a0700000000000023082b012b07000000000000cb1a2b012c0700000000000018242b012d070000000000006b2d2b012e07000000000000ba362b012f070000000000000e402b013007000000000000af522b013107000000000000035c2b0132070000000000004c652b0133070000000000009b6e2b013407000000000000e4772b013507000000000000abaf2b013607000000000000f8b82b01370700000000000052c22b013807000000000000f0d42b0139070000000000008de72b013a0700000000000081032c013b070000000000005e1f2c013c070000000000004a3b2c013d0700000000000037572c013e070000000000000a8f2c013f070000000000005e982c014007000000000000eeaa2c0141070000000000007fbd2c014207000000000000d2c62c014307000000000000b6fe2c0144070000000000008f362d014507000000000000426e2d014607000000000000d9a52d014707000000000000a0dd2d0148070000000000003df02d0149070000000000004f152e014a07000000000000971e2e014b07000000000000e2272e014c0700000000000035312e014d07000000000000cb432e014e07000000000000174d2e014f07000000000000a57b2e015007000000000000f8842e015107000000000000e0bc2e015207000000000000bdf42e0153070000000000009d2c2f015407000000000000e9352f015507000000000000353f2f015607000000000000cf512f0157070000000000006e642f0158070000000000001b772f015907000000000000659c2f015a070000000000005bd42f015b0700000000000001e72f015c07000000000000470c30015d07000000000000464430015e07000000000000904d30015f07000000000000e456300160070000000000003b6030016107000000000000327c30016207000000000000d68e300163070000000000002d983001640700000000000032b430016507000000000000faeb30016607000000000000f12331016707000000000000c65b310168070000000000001c6531016907000000000000bb9331016a0700000000000002b931016b07000000000000a4cb31016c07000000000000870332016d07000000000000721f3201" }, "name": "Polkadot", "properties": { diff --git a/artifacts/polkadot_metadata_full.scale b/artifacts/polkadot_metadata_full.scale index e72afe3236b2fba68f8338541118b516b8d35646..3767f672116e2e17b5ce34c7fb8265e94528acc6 100644 GIT binary patch delta 56098 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

>J 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

5BP(BGV`M=ev*59N)sL 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 diff --git a/artifacts/polkadot_metadata_small.scale b/artifacts/polkadot_metadata_small.scale index 900a982b3e73617776191240aa5b74487933d15e..86f4d6732b0a3ec5b657a31fbd2f07b1348d5eef 100644 GIT binary patch delta 11130 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 %y)wgHs2S%i;7T0?xiVKA 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 b`o87GBV_T_4Ka7ihhHt9aFFlgIqd%fucQEF diff --git a/artifacts/polkadot_metadata_tiny.scale b/artifacts/polkadot_metadata_tiny.scale index f601a8d2519f2bbeafb4b68c8f0bb06aedb8ac2c..73372dfa170aac58c053ecfb07753fb840d61cef 100644 GIT binary patch delta 7307 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 delta 7830 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, /// The `subxt` crate access path in the generated code. - /// Defaults to `::subxt`. + /// Defaults to `::subxt::ext::subxt_core`. #[clap(long = "crate")] crate_path: Option, /// Do not generate documentation for the runtime API code. diff --git a/cli/src/commands/explore/pallets/calls.rs b/cli/src/commands/explore/pallets/calls.rs index f5d9609a2e..9fd3f3a0ef 100644 --- a/cli/src/commands/explore/pallets/calls.rs +++ b/cli/src/commands/explore/pallets/calls.rs @@ -154,10 +154,7 @@ fn mocked_offline_client(metadata: Metadata) -> OfflineClient { H256::from_str("91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3") .expect("Valid hash; qed"); - let runtime_version = subxt::backend::RuntimeVersion { - spec_version: 9370, - transaction_version: 20, - }; + let runtime_version = subxt::client::RuntimeVersion::new(9370, 20); OfflineClient::::new(genesis_hash, runtime_version, metadata) } diff --git a/codegen/src/api/calls.rs b/codegen/src/api/calls.rs index 1eaf6fac9a..8a173cf25a 100644 --- a/codegen/src/api/calls.rs +++ b/codegen/src/api/calls.rs @@ -6,6 +6,7 @@ use super::CodegenError; use heck::{ToSnakeCase as _, ToUpperCamelCase as _}; use proc_macro2::TokenStream as TokenStream2; use quote::{format_ident, quote}; +use scale_typegen::typegen::ir::ToTokensWithSettings; use scale_typegen::{typegen::ir::type_ir::CompositeIRKind, TypeGenerator}; use subxt_metadata::PalletMetadata; @@ -16,7 +17,7 @@ use subxt_metadata::PalletMetadata; /// /// - `type_gen` - [`scale_typegen::TypeGenerator`] that contains settings and all types from the runtime metadata. /// - `pallet` - Pallet metadata from which the calls are generated. -/// - `crate_path` - The crate path under which subxt is located, e.g. `::subxt` when using subxt as a dependency. +/// - `crate_path` - The crate path under which the `subxt-core` crate is located, e.g. `::subxt::ext::subxt_core` when using subxt as a dependency. pub fn generate_calls( type_gen: &TypeGenerator, pallet: &PalletMetadata, @@ -41,9 +42,9 @@ pub fn generate_calls( .iter() .map(|(name, field)| { // Note: fn_arg_type this is relative the type path of the type alias when prefixed with `types::`, e.g. `set_max_code_size::New` - let fn_arg_type = &field.type_path; + let fn_arg_type = field.type_path.to_token_stream(type_gen.settings()); let call_arg = if field.is_boxed { - quote! { #name: ::std::boxed::Box::new(#name) } + quote! { #name: #crate_path::alloc::boxed::Box::new(#name) } } else { quote! { #name } }; @@ -71,7 +72,9 @@ pub fn generate_calls( let docs = &var.composite.docs; // this converts the composite into a full struct type. No Type Parameters needed here. - let struct_def = type_gen.upcast_composite(&var.composite); + let struct_def = type_gen + .upcast_composite(&var.composite) + .to_token_stream(type_gen.settings()); let alias_mod = var.type_alias_mod; // The call structure's documentation was stripped above. let call_struct = quote! { @@ -105,7 +108,9 @@ pub fn generate_calls( .into_iter() .unzip(); - let call_type = type_gen.resolve_type_path(call_ty)?; + let call_type = type_gen + .resolve_type_path(call_ty)? + .to_token_stream(type_gen.settings()); let call_ty = type_gen.resolve_type(call_ty)?; let docs = type_gen.docs_from_scale_info(&call_ty.docs); diff --git a/codegen/src/api/constants.rs b/codegen/src/api/constants.rs index 30bd93484e..108e5cb765 100644 --- a/codegen/src/api/constants.rs +++ b/codegen/src/api/constants.rs @@ -5,6 +5,7 @@ use heck::ToSnakeCase as _; use proc_macro2::TokenStream as TokenStream2; use quote::{format_ident, quote}; +use scale_typegen::typegen::ir::ToTokensWithSettings; use scale_typegen::TypeGenerator; use subxt_metadata::PalletMetadata; @@ -31,7 +32,7 @@ use super::CodegenError; /// /// - `type_gen` - [`scale_typegen::TypeGenerator`] that contains settings and all types from the runtime metadata. /// - `pallet` - Pallet metadata from which the constants are generated. -/// - `crate_path` - The crate path under which subxt is located, e.g. `::subxt` when using subxt as a dependency. +/// - `crate_path` - The crate path under which the `subxt-core` crate is located, e.g. `::subxt::ext::subxt_core` when using subxt as a dependency. pub fn generate_constants( type_gen: &TypeGenerator, pallet: &PalletMetadata, @@ -55,7 +56,9 @@ pub fn generate_constants( )); }; - let return_ty = type_gen.resolve_type_path(constant.ty())?; + let return_ty = type_gen + .resolve_type_path(constant.ty())? + .to_token_stream(type_gen.settings()); let docs = constant.docs(); let docs = type_gen .settings() diff --git a/codegen/src/api/custom_values.rs b/codegen/src/api/custom_values.rs index a528071474..b1b864d2f3 100644 --- a/codegen/src/api/custom_values.rs +++ b/codegen/src/api/custom_values.rs @@ -3,12 +3,13 @@ // see LICENSE for license details. use heck::ToSnakeCase as _; +use scale_typegen::typegen::ir::ToTokensWithSettings; use scale_typegen::TypeGenerator; use std::collections::HashSet; use subxt_metadata::{CustomValueMetadata, Metadata}; use proc_macro2::TokenStream as TokenStream2; -use quote::{quote, ToTokens}; +use quote::quote; /// Generate the custom values mod, if there are any custom values in the metadata. Else returns None. pub fn generate_custom_values( @@ -60,8 +61,8 @@ fn generate_custom_value_fn( let return_ty = type_gen .resolve_type_path(custom_value.type_id()) .expect("type is in metadata; qed") - .to_token_stream(); - let decodable = quote!(#crate_path::custom_values::Yes); + .to_token_stream(type_gen.settings()); + let decodable = quote!(#crate_path::utils::Yes); (return_ty, decodable) } else { // if type registry does not contain the type, we can just return the Encoded scale bytes. diff --git a/codegen/src/api/errors.rs b/codegen/src/api/errors.rs index 38cbca7479..0d02897729 100644 --- a/codegen/src/api/errors.rs +++ b/codegen/src/api/errors.rs @@ -8,6 +8,7 @@ use scale_typegen::TypeGenerator; use subxt_metadata::PalletMetadata; use super::CodegenError; +use scale_typegen::typegen::ir::ToTokensWithSettings; /// Generate error type alias from the provided pallet metadata. pub fn generate_error_type_alias( @@ -18,7 +19,9 @@ pub fn generate_error_type_alias( return Ok(quote!()); }; - let error_type = type_gen.resolve_type_path(error_ty)?; + let error_type = type_gen + .resolve_type_path(error_ty)? + .to_token_stream(type_gen.settings()); let error_ty = type_gen.resolve_type(error_ty)?; let docs = &error_ty.docs; let docs = type_gen diff --git a/codegen/src/api/events.rs b/codegen/src/api/events.rs index 445d66424c..7503a98066 100644 --- a/codegen/src/api/events.rs +++ b/codegen/src/api/events.rs @@ -2,13 +2,13 @@ // This file is dual-licensed as Apache-2.0 or GPL-3.0. // see LICENSE for license details. +use super::CodegenError; use proc_macro2::TokenStream as TokenStream2; use quote::quote; +use scale_typegen::typegen::ir::ToTokensWithSettings; use scale_typegen::TypeGenerator; use subxt_metadata::PalletMetadata; -use super::CodegenError; - /// Generate events from the provided pallet metadata. /// /// The function creates a new module named `events` under the pallet's module. @@ -37,7 +37,7 @@ use super::CodegenError; /// /// - `type_gen` - [`scale_typegen::TypeGenerator`] that contains settings and all types from the runtime metadata. /// - `pallet` - Pallet metadata from which the events are generated. -/// - `crate_path` - The crate path under which subxt is located, e.g. `::subxt` when using subxt as a dependency. +/// - `crate_path` - The crate path under which the `subxt-core` crate is located, e.g. `::subxt::ext::subxt_core` when using subxt as a dependency. pub fn generate_events( type_gen: &TypeGenerator, pallet: &PalletMetadata, @@ -56,7 +56,9 @@ pub fn generate_events( let event_struct_name = &var.composite.name; let event_name = var.variant_name; let alias_mod = var.type_alias_mod; - let struct_def = type_gen.upcast_composite(&var.composite); + let struct_def = type_gen + .upcast_composite(&var.composite) + .to_token_stream(type_gen.settings()); quote! { #struct_def #alias_mod @@ -68,7 +70,9 @@ pub fn generate_events( } }); - let event_type = type_gen.resolve_type_path(event_ty)?; + let event_type = type_gen + .resolve_type_path(event_ty)? + .to_token_stream(type_gen.settings()); let event_ty = type_gen.resolve_type(event_ty)?; let docs = &event_ty.docs; let docs = type_gen diff --git a/codegen/src/api/mod.rs b/codegen/src/api/mod.rs index df6c43b0a1..393dccfe04 100644 --- a/codegen/src/api/mod.rs +++ b/codegen/src/api/mod.rs @@ -13,6 +13,7 @@ mod runtime_apis; mod storage; use scale_typegen::typegen::ir::type_ir::{CompositeFieldIR, CompositeIR, CompositeIRKind}; +use scale_typegen::typegen::ir::ToTokensWithSettings; use scale_typegen::typegen::type_params::TypeParameters; use scale_typegen::typegen::type_path::TypePath; use scale_typegen::TypeGenerator; @@ -44,7 +45,7 @@ impl RuntimeGenerator { /// /// Supported versions: v14 and v15. pub fn new(mut metadata: Metadata) -> Self { - metadata.ensure_unique_type_paths(); + scale_typegen::utils::ensure_unique_type_paths(metadata.types_mut()); RuntimeGenerator { metadata } } @@ -72,7 +73,9 @@ impl RuntimeGenerator { subxt_type_gen_settings(derives, type_substitutes, &crate_path, should_gen_docs); let type_gen = TypeGenerator::new(self.metadata.types(), &settings); - let types_mod = type_gen.generate_types_mod()?; + let types_mod = type_gen + .generate_types_mod()? + .to_token_stream(type_gen.settings()); let mod_ident = &item_mod_ir.ident; let rust_items = item_mod_ir.rust_items(); @@ -121,7 +124,9 @@ impl RuntimeGenerator { subxt_type_gen_settings(derives, type_substitutes, &crate_path, should_gen_docs); let type_gen = TypeGenerator::new(self.metadata.types(), &settings); - let types_mod = type_gen.generate_types_mod()?; + let types_mod = type_gen + .generate_types_mod()? + .to_token_stream(type_gen.settings()); let types_mod_ident = type_gen.types_mod_ident(); let pallets_with_mod_names = self .metadata @@ -214,9 +219,15 @@ impl RuntimeGenerator { // Fetch the paths of the outer enums. // Substrate exposes those under `kitchensink_runtime`, while Polkadot under `polkadot_runtime`. - let call_path = type_gen.resolve_type_path(self.metadata.outer_enums().call_enum_ty())?; - let event_path = type_gen.resolve_type_path(self.metadata.outer_enums().event_enum_ty())?; - let error_path = type_gen.resolve_type_path(self.metadata.outer_enums().error_enum_ty())?; + let call_path = type_gen + .resolve_type_path(self.metadata.outer_enums().call_enum_ty())? + .to_token_stream(type_gen.settings()); + let event_path = type_gen + .resolve_type_path(self.metadata.outer_enums().event_enum_ty())? + .to_token_stream(type_gen.settings()); + let error_path = type_gen + .resolve_type_path(self.metadata.outer_enums().error_enum_ty())? + .to_token_stream(type_gen.settings()); let custom_values = generate_custom_values(&self.metadata, &type_gen, &crate_path); @@ -399,7 +410,7 @@ pub fn generate_type_alias_mod( .expect("composite name in snake_case should be a valid identifier"); let mut modify_field_to_be_type_alias = |field: &mut CompositeFieldIR, alias_name: Ident| { - let type_path = &field.type_path; + let type_path = field.type_path.to_token_stream(type_gen.settings()); aliases.push(quote!(pub type #alias_name = #type_path;)); let type_alias_path: syn::Path = parse_quote!(#alias_mod_name::#alias_name); diff --git a/codegen/src/api/runtime_apis.rs b/codegen/src/api/runtime_apis.rs index 31af5ea5be..b242cb4f10 100644 --- a/codegen/src/api/runtime_apis.rs +++ b/codegen/src/api/runtime_apis.rs @@ -7,6 +7,7 @@ use std::collections::HashSet; use heck::ToSnakeCase as _; use heck::ToUpperCamelCase as _; +use scale_typegen::typegen::ir::ToTokensWithSettings; use scale_typegen::TypeGenerator; use subxt_metadata::{Metadata, RuntimeApiMetadata}; @@ -77,7 +78,7 @@ fn generate_runtime_api( // Generate alias for runtime type. let ty = type_gen .resolve_type_path(input.ty) - .expect("runtime api input type is in metadata; qed"); + .expect("runtime api input type is in metadata; qed").to_token_stream(type_gen.settings()); let aliased_param = quote!( pub type #alias_name = #ty; ); // Structures are placed on the same level as the alias module. @@ -96,7 +97,7 @@ fn generate_runtime_api( let type_aliases = inputs.iter().map(|(_, _, _, aliased_param)| aliased_param); let types_mod_ident = type_gen.types_mod_ident(); - let output = type_gen.resolve_type_path(method.output_ty())?; + let output = type_gen.resolve_type_path(method.output_ty())?.to_token_stream(type_gen.settings()); let aliased_module = quote!( pub mod #method_name { use super::#types_mod_ident; diff --git a/codegen/src/api/storage.rs b/codegen/src/api/storage.rs index 330843ccf7..95dbdf7d2a 100644 --- a/codegen/src/api/storage.rs +++ b/codegen/src/api/storage.rs @@ -13,6 +13,8 @@ use subxt_metadata::{ use super::CodegenError; +use scale_typegen::typegen::ir::ToTokensWithSettings; + /// Generate functions which create storage addresses from the provided pallet's metadata. /// These addresses can be used to access and iterate over storage values. /// @@ -20,7 +22,7 @@ use super::CodegenError; /// /// - `type_gen` - [`scale_typegen::TypeGenerator`] that contains settings and all types from the runtime metadata. /// - `pallet` - Pallet metadata from which the storage items are generated. -/// - `crate_path` - The crate path under which subxt is located, e.g. `::subxt` when using subxt as a dependency. +/// - `crate_path` - The crate path under which the `subxt-core` crate is located, e.g. `::subxt::ext::subxt_core` when using subxt as a dependency. pub fn generate_storage( type_gen: &TypeGenerator, pallet: &PalletMetadata, @@ -69,7 +71,8 @@ fn generate_storage_entry_fns( let storage_entry_ty = storage_entry.entry_type().value_ty(); let storage_entry_value_ty = type_gen .resolve_type_path(storage_entry_ty) - .expect("storage type is in metadata; qed"); + .expect("storage type is in metadata; qed") + .to_token_stream(type_gen.settings()); let alias_name = format_ident!("{}", storage_entry.name().to_upper_camel_case()); let alias_module_name = format_ident!("{snake_case_name}"); @@ -89,7 +92,7 @@ fn generate_storage_entry_fns( .expect("type is in metadata; qed"); let alias_name = format_ident!("Param{}", idx); - let alias_type = primitive_type_alias(&ty_path); + let alias_type = primitive_type_alias(&ty_path, type_gen.settings()); let alias_type_def = quote!( pub type #alias_name = #alias_type; ); let alias_type_path = quote!( types::#alias_module_name::#alias_name ); @@ -169,7 +172,7 @@ fn generate_storage_entry_fns( .unwrap_or_default(); let is_defaultable_type = match storage_entry.modifier() { - StorageEntryModifier::Default => quote!(#crate_path::storage::address::Yes), + StorageEntryModifier::Default => quote!(#crate_path::utils::Yes), StorageEntryModifier::Optional => quote!(()), }; @@ -191,10 +194,10 @@ fn generate_storage_entry_fns( (fn_name, false, true) }; let is_fetchable_type = is_fetchable - .then_some(quote!(#crate_path::storage::address::Yes)) + .then_some(quote!(#crate_path::utils::Yes)) .unwrap_or(quote!(())); let is_iterable_type = is_iterable - .then_some(quote!(#crate_path::storage::address::Yes)) + .then_some(quote!(#crate_path::utils::Yes)) .unwrap_or(quote!(())); let (keys, keys_type) = match keys_slice.len() { @@ -247,7 +250,7 @@ fn generate_storage_entry_fns( arg_name, alias_type_path, .. - }| quote!( #arg_name: impl ::std::borrow::Borrow<#alias_type_path> ), + }| quote!( #arg_name: impl ::core::borrow::Borrow<#alias_type_path> ), ); quote!( @@ -297,16 +300,20 @@ fn generate_storage_entry_fns( )) } -fn primitive_type_alias(type_path: &TypePath) -> TokenStream { +fn primitive_type_alias( + type_path: &TypePath, + settings: &scale_typegen::TypeGeneratorSettings, +) -> TokenStream { // Vec is cast to [T] if let Some(ty) = type_path.vec_type_param() { + let ty = ty.to_token_stream(settings); return quote!([#ty]); } // String is cast to str if type_path.is_string() { return quote!(::core::primitive::str); } - quote!(#type_path) + type_path.to_token_stream(settings) } #[cfg(test)] @@ -424,7 +431,7 @@ mod tests { let expected_storage_constructor = quote!( fn #name_ident( &self, - _0: impl ::std::borrow::Borrow, + _0: impl ::core::borrow::Borrow, ) ); dbg!(&generated_str); diff --git a/codegen/src/lib.rs b/codegen/src/lib.rs index 47631888a9..ac95e57da1 100644 --- a/codegen/src/lib.rs +++ b/codegen/src/lib.rs @@ -25,6 +25,7 @@ use getrandom as _; use api::RuntimeGenerator; use proc_macro2::TokenStream as TokenStream2; +use scale_typegen::typegen::settings::AllocCratePath; use scale_typegen::{ typegen::settings::substitutes::absolute_path, DerivesRegistry, TypeGeneratorSettings, TypeSubstitutes, TypegenError, @@ -77,7 +78,7 @@ pub struct CodegenBuilder { impl Default for CodegenBuilder { fn default() -> Self { CodegenBuilder { - crate_path: syn::parse_quote!(::subxt), + crate_path: syn::parse_quote!(::subxt::ext::subxt_core), use_default_derives: true, use_default_substitutions: true, generate_docs: true, @@ -222,12 +223,12 @@ impl CodegenBuilder { self.item_mod = item_mod; } - /// Set the path to the `subxt` crate. By default, we expect it to be at `::subxt`. + /// Set the path to the `subxt` crate. By default, we expect it to be at `::subxt::ext::subxt_core`. pub fn set_subxt_crate_path(&mut self, crate_path: syn::Path) { self.crate_path = crate_path; } - /// Generate an interface, assuming that the default path to the `subxt` crate is `::subxt`. + /// Generate an interface, assuming that the default path to the `subxt` crate is `::subxt::ext::subxt_core`. /// If the `subxt` crate is not available as a top level dependency, use `generate` and provide /// a valid path to the `subxt¦ crate. pub fn generate(self, metadata: Metadata) -> Result { @@ -295,7 +296,7 @@ impl CodegenBuilder { /// The default [`scale_typegen::TypeGeneratorSettings`], subxt is using for generating code. /// Useful for emulating subxt's code generation settings from e.g. subxt-explorer. pub fn default_subxt_type_gen_settings() -> TypeGeneratorSettings { - let crate_path: syn::Path = parse_quote!(::subxt); + let crate_path: syn::Path = parse_quote!(::subxt::ext::subxt_core); let derives = default_derives(&crate_path); let substitutes = default_substitutes(&crate_path); subxt_type_gen_settings(derives, substitutes, &crate_path, true) @@ -316,6 +317,7 @@ fn subxt_type_gen_settings( compact_as_type_path: Some(parse_quote!(#crate_path::ext::codec::CompactAs)), compact_type_path: Some(parse_quote!(#crate_path::ext::codec::Compact)), insert_codec_attributes: true, + alloc_crate_path: AllocCratePath::Custom(parse_quote!(#crate_path::alloc)), } } @@ -387,7 +389,10 @@ fn default_substitutes(crate_path: &syn::Path) -> TypeSubstitutes { parse_quote!(BTreeMap), parse_quote!(#crate_path::utils::KeyedVec), ), - (parse_quote!(BTreeSet), parse_quote!(::std::vec::Vec)), + ( + parse_quote!(BTreeSet), + parse_quote!(#crate_path::alloc::vec::Vec), + ), // The `UncheckedExtrinsic(pub Vec)` is part of the runtime API calls. // The inner bytes represent the encoded extrinsic, however when deriving the // `EncodeAsType` the bytes would be re-encoded. This leads to the bytes diff --git a/core/Cargo.toml b/core/Cargo.toml new file mode 100644 index 0000000000..41be81d824 --- /dev/null +++ b/core/Cargo.toml @@ -0,0 +1,82 @@ +[package] +name = "subxt-core" +version.workspace = true +authors.workspace = true +edition.workspace = true +rust-version.workspace = true +publish = true + +license.workspace = true +readme = "README.md" +repository.workspace = true +documentation.workspace = true +homepage.workspace = true +description = "A no-std compatible subset of Subxt's functionality" +keywords = ["parity", "subxt", "extrinsic", "no-std"] + +[features] +default = ["std"] +std = [ + "codec/std", + "scale-info/std", + "scale-value/std", + "scale-bits/std", + "scale-decode/std", + "scale-encode/std", + "frame-metadata/std", + "subxt-metadata/std", + "hex/std", + "serde/std", + "serde_json/std", + "tracing/std", + "impl-serde/std", + "primitive-types/std", +] +substrate-compat = ["sp-core", "sp-runtime"] + +[dependencies] + +codec = { package = "parity-scale-codec", workspace = true, default-features = false, features = ["derive"] } +scale-info = { workspace = true, default-features = false, features = ["bit-vec"] } +scale-value = { workspace = true, default-features = false } +scale-bits = { workspace = true, default-features = false } +scale-decode = { workspace = true, default-features = false, features = ["derive", "primitive-types"] } +scale-encode = { workspace = true, default-features = false, features = ["derive", "primitive-types", "bits"] } +frame-metadata = { workspace = true, default-features = false } +subxt-metadata = { workspace = true, default-features = false } +derive-where = { workspace = true } +derive_more = { workspace = true } +hex = { workspace = true, default-features = false, features = ["alloc"] } +serde = { workspace = true, default-features = false, features = ["derive"] } +serde_json = { workspace = true, default-features = false, features = ["raw_value", "alloc"] } +hashbrown = { workspace = true } + + +# For ss58 encoding AccountId32 to serialize them properly: +base58 = { workspace = true } +blake2 = { workspace = true } + +# Provides some deserialization, types like U256/H256 and hashing impls like twox/blake256: +impl-serde = { workspace = true, default-features = false } +primitive-types = { workspace = true, default-features = false, features = ["codec", "serde_no_std", "scale-info"] } +sp-crypto-hashing = { workspace = true } + +# Included if the "substrate-compat" feature is enabled. +sp-core = { workspace = true, optional = true } +sp-runtime = { workspace = true, optional = true } +tracing = { workspace = true, default-features = false } + +[dev-dependencies] +bitvec = { workspace = true } +codec = { workspace = true, features = ["derive", "bit-vec"] } +sp-core = { workspace = true } +sp-keyring = { workspace = true } +sp-runtime = { workspace = true } + + +[package.metadata.docs.rs] +defalt-features = true +rustdoc-args = ["--cfg", "docsrs"] + +[package.metadata.playground] +defalt-features = true diff --git a/core/README.md b/core/README.md new file mode 100644 index 0000000000..fb25fabfa7 --- /dev/null +++ b/core/README.md @@ -0,0 +1,3 @@ +# Subxt-Core + +This library provides a no-std compatible subset of functionality that `subxt` and `subxt-signer` rely on. \ No newline at end of file diff --git a/core/src/blocks/mod.rs b/core/src/blocks/mod.rs new file mode 100644 index 0000000000..5fca97cb87 --- /dev/null +++ b/core/src/blocks/mod.rs @@ -0,0 +1,19 @@ +use scale_decode::DecodeAsFields; + +/// Trait to uniquely identify the extrinsic's identity from the runtime metadata. +/// +/// Generated API structures that represent an extrinsic implement this trait. +/// +/// The trait is utilized to decode emitted extrinsics from a block, via obtaining the +/// form of the `Extrinsic` from the metadata. +pub trait StaticExtrinsic: DecodeAsFields { + /// Pallet name. + const PALLET: &'static str; + /// Call name. + const CALL: &'static str; + + /// Returns true if the given pallet and call names match this extrinsic. + fn is_extrinsic(pallet: &str, call: &str) -> bool { + Self::PALLET == pallet && Self::CALL == call + } +} diff --git a/core/src/client/mod.rs b/core/src/client/mod.rs new file mode 100644 index 0000000000..3368da606d --- /dev/null +++ b/core/src/client/mod.rs @@ -0,0 +1,71 @@ +use crate::{config::Config, metadata::Metadata}; +use derive_where::derive_where; + +/// Each client should be able to provide access to the following fields +/// - runtime version +/// - genesis hash +/// - metadata +#[derive_where(Clone, Debug)] +pub struct ClientState { + genesis_hash: C::Hash, + runtime_version: RuntimeVersion, + metadata: Metadata, +} + +impl ClientState { + pub fn new(genesis_hash: C::Hash, runtime_version: RuntimeVersion, metadata: Metadata) -> Self { + Self { + genesis_hash, + runtime_version, + metadata, + } + } + + pub fn metadata(&self) -> Metadata { + self.metadata.clone() + } + + pub fn runtime_version(&self) -> RuntimeVersion { + self.runtime_version + } + + pub fn genesis_hash(&self) -> C::Hash { + self.genesis_hash + } +} + +/// Runtime version information needed to submit transactions. +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub struct RuntimeVersion { + spec_version: u32, + transaction_version: u32, +} + +impl RuntimeVersion { + pub fn new(spec_version: u32, transaction_version: u32) -> Self { + RuntimeVersion { + spec_version, + transaction_version, + } + } + + /// Version of the runtime specification. A full-node will not attempt to use its native + /// runtime in substitute for the on-chain Wasm runtime unless all of `spec_name`, + /// `spec_version` and `authoring_version` are the same between Wasm and native. + pub fn spec_version(&self) -> u32 { + self.spec_version + } + + /// All existing dispatches are fully compatible when this number doesn't change. If this + /// number changes, then `spec_version` must change, also. + /// + /// This number must change when an existing dispatchable (module ID, dispatch ID) is changed, + /// either through an alteration in its user-level semantics, a parameter + /// added/removed/changed, a dispatchable being removed, a module being removed, or a + /// dispatchable/module changing its index. + /// + /// It need *not* change when a new module is added or when a dispatchable is added. + pub fn transaction_version(&self) -> u32 { + self.transaction_version + } +} diff --git a/subxt/src/config/default_extrinsic_params.rs b/core/src/config/default_extrinsic_params.rs similarity index 100% rename from subxt/src/config/default_extrinsic_params.rs rename to core/src/config/default_extrinsic_params.rs diff --git a/subxt/src/config/extrinsic_params.rs b/core/src/config/extrinsic_params.rs similarity index 53% rename from subxt/src/config/extrinsic_params.rs rename to core/src/config/extrinsic_params.rs index 5b3148c269..51a1b0444e 100644 --- a/subxt/src/config/extrinsic_params.rs +++ b/core/src/config/extrinsic_params.rs @@ -7,46 +7,9 @@ //! [`crate::config::DefaultExtrinsicParams`] provides a general-purpose //! implementation of this that will work in many cases. -use crate::{client::OfflineClientT, Config}; -use core::fmt::Debug; - use super::refine_params::RefineParams; - -/// An error that can be emitted when trying to construct an instance of [`ExtrinsicParams`], -/// encode data from the instance, or match on signed extensions. -#[derive(thiserror::Error, Debug)] -#[non_exhaustive] -pub enum ExtrinsicParamsError { - /// Cannot find a type id in the metadata. The context provides some additional - /// information about the source of the error (eg the signed extension name). - #[error("Cannot find type id '{type_id} in the metadata (context: {context})")] - MissingTypeId { - /// Type ID. - type_id: u32, - /// Some arbitrary context to help narrow the source of the error. - context: &'static str, - }, - /// A signed extension in use on some chain was not provided. - #[error("The chain expects a signed extension with the name {0}, but we did not provide one")] - UnknownSignedExtension(String), - /// Some custom error. - #[error("Error constructing extrinsic parameters: {0}")] - Custom(CustomExtrinsicParamsError), -} - -/// A custom error. -pub type CustomExtrinsicParamsError = Box; - -impl From for ExtrinsicParamsError { - fn from(value: std::convert::Infallible) -> Self { - match value {} - } -} -impl From for ExtrinsicParamsError { - fn from(value: CustomExtrinsicParamsError) -> Self { - ExtrinsicParamsError::Custom(value) - } -} +use crate::{client::ClientState, error::ExtrinsicParamsError, Config}; +use alloc::vec::Vec; /// This trait allows you to configure the "signed extra" and /// "additional" parameters that are a part of the transaction payload @@ -58,10 +21,7 @@ pub trait ExtrinsicParams: ExtrinsicParamsEncoder + Sized + 'static { type Params: RefineParams; /// Construct a new instance of our [`ExtrinsicParams`]. - fn new>( - client: Client, - params: Self::Params, - ) -> Result; + fn new(client: &ClientState, params: Self::Params) -> Result; } /// This trait is expected to be implemented for any [`ExtrinsicParams`], and diff --git a/subxt/src/config/mod.rs b/core/src/config/mod.rs similarity index 97% rename from subxt/src/config/mod.rs rename to core/src/config/mod.rs index ca84a4e9bb..dc0cb7783f 100644 --- a/subxt/src/config/mod.rs +++ b/core/src/config/mod.rs @@ -1,4 +1,4 @@ -// Copyright 2019-2023 Parity Technologies (UK) Ltd. +// Copyright 2019-2024 Parity Technologies (UK) Ltd. // This file is dual-licensed as Apache-2.0 or GPL-3.0. // see LICENSE for license details. @@ -24,7 +24,7 @@ use scale_encode::EncodeAsType; use serde::{de::DeserializeOwned, Serialize}; pub use default_extrinsic_params::{DefaultExtrinsicParams, DefaultExtrinsicParamsBuilder}; -pub use extrinsic_params::{ExtrinsicParams, ExtrinsicParamsEncoder, ExtrinsicParamsError}; +pub use extrinsic_params::{ExtrinsicParams, ExtrinsicParamsEncoder}; pub use polkadot::{PolkadotConfig, PolkadotExtrinsicParams, PolkadotExtrinsicParamsBuilder}; pub use refine_params::{RefineParams, RefineParamsData}; pub use signed_extensions::SignedExtension; @@ -77,7 +77,7 @@ pub trait BlockHash: + Encode + PartialEq + Eq - + std::hash::Hash + + core::hash::Hash { } impl BlockHash for T where @@ -92,7 +92,7 @@ impl BlockHash for T where + Encode + PartialEq + Eq - + std::hash::Hash + + core::hash::Hash { } diff --git a/subxt/src/config/polkadot.rs b/core/src/config/polkadot.rs similarity index 97% rename from subxt/src/config/polkadot.rs rename to core/src/config/polkadot.rs index 209c3b8fb6..04e662277f 100644 --- a/subxt/src/config/polkadot.rs +++ b/core/src/config/polkadot.rs @@ -6,8 +6,8 @@ use super::{Config, DefaultExtrinsicParams, DefaultExtrinsicParamsBuilder}; +use crate::config::SubstrateConfig; pub use crate::utils::{AccountId32, MultiAddress, MultiSignature}; -use crate::SubstrateConfig; pub use primitive_types::{H256, U256}; /// Default set of commonly used types by Polkadot nodes. diff --git a/subxt/src/config/refine_params.rs b/core/src/config/refine_params.rs similarity index 94% rename from subxt/src/config/refine_params.rs rename to core/src/config/refine_params.rs index 3a5c3a2087..978c5f58e8 100644 --- a/subxt/src/config/refine_params.rs +++ b/core/src/config/refine_params.rs @@ -14,7 +14,9 @@ pub struct RefineParamsData { } impl RefineParamsData { - pub(crate) fn new(account_nonce: u64, block_number: u64, block_hash: T::Hash) -> Self { + #[doc(hidden)] + /// Creates a new [`RefineParamsData`] instance. Called from `subxt` when refining signed extensions. + pub fn new(account_nonce: u64, block_number: u64, block_hash: T::Hash) -> Self { RefineParamsData { account_nonce, block_number, diff --git a/subxt/src/config/signed_extensions.rs b/core/src/config/signed_extensions.rs similarity index 90% rename from subxt/src/config/signed_extensions.rs rename to core/src/config/signed_extensions.rs index d5d2a1c66b..9b99fec022 100644 --- a/subxt/src/config/signed_extensions.rs +++ b/core/src/config/signed_extensions.rs @@ -7,19 +7,24 @@ //! [`AnyOf`] to configure the set of signed extensions which are known about //! when interacting with a chain. -use super::extrinsic_params::{ExtrinsicParams, ExtrinsicParamsEncoder, ExtrinsicParamsError}; +use super::extrinsic_params::ExtrinsicParams; use super::refine_params::RefineParamsData; use super::RefineParams; +use crate::client::ClientState; +use crate::config::ExtrinsicParamsEncoder; +use crate::error::ExtrinsicParamsError; use crate::utils::Era; -use crate::{client::OfflineClientT, Config}; +use crate::Config; +use alloc::borrow::ToOwned; +use alloc::boxed::Box; +use alloc::vec::Vec; use codec::{Compact, Encode}; use core::fmt::Debug; -use derivative::Derivative; +use derive_where::derive_where; +use hashbrown::HashMap; use scale_decode::DecodeAsType; use scale_info::PortableRegistry; -use std::collections::HashMap; - /// A single [`SignedExtension`] has a unique name, but is otherwise the /// same as [`ExtrinsicParams`] in describing how to encode the extra and /// additional data. @@ -41,11 +46,8 @@ pub struct CheckSpecVersion(u32); impl ExtrinsicParams for CheckSpecVersion { type Params = (); - fn new>( - client: Client, - _params: Self::Params, - ) -> Result { - Ok(CheckSpecVersion(client.runtime_version().spec_version)) + fn new(client: &ClientState, _params: Self::Params) -> Result { + Ok(CheckSpecVersion(client.runtime_version().spec_version())) } } @@ -68,10 +70,7 @@ pub struct CheckNonce(Compact); impl ExtrinsicParams for CheckNonce { type Params = CheckNonceParams; - fn new>( - _client: Client, - params: Self::Params, - ) -> Result { + fn new(_client: &ClientState, params: Self::Params) -> Result { // If no nonce is set (nor by user nor refinement), use a nonce of 0. let nonce = params.0.unwrap_or(0); Ok(CheckNonce(Compact(nonce))) @@ -109,11 +108,10 @@ pub struct CheckTxVersion(u32); impl ExtrinsicParams for CheckTxVersion { type Params = (); - fn new>( - client: Client, - _params: Self::Params, - ) -> Result { - Ok(CheckTxVersion(client.runtime_version().transaction_version)) + fn new(client: &ClientState, _params: Self::Params) -> Result { + Ok(CheckTxVersion( + client.runtime_version().transaction_version(), + )) } } @@ -136,10 +134,7 @@ pub struct CheckGenesis(T::Hash); impl ExtrinsicParams for CheckGenesis { type Params = (); - fn new>( - client: Client, - _params: Self::Params, - ) -> Result { + fn new(client: &ClientState, _params: Self::Params) -> Result { Ok(CheckGenesis(client.genesis_hash())) } } @@ -210,10 +205,7 @@ impl CheckMortalityParams { impl ExtrinsicParams for CheckMortality { type Params = CheckMortalityParams; - fn new>( - client: Client, - params: Self::Params, - ) -> Result { + fn new(client: &ClientState, params: Self::Params) -> Result { let check_mortality = if let Some(params) = params.0 { CheckMortality { era: params.era, @@ -246,8 +238,8 @@ impl SignedExtension for CheckMortality { } /// The [`ChargeAssetTxPayment`] signed extension. -#[derive(Derivative, DecodeAsType)] -#[derivative(Clone(bound = "T::AssetId: Clone"), Debug(bound = "T::AssetId: Debug"))] +#[derive(DecodeAsType)] +#[derive_where(Clone, Debug; T::AssetId)] #[decode_as_type(trait_bounds = "T::AssetId: DecodeAsType")] pub struct ChargeAssetTxPayment { tip: Compact, @@ -308,10 +300,7 @@ impl ChargeAssetTxPaymentParams { impl ExtrinsicParams for ChargeAssetTxPayment { type Params = ChargeAssetTxPaymentParams; - fn new>( - _client: Client, - params: Self::Params, - ) -> Result { + fn new(_client: &ClientState, params: Self::Params) -> Result { Ok(ChargeAssetTxPayment { tip: Compact(params.tip), asset_id: params.asset_id, @@ -367,10 +356,7 @@ impl ChargeTransactionPaymentParams { impl ExtrinsicParams for ChargeTransactionPayment { type Params = ChargeTransactionPaymentParams; - fn new>( - _client: Client, - params: Self::Params, - ) -> Result { + fn new(_client: &ClientState, params: Self::Params) -> Result { Ok(ChargeTransactionPayment { tip: Compact(params.tip), }) @@ -397,7 +383,7 @@ impl SignedExtension for ChargeTransactionPayment { /// is a sensible default, and allows for a single configuration to work across multiple chains. pub struct AnyOf { params: Vec>, - _marker: std::marker::PhantomData<(T, Params)>, + _marker: core::marker::PhantomData<(T, Params)>, } macro_rules! impl_tuples { @@ -412,8 +398,8 @@ macro_rules! impl_tuples { { type Params = ($($ident::Params,)+); - fn new>( - client: Client, + fn new( + client: &ClientState, params: Self::Params, ) -> Result { let metadata = client.metadata(); @@ -430,7 +416,7 @@ macro_rules! impl_tuples { } // Break and record as soon as we find a match: if $ident::matches(e.identifier(), e.extra_ty(), types) { - let ext = $ident::new(client.clone(), params.$index)?; + let ext = $ident::new(client, params.$index)?; let boxed_ext: Box = Box::new(ext); exts_by_index.insert(idx, boxed_ext); break @@ -453,7 +439,7 @@ macro_rules! impl_tuples { Ok(AnyOf { params, - _marker: std::marker::PhantomData + _marker: core::marker::PhantomData }) } } diff --git a/subxt/src/config/substrate.rs b/core/src/config/substrate.rs similarity index 86% rename from subxt/src/config/substrate.rs rename to core/src/config/substrate.rs index 1ee3e83c5f..f0c7db78e5 100644 --- a/subxt/src/config/substrate.rs +++ b/core/src/config/substrate.rs @@ -5,6 +5,8 @@ //! Substrate specific configuration use super::{Config, DefaultExtrinsicParams, DefaultExtrinsicParamsBuilder, Hasher, Header}; +use alloc::format; +use alloc::vec::Vec; use codec::{Decode, Encode}; use serde::{Deserialize, Serialize}; @@ -225,12 +227,69 @@ where { // At the time of writing, Smoldot gives back block numbers in numeric rather // than hex format. So let's support deserializing from both here: - use crate::backend::legacy::rpc_methods::NumberOrHex; let number_or_hex = NumberOrHex::deserialize(d)?; let u256 = number_or_hex.into_u256(); TryFrom::try_from(u256).map_err(|_| serde::de::Error::custom("Try from failed")) } +/// A number type that can be serialized both as a number or a string that encodes a number in a +/// string. +/// +/// We allow two representations of the block number as input. Either we deserialize to the type +/// that is specified in the block type or we attempt to parse given hex value. +/// +/// The primary motivation for having this type is to avoid overflows when using big integers in +/// JavaScript (which we consider as an important RPC API consumer). +#[derive(Copy, Clone, Serialize, Deserialize, Debug, PartialEq, Eq)] +#[serde(untagged)] +pub enum NumberOrHex { + /// The number represented directly. + Number(u64), + /// Hex representation of the number. + Hex(U256), +} + +impl NumberOrHex { + /// Converts this number into an U256. + pub fn into_u256(self) -> U256 { + match self { + NumberOrHex::Number(n) => n.into(), + NumberOrHex::Hex(h) => h, + } + } +} + +impl From for U256 { + fn from(num_or_hex: NumberOrHex) -> U256 { + num_or_hex.into_u256() + } +} + +macro_rules! into_number_or_hex { + ($($t: ty)+) => { + $( + impl From<$t> for NumberOrHex { + fn from(x: $t) -> Self { + NumberOrHex::Number(x.into()) + } + } + )+ + } +} +into_number_or_hex!(u8 u16 u32 u64); + +impl From for NumberOrHex { + fn from(n: u128) -> Self { + NumberOrHex::Hex(n.into()) + } +} + +impl From for NumberOrHex { + fn from(n: U256) -> Self { + NumberOrHex::Hex(n) + } +} + #[cfg(test)] mod test { use super::*; diff --git a/subxt/src/constants/constant_address.rs b/core/src/constants/constant_address.rs similarity index 80% rename from subxt/src/constants/constant_address.rs rename to core/src/constants/constant_address.rs index 3765d4c84b..da7b1bf982 100644 --- a/subxt/src/constants/constant_address.rs +++ b/core/src/constants/constant_address.rs @@ -2,9 +2,11 @@ // This file is dual-licensed as Apache-2.0 or GPL-3.0. // see LICENSE for license details. -use crate::{dynamic::DecodedValueThunk, metadata::DecodeWithMetadata}; -use derivative::Derivative; -use std::borrow::Cow; +use crate::dynamic::DecodedValueThunk; +use crate::metadata::DecodeWithMetadata; +use alloc::borrow::Cow; +use alloc::string::String; +use derive_where::derive_where; /// This represents a constant address. Anything implementing this trait /// can be used to fetch constants. @@ -27,26 +29,12 @@ pub trait ConstantAddress { } /// This represents the address of a constant. -#[derive(Derivative)] -#[derivative( - Clone(bound = ""), - Debug(bound = ""), - Eq(bound = ""), - Ord(bound = ""), - PartialEq(bound = "") -)] +#[derive_where(Clone, Debug, PartialOrd, Ord, PartialEq, Eq)] pub struct Address { pallet_name: Cow<'static, str>, constant_name: Cow<'static, str>, constant_hash: Option<[u8; 32]>, - _marker: std::marker::PhantomData, -} - -// Manual implementation to work around https://github.com/mcarton/rust-derivative/issues/115. -impl PartialOrd for Address { - fn partial_cmp(&self, other: &Self) -> Option { - Some(self.cmp(other)) - } + _marker: core::marker::PhantomData, } /// The type of address typically used to return dynamic constant values. @@ -59,7 +47,7 @@ impl Address { pallet_name: Cow::Owned(pallet_name.into()), constant_name: Cow::Owned(constant_name.into()), constant_hash: None, - _marker: std::marker::PhantomData, + _marker: core::marker::PhantomData, } } @@ -75,7 +63,7 @@ impl Address { pallet_name: Cow::Borrowed(pallet_name), constant_name: Cow::Borrowed(constant_name), constant_hash: Some(hash), - _marker: std::marker::PhantomData, + _marker: core::marker::PhantomData, } } diff --git a/core/src/constants/mod.rs b/core/src/constants/mod.rs new file mode 100644 index 0000000000..5d8419ae0b --- /dev/null +++ b/core/src/constants/mod.rs @@ -0,0 +1,59 @@ +// Copyright 2019-2023 Parity Technologies (UK) Ltd. +// This file is dual-licensed as Apache-2.0 or GPL-3.0. +// see LICENSE for license details. + +//! Types associated with accessing constants. + +mod constant_address; + +pub use constant_address::{dynamic, Address, ConstantAddress, DynamicAddress}; + +use alloc::borrow::ToOwned; + +use crate::{ + error::MetadataError, + metadata::{DecodeWithMetadata, MetadataExt}, + Error, Metadata, +}; + +/// Run validation logic against some constant address you'd like to access. Returns `Ok(())` +/// if the address is valid (or if it's not possible to check since the address has no validation hash). +/// Return an error if the address was not valid or something went wrong trying to validate it (ie +/// the pallet or constant in question do not exist at all). +pub fn validate_constant( + metadata: &subxt_metadata::Metadata, + address: &Address, +) -> Result<(), Error> { + if let Some(actual_hash) = address.validation_hash() { + let expected_hash = metadata + .pallet_by_name_err(address.pallet_name())? + .constant_hash(address.constant_name()) + .ok_or_else(|| { + MetadataError::ConstantNameNotFound(address.constant_name().to_owned()) + })?; + if actual_hash != expected_hash { + return Err(MetadataError::IncompatibleCodegen.into()); + } + } + Ok(()) +} + +pub fn get_constant( + metadata: &Metadata, + address: &Address, +) -> Result { + // 1. Validate constant shape if hash given: + validate_constant(metadata, address)?; + + // 2. Attempt to decode the constant into the type given: + let constant = metadata + .pallet_by_name_err(address.pallet_name())? + .constant_by_name(address.constant_name()) + .ok_or_else(|| MetadataError::ConstantNameNotFound(address.constant_name().to_owned()))?; + let value = ::decode_with_metadata( + &mut constant.value(), + constant.ty(), + metadata, + )?; + Ok(value) +} diff --git a/subxt/src/custom_values/custom_value_address.rs b/core/src/custom_values/custom_value_address.rs similarity index 78% rename from subxt/src/custom_values/custom_value_address.rs rename to core/src/custom_values/custom_value_address.rs index 6e2f7f77ea..dc73d15798 100644 --- a/subxt/src/custom_values/custom_value_address.rs +++ b/core/src/custom_values/custom_value_address.rs @@ -1,8 +1,8 @@ -use derivative::Derivative; -use std::marker::PhantomData; +use derive_where::derive_where; use crate::dynamic::DecodedValueThunk; use crate::metadata::DecodeWithMetadata; +use crate::utils::Yes; /// This represents the address of a custom value in in the metadata. /// Anything, that implements the [CustomValueAddress] trait can be used, to fetch @@ -33,28 +33,12 @@ impl CustomValueAddress for str { } } -/// Used to signal whether a [`CustomValueAddress`] can be decoded. -pub struct Yes; - /// A static address to a custom value. -#[derive(Derivative)] -#[derivative( - Clone(bound = ""), - Debug(bound = ""), - Eq(bound = ""), - Ord(bound = ""), - PartialEq(bound = "") -)] +#[derive_where(Clone, Debug, PartialOrd, Ord, PartialEq, Eq)] pub struct StaticAddress { name: &'static str, hash: Option<[u8; 32]>, - phantom: PhantomData<(ReturnTy, IsDecodable)>, -} - -impl PartialOrd for StaticAddress { - fn partial_cmp(&self, other: &Self) -> Option { - Some(self.cmp(other)) - } + phantom: core::marker::PhantomData<(ReturnTy, IsDecodable)>, } impl StaticAddress { @@ -64,7 +48,7 @@ impl StaticAddress { StaticAddress:: { name, hash: Some(hash), - phantom: PhantomData, + phantom: core::marker::PhantomData, } } diff --git a/core/src/custom_values/mod.rs b/core/src/custom_values/mod.rs new file mode 100644 index 0000000000..a457c42506 --- /dev/null +++ b/core/src/custom_values/mod.rs @@ -0,0 +1,156 @@ +// Copyright 2019-2023 Parity Technologies (UK) Ltd. +// This file is dual-licensed as Apache-2.0 or GPL-3.0. +// see LICENSE for license details. + +//! Types associated with accessing custom types + +mod custom_value_address; + +use crate::utils::Yes; +pub use custom_value_address::{CustomValueAddress, StaticAddress}; + +use crate::{ + error::MetadataError, + metadata::{DecodeWithMetadata, MetadataExt}, + Error, Metadata, +}; +use alloc::vec::Vec; + +/// Run the validation logic against some custom value address you'd like to access. Returns `Ok(())` +/// if the address is valid (or if it's not possible to check since the address has no validation hash). +/// Returns an error if the address was not valid (wrong name, type or raw bytes) +pub fn validate_custom_value( + metadata: &Metadata, + address: &Address, +) -> Result<(), Error> { + if let Some(actual_hash) = address.validation_hash() { + let custom = metadata.custom(); + let custom_value = custom + .get(address.name()) + .ok_or_else(|| MetadataError::CustomValueNameNotFound(address.name().into()))?; + let expected_hash = custom_value.hash(); + if actual_hash != expected_hash { + return Err(MetadataError::IncompatibleCodegen.into()); + } + } + if metadata.custom().get(address.name()).is_none() { + return Err(MetadataError::IncompatibleCodegen.into()); + } + Ok(()) +} + +/// Access a custom value by the address it is registered under. This can be just a [str] to get back a dynamic value, +/// or a static address from the generated static interface to get a value of a static type returned. +pub fn get_custom_value + ?Sized>( + metadata: &Metadata, + address: &Address, +) -> Result { + // 1. Validate custom value shape if hash given: + validate_custom_value(metadata, address)?; + + // 2. Attempt to decode custom value: + let custom_value = metadata.custom_value_by_name_err(address.name())?; + let value = ::decode_with_metadata( + &mut custom_value.bytes(), + custom_value.type_id(), + metadata, + )?; + Ok(value) +} + +/// Access the bytes of a custom value by the address it is registered under. +pub fn get_custom_value_bytes( + metadata: &Metadata, + address: &Address, +) -> Result, Error> { + // 1. Validate custom value shape if hash given: + validate_custom_value(metadata, address)?; + + // 2. Return the underlying bytes: + let custom_value = metadata.custom_value_by_name_err(address.name())?; + Ok(custom_value.bytes().to_vec()) +} + +#[cfg(test)] +mod tests { + use alloc::collections::BTreeMap; + use codec::Encode; + use scale_decode::DecodeAsType; + use scale_info::form::PortableForm; + use scale_info::TypeInfo; + + use alloc::borrow::ToOwned; + use alloc::string::String; + use alloc::vec; + + use crate::custom_values::get_custom_value; + use crate::Metadata; + + #[derive(Debug, Clone, PartialEq, Eq, Encode, TypeInfo, DecodeAsType)] + pub struct Person { + age: u16, + name: String, + } + + fn mock_metadata() -> Metadata { + let person_ty = scale_info::MetaType::new::(); + let unit = scale_info::MetaType::new::<()>(); + let mut types = scale_info::Registry::new(); + let person_ty_id = types.register_type(&person_ty); + let unit_id = types.register_type(&unit); + let types: scale_info::PortableRegistry = types.into(); + + let person = Person { + age: 42, + name: "Neo".into(), + }; + + let person_value_metadata: frame_metadata::v15::CustomValueMetadata = + frame_metadata::v15::CustomValueMetadata { + ty: person_ty_id, + value: person.encode(), + }; + + let frame_metadata = frame_metadata::v15::RuntimeMetadataV15 { + types, + pallets: vec![], + extrinsic: frame_metadata::v15::ExtrinsicMetadata { + version: 0, + address_ty: unit_id, + call_ty: unit_id, + signature_ty: unit_id, + extra_ty: unit_id, + signed_extensions: vec![], + }, + ty: unit_id, + apis: vec![], + outer_enums: frame_metadata::v15::OuterEnums { + call_enum_ty: unit_id, + event_enum_ty: unit_id, + error_enum_ty: unit_id, + }, + custom: frame_metadata::v15::CustomMetadata { + map: BTreeMap::from_iter([("Mr. Robot".to_owned(), person_value_metadata)]), + }, + }; + + let metadata: subxt_metadata::Metadata = frame_metadata.try_into().unwrap(); + Metadata::new(metadata) + } + + #[test] + fn test_decoding() { + let metadata = mock_metadata(); + + assert!(get_custom_value(&metadata, "Invalid Address").is_err()); + let person_decoded_value_thunk = get_custom_value(&metadata, "Mr. Robot").unwrap(); + let person: Person = person_decoded_value_thunk.as_type().unwrap(); + assert_eq!( + person, + Person { + age: 42, + name: "Neo".into() + } + ) + } +} diff --git a/subxt/src/dynamic.rs b/core/src/dynamic.rs similarity index 93% rename from subxt/src/dynamic.rs rename to core/src/dynamic.rs index c405450481..05a03117e7 100644 --- a/subxt/src/dynamic.rs +++ b/core/src/dynamic.rs @@ -5,12 +5,9 @@ //! This module provides the entry points to create dynamic //! transactions, storage and constant lookups. -use crate::{ - error::Error, - metadata::{DecodeWithMetadata, Metadata}, -}; +use crate::metadata::{DecodeWithMetadata, Metadata}; +use alloc::vec::Vec; use scale_decode::DecodeAsType; - pub use scale_value::{At, Value}; /// A [`scale_value::Value`] type endowed with contextual information @@ -45,7 +42,7 @@ impl DecodeWithMetadata for DecodedValueThunk { bytes: &mut &[u8], type_id: u32, metadata: &Metadata, - ) -> Result { + ) -> Result { let mut v = Vec::with_capacity(bytes.len()); v.extend_from_slice(bytes); *bytes = &[]; @@ -67,7 +64,7 @@ impl DecodedValueThunk { &self.scale_bytes } /// Decode the SCALE encoded storage entry into a dynamic [`DecodedValue`] type. - pub fn to_value(&self) -> Result { + pub fn to_value(&self) -> Result { let val = scale_value::scale::decode_as_type( &mut &*self.scale_bytes, &self.type_id, diff --git a/core/src/error.rs b/core/src/error.rs new file mode 100644 index 0000000000..64fe0b7250 --- /dev/null +++ b/core/src/error.rs @@ -0,0 +1,184 @@ +use alloc::boxed::Box; +use alloc::string::String; +use derive_more::{Display, From}; +use subxt_metadata::StorageHasher; + +#[derive(Debug, Display, From)] +pub enum Error { + /// Codec error. + #[display(fmt = "Scale codec error: {_0}")] + Codec(codec::Error), + #[display(fmt = "Metadata Error: {_0}")] + Metadata(MetadataError), + #[display(fmt = "Storage Error: {_0}")] + StorageAddress(StorageAddressError), + /// Error decoding to a [`crate::dynamic::Value`]. + #[display(fmt = "Error decoding into dynamic value: {_0}")] + Decode(scale_decode::Error), + /// Error encoding from a [`crate::dynamic::Value`]. + #[display(fmt = "Error encoding from dynamic value: {_0}")] + Encode(scale_encode::Error), + /// Error constructing the appropriate extrinsic params. + #[display(fmt = "Extrinsic params error: {_0}")] + ExtrinsicParams(ExtrinsicParamsError), +} + +impl From for Error { + fn from(value: scale_decode::visitor::DecodeError) -> Self { + Error::Decode(value.into()) + } +} + +#[cfg(feature = "std")] +impl std::error::Error for Error {} + +/// Something went wrong trying to access details in the metadata. +#[derive(Clone, Debug, PartialEq, Display)] +#[non_exhaustive] +pub enum MetadataError { + /// The DispatchError type isn't available in the metadata + #[display(fmt = "The DispatchError type isn't available")] + DispatchErrorNotFound, + /// Type not found in metadata. + #[display(fmt = "Type with ID {_0} not found")] + TypeNotFound(u32), + /// Pallet not found (index). + #[display(fmt = "Pallet with index {_0} not found")] + PalletIndexNotFound(u8), + /// Pallet not found (name). + #[display(fmt = "Pallet with name {_0} not found")] + PalletNameNotFound(String), + /// Variant not found. + #[display(fmt = "Variant with index {_0} not found")] + VariantIndexNotFound(u8), + /// Constant not found. + #[display(fmt = "Constant with name {_0} not found")] + ConstantNameNotFound(String), + /// Call not found. + #[display(fmt = "Call with name {_0} not found")] + CallNameNotFound(String), + /// Runtime trait not found. + #[display(fmt = "Runtime trait with name {_0} not found")] + RuntimeTraitNotFound(String), + /// Runtime method not found. + #[display(fmt = "Runtime method with name {_0} not found")] + RuntimeMethodNotFound(String), + /// Call type not found in metadata. + #[display(fmt = "Call type not found in pallet with index {_0}")] + CallTypeNotFoundInPallet(u8), + /// Event type not found in metadata. + #[display(fmt = "Event type not found in pallet with index {_0}")] + EventTypeNotFoundInPallet(u8), + /// Storage details not found in metadata. + #[display(fmt = "Storage details not found in pallet with name {_0}")] + StorageNotFoundInPallet(String), + /// Storage entry not found. + #[display(fmt = "Storage entry {_0} not found")] + StorageEntryNotFound(String), + /// The generated interface used is not compatible with the node. + #[display(fmt = "The generated code is not compatible with the node")] + IncompatibleCodegen, + /// Custom value not found. + #[display(fmt = "Custom value with name {_0} not found")] + CustomValueNameNotFound(String), +} + +#[cfg(feature = "std")] +impl std::error::Error for MetadataError {} + +/// Something went wrong trying to encode or decode a storage address. +#[derive(Clone, Debug, Display)] +#[non_exhaustive] +pub enum StorageAddressError { + /// Storage lookup does not have the expected number of keys. + #[display(fmt = "Storage lookup requires {expected} keys but more keys have been provided.")] + TooManyKeys { + /// The number of keys provided in the storage address. + expected: usize, + }, + /// This storage entry in the metadata does not have the correct number of hashers to fields. + #[display( + fmt = "Storage entry in metadata does not have the correct number of hashers to fields" + )] + WrongNumberOfHashers { + /// The number of hashers in the metadata for this storage entry. + hashers: usize, + /// The number of fields in the metadata for this storage entry. + fields: usize, + }, + /// We weren't given enough bytes to decode the storage address/key. + #[display(fmt = "Not enough remaining bytes to decode the storage address/key")] + NotEnoughBytes, + /// We have leftover bytes after decoding the storage address. + #[display(fmt = "We have leftover bytes after decoding the storage address")] + TooManyBytes, + /// The bytes of a storage address are not the expected address for decoding the storage keys of the address. + #[display( + fmt = "Storage address bytes are not the expected format. Addresses need to be at least 16 bytes (pallet ++ entry) and follow a structure given by the hashers defined in the metadata" + )] + UnexpectedAddressBytes, + /// An invalid hasher was used to reconstruct a value from a chunk of bytes that is part of a storage address. Hashers where the hash does not contain the original value are invalid for this purpose. + #[display( + fmt = "An invalid hasher was used to reconstruct a value with type ID {ty_id} from a hash formed by a {hasher:?} hasher. This is only possible for concat-style hashers or the identity hasher" + )] + HasherCannotReconstructKey { + /// Type id of the key's type. + ty_id: u32, + /// The invalid hasher that caused this error. + hasher: StorageHasher, + }, +} + +#[cfg(feature = "std")] +impl std::error::Error for StorageAddressError {} + +/// An error that can be emitted when trying to construct an instance of [`crate::config::ExtrinsicParams`], +/// encode data from the instance, or match on signed extensions. +#[derive(Display, Debug)] +#[non_exhaustive] +pub enum ExtrinsicParamsError { + /// Cannot find a type id in the metadata. The context provides some additional + /// information about the source of the error (eg the signed extension name). + #[display(fmt = "Cannot find type id '{type_id} in the metadata (context: {context})")] + MissingTypeId { + /// Type ID. + type_id: u32, + /// Some arbitrary context to help narrow the source of the error. + context: &'static str, + }, + /// A signed extension in use on some chain was not provided. + #[display( + fmt = "The chain expects a signed extension with the name {_0}, but we did not provide one" + )] + UnknownSignedExtension(String), + /// Some custom error. + #[display(fmt = "Error constructing extrinsic parameters: {_0}")] + Custom(Box), +} + +/// Anything implementing this trait can be used in [`ExtrinsicParamsError::Custom`]. +#[cfg(feature = "std")] +pub trait CustomError: std::error::Error + Send + Sync + 'static {} +#[cfg(feature = "std")] +impl CustomError for T {} + +/// Anything implementing this trait can be used in [`ExtrinsicParamsError::Custom`]. +#[cfg(not(feature = "std"))] +pub trait CustomError: core::fmt::Debug + core::fmt::Display + Send + Sync + 'static {} +#[cfg(not(feature = "std"))] +impl CustomError for T {} + +#[cfg(feature = "std")] +impl std::error::Error for ExtrinsicParamsError {} + +impl From for ExtrinsicParamsError { + fn from(value: core::convert::Infallible) -> Self { + match value {} + } +} + +impl From> for ExtrinsicParamsError { + fn from(value: Box) -> Self { + ExtrinsicParamsError::Custom(value) + } +} diff --git a/subxt/src/events/events_type.rs b/core/src/events/mod.rs similarity index 92% rename from subxt/src/events/events_type.rs rename to core/src/events/mod.rs index 6818a84815..456498bdb5 100644 --- a/subxt/src/events/events_type.rs +++ b/core/src/events/mod.rs @@ -1,42 +1,48 @@ -// Copyright 2019-2023 Parity Technologies (UK) Ltd. -// This file is dual-licensed as Apache-2.0 or GPL-3.0. -// see LICENSE for license details. +use alloc::sync::Arc; +use alloc::vec::Vec; +use codec::{Compact, Decode, Encode}; +use derive_where::derive_where; +use scale_decode::{DecodeAsFields, DecodeAsType}; +use subxt_metadata::PalletMetadata; -//! A representation of a block of events. +use crate::{error::MetadataError, Config, Error, Metadata}; -use super::{Phase, StaticEvent}; -use crate::{ - client::OnlineClientT, - error::{Error, MetadataError}, - events::events_client::get_event_bytes, - metadata::types::PalletMetadata, - Config, Metadata, -}; -use codec::{Compact, Decode}; -use derivative::Derivative; -use scale_decode::DecodeAsType; -use std::sync::Arc; +/// Trait to uniquely identify the events's identity from the runtime metadata. +/// +/// Generated API structures that represent an event implement this trait. +/// +/// The trait is utilized to decode emitted events from a block, via obtaining the +/// form of the `Event` from the metadata. +pub trait StaticEvent: DecodeAsFields { + /// Pallet name. + const PALLET: &'static str; + /// Event name. + const EVENT: &'static str; + + /// Returns true if the given pallet and event names match this event. + fn is_event(pallet: &str, event: &str) -> bool { + Self::PALLET == pallet && Self::EVENT == event + } +} /// A collection of events obtained from a block, bundled with the necessary /// information needed to decode and iterate over them. -#[derive(Derivative)] -#[derivative(Clone(bound = ""))] +#[derive_where(Clone)] pub struct Events { metadata: Metadata, - block_hash: T::Hash, // Note; raw event bytes are prefixed with a Compact containing // the number of events to be decoded. The start_idx reflects that, so // that we can skip over those bytes when decoding them event_bytes: Arc<[u8]>, start_idx: usize, num_events: u32, + marker: core::marker::PhantomData, } // Ignore the Metadata when debug-logging events; it's big and distracting. -impl std::fmt::Debug for Events { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { +impl core::fmt::Debug for Events { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { f.debug_struct("Events") - .field("block_hash", &self.block_hash) .field("event_bytes", &self.event_bytes) .field("start_idx", &self.start_idx) .field("num_events", &self.num_events) @@ -45,7 +51,8 @@ impl std::fmt::Debug for Events { } impl Events { - pub(crate) fn new(metadata: Metadata, block_hash: T::Hash, event_bytes: Vec) -> Self { + /// Create a new [`Events`] instance from the given bytes. + pub fn decode_from(metadata: Metadata, event_bytes: Vec) -> Self { // event_bytes is a SCALE encoded vector of events. So, pluck the // compact encoded length from the front, leaving the remaining bytes // for our iterating to decode. @@ -60,34 +67,13 @@ impl Events { Self { metadata, - block_hash, event_bytes: event_bytes.into(), start_idx, num_events, + marker: core::marker::PhantomData, } } - /// Obtain the events from a block hash given custom metadata and a client. - /// - /// # Notes - /// - /// - Prefer to use [`crate::events::EventsClient::at`] to obtain the events. - /// - Subxt may fail to decode things that aren't from a runtime using the - /// latest metadata version. - /// - The client may not be able to obtain the block at the given hash. Only - /// archive nodes keep hold of all past block information. - pub async fn new_from_client( - metadata: Metadata, - block_hash: T::Hash, - client: Client, - ) -> Result - where - Client: OnlineClientT, - { - let event_bytes = get_event_bytes(client.backend(), block_hash).await?; - Ok(Events::new(metadata, block_hash, event_bytes)) - } - /// The number of events. pub fn len(&self) -> u32 { self.num_events @@ -99,11 +85,6 @@ impl Events { self.num_events == 0 } - /// Return the block hash that these events are from. - pub fn block_hash(&self) -> T::Hash { - self.block_hash - } - /// Iterate over all of the events, using metadata to dynamically /// decode them as we go, and returning the raw bytes and other associated /// details. If an error occurs, all subsequent iterations return `None`. @@ -119,7 +100,7 @@ impl Events { let mut pos = self.start_idx; let mut index = 0; - std::iter::from_fn(move || { + core::iter::from_fn(move || { if event_bytes.len() <= pos || num_events == index { None } else { @@ -172,6 +153,17 @@ impl Events { } } +/// A phase of a block's execution. +#[derive(Copy, Clone, Debug, Eq, PartialEq, Decode, Encode)] +pub enum Phase { + /// Applying an extrinsic. + ApplyExtrinsic(u32), + /// Finalizing the block. + Finalization, + /// Initializing the block. + Initialization, +} + /// The event details. #[derive(Debug, Clone)] pub struct EventDetails { @@ -194,7 +186,7 @@ pub struct EventDetails { } impl EventDetails { - // Attempt to dynamically decode a single event from our events input. + /// Attempt to dynamically decode a single event from our events input. fn decode_from( metadata: Metadata, all_bytes: Arc<[u8]>, @@ -284,12 +276,12 @@ impl EventDetails { /// The name of the pallet from whence the Event originated. pub fn pallet_name(&self) -> &str { - self.event_metadata().pallet.name() + self.event_metadata().pallet().name() } /// The name of the event (ie the name of the variant that it corresponds to). pub fn variant_name(&self) -> &str { - &self.event_metadata().variant.name + &self.event_metadata().variant().name } /// Fetch details from the metadata for this event. @@ -378,15 +370,24 @@ impl EventDetails { /// Details for the given event plucked from the metadata. pub struct EventMetadataDetails<'a> { - pub pallet: PalletMetadata<'a>, - pub variant: &'a scale_info::Variant, + pallet: PalletMetadata<'a>, + variant: &'a scale_info::Variant, +} + +impl<'a> EventMetadataDetails<'a> { + pub fn pallet(&self) -> PalletMetadata<'a> { + self.pallet + } + pub fn variant(&self) -> &'a scale_info::Variant { + self.variant + } } /// Event related test utilities used outside this module. #[cfg(test)] pub(crate) mod test_utils { use super::*; - use crate::{Config, SubstrateConfig}; + use crate::config::{Config, SubstrateConfig}; use codec::Encode; use frame_metadata::{ v15::{ @@ -531,11 +532,7 @@ pub(crate) mod test_utils { // Prepend compact encoded length to event bytes: let mut all_event_bytes = Compact(num_events).encode(); all_event_bytes.extend(event_bytes); - Events::new( - metadata, - ::Hash::default(), - all_event_bytes, - ) + Events::decode_from(metadata, all_event_bytes) } } @@ -545,7 +542,8 @@ mod tests { test_utils::{event_record, events, events_raw, AllEvents, EventRecord}, *, }; - use crate::SubstrateConfig; + use crate::config::SubstrateConfig; + use crate::events::Phase; use codec::Encode; use primitive_types::H256; use scale_info::TypeInfo; diff --git a/core/src/lib.rs b/core/src/lib.rs new file mode 100644 index 0000000000..ff7664b014 --- /dev/null +++ b/core/src/lib.rs @@ -0,0 +1,42 @@ +// Copyright 2019-2024 Parity Technologies (UK) Ltd. +// This file is dual-licensed as Apache-2.0 or GPL-3.0. +// see LICENSE for license details. + +//! # Subxt-core +//! +//! `#[no_std]` compatible core crate for subxt. + +#![cfg_attr(not(feature = "std"), no_std)] +pub extern crate alloc; + +pub mod blocks; +pub mod client; +pub mod config; +pub mod constants; +pub mod custom_values; +pub mod dynamic; +pub mod error; +pub mod events; +pub mod metadata; +pub mod runtime_api; +pub mod storage; +pub mod tx; +pub mod utils; + +pub use config::Config; +pub use error::Error; +pub use metadata::Metadata; + +#[macro_use] +mod macros; + +pub mod ext { + pub use codec; + pub use scale_decode; + pub use scale_encode; + + cfg_substrate_compat! { + pub use sp_runtime; + pub use sp_core; + } +} diff --git a/core/src/macros.rs b/core/src/macros.rs new file mode 100644 index 0000000000..1a61ee9354 --- /dev/null +++ b/core/src/macros.rs @@ -0,0 +1,17 @@ +macro_rules! cfg_feature { + ($feature:literal, $($item:item)*) => { + $( + #[cfg(feature = $feature)] + #[cfg_attr(docsrs, doc(cfg(feature = $feature)))] + $item + )* + } +} + +macro_rules! cfg_substrate_compat { + ($($item:item)*) => { + crate::macros::cfg_feature!("substrate-compat", $($item)*); + }; +} + +pub(crate) use {cfg_feature, cfg_substrate_compat}; diff --git a/subxt/src/metadata/decode_encode_traits.rs b/core/src/metadata/decode_encode_traits.rs similarity index 88% rename from subxt/src/metadata/decode_encode_traits.rs rename to core/src/metadata/decode_encode_traits.rs index 8b8d4077fa..b0ca04fab0 100644 --- a/subxt/src/metadata/decode_encode_traits.rs +++ b/core/src/metadata/decode_encode_traits.rs @@ -3,7 +3,8 @@ // see LICENSE for license details. use super::Metadata; -use crate::error::Error; + +use alloc::vec::Vec; /// This trait is implemented for all types that also implement [`scale_decode::DecodeAsType`]. pub trait DecodeWithMetadata: Sized { @@ -12,7 +13,7 @@ pub trait DecodeWithMetadata: Sized { bytes: &mut &[u8], type_id: u32, metadata: &Metadata, - ) -> Result; + ) -> Result; } impl DecodeWithMetadata for T { @@ -20,7 +21,7 @@ impl DecodeWithMetadata for T { bytes: &mut &[u8], type_id: u32, metadata: &Metadata, - ) -> Result { + ) -> Result { let val = T::decode_as_type(bytes, &type_id, metadata.types())?; Ok(val) } @@ -34,7 +35,7 @@ pub trait EncodeWithMetadata { type_id: u32, metadata: &Metadata, bytes: &mut Vec, - ) -> Result<(), Error>; + ) -> Result<(), scale_encode::Error>; } impl EncodeWithMetadata for T { @@ -44,7 +45,7 @@ impl EncodeWithMetadata for T { type_id: u32, metadata: &Metadata, bytes: &mut Vec, - ) -> Result<(), Error> { + ) -> Result<(), scale_encode::Error> { self.encode_as_type_to(&type_id, metadata.types(), bytes)?; Ok(()) } diff --git a/core/src/metadata/metadata_type.rs b/core/src/metadata/metadata_type.rs new file mode 100644 index 0000000000..7d394e93ec --- /dev/null +++ b/core/src/metadata/metadata_type.rs @@ -0,0 +1,137 @@ +// Copyright 2019-2023 Parity Technologies (UK) Ltd. +// This file is dual-licensed as Apache-2.0 or GPL-3.0. +// see LICENSE for license details. + +use crate::error::MetadataError; + +use alloc::borrow::ToOwned; +use alloc::sync::Arc; + +/// A cheaply clone-able representation of the runtime metadata received from a node. +#[derive(Clone, Debug)] +pub struct Metadata { + inner: Arc, +} + +impl core::ops::Deref for Metadata { + type Target = subxt_metadata::Metadata; + fn deref(&self) -> &Self::Target { + &self.inner + } +} + +impl Metadata { + pub fn new(md: subxt_metadata::Metadata) -> Self { + Metadata { + inner: Arc::new(md), + } + } + + /// Identical to `metadata.pallet_by_name()`, but returns an error if the pallet is not found. + pub fn pallet_by_name_err( + &self, + name: &str, + ) -> Result { + self.pallet_by_name(name) + .ok_or_else(|| MetadataError::PalletNameNotFound(name.to_owned())) + } + + /// Identical to `metadata.pallet_by_index()`, but returns an error if the pallet is not found. + pub fn pallet_by_index_err( + &self, + index: u8, + ) -> Result { + self.pallet_by_index(index) + .ok_or(MetadataError::PalletIndexNotFound(index)) + } + + /// Identical to `metadata.runtime_api_trait_by_name()`, but returns an error if the trait is not found. + pub fn runtime_api_trait_by_name_err( + &self, + name: &str, + ) -> Result { + self.runtime_api_trait_by_name(name) + .ok_or_else(|| MetadataError::RuntimeTraitNotFound(name.to_owned())) + } +} + +impl From for Metadata { + fn from(md: subxt_metadata::Metadata) -> Self { + Metadata::new(md) + } +} + +impl TryFrom for Metadata { + type Error = subxt_metadata::TryFromError; + fn try_from(value: frame_metadata::RuntimeMetadataPrefixed) -> Result { + subxt_metadata::Metadata::try_from(value).map(Metadata::from) + } +} + +impl codec::Decode for Metadata { + fn decode(input: &mut I) -> Result { + subxt_metadata::Metadata::decode(input).map(Metadata::new) + } +} + +/// Some extension methods on [`subxt_metadata::Metadata`] that return Errors instead of Options. +pub trait MetadataExt { + fn pallet_by_name_err( + &self, + name: &str, + ) -> Result; + + fn pallet_by_index_err( + &self, + index: u8, + ) -> Result; + + fn runtime_api_trait_by_name_err( + &self, + name: &str, + ) -> Result; + + fn custom_value_by_name_err( + &self, + name: &str, + ) -> Result; +} + +impl MetadataExt for subxt_metadata::Metadata { + /// Identical to `metadata.pallet_by_name()`, but returns an error if the pallet is not found. + fn pallet_by_name_err( + &self, + name: &str, + ) -> Result { + self.pallet_by_name(name) + .ok_or_else(|| MetadataError::PalletNameNotFound(name.to_owned())) + } + + /// Identical to `metadata.pallet_by_index()`, but returns an error if the pallet is not found. + fn pallet_by_index_err( + &self, + index: u8, + ) -> Result { + self.pallet_by_index(index) + .ok_or(MetadataError::PalletIndexNotFound(index)) + } + + /// Identical to `metadata.runtime_api_trait_by_name()`, but returns an error if the trait is not found. + fn runtime_api_trait_by_name_err( + &self, + name: &str, + ) -> Result { + self.runtime_api_trait_by_name(name) + .ok_or_else(|| MetadataError::RuntimeTraitNotFound(name.to_owned())) + } + + /// Identical to `metadata.runtime_api_trait_by_name()`, but returns an error if the trait is not found. + fn custom_value_by_name_err( + &self, + name: &str, + ) -> Result { + self.custom() + .get(name) + .ok_or_else(|| MetadataError::CustomValueNameNotFound(name.to_owned())) + } +} diff --git a/subxt/src/metadata/mod.rs b/core/src/metadata/mod.rs similarity index 90% rename from subxt/src/metadata/mod.rs rename to core/src/metadata/mod.rs index a6ef00ae6f..3a43853916 100644 --- a/subxt/src/metadata/mod.rs +++ b/core/src/metadata/mod.rs @@ -8,7 +8,7 @@ mod decode_encode_traits; mod metadata_type; pub use decode_encode_traits::{DecodeWithMetadata, EncodeWithMetadata}; -pub use metadata_type::Metadata; +pub use metadata_type::{Metadata, MetadataExt}; // Expose metadata types under a sub module in case somebody needs to reference them: pub use subxt_metadata as types; diff --git a/subxt/src/runtime_api/runtime_payload.rs b/core/src/runtime_api/mod.rs similarity index 91% rename from subxt/src/runtime_api/runtime_payload.rs rename to core/src/runtime_api/mod.rs index 128440b98d..4f0f16c5dd 100644 --- a/subxt/src/runtime_api/runtime_payload.rs +++ b/core/src/runtime_api/mod.rs @@ -2,15 +2,20 @@ // This file is dual-licensed as Apache-2.0 or GPL-3.0. // see LICENSE for license details. +use alloc::borrow::Cow; +use alloc::borrow::ToOwned; +use alloc::string::String; +use alloc::vec::Vec; use core::marker::PhantomData; -use derivative::Derivative; +use derive_where::derive_where; use scale_encode::EncodeAsFields; use scale_value::Composite; -use std::borrow::Cow; use crate::dynamic::DecodedValueThunk; use crate::error::MetadataError; -use crate::{metadata::DecodeWithMetadata, Error, Metadata}; +use crate::Error; + +use crate::metadata::{DecodeWithMetadata, Metadata}; /// This represents a runtime API payload that can call into the runtime of node. /// @@ -66,15 +71,7 @@ pub trait RuntimeApiPayload { /// /// This can be created from static values (ie those generated /// via the `subxt` macro) or dynamic values via [`dynamic`]. -#[derive(Derivative)] -#[derivative( - Clone(bound = "ArgsData: Clone"), - Debug(bound = "ArgsData: std::fmt::Debug"), - Eq(bound = "ArgsData: std::cmp::Eq"), - Ord(bound = "ArgsData: std::cmp::Ord"), - PartialEq(bound = "ArgsData: std::cmp::PartialEq"), - PartialOrd(bound = "ArgsData: std::cmp::PartialOrd") -)] +#[derive_where(Clone, Debug, Eq, Ord, PartialEq, PartialOrd; ArgsData)] pub struct Payload { trait_name: Cow<'static, str>, method_name: Cow<'static, str>, @@ -150,7 +147,7 @@ impl Payload { method_name: Cow::Borrowed(method_name), args_data, validation_hash: Some(hash), - _marker: std::marker::PhantomData, + _marker: core::marker::PhantomData, } } diff --git a/core/src/storage/mod.rs b/core/src/storage/mod.rs new file mode 100644 index 0000000000..e00d0b0758 --- /dev/null +++ b/core/src/storage/mod.rs @@ -0,0 +1,22 @@ +// Copyright 2019-2023 Parity Technologies (UK) Ltd. +// This file is dual-licensed as Apache-2.0 or GPL-3.0. +// see LICENSE for license details. + +//! Types associated with accessing and working with storage items. + +mod storage_address; +mod storage_key; +pub mod utils; + +/// Types representing an address which describes where a storage +/// entry lives and how to properly decode it. +pub mod address { + pub use super::storage_address::{dynamic, Address, DynamicAddress, StorageAddress}; + pub use super::storage_key::{StaticStorageKey, StorageHashers, StorageKey}; +} + +pub use storage_key::StorageKey; + +// For consistency with other modules, also expose +// the basic address stuff at the root of the module. +pub use storage_address::{dynamic, Address, DynamicAddress, StorageAddress}; diff --git a/subxt/src/storage/storage_address.rs b/core/src/storage/storage_address.rs similarity index 86% rename from subxt/src/storage/storage_address.rs rename to core/src/storage/storage_address.rs index cb72462eb8..fbb3f267ba 100644 --- a/subxt/src/storage/storage_address.rs +++ b/core/src/storage/storage_address.rs @@ -6,10 +6,13 @@ use crate::{ dynamic::DecodedValueThunk, error::{Error, MetadataError}, metadata::{DecodeWithMetadata, Metadata}, + utils::Yes, }; -use derivative::Derivative; +use derive_where::derive_where; -use std::borrow::Cow; +use alloc::borrow::{Cow, ToOwned}; +use alloc::string::String; +use alloc::vec::Vec; use super::{storage_key::StorageHashers, StorageKey}; @@ -48,27 +51,15 @@ pub trait StorageAddress { } } -/// Used to signal whether a [`StorageAddress`] can be iterated, -/// fetched and returned with a default value in the type system. -pub struct Yes; - /// A concrete storage address. This can be created from static values (ie those generated /// via the `subxt` macro) or dynamic values via [`dynamic`]. -#[derive(Derivative)] -#[derivative( - Clone(bound = "Keys: Clone"), - Debug(bound = "Keys: std::fmt::Debug"), - Eq(bound = "Keys: std::cmp::Eq"), - Ord(bound = "Keys: std::cmp::Ord"), - PartialEq(bound = "Keys: std::cmp::PartialEq"), - PartialOrd(bound = "Keys: std::cmp::PartialOrd") -)] +#[derive_where(Clone, Debug, Eq, Ord, PartialEq, PartialOrd; Keys)] pub struct Address { pallet_name: Cow<'static, str>, entry_name: Cow<'static, str>, keys: Keys, validation_hash: Option<[u8; 32]>, - _marker: std::marker::PhantomData<(ReturnTy, Fetchable, Defaultable, Iterable)>, + _marker: core::marker::PhantomData<(ReturnTy, Fetchable, Defaultable, Iterable)>, } /// A typical storage address constructed at runtime rather than via the `subxt` macro; this @@ -83,7 +74,7 @@ impl DynamicAddress { entry_name: Cow::Owned(entry_name.into()), keys, validation_hash: None, - _marker: std::marker::PhantomData, + _marker: core::marker::PhantomData, } } } @@ -108,7 +99,7 @@ where entry_name: Cow::Borrowed(entry_name), keys, validation_hash: Some(hash), - _marker: std::marker::PhantomData, + _marker: core::marker::PhantomData, } } } @@ -127,9 +118,7 @@ where } } - /// Return bytes representing the root of this storage entry (ie a hash of - /// the pallet and entry name). Use [`crate::storage::StorageClient::address_bytes()`] - /// to obtain the bytes representing the entire address. + /// Return bytes representing the root of this storage entry (a hash of the pallet and entry name). pub fn to_root_bytes(&self) -> Vec { super::utils::storage_address_root_bytes(self) } diff --git a/subxt/src/storage/storage_key.rs b/core/src/storage/storage_key.rs similarity index 97% rename from subxt/src/storage/storage_key.rs rename to core/src/storage/storage_key.rs index 71ecafde9d..d76246fb0e 100644 --- a/subxt/src/storage/storage_key.rs +++ b/core/src/storage/storage_key.rs @@ -1,21 +1,21 @@ +use super::utils::hash_bytes; use crate::{ error::{Error, MetadataError, StorageAddressError}, utils::{Encoded, Static}, }; +use alloc::vec; +use alloc::vec::Vec; +use derive_where::derive_where; use scale_decode::visitor::IgnoreVisitor; use scale_encode::EncodeAsType; use scale_info::{PortableRegistry, TypeDef}; use scale_value::Value; use subxt_metadata::{StorageEntryType, StorageHasher}; -use derivative::Derivative; - -use super::utils::hash_bytes; - /// A collection of storage hashers paired with the type ids of the types they should hash. /// Can be created for each storage entry in the metadata via [`StorageHashers::new()`]. #[derive(Debug)] -pub(crate) struct StorageHashers { +pub struct StorageHashers { hashers_and_ty_ids: Vec<(StorageHasher, u32)>, } @@ -162,11 +162,10 @@ impl StorageKey for () { /// A storage key for static encoded values. /// The original value is only present at construction, but can be decoded from the contained bytes. -#[derive(Derivative)] -#[derivative(Clone(bound = ""), Debug(bound = ""))] +#[derive_where(Clone, Debug, PartialOrd, PartialEq, Eq)] pub struct StaticStorageKey { bytes: Static, - _marker: std::marker::PhantomData, + _marker: core::marker::PhantomData, } impl StaticStorageKey { @@ -174,7 +173,7 @@ impl StaticStorageKey { pub fn new(key: &K) -> Self { StaticStorageKey { bytes: Static(Encoded(key.encode())), - _marker: std::marker::PhantomData, + _marker: core::marker::PhantomData, } } } @@ -227,7 +226,7 @@ impl StorageKey for StaticStorageKey { // Return the key bytes. let key = StaticStorageKey { bytes: Static(Encoded(key_bytes.to_vec())), - _marker: std::marker::PhantomData::, + _marker: core::marker::PhantomData::, }; Ok(key) } @@ -362,6 +361,10 @@ mod tests { use crate::utils::Era; + use alloc::string::String; + use alloc::vec; + use alloc::vec::Vec; + use super::{StaticStorageKey, StorageKey}; struct KeyBuilder { diff --git a/core/src/storage/utils.rs b/core/src/storage/utils.rs new file mode 100644 index 0000000000..f749df31c0 --- /dev/null +++ b/core/src/storage/utils.rs @@ -0,0 +1,118 @@ +// Copyright 2019-2023 Parity Technologies (UK) Ltd. +// This file is dual-licensed as Apache-2.0 or GPL-3.0. +// see LICENSE for license details. + +//! these utility methods complement the [`StorageAddress`] trait, but +//! aren't things that should ever be overridden, and so don't exist on +//! the trait itself. + +use crate::error::MetadataError; +use crate::metadata::{DecodeWithMetadata, MetadataExt}; +use alloc::vec::Vec; +use subxt_metadata::PalletMetadata; +use subxt_metadata::{StorageEntryMetadata, StorageHasher}; + +use super::StorageAddress; +use crate::{error::Error, metadata::Metadata}; +use alloc::borrow::ToOwned; + +/// Return the root of a given [`StorageAddress`]: hash the pallet name and entry name +/// and append those bytes to the output. +pub fn write_storage_address_root_bytes( + addr: &Address, + out: &mut Vec, +) { + out.extend(sp_crypto_hashing::twox_128(addr.pallet_name().as_bytes())); + out.extend(sp_crypto_hashing::twox_128(addr.entry_name().as_bytes())); +} + +/// Outputs the [`storage_address_root_bytes`] as well as any additional bytes that represent +/// a lookup in a storage map at that location. +pub fn storage_address_bytes( + addr: &Address, + metadata: &Metadata, +) -> Result, Error> { + let mut bytes = Vec::new(); + write_storage_address_root_bytes(addr, &mut bytes); + addr.append_entry_bytes(metadata, &mut bytes)?; + Ok(bytes) +} + +/// Outputs a vector containing the bytes written by [`write_storage_address_root_bytes`]. +pub fn storage_address_root_bytes(addr: &Address) -> Vec { + let mut bytes = Vec::new(); + write_storage_address_root_bytes(addr, &mut bytes); + bytes +} + +/// Take some SCALE encoded bytes and a [`StorageHasher`] and hash the bytes accordingly. +pub fn hash_bytes(input: &[u8], hasher: StorageHasher, bytes: &mut Vec) { + match hasher { + StorageHasher::Identity => bytes.extend(input), + StorageHasher::Blake2_128 => bytes.extend(sp_crypto_hashing::blake2_128(input)), + StorageHasher::Blake2_128Concat => { + bytes.extend(sp_crypto_hashing::blake2_128(input)); + bytes.extend(input); + } + StorageHasher::Blake2_256 => bytes.extend(sp_crypto_hashing::blake2_256(input)), + StorageHasher::Twox128 => bytes.extend(sp_crypto_hashing::twox_128(input)), + StorageHasher::Twox256 => bytes.extend(sp_crypto_hashing::twox_256(input)), + StorageHasher::Twox64Concat => { + bytes.extend(sp_crypto_hashing::twox_64(input)); + bytes.extend(input); + } + } +} + +/// Return details about the given storage entry. +pub fn lookup_entry_details<'a>( + pallet_name: &str, + entry_name: &str, + metadata: &'a subxt_metadata::Metadata, +) -> Result<(PalletMetadata<'a>, &'a StorageEntryMetadata), Error> { + let pallet_metadata = metadata.pallet_by_name_err(pallet_name)?; + let storage_metadata = pallet_metadata + .storage() + .ok_or_else(|| MetadataError::StorageNotFoundInPallet(pallet_name.to_owned()))?; + let storage_entry = storage_metadata + .entry_by_name(entry_name) + .ok_or_else(|| MetadataError::StorageEntryNotFound(entry_name.to_owned()))?; + Ok((pallet_metadata, storage_entry)) +} + +/// Validate a storage address against the metadata. +pub fn validate_storage_address( + address: &Address, + pallet: PalletMetadata<'_>, +) -> Result<(), Error> { + if let Some(hash) = address.validation_hash() { + validate_storage(pallet, address.entry_name(), hash)?; + } + Ok(()) +} + +/// Validate a storage entry against the metadata. +fn validate_storage( + pallet: PalletMetadata<'_>, + storage_name: &str, + hash: [u8; 32], +) -> Result<(), Error> { + let Some(expected_hash) = pallet.storage_hash(storage_name) else { + return Err(MetadataError::IncompatibleCodegen.into()); + }; + if expected_hash != hash { + return Err(MetadataError::IncompatibleCodegen.into()); + } + Ok(()) +} + +/// Given some bytes, a pallet and storage name, decode the response. +pub fn decode_storage_with_metadata( + bytes: &mut &[u8], + metadata: &Metadata, + storage_metadata: &StorageEntryMetadata, +) -> Result { + let return_ty = storage_metadata.entry_type().value_ty(); + let val = T::decode_with_metadata(bytes, return_ty, metadata)?; + Ok(val) +} diff --git a/subxt/src/tx/tx_payload.rs b/core/src/tx/mod.rs similarity index 90% rename from subxt/src/tx/tx_payload.rs rename to core/src/tx/mod.rs index c2a1dbe65c..8266f0c687 100644 --- a/subxt/src/tx/tx_payload.rs +++ b/core/src/tx/mod.rs @@ -5,16 +5,19 @@ //! This module contains the trait and types used to represent //! transactions that can be submitted. -use crate::{ - dynamic::Value, - error::{Error, MetadataError}, - metadata::Metadata, -}; +use crate::error::MetadataError; +use crate::metadata::Metadata; +use crate::Error; +use alloc::borrow::{Cow, ToOwned}; +use alloc::string::String; + +use alloc::vec::Vec; use codec::Encode; -use derivative::Derivative; use scale_encode::EncodeAsFields; -use scale_value::{Composite, ValueDef, Variant}; -use std::borrow::Cow; +use scale_value::{Composite, Value, ValueDef, Variant}; + +pub mod signer; +pub use signer::Signer; /// This represents a transaction payload that can be submitted /// to a node. @@ -49,15 +52,7 @@ pub struct ValidationDetails<'a> { } /// A transaction payload containing some generic `CallData`. -#[derive(Derivative)] -#[derivative( - Clone(bound = "CallData: Clone"), - Debug(bound = "CallData: std::fmt::Debug"), - Eq(bound = "CallData: std::cmp::Eq"), - Ord(bound = "CallData: std::cmp::Ord"), - PartialEq(bound = "CallData: std::cmp::PartialEq"), - PartialOrd(bound = "CallData: std::cmp::PartialOrd") -)] +#[derive(Clone, Debug, Eq, Ord, PartialEq, PartialOrd)] pub struct Payload { pallet_name: Cow<'static, str>, call_name: Cow<'static, str>, @@ -160,7 +155,8 @@ impl TxPayload for Payload { .map(|f| scale_encode::Field::new(&f.ty.id, f.name.as_deref())); self.call_data - .encode_as_fields_to(&mut fields, metadata.types(), out)?; + .encode_as_fields_to(&mut fields, metadata.types(), out) + .expect("The fields are valid types from the metadata, qed;"); Ok(()) } diff --git a/subxt/src/tx/signer.rs b/core/src/tx/signer.rs similarity index 100% rename from subxt/src/tx/signer.rs rename to core/src/tx/signer.rs diff --git a/subxt/src/utils/account_id.rs b/core/src/utils/account_id.rs similarity index 92% rename from subxt/src/utils/account_id.rs rename to core/src/utils/account_id.rs index faa3dbbd4d..ce2d343d17 100644 --- a/subxt/src/utils/account_id.rs +++ b/core/src/utils/account_id.rs @@ -6,7 +6,12 @@ //! This doesn't contain much functionality itself, but is easy to convert to/from an `sp_core::AccountId32` //! for instance, to gain functionality without forcing a dependency on Substrate crates here. +use alloc::format; +use alloc::string::String; +use alloc::vec; +use alloc::vec::Vec; use codec::{Decode, Encode}; +use derive_more::Display; use serde::{Deserialize, Serialize}; /// A 32-byte cryptographic identifier. This is a simplified version of Substrate's @@ -100,19 +105,22 @@ impl AccountId32 { } /// An error obtained from trying to interpret an SS58 encoded string into an AccountId32 -#[derive(thiserror::Error, Clone, Copy, Eq, PartialEq, Debug)] +#[derive(Clone, Copy, Eq, PartialEq, Debug, Display)] #[allow(missing_docs)] pub enum FromSs58Error { - #[error("Base 58 requirement is violated")] + #[display(fmt = "Base 58 requirement is violated")] BadBase58, - #[error("Length is bad")] + #[display(fmt = "Length is bad")] BadLength, - #[error("Invalid checksum")] + #[display(fmt = "Invalid checksum")] InvalidChecksum, - #[error("Invalid SS58 prefix byte.")] + #[display(fmt = "Invalid SS58 prefix byte.")] InvalidPrefix, } +#[cfg(feature = "std")] +impl std::error::Error for FromSs58Error {} + // We do this just to get a checksum to help verify the validity of the address in to_ss58check fn ss58hash(data: &[u8]) -> Vec { use blake2::{Blake2b512, Digest}; @@ -142,13 +150,13 @@ impl<'de> Deserialize<'de> for AccountId32 { } } -impl std::fmt::Display for AccountId32 { - fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { +impl core::fmt::Display for AccountId32 { + fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { write!(f, "{}", self.to_ss58check()) } } -impl std::str::FromStr for AccountId32 { +impl core::str::FromStr for AccountId32 { type Err = FromSs58Error; fn from_str(s: &str) -> Result { AccountId32::from_ss58check(s) diff --git a/subxt/src/utils/bits.rs b/core/src/utils/bits.rs similarity index 98% rename from subxt/src/utils/bits.rs rename to core/src/utils/bits.rs index 6c334d701c..8c83314e13 100644 --- a/subxt/src/utils/bits.rs +++ b/core/src/utils/bits.rs @@ -4,15 +4,16 @@ //! Generic `scale_bits` over `bitvec`-like `BitOrder` and `BitFormat` types. +use alloc::vec; +use alloc::vec::Vec; use codec::{Compact, Input}; +use core::marker::PhantomData; use scale_bits::{ scale::format::{Format, OrderFormat, StoreFormat}, Bits, }; use scale_decode::{IntoVisitor, TypeResolver}; -use std::marker::PhantomData; - /// Associates `bitvec::store::BitStore` trait with corresponding, type-erased `scale_bits::StoreFormat` enum. /// /// Used to decode bit sequences by providing `scale_bits::StoreFormat` using @@ -145,7 +146,7 @@ impl codec::Encode for DecodedBits(std::marker::PhantomData<(S, O, R)>); +pub struct DecodedBitsVisitor(core::marker::PhantomData<(S, O, R)>); impl scale_decode::Visitor for DecodedBitsVisitor { type Value<'scale, 'info> = DecodedBits; diff --git a/subxt/src/utils/era.rs b/core/src/utils/era.rs similarity index 100% rename from subxt/src/utils/era.rs rename to core/src/utils/era.rs diff --git a/core/src/utils/mod.rs b/core/src/utils/mod.rs new file mode 100644 index 0000000000..6d57b974c3 --- /dev/null +++ b/core/src/utils/mod.rs @@ -0,0 +1,83 @@ +// Copyright 2019-2023 Parity Technologies (UK) Ltd. +// This file is dual-licensed as Apache-2.0 or GPL-3.0. +// see LICENSE for license details. + +//! Miscellaneous utility helpers. + +mod account_id; +pub mod bits; +mod era; +mod multi_address; +mod multi_signature; +mod static_type; +mod unchecked_extrinsic; +mod wrapper_opaque; + +use alloc::borrow::ToOwned; +use alloc::format; +use alloc::string::String; +use alloc::vec::Vec; +use codec::{Compact, Decode, Encode}; +use derive_where::derive_where; + +pub use account_id::AccountId32; +pub use era::Era; +pub use multi_address::MultiAddress; +pub use multi_signature::MultiSignature; +pub use static_type::Static; +pub use unchecked_extrinsic::UncheckedExtrinsic; +pub use wrapper_opaque::WrapperKeepOpaque; + +// Used in codegen +#[doc(hidden)] +pub use primitive_types::{H160, H256, H512}; + +/// Wraps an already encoded byte vector, prevents being encoded as a raw byte vector as part of +/// the transaction payload +#[derive(Clone, Debug, Eq, PartialEq, Ord, PartialOrd)] +pub struct Encoded(pub Vec); + +impl codec::Encode for Encoded { + fn encode(&self) -> Vec { + self.0.to_owned() + } +} + +/// Decodes a compact encoded value from the beginning of the provided bytes, +/// returning the value and any remaining bytes. +pub fn strip_compact_prefix(bytes: &[u8]) -> Result<(u64, &[u8]), codec::Error> { + let cursor = &mut &*bytes; + let val = >::decode(cursor)?; + Ok((val.0, *cursor)) +} + +/// A version of [`core::marker::PhantomData`] that is also Send and Sync (which is fine +/// because regardless of the generic param, it is always possible to Send + Sync this +/// 0 size type). +#[derive(Encode, Decode, scale_info::TypeInfo)] +#[derive_where(Clone, PartialEq, Debug, Eq, Default, Hash)] +#[scale_info(skip_type_params(T))] +#[doc(hidden)] +pub struct PhantomDataSendSync(core::marker::PhantomData); + +impl PhantomDataSendSync { + pub fn new() -> Self { + Self(core::marker::PhantomData) + } +} + +unsafe impl Send for PhantomDataSendSync {} +unsafe impl Sync for PhantomDataSendSync {} + +/// This represents a key-value collection and is SCALE compatible +/// with collections like BTreeMap. This has the same type params +/// as `BTreeMap` which allows us to easily swap the two during codegen. +pub type KeyedVec = Vec<(K, V)>; + +/// A unit marker struct signalling that some property is true +pub struct Yes; + +/// A quick helper to encode some bytes to hex. +pub fn to_hex(bytes: impl AsRef<[u8]>) -> String { + format!("0x{}", hex::encode(bytes.as_ref())) +} diff --git a/subxt/src/utils/multi_address.rs b/core/src/utils/multi_address.rs similarity index 99% rename from subxt/src/utils/multi_address.rs rename to core/src/utils/multi_address.rs index 9b1e556fa9..3a2d97297d 100644 --- a/subxt/src/utils/multi_address.rs +++ b/core/src/utils/multi_address.rs @@ -6,6 +6,7 @@ //! This doesn't contain much functionality itself, but is easy to convert to/from an `sp_runtime::MultiAddress` //! for instance, to gain functionality without forcing a dependency on Substrate crates here. +use alloc::vec::Vec; use codec::{Decode, Encode}; /// A multi-format address wrapper for on-chain accounts. This is a simplified version of Substrate's diff --git a/subxt/src/utils/multi_signature.rs b/core/src/utils/multi_signature.rs similarity index 100% rename from subxt/src/utils/multi_signature.rs rename to core/src/utils/multi_signature.rs diff --git a/subxt/src/utils/static_type.rs b/core/src/utils/static_type.rs similarity index 91% rename from subxt/src/utils/static_type.rs rename to core/src/utils/static_type.rs index 6cf1285f8b..ad359886f5 100644 --- a/subxt/src/utils/static_type.rs +++ b/core/src/utils/static_type.rs @@ -6,6 +6,8 @@ use codec::{Decode, Encode}; use scale_decode::{visitor::DecodeAsTypeResult, IntoVisitor, TypeResolver, Visitor}; use scale_encode::EncodeAsType; +use alloc::vec::Vec; + /// If the type inside this implements [`Encode`], this will implement [`scale_encode::EncodeAsType`]. /// If the type inside this implements [`Decode`], this will implement [`scale_decode::DecodeAsType`]. /// @@ -29,7 +31,7 @@ impl EncodeAsType for Static { } } -pub struct StaticDecodeAsTypeVisitor(std::marker::PhantomData<(T, R)>); +pub struct StaticDecodeAsTypeVisitor(core::marker::PhantomData<(T, R)>); impl Visitor for StaticDecodeAsTypeVisitor { type Value<'scale, 'info> = Static; @@ -53,7 +55,7 @@ impl Visitor for StaticDecodeAsTypeVisitor { impl IntoVisitor for Static { type AnyVisitor = StaticDecodeAsTypeVisitor; fn into_visitor() -> StaticDecodeAsTypeVisitor { - StaticDecodeAsTypeVisitor(std::marker::PhantomData) + StaticDecodeAsTypeVisitor(core::marker::PhantomData) } } @@ -65,14 +67,14 @@ impl From for Static { } // Static is just a marker type and should be as transparent as possible: -impl std::ops::Deref for Static { +impl core::ops::Deref for Static { type Target = T; fn deref(&self) -> &Self::Target { &self.0 } } -impl std::ops::DerefMut for Static { +impl core::ops::DerefMut for Static { fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } diff --git a/subxt/src/utils/unchecked_extrinsic.rs b/core/src/utils/unchecked_extrinsic.rs similarity index 98% rename from subxt/src/utils/unchecked_extrinsic.rs rename to core/src/utils/unchecked_extrinsic.rs index 14ad39e790..6f4c3e69b0 100644 --- a/subxt/src/utils/unchecked_extrinsic.rs +++ b/core/src/utils/unchecked_extrinsic.rs @@ -9,12 +9,13 @@ //! runtime APIs. Deriving `EncodeAsType` would lead to the inner //! bytes to be re-encoded (length prefixed). -use std::marker::PhantomData; +use core::marker::PhantomData; use codec::{Decode, Encode}; use scale_decode::{visitor::DecodeAsTypeResult, DecodeAsType, IntoVisitor, TypeResolver, Visitor}; use super::{Encoded, Static}; +use alloc::vec::Vec; /// The unchecked extrinsic from substrate. #[derive(Clone, Debug, Eq, PartialEq, Encode)] @@ -115,6 +116,8 @@ impl IntoVisitor pub mod tests { use super::*; + use alloc::vec; + #[test] fn unchecked_extrinsic_encoding() { // A tx is basically some bytes with a compact length prefix; ie an encoded vec: diff --git a/subxt/src/utils/wrapper_opaque.rs b/core/src/utils/wrapper_opaque.rs similarity index 94% rename from subxt/src/utils/wrapper_opaque.rs rename to core/src/utils/wrapper_opaque.rs index 7888dee47f..f0414a9d17 100644 --- a/subxt/src/utils/wrapper_opaque.rs +++ b/core/src/utils/wrapper_opaque.rs @@ -4,10 +4,13 @@ use super::PhantomDataSendSync; use codec::{Compact, Decode, DecodeAll, Encode}; -use derivative::Derivative; +use derive_where::derive_where; use scale_decode::{ext::scale_type_resolver::visitor, IntoVisitor, TypeResolver, Visitor}; use scale_encode::EncodeAsType; +use alloc::format; +use alloc::vec::Vec; + /// A wrapper for any type `T` which implement encode/decode in a way compatible with `Vec`. /// [`WrapperKeepOpaque`] stores the type only in its opaque format, aka as a `Vec`. To /// access the real type `T` [`Self::try_decode`] needs to be used. @@ -18,15 +21,8 @@ use scale_encode::EncodeAsType; // - However, the TypeInfo describes the type as a composite with first a compact encoded length and next the type itself. // [`Encode`] and [`Decode`] impls will "just work" to take this into a `Vec`, but we need a custom [`EncodeAsType`] // and [`Visitor`] implementation to encode and decode based on TypeInfo. -#[derive(Derivative, Encode, Decode)] -#[derivative( - Debug(bound = ""), - Clone(bound = ""), - PartialEq(bound = ""), - Eq(bound = ""), - Default(bound = ""), - Hash(bound = "") -)] +#[derive(Encode, Decode)] +#[derive_where(Debug, Clone, PartialEq, Eq, Default, Hash)] pub struct WrapperKeepOpaque { data: Vec, _phantom: PhantomDataSendSync, @@ -83,7 +79,7 @@ impl EncodeAsType for WrapperKeepOpaque { use scale_encode::error::{Error, ErrorKind, Kind}; let visitor = visitor::new(out, |_, _| { - // Check that the target shape lines up: any other shape but the composite is wrong. + // Check that the target shape lines up: any other shape but composite is wrong. Err(Error::new(ErrorKind::WrongShape { actual: Kind::Struct, expected_id: format!("{:?}", type_id), @@ -100,7 +96,7 @@ impl EncodeAsType for WrapperKeepOpaque { } } -pub struct WrapperKeepOpaqueVisitor(std::marker::PhantomData<(T, R)>); +pub struct WrapperKeepOpaqueVisitor(core::marker::PhantomData<(T, R)>); impl Visitor for WrapperKeepOpaqueVisitor { type Value<'scale, 'info> = WrapperKeepOpaque; type Error = scale_decode::Error; @@ -143,7 +139,7 @@ impl Visitor for WrapperKeepOpaqueVisitor { impl IntoVisitor for WrapperKeepOpaque { type AnyVisitor = WrapperKeepOpaqueVisitor; fn into_visitor() -> WrapperKeepOpaqueVisitor { - WrapperKeepOpaqueVisitor(std::marker::PhantomData) + WrapperKeepOpaqueVisitor(core::marker::PhantomData) } } @@ -151,6 +147,8 @@ impl IntoVisitor for WrapperKeepOpaque { mod test { use scale_decode::DecodeAsType; + use alloc::vec; + use super::*; // Copied from https://github.com/paritytech/substrate/blob/master/frame/support/src/traits/misc.rs @@ -188,7 +186,7 @@ mod test { + Encode + Decode + PartialEq - + std::fmt::Debug + + core::fmt::Debug + scale_info::TypeInfo + 'static, { diff --git a/examples/wasm-example/Cargo.lock b/examples/wasm-example/Cargo.lock index 87abb8f1d3..5b14afaaf3 100644 --- a/examples/wasm-example/Cargo.lock +++ b/examples/wasm-example/Cargo.lock @@ -2502,8 +2502,6 @@ name = "subxt" version = "0.35.0" dependencies = [ "async-trait", - "base58", - "blake2", "derivative", "either", "frame-metadata 16.0.0", @@ -2551,6 +2549,32 @@ dependencies = [ "tokio", ] +[[package]] +name = "subxt-core" +version = "0.34.0" +dependencies = [ + "base58", + "blake2", + "derivative", + "derive_more", + "frame-metadata 16.0.0", + "hashbrown 0.14.3", + "hex", + "impl-serde", + "parity-scale-codec", + "primitive-types", + "scale-bits", + "scale-decode", + "scale-encode", + "scale-info", + "scale-value", + "serde", + "serde_json", + "sp-core-hashing", + "subxt-metadata", + "tracing", +] + [[package]] name = "subxt-lightclient" version = "0.35.0" diff --git a/examples/wasm-example/src/services.rs b/examples/wasm-example/src/services.rs index 5b8df203ef..c981364b01 100644 --- a/examples/wasm-example/src/services.rs +++ b/examples/wasm-example/src/services.rs @@ -130,8 +130,8 @@ pub async fn extension_signature_for_extrinsic( ) -> Result, anyhow::Error> { let genesis_hash = encode_then_hex(&api.genesis_hash()); // These numbers aren't SCALE encoded; their bytes are just converted to hex: - let spec_version = to_hex(&api.runtime_version().spec_version.to_be_bytes()); - let transaction_version = to_hex(&api.runtime_version().transaction_version.to_be_bytes()); + let spec_version = to_hex(&api.runtime_version().spec_version().to_be_bytes()); + let transaction_version = to_hex(&api.runtime_version().transaction_version().to_be_bytes()); let nonce = to_hex(&account_nonce.to_be_bytes()); // If you construct a mortal transaction, then this block hash needs to correspond // to the block number passed to `Era::mortal()`. diff --git a/metadata/src/lib.rs b/metadata/src/lib.rs index 2f3c6c0000..cec6afd565 100644 --- a/metadata/src/lib.rs +++ b/metadata/src/lib.rs @@ -171,45 +171,6 @@ impl Metadata { &OuterEnumHashes::empty(), )) } - - /// Ensure that every unique type we'll be generating or referring to also has a - /// unique path, so that types with matching paths don't end up overwriting each other - /// in the codegen. We ignore any types with generics; Subxt actually endeavours to - /// de-duplicate those into single types with a generic. - pub fn ensure_unique_type_paths(&mut self) { - let mut visited_path_counts = HashMap::, usize>::new(); - for ty in self.types.types.iter_mut() { - // Ignore types without a path (ie prelude types). - if ty.ty.path.namespace().is_empty() { - continue; - } - - let has_valid_type_params = ty.ty.type_params.iter().any(|tp| tp.ty.is_some()); - - // Ignore types which have generic params that the type generation will use. - // Ordinarily we'd expect that any two types with identical paths must be parameterized - // in order to share the path. However scale-info doesn't understand all forms of generics - // properly I think (eg generics that have associated types that can differ), and so in - // those cases we need to fix the paths for Subxt to generate correct code. - if has_valid_type_params { - continue; - } - - // Count how many times we've seen the same path already. - let visited_count = visited_path_counts - .entry(ty.ty.path.segments.clone()) - .or_default(); - *visited_count += 1; - - // alter the type so that if it's been seen more than once, we append a number to - // its name to ensure that every unique type has a unique path, too. - if *visited_count > 1 { - if let Some(name) = ty.ty.path.segments.last_mut() { - *name = alloc::format!("{name}{visited_count}"); - } - } - } - } } /// Metadata for a specific pallet. diff --git a/signer/Cargo.toml b/signer/Cargo.toml index 7e307b2284..e69042c841 100644 --- a/signer/Cargo.toml +++ b/signer/Cargo.toml @@ -15,7 +15,7 @@ description = "Sign extrinsics to be submitted by Subxt" keywords = ["parity", "subxt", "extrinsic", "signer"] [features] -default = ["sr25519", "ecdsa", "subxt", "std", "native"] +default = ["sr25519", "ecdsa", "subxt", "std"] std = ["regex/std", "sp-crypto-hashing/std", "pbkdf2/std", "sha2/std", "hmac/std", "bip39/std", "schnorrkel/std", "secp256k1/std", "sp-core/std"] # Pick the signer implementation(s) you need by enabling the @@ -27,15 +27,15 @@ ecdsa = ["secp256k1"] # Make the keypair algorithms here compatible with Subxt's Signer trait, # so that they can be used to sign transactions for compatible chains. -subxt = ["dep:subxt"] +subxt = ["dep:subxt-core"] # The getrandom package is used via schnorrkel. We need to enable the JS # feature on it if compiling for the web. -web = ["getrandom/js", "subxt?/web"] -native = ["subxt?/native"] +web = ["getrandom/js"] [dependencies] -subxt = { workspace = true, optional = true } +subxt-core = { workspace = true, optional = true, default-features = false } +secrecy = { workspace = true } regex = { workspace = true, features = ["unicode"] } hex = { workspace = true } cfg-if = { workspace = true } @@ -49,15 +49,14 @@ zeroize = { workspace = true } bip39 = { workspace = true } schnorrkel = { workspace = true, optional = true } secp256k1 = { workspace = true, optional = true, features = ["alloc", "recovery"] } -secrecy = { workspace = true } # We only pull this in to enable the JS flag for schnorrkel to use. getrandom = { workspace = true, optional = true } [dev-dependencies] -sp-core = { workspace = true } sp-keyring = { workspace = true } +sp-core = { workspace = true } [package.metadata.cargo-machete] ignored = ["getrandom"] diff --git a/signer/src/ecdsa.rs b/signer/src/ecdsa.rs index de84d4bd9a..cfa3975edf 100644 --- a/signer/src/ecdsa.rs +++ b/signer/src/ecdsa.rs @@ -272,9 +272,9 @@ pub mod dev { mod subxt_compat { use super::*; - use subxt::config::Config; - use subxt::tx::Signer as SignerT; - use subxt::utils::{AccountId32, MultiAddress, MultiSignature}; + use subxt_core::config::Config; + use subxt_core::tx::Signer as SignerT; + use subxt_core::utils::{AccountId32, MultiAddress, MultiSignature}; impl From for MultiSignature { fn from(value: Signature) -> Self { diff --git a/signer/src/sr25519.rs b/signer/src/sr25519.rs index 344e7b2655..83e011fc26 100644 --- a/signer/src/sr25519.rs +++ b/signer/src/sr25519.rs @@ -258,9 +258,11 @@ pub mod dev { mod subxt_compat { use super::*; - use subxt::config::Config; - use subxt::tx::Signer as SignerT; - use subxt::utils::{AccountId32, MultiAddress, MultiSignature}; + use subxt_core::{ + tx::Signer as SignerT, + utils::{AccountId32, MultiAddress, MultiSignature}, + Config, + }; impl From for MultiSignature { fn from(value: Signature) -> Self { diff --git a/subxt/Cargo.toml b/subxt/Cargo.toml index f91ec708a0..8f8cc847de 100644 --- a/subxt/Cargo.toml +++ b/subxt/Cargo.toml @@ -53,7 +53,7 @@ jsonrpsee = [ # Enable this to pull in extra Substrate dependencies which make it possible to # use the `sp_core::crypto::Pair` Signer implementation, as well as adding some # `From` impls for types like `AccountId32`. Cannot be used with "web". -substrate-compat = ["sp-core", "sp-runtime"] +substrate-compat = ["subxt-core/substrate-compat"] # Enable this to fetch and utilize the latest unstable metadata from a node. # The unstable metadata is subject to breaking changes and the subxt might @@ -68,6 +68,7 @@ unstable-light-client = ["subxt-lightclient"] [dependencies] async-trait = { workspace = true } codec = { package = "parity-scale-codec", workspace = true, features = ["derive"] } +derive-where = { workspace = true } scale-info = { workspace = true, features = ["default"] } scale-value = { workspace = true, features = ["default"] } scale-bits = { workspace = true, features = ["default"] } @@ -80,7 +81,6 @@ serde_json = { workspace = true, features = ["default", "raw_value"] } thiserror = { workspace = true } tracing = { workspace = true } frame-metadata = { workspace = true } -derivative = { workspace = true } either = { workspace = true } instant = { workspace = true } @@ -89,19 +89,12 @@ impl-serde = { workspace = true } primitive-types = { workspace = true, features = ["codec", "scale-info", "serde"] } sp-crypto-hashing = { workspace = true } -# For ss58 encoding AccountId32 to serialize them properly: -base58 = { workspace = true } -blake2 = { workspace = true } - # Included if the "jsonrpsee" feature is enabled. jsonrpsee = { workspace = true, optional = true, features = ["jsonrpsee-types"] } -# Included if the "substrate-compat" feature is enabled. -sp-core = { workspace = true, optional = true } -sp-runtime = { workspace = true, optional = true } - # Other subxt crates we depend on. subxt-macro = { workspace = true } +subxt-core = { workspace = true, features = ["std"] } subxt-metadata = { workspace = true, features = ["std"] } subxt-lightclient = { workspace = true, optional = true, default-features = false } diff --git a/subxt/examples/setup_client_offline.rs b/subxt/examples/setup_client_offline.rs index 70afc0a41c..db3794661e 100644 --- a/subxt/examples/setup_client_offline.rs +++ b/subxt/examples/setup_client_offline.rs @@ -16,10 +16,7 @@ async fn main() -> Result<(), Box> { }; // 2. A runtime version (system_version constant on a Substrate node has these): - let runtime_version = subxt::backend::RuntimeVersion { - spec_version: 9370, - transaction_version: 20, - }; + let runtime_version = subxt::client::RuntimeVersion::new(9370, 20); // 3. Metadata (I'll load it from the downloaded metadata, but you can use // `subxt metadata > file.scale` to download it): diff --git a/subxt/examples/setup_config_custom.rs b/subxt/examples/setup_config_custom.rs index df4dec9fae..38cab069f9 100644 --- a/subxt/examples/setup_config_custom.rs +++ b/subxt/examples/setup_config_custom.rs @@ -1,6 +1,6 @@ #![allow(missing_docs)] use codec::Encode; -use subxt::client::OfflineClientT; +use subxt::client::ClientState; use subxt::config::{ Config, ExtrinsicParams, ExtrinsicParamsEncoder, ExtrinsicParamsError, RefineParams, }; @@ -60,10 +60,7 @@ impl ExtrinsicParams for CustomExtrinsicParams { type Params = CustomExtrinsicParamsBuilder; // Gather together all of the params we will need to encode: - fn new>( - client: Client, - params: Self::Params, - ) -> Result { + fn new(client: &ClientState, params: Self::Params) -> Result { Ok(Self { genesis_hash: client.genesis_hash(), tip: params.tip, diff --git a/subxt/examples/setup_config_signed_extension.rs b/subxt/examples/setup_config_signed_extension.rs index e4a2733be5..66585e46bb 100644 --- a/subxt/examples/setup_config_signed_extension.rs +++ b/subxt/examples/setup_config_signed_extension.rs @@ -2,7 +2,7 @@ use codec::Encode; use scale_encode::EncodeAsType; use scale_info::PortableRegistry; -use subxt::client::OfflineClientT; +use subxt::client::ClientState; use subxt::config::signed_extensions; use subxt::config::{ Config, DefaultExtrinsicParamsBuilder, ExtrinsicParams, ExtrinsicParamsEncoder, @@ -60,10 +60,7 @@ impl signed_extensions::SignedExtension for CustomSignedExtension impl ExtrinsicParams for CustomSignedExtension { type Params = (); - fn new>( - _client: Client, - _params: Self::Params, - ) -> Result { + fn new(_client: &ClientState, _params: Self::Params) -> Result { Ok(CustomSignedExtension) } } diff --git a/subxt/examples/storage_iterating_dynamic.rs b/subxt/examples/storage_iterating_dynamic.rs index a768e6768e..edda311b00 100644 --- a/subxt/examples/storage_iterating_dynamic.rs +++ b/subxt/examples/storage_iterating_dynamic.rs @@ -1,5 +1,5 @@ #![allow(missing_docs)] -use subxt::{OnlineClient, PolkadotConfig}; +use subxt::{dynamic::Value, OnlineClient, PolkadotConfig}; #[tokio::main] async fn main() -> Result<(), Box> { @@ -8,7 +8,7 @@ async fn main() -> Result<(), Box> { // Build a dynamic storage query to iterate account information. // With a dynamic query, we can just provide an empty vector as the keys to iterate over all entries. - let keys: Vec = vec![]; + let keys: Vec = vec![]; let storage_query = subxt::dynamic::storage("System", "Account", keys); // Use that query to return an iterator over the results. diff --git a/subxt/src/backend/legacy/mod.rs b/subxt/src/backend/legacy/mod.rs index 8d9f331fac..6c6520e0db 100644 --- a/subxt/src/backend/legacy/mod.rs +++ b/subxt/src/backend/legacy/mod.rs @@ -181,20 +181,16 @@ impl Backend for LegacyBackend { async fn current_runtime_version(&self) -> Result { let details = self.methods.state_get_runtime_version(None).await?; - Ok(RuntimeVersion { - spec_version: details.spec_version, - transaction_version: details.transaction_version, - }) + Ok(RuntimeVersion::new( + details.spec_version, + details.transaction_version, + )) } async fn stream_runtime_version(&self) -> Result, Error> { let sub = self.methods.state_subscribe_runtime_version().await?; - let sub = sub.map(|r| { - r.map(|v| RuntimeVersion { - spec_version: v.spec_version, - transaction_version: v.transaction_version, - }) - }); + let sub = + sub.map(|r| r.map(|v| RuntimeVersion::new(v.spec_version, v.transaction_version))); Ok(StreamOf(Box::pin(sub))) } diff --git a/subxt/src/backend/legacy/rpc_methods.rs b/subxt/src/backend/legacy/rpc_methods.rs index 982faf9a7e..8ba1db2f7f 100644 --- a/subxt/src/backend/legacy/rpc_methods.rs +++ b/subxt/src/backend/legacy/rpc_methods.rs @@ -8,15 +8,14 @@ use crate::backend::rpc::{rpc_params, RpcClient, RpcSubscription}; use crate::metadata::Metadata; use crate::{Config, Error}; use codec::Decode; -use derivative::Derivative; +use derive_where::derive_where; use primitive_types::U256; use serde::{Deserialize, Serialize}; /// An interface to call the legacy RPC methods. This interface is instantiated with /// some `T: Config` trait which determines some of the types that the RPC methods will /// take or hand back. -#[derive(Derivative)] -#[derivative(Clone(bound = ""), Debug(bound = ""))] +#[derive_where(Clone, Debug)] pub struct LegacyRpcMethods { client: RpcClient, _marker: std::marker::PhantomData, diff --git a/subxt/src/backend/mod.rs b/subxt/src/backend/mod.rs index e816bc904c..1dcac2d35c 100644 --- a/subxt/src/backend/mod.rs +++ b/subxt/src/backend/mod.rs @@ -10,6 +10,8 @@ pub mod legacy; pub mod rpc; pub mod unstable; +use subxt_core::client::RuntimeVersion; + use crate::error::Error; use crate::metadata::Metadata; use crate::Config; @@ -277,26 +279,6 @@ impl StreamOf { /// A stream of [`Result`]. pub type StreamOfResults = StreamOf>; -/// Runtime version information needed to submit transactions. -#[derive(Debug, Clone, PartialEq, Eq)] -pub struct RuntimeVersion { - /// Version of the runtime specification. A full-node will not attempt to use its native - /// runtime in substitute for the on-chain Wasm runtime unless all of `spec_name`, - /// `spec_version` and `authoring_version` are the same between Wasm and native. - pub spec_version: u32, - - /// All existing dispatches are fully compatible when this number doesn't change. If this - /// number changes, then `spec_version` must change, also. - /// - /// This number must change when an existing dispatchable (module ID, dispatch ID) is changed, - /// either through an alteration in its user-level semantics, a parameter - /// added/removed/changed, a dispatchable being removed, a module being removed, or a - /// dispatchable/module changing its index. - /// - /// It need *not* change when a new module is added or when a dispatchable is added. - pub transaction_version: u32, -} - /// The status of the transaction. /// /// If the status is [`TransactionStatus::InFinalizedBlock`], [`TransactionStatus::Error`], diff --git a/subxt/src/backend/unstable/mod.rs b/subxt/src/backend/unstable/mod.rs index 4fe70bc374..d126b8343b 100644 --- a/subxt/src/backend/unstable/mod.rs +++ b/subxt/src/backend/unstable/mod.rs @@ -361,7 +361,6 @@ impl Backend for UnstableBackend { for finalized_block in ev.finalized_block_hashes { runtimes.remove(&finalized_block.hash()); } - ev.finalized_block_runtime } FollowEvent::NewBlock(ev) => { @@ -417,10 +416,8 @@ impl Backend for UnstableBackend { RuntimeEvent::Valid(ev) => ev, }; - std::future::ready(Some(Ok(RuntimeVersion { - spec_version: runtime_details.spec.spec_version, - transaction_version: runtime_details.spec.transaction_version, - }))) + let runtime_version = RuntimeVersion::new(runtime_details.spec.spec_version, runtime_details.spec.transaction_version); + std::future::ready(Some(Ok(runtime_version))) }); Ok(StreamOf(Box::pin(runtime_stream))) diff --git a/subxt/src/backend/unstable/rpc_methods.rs b/subxt/src/backend/unstable/rpc_methods.rs index fd2a1dcf9c..9c1307a326 100644 --- a/subxt/src/backend/unstable/rpc_methods.rs +++ b/subxt/src/backend/unstable/rpc_methods.rs @@ -9,7 +9,7 @@ use crate::backend::rpc::{rpc_params, RpcClient, RpcSubscription}; use crate::config::BlockHash; use crate::{Config, Error}; -use derivative::Derivative; +use derive_where::derive_where; use futures::{Stream, StreamExt}; use serde::{Deserialize, Serialize}; use std::collections::{HashMap, VecDeque}; @@ -18,8 +18,7 @@ use std::task::Poll; /// An interface to call the unstable RPC methods. This interface is instantiated with /// some `T: Config` trait which determines some of the types that the RPC methods will /// take or hand back. -#[derive(Derivative)] -#[derivative(Clone(bound = ""), Debug(bound = ""))] +#[derive_where(Clone, Debug)] pub struct UnstableRpcMethods { client: RpcClient, _marker: std::marker::PhantomData, diff --git a/subxt/src/blocks/blocks_client.rs b/subxt/src/blocks/blocks_client.rs index 9ec031a35a..0d8e589a94 100644 --- a/subxt/src/blocks/blocks_client.rs +++ b/subxt/src/blocks/blocks_client.rs @@ -10,7 +10,7 @@ use crate::{ error::{BlockError, Error}, utils::PhantomDataSendSync, }; -use derivative::Derivative; +use derive_where::derive_where; use futures::StreamExt; use std::future::Future; @@ -18,8 +18,7 @@ type BlockStream = StreamOfResults; type BlockStreamRes = Result, Error>; /// A client for working with blocks. -#[derive(Derivative)] -#[derivative(Clone(bound = "Client: Clone"))] +#[derive_where(Clone; Client)] pub struct BlocksClient { client: Client, _marker: PhantomDataSendSync, diff --git a/subxt/src/blocks/extrinsic_types.rs b/subxt/src/blocks/extrinsic_types.rs index 32bdb057e9..4ebd7a0166 100644 --- a/subxt/src/blocks/extrinsic_types.rs +++ b/subxt/src/blocks/extrinsic_types.rs @@ -16,31 +16,14 @@ use crate::config::signed_extensions::{ ChargeAssetTxPayment, ChargeTransactionPayment, CheckNonce, }; use crate::config::SignedExtension; -use crate::dynamic::DecodedValue; +use crate::dynamic::Value; use crate::utils::strip_compact_prefix; use codec::Decode; -use derivative::Derivative; -use scale_decode::{DecodeAsFields, DecodeAsType}; +use derive_where::derive_where; +use scale_decode::DecodeAsType; use std::sync::Arc; - -/// Trait to uniquely identify the extrinsic's identity from the runtime metadata. -/// -/// Generated API structures that represent an extrinsic implement this trait. -/// -/// The trait is utilized to decode emitted extrinsics from a block, via obtaining the -/// form of the `Extrinsic` from the metadata. -pub trait StaticExtrinsic: DecodeAsFields { - /// Pallet name. - const PALLET: &'static str; - /// Call name. - const CALL: &'static str; - - /// Returns true if the given pallet and call names match this extrinsic. - fn is_extrinsic(pallet: &str, call: &str) -> bool { - Self::PALLET == pallet && Self::CALL == call - } -} +pub use subxt_core::blocks::StaticExtrinsic; /// The body of a block. pub struct Extrinsics { @@ -524,8 +507,7 @@ impl ExtrinsicPartTypeIds { } /// The events associated with a given extrinsic. -#[derive(Derivative)] -#[derivative(Debug(bound = ""))] +#[derive_where(Debug)] pub struct ExtrinsicEvents { // The hash of the extrinsic (handy to expose here because // this type is returned from TxProgress things in the most @@ -547,11 +529,6 @@ impl ExtrinsicEvents { } } - /// Return the hash of the block that the extrinsic is in. - pub fn block_hash(&self) -> T::Hash { - self.events.block_hash() - } - /// The index of the extrinsic that these events are produced from. pub fn extrinsic_index(&self) -> u32 { self.idx @@ -572,11 +549,14 @@ impl ExtrinsicEvents { /// This works in the same way that [`events::Events::iter()`] does, with the /// exception that it filters out events not related to the submitted extrinsic. pub fn iter(&self) -> impl Iterator, Error>> + '_ { - self.events.iter().filter(|ev| { - ev.as_ref() - .map(|ev| ev.phase() == events::Phase::ApplyExtrinsic(self.idx)) - .unwrap_or(true) // Keep any errors. - }) + self.events + .iter() + .filter(|ev| { + ev.as_ref() + .map(|ev| ev.phase() == events::Phase::ApplyExtrinsic(self.idx)) + .unwrap_or(true) // Keep any errors. + }) + .map(|e| e.map_err(Error::from)) } /// Find all of the transaction events matching the event type provided as a generic parameter. @@ -742,7 +722,7 @@ impl<'a, T: Config> ExtrinsicSignedExtension<'a, T> { } /// Signed Extension as a [`scale_value::Value`] - pub fn value(&self) -> Result { + pub fn value(&self) -> Result, Error> { let value = scale_value::scale::decode_as_type( &mut &self.bytes[..], &self.ty_id, @@ -770,7 +750,7 @@ impl<'a, T: Config> ExtrinsicSignedExtension<'a, T> { #[cfg(test)] mod tests { use super::*; - use crate::{backend::RuntimeVersion, OfflineClient, PolkadotConfig}; + use crate::{OfflineClient, PolkadotConfig}; use assert_matches::assert_matches; use codec::{Decode, Encode}; use frame_metadata::v15::{CustomMetadata, OuterEnums}; @@ -781,6 +761,7 @@ mod tests { use primitive_types::H256; use scale_info::{meta_type, TypeInfo}; use scale_value::Value; + use subxt_core::client::RuntimeVersion; // Extrinsic needs to contain at least the generic type parameter "Call" // for the metadata to be valid. @@ -902,10 +883,7 @@ mod tests { /// Build an offline client to work with the test metadata. fn client(metadata: Metadata) -> OfflineClient { // Create the encoded extrinsic bytes. - let rt_version = RuntimeVersion { - spec_version: 1, - transaction_version: 4, - }; + let rt_version = RuntimeVersion::new(1, 4); let block_hash = H256::random(); OfflineClient::new(block_hash, rt_version, metadata) } diff --git a/subxt/src/client/mod.rs b/subxt/src/client/mod.rs index fe699c4a55..9eddcd961f 100644 --- a/subxt/src/client/mod.rs +++ b/subxt/src/client/mod.rs @@ -15,3 +15,4 @@ pub use offline_client::{OfflineClient, OfflineClientT}; pub use online_client::{ ClientRuntimeUpdater, OnlineClient, OnlineClientT, RuntimeUpdaterStream, Update, UpgradeError, }; +pub use subxt_core::client::{ClientState, RuntimeVersion}; diff --git a/subxt/src/client/offline_client.rs b/subxt/src/client/offline_client.rs index 4477e21b7a..1960b36bd7 100644 --- a/subxt/src/client/offline_client.rs +++ b/subxt/src/client/offline_client.rs @@ -4,13 +4,13 @@ use crate::custom_values::CustomValuesClient; use crate::{ - backend::RuntimeVersion, blocks::BlocksClient, constants::ConstantsClient, - events::EventsClient, runtime_api::RuntimeApiClient, storage::StorageClient, tx::TxClient, - Config, Metadata, + blocks::BlocksClient, constants::ConstantsClient, events::EventsClient, + runtime_api::RuntimeApiClient, storage::StorageClient, tx::TxClient, Config, Metadata, }; -use derivative::Derivative; +use derive_where::derive_where; use std::sync::Arc; +use subxt_core::client::{ClientState, RuntimeVersion}; /// A trait representing a client that can perform /// offline-only actions. @@ -21,6 +21,10 @@ pub trait OfflineClientT: Clone + Send + Sync + 'static { fn genesis_hash(&self) -> T::Hash; /// Return the provided [`RuntimeVersion`]. fn runtime_version(&self) -> RuntimeVersion; + /// Return the [subxt_core::client::ClientState] (metadata, runtime version and genesis hash). + fn client_state(&self) -> ClientState { + ClientState::new(self.genesis_hash(), self.runtime_version(), self.metadata()) + } /// Work with transactions. fn tx(&self) -> TxClient { @@ -60,18 +64,9 @@ pub trait OfflineClientT: Clone + Send + Sync + 'static { /// A client that is capable of performing offline-only operations. /// Can be constructed as long as you can populate the required fields. -#[derive(Derivative)] -#[derivative(Debug(bound = ""), Clone(bound = ""))] +#[derive_where(Debug, Clone)] pub struct OfflineClient { - inner: Arc>, -} - -#[derive(Derivative)] -#[derivative(Debug(bound = ""), Clone(bound = ""))] -struct Inner { - genesis_hash: T::Hash, - runtime_version: RuntimeVersion, - metadata: Metadata, + inner: Arc>, } impl OfflineClient { @@ -83,27 +78,36 @@ impl OfflineClient { metadata: impl Into, ) -> OfflineClient { OfflineClient { - inner: Arc::new(Inner { + inner: Arc::new(ClientState::new( genesis_hash, runtime_version, - metadata: metadata.into(), - }), + metadata.into(), + )), } } /// Return the genesis hash. pub fn genesis_hash(&self) -> T::Hash { - self.inner.genesis_hash + self.inner.genesis_hash() } /// Return the runtime version. pub fn runtime_version(&self) -> RuntimeVersion { - self.inner.runtime_version.clone() + self.inner.runtime_version() } /// Return the [`Metadata`] used in this client. pub fn metadata(&self) -> Metadata { - self.inner.metadata.clone() + self.inner.metadata() + } + + /// Return the [subxt_core::client::ClientState] (metadata, runtime version and genesis hash). + pub fn client_state(&self) -> ClientState { + ClientState::new( + self.inner.genesis_hash(), + self.inner.runtime_version(), + self.inner.metadata(), + ) } // Just a copy of the most important trait methods so that people @@ -145,6 +149,9 @@ impl OfflineClientT for OfflineClient { fn metadata(&self) -> Metadata { self.metadata() } + fn client_state(&self) -> ClientState { + self.client_state() + } } // For ergonomics; cloning a client is deliberately fairly cheap (via Arc), diff --git a/subxt/src/client/online_client.rs b/subxt/src/client/online_client.rs index 1d38016e06..5ac11826b2 100644 --- a/subxt/src/client/online_client.rs +++ b/subxt/src/client/online_client.rs @@ -5,9 +5,7 @@ use super::{OfflineClient, OfflineClientT}; use crate::custom_values::CustomValuesClient; use crate::{ - backend::{ - legacy::LegacyBackend, rpc::RpcClient, Backend, BackendExt, RuntimeVersion, StreamOfResults, - }, + backend::{legacy::LegacyBackend, rpc::RpcClient, Backend, BackendExt, StreamOfResults}, blocks::{BlockRef, BlocksClient}, constants::ConstantsClient, error::Error, @@ -17,9 +15,10 @@ use crate::{ tx::TxClient, Config, Metadata, }; -use derivative::Derivative; +use derive_where::derive_where; use futures::future; use std::sync::{Arc, RwLock}; +use subxt_core::client::{ClientState, RuntimeVersion}; /// A trait representing a client that can perform /// online actions. @@ -30,15 +29,13 @@ pub trait OnlineClientT: OfflineClientT { /// A client that can be used to perform API calls (that is, either those /// requiring an [`OfflineClientT`] or those requiring an [`OnlineClientT`]). -#[derive(Derivative)] -#[derivative(Clone(bound = ""))] +#[derive_where(Clone)] pub struct OnlineClient { inner: Arc>>, backend: Arc>, } -#[derive(Derivative)] -#[derivative(Debug(bound = ""))] +#[derive_where(Debug)] struct Inner { genesis_hash: T::Hash, runtime_version: RuntimeVersion, @@ -231,7 +228,7 @@ impl OnlineClient { /// let mut update_stream = updater.runtime_updates().await.unwrap(); /// /// while let Some(Ok(update)) = update_stream.next().await { - /// let version = update.runtime_version().spec_version; + /// let version = update.runtime_version().spec_version(); /// /// match updater.apply_update(update) { /// Ok(()) => { @@ -286,7 +283,17 @@ impl OnlineClient { /// Return the runtime version. pub fn runtime_version(&self) -> RuntimeVersion { let inner = self.inner.read().expect("shouldn't be poisoned"); - inner.runtime_version.clone() + inner.runtime_version + } + + /// Return the [subxt_core::client::ClientState] (metadata, runtime version and genesis hash). + pub fn client_state(&self) -> ClientState { + let inner = self.inner.read().expect("shouldn't be poisoned"); + ClientState::new( + inner.genesis_hash, + inner.runtime_version, + inner.metadata.clone(), + ) } /// Change the [`RuntimeVersion`] used in this client. @@ -310,7 +317,7 @@ impl OnlineClient { let inner = self.inner.read().expect("shouldn't be poisoned"); OfflineClient::new( inner.genesis_hash, - inner.runtime_version.clone(), + inner.runtime_version, inner.metadata.clone(), ) } @@ -364,6 +371,10 @@ impl OfflineClientT for OnlineClient { fn runtime_version(&self) -> RuntimeVersion { self.runtime_version() } + + fn client_state(&self) -> ClientState { + self.client_state() + } } impl OnlineClientT for OnlineClient { @@ -525,7 +536,7 @@ async fn wait_runtime_upgrade_in_finalized_block( let scale_val = match chunk.to_value() { Ok(v) => v, - Err(e) => return Some(Err(e)), + Err(e) => return Some(Err(e.into())), }; let Some(Ok(spec_version)) = scale_val @@ -540,7 +551,7 @@ async fn wait_runtime_upgrade_in_finalized_block( // We are waiting for the chain to have the same spec version // as sent out via the runtime subscription. - if spec_version == runtime_version.spec_version { + if spec_version == runtime_version.spec_version() { break block_ref; } }; diff --git a/subxt/src/constants/constants_client.rs b/subxt/src/constants/constants_client.rs index de688bba6b..7bdda7c9db 100644 --- a/subxt/src/constants/constants_client.rs +++ b/subxt/src/constants/constants_client.rs @@ -3,17 +3,11 @@ // see LICENSE for license details. use super::ConstantAddress; -use crate::{ - client::OfflineClientT, - error::{Error, MetadataError}, - metadata::DecodeWithMetadata, - Config, -}; -use derivative::Derivative; +use crate::{client::OfflineClientT, error::Error, Config}; +use derive_where::derive_where; /// A client for accessing constants. -#[derive(Derivative)] -#[derivative(Clone(bound = "Client: Clone"))] +#[derive_where(Clone; Client)] pub struct ConstantsClient { client: Client, _marker: std::marker::PhantomData, @@ -35,20 +29,8 @@ impl> ConstantsClient { /// Return an error if the address was not valid or something went wrong trying to validate it (ie /// the pallet or constant in question do not exist at all). pub fn validate(&self, address: &Address) -> Result<(), Error> { - if let Some(actual_hash) = address.validation_hash() { - let expected_hash = self - .client - .metadata() - .pallet_by_name_err(address.pallet_name())? - .constant_hash(address.constant_name()) - .ok_or_else(|| { - MetadataError::ConstantNameNotFound(address.constant_name().to_owned()) - })?; - if actual_hash != expected_hash { - return Err(MetadataError::IncompatibleCodegen.into()); - } - } - Ok(()) + let metadata = self.client.metadata(); + subxt_core::constants::validate_constant(&metadata, address).map_err(Error::from) } /// Access the constant at the address given, returning the type defined by this address. @@ -59,22 +41,6 @@ impl> ConstantsClient { address: &Address, ) -> Result { let metadata = self.client.metadata(); - - // 1. Validate constant shape if hash given: - self.validate(address)?; - - // 2. Attempt to decode the constant into the type given: - let constant = metadata - .pallet_by_name_err(address.pallet_name())? - .constant_by_name(address.constant_name()) - .ok_or_else(|| { - MetadataError::ConstantNameNotFound(address.constant_name().to_owned()) - })?; - let value = ::decode_with_metadata( - &mut constant.value(), - constant.ty(), - &metadata, - )?; - Ok(value) + subxt_core::constants::get_constant(&metadata, address).map_err(Error::from) } } diff --git a/subxt/src/constants/mod.rs b/subxt/src/constants/mod.rs index 9a9ccade84..a5321e7cb9 100644 --- a/subxt/src/constants/mod.rs +++ b/subxt/src/constants/mod.rs @@ -4,8 +4,7 @@ //! Types associated with accessing constants. -mod constant_address; mod constants_client; -pub use constant_address::{dynamic, Address, ConstantAddress, DynamicAddress}; pub use constants_client::ConstantsClient; +pub use subxt_core::constants::{dynamic, Address, ConstantAddress, DynamicAddress}; diff --git a/subxt/src/custom_values/custom_values_client.rs b/subxt/src/custom_values/custom_values_client.rs index 3b8c1f54c2..4b85a64e5f 100644 --- a/subxt/src/custom_values/custom_values_client.rs +++ b/subxt/src/custom_values/custom_values_client.rs @@ -1,13 +1,14 @@ use crate::client::OfflineClientT; -use crate::custom_values::custom_value_address::{CustomValueAddress, Yes}; -use crate::error::MetadataError; -use crate::metadata::DecodeWithMetadata; use crate::{Config, Error}; -use derivative::Derivative; +use derive_where::derive_where; + +use subxt_core::custom_values::{ + get_custom_value, get_custom_value_bytes, validate_custom_value, CustomValueAddress, +}; +use subxt_core::utils::Yes; /// A client for accessing custom values stored in the metadata. -#[derive(Derivative)] -#[derivative(Clone(bound = "Client: Clone"))] +#[derive_where(Clone; Client)] pub struct CustomValuesClient { client: Client, _marker: std::marker::PhantomData, @@ -30,22 +31,7 @@ impl> CustomValuesClient { &self, address: &Address, ) -> Result { - // 1. Validate custom value shape if hash given: - self.validate(address)?; - - // 2. Attempt to decode custom value: - let metadata = self.client.metadata(); - let custom = metadata.custom(); - let custom_value = custom - .get(address.name()) - .ok_or_else(|| MetadataError::CustomValueNameNotFound(address.name().to_string()))?; - - let value = ::decode_with_metadata( - &mut custom_value.bytes(), - custom_value.type_id(), - &metadata, - )?; - Ok(value) + get_custom_value(&self.client.metadata(), address).map_err(Into::into) } /// Access the bytes of a custom value by the address it is registered under. @@ -53,17 +39,7 @@ impl> CustomValuesClient { &self, address: &Address, ) -> Result, Error> { - // 1. Validate custom value shape if hash given: - self.validate(address)?; - - // 2. Return the underlying bytes: - let metadata = self.client.metadata(); - let custom = metadata.custom(); - let custom_value = custom - .get(address.name()) - .ok_or_else(|| MetadataError::CustomValueNameNotFound(address.name().to_string()))?; - - Ok(custom_value.bytes().to_vec()) + get_custom_value_bytes(&self.client.metadata(), address).map_err(Into::into) } /// Run the validation logic against some custom value address you'd like to access. Returns `Ok(())` @@ -73,27 +49,12 @@ impl> CustomValuesClient { &self, address: &Address, ) -> Result<(), Error> { - let metadata = self.client.metadata(); - if let Some(actual_hash) = address.validation_hash() { - let custom = metadata.custom(); - let custom_value = custom - .get(address.name()) - .ok_or_else(|| MetadataError::CustomValueNameNotFound(address.name().into()))?; - let expected_hash = custom_value.hash(); - if actual_hash != expected_hash { - return Err(MetadataError::IncompatibleCodegen.into()); - } - } - if metadata.custom().get(address.name()).is_none() { - return Err(MetadataError::IncompatibleCodegen.into()); - } - Ok(()) + validate_custom_value(&self.client.metadata(), address).map_err(Into::into) } } #[cfg(test)] mod tests { - use crate::backend::RuntimeVersion; use crate::custom_values::CustomValuesClient; use crate::{Metadata, OfflineClient, SubstrateConfig}; use codec::Encode; @@ -101,6 +62,7 @@ mod tests { use scale_info::form::PortableForm; use scale_info::TypeInfo; use std::collections::BTreeMap; + use subxt_core::client::RuntimeVersion; #[derive(Debug, Clone, PartialEq, Eq, Encode, TypeInfo, DecodeAsType)] pub struct Person { @@ -158,10 +120,7 @@ mod tests { fn test_decoding() { let client = OfflineClient::::new( Default::default(), - RuntimeVersion { - spec_version: 0, - transaction_version: 0, - }, + RuntimeVersion::new(0, 0), mock_metadata(), ); let custom_value_client = CustomValuesClient::new(client); diff --git a/subxt/src/custom_values/mod.rs b/subxt/src/custom_values/mod.rs index 5b7b93e20c..cd9ace6a06 100644 --- a/subxt/src/custom_values/mod.rs +++ b/subxt/src/custom_values/mod.rs @@ -4,8 +4,7 @@ //! Types associated with accessing custom types -mod custom_value_address; mod custom_values_client; -pub use custom_value_address::{CustomValueAddress, StaticAddress, Yes}; pub use custom_values_client::CustomValuesClient; +pub use subxt_core::custom_values::{CustomValueAddress, StaticAddress}; diff --git a/subxt/src/error/mod.rs b/subxt/src/error/mod.rs index c2f5691b63..ecfb3c7207 100644 --- a/subxt/src/error/mod.rs +++ b/subxt/src/error/mod.rs @@ -14,13 +14,12 @@ crate::macros::cfg_unstable_light_client! { pub use dispatch_error::{ ArithmeticError, DispatchError, ModuleError, TokenError, TransactionalError, }; -use subxt_metadata::StorageHasher; // Re-expose the errors we use from other crates here: -pub use crate::config::ExtrinsicParamsError; pub use crate::metadata::Metadata; pub use scale_decode::Error as DecodeError; pub use scale_encode::Error as EncodeError; +pub use subxt_core::error::{ExtrinsicParamsError, MetadataError, StorageAddressError}; pub use subxt_metadata::TryFromError as MetadataTryFromError; /// The underlying error enum, generic over the type held by the `Runtime` @@ -81,6 +80,19 @@ pub enum Error { Other(String), } +impl From for Error { + fn from(value: subxt_core::Error) -> Self { + match value { + subxt_core::Error::Codec(e) => Error::Codec(e), + subxt_core::Error::Metadata(e) => Error::Metadata(e), + subxt_core::Error::StorageAddress(e) => Error::StorageAddress(e), + subxt_core::Error::Decode(e) => Error::Decode(e), + subxt_core::Error::Encode(e) => Error::Encode(e), + subxt_core::Error::ExtrinsicParams(e) => Error::ExtrinsicParams(e), + } + } +} + impl<'a> From<&'a str> for Error { fn from(error: &'a str) -> Self { Error::Other(error.into()) @@ -189,91 +201,3 @@ pub enum TransactionError { #[error("The transaction was dropped: {0}")] Dropped(String), } - -/// Something went wrong trying to encode a storage address. -#[derive(Clone, Debug, thiserror::Error)] -#[non_exhaustive] -pub enum StorageAddressError { - /// Storage lookup does not have the expected number of keys. - #[error("Storage lookup requires {expected} keys but more keys have been provided.")] - TooManyKeys { - /// The number of keys provided in the storage address. - expected: usize, - }, - /// This storage entry in the metadata does not have the correct number of hashers to fields. - #[error("Storage entry in metadata does not have the correct number of hashers to fields")] - WrongNumberOfHashers { - /// The number of hashers in the metadata for this storage entry. - hashers: usize, - /// The number of fields in the metadata for this storage entry. - fields: usize, - }, - /// We weren't given enough bytes to decode the storage address/key. - #[error("Not enough remaining bytes to decode the storage address/key")] - NotEnoughBytes, - /// We have leftover bytes after decoding the storage address. - #[error("We have leftover bytes after decoding the storage address")] - TooManyBytes, - /// The bytes of a storage address are not the expected address for decoding the storage keys of the address. - #[error("Storage address bytes are not the expected format. Addresses need to be at least 16 bytes (pallet ++ entry) and follow a structure given by the hashers defined in the metadata")] - UnexpectedAddressBytes, - /// An invalid hasher was used to reconstruct a value from a chunk of bytes that is part of a storage address. Hashers where the hash does not contain the original value are invalid for this purpose. - #[error("An invalid hasher was used to reconstruct a value with type ID {ty_id} from a hash formed by a {hasher:?} hasher. This is only possible for concat-style hashers or the identity hasher")] - HasherCannotReconstructKey { - /// Type id of the key's type. - ty_id: u32, - /// The invalid hasher that caused this error. - hasher: StorageHasher, - }, -} - -/// Something went wrong trying to access details in the metadata. -#[derive(Clone, Debug, PartialEq, thiserror::Error)] -#[non_exhaustive] -pub enum MetadataError { - /// The DispatchError type isn't available in the metadata - #[error("The DispatchError type isn't available")] - DispatchErrorNotFound, - /// Type not found in metadata. - #[error("Type with ID {0} not found")] - TypeNotFound(u32), - /// Pallet not found (index). - #[error("Pallet with index {0} not found")] - PalletIndexNotFound(u8), - /// Pallet not found (name). - #[error("Pallet with name {0} not found")] - PalletNameNotFound(String), - /// Variant not found. - #[error("Variant with index {0} not found")] - VariantIndexNotFound(u8), - /// Constant not found. - #[error("Constant with name {0} not found")] - ConstantNameNotFound(String), - /// Call not found. - #[error("Call with name {0} not found")] - CallNameNotFound(String), - /// Runtime trait not found. - #[error("Runtime trait with name {0} not found")] - RuntimeTraitNotFound(String), - /// Runtime method not found. - #[error("Runtime method with name {0} not found")] - RuntimeMethodNotFound(String), - /// Call type not found in metadata. - #[error("Call type not found in pallet with index {0}")] - CallTypeNotFoundInPallet(u8), - /// Event type not found in metadata. - #[error("Event type not found in pallet with index {0}")] - EventTypeNotFoundInPallet(u8), - /// Storage details not found in metadata. - #[error("Storage details not found in pallet with name {0}")] - StorageNotFoundInPallet(String), - /// Storage entry not found. - #[error("Storage entry {0} not found")] - StorageEntryNotFound(String), - /// The generated interface used is not compatible with the node. - #[error("The generated code is not compatible with the node")] - IncompatibleCodegen, - /// Custom value not found. - #[error("Custom value with name {0} not found")] - CustomValueNameNotFound(String), -} diff --git a/subxt/src/events/events_client.rs b/subxt/src/events/events_client.rs index bb389b828c..a23a8c07b7 100644 --- a/subxt/src/events/events_client.rs +++ b/subxt/src/events/events_client.rs @@ -4,12 +4,11 @@ use crate::backend::{Backend, BackendExt, BlockRef}; use crate::{client::OnlineClientT, error::Error, events::Events, Config}; -use derivative::Derivative; +use derive_where::derive_where; use std::future::Future; /// A client for working with events. -#[derive(Derivative)] -#[derivative(Clone(bound = "Client: Clone"))] +#[derive_where(Clone; Client)] pub struct EventsClient { client: Client, _marker: std::marker::PhantomData, @@ -65,11 +64,7 @@ where }; let event_bytes = get_event_bytes(client.backend(), block_ref.hash()).await?; - Ok(Events::new( - client.metadata(), - block_ref.hash(), - event_bytes, - )) + Ok(Events::decode_from(client.metadata(), event_bytes)) } } } diff --git a/subxt/src/events/mod.rs b/subxt/src/events/mod.rs index 85ced23be9..4fbeaef06e 100644 --- a/subxt/src/events/mod.rs +++ b/subxt/src/events/mod.rs @@ -5,40 +5,24 @@ //! This module exposes the types and such necessary for working with events. //! The two main entry points into events are [`crate::OnlineClient::events()`] //! and calls like [crate::tx::TxProgress::wait_for_finalized_success()]. +use crate::client::OnlineClientT; +use crate::Error; +use subxt_core::{Config, Metadata}; mod events_client; -mod events_type; - -use codec::{Decode, Encode}; pub use events_client::EventsClient; -pub use events_type::{EventDetails, Events}; -use scale_decode::DecodeAsFields; +pub use subxt_core::events::{EventDetails, Events, Phase, StaticEvent}; -/// Trait to uniquely identify the events's identity from the runtime metadata. -/// -/// Generated API structures that represent an event implement this trait. -/// -/// The trait is utilized to decode emitted events from a block, via obtaining the -/// form of the `Event` from the metadata. -pub trait StaticEvent: DecodeAsFields { - /// Pallet name. - const PALLET: &'static str; - /// Event name. - const EVENT: &'static str; - - /// Returns true if the given pallet and event names match this event. - fn is_event(pallet: &str, event: &str) -> bool { - Self::PALLET == pallet && Self::EVENT == event - } -} - -/// A phase of a block's execution. -#[derive(Copy, Clone, Debug, Eq, PartialEq, Decode, Encode)] -pub enum Phase { - /// Applying an extrinsic. - ApplyExtrinsic(u32), - /// Finalizing the block. - Finalization, - /// Initializing the block. - Initialization, +/// Creates a new [`Events`] instance by fetching the corresponding bytes at `block_hash` from the client. +pub async fn new_events_from_client( + metadata: Metadata, + block_hash: T::Hash, + client: C, +) -> Result, Error> +where + T: Config, + C: OnlineClientT, +{ + let event_bytes = events_client::get_event_bytes(client.backend(), block_hash).await?; + Ok(Events::::decode_from(metadata, event_bytes)) } diff --git a/subxt/src/lib.rs b/subxt/src/lib.rs index f8eb443eb3..250f470e8e 100644 --- a/subxt/src/lib.rs +++ b/subxt/src/lib.rs @@ -45,18 +45,44 @@ pub use getrandom as _; pub mod backend; pub mod blocks; pub mod client; -pub mod config; pub mod constants; pub mod custom_values; -pub mod dynamic; pub mod error; pub mod events; -pub mod metadata; pub mod runtime_api; pub mod storage; pub mod tx; pub mod utils; +/// This module provides a [`Config`] type, which is used to define various +/// types that are important in order to speak to a particular chain. +/// [`SubstrateConfig`] provides a default set of these types suitable for the +/// default Substrate node implementation, and [`PolkadotConfig`] for a +/// Polkadot node. +pub mod config { + pub use subxt_core::config::{ + polkadot, signed_extensions, substrate, BlockHash, Config, DefaultExtrinsicParams, + DefaultExtrinsicParamsBuilder, ExtrinsicParams, ExtrinsicParamsEncoder, Hasher, Header, + PolkadotConfig, PolkadotExtrinsicParams, RefineParams, RefineParamsData, SignedExtension, + SubstrateConfig, SubstrateExtrinsicParams, + }; + pub use subxt_core::error::ExtrinsicParamsError; +} + +/// Types representing the metadata obtained from a node. +pub mod metadata { + pub use subxt_core::metadata::{DecodeWithMetadata, EncodeWithMetadata, Metadata, MetadataExt}; + // Expose metadata types under a sub module in case somebody needs to reference them: + pub use subxt_metadata as types; +} + +/// Submit dynamic transactions. +pub mod dynamic { + pub use subxt_core::dynamic::{ + constant, runtime_api_call, storage, tx, At, DecodedValue, DecodedValueThunk, Value, + }; +} + // Internal helper macros #[macro_use] mod macros; @@ -84,10 +110,10 @@ pub mod ext { pub use scale_decode; pub use scale_encode; pub use scale_value; + pub use subxt_core; cfg_substrate_compat! { - pub use sp_runtime; - pub use sp_core; + pub use subxt_core::ext::{sp_runtime, sp_core}; } } @@ -127,15 +153,15 @@ pub mod ext { /// /// ## `crate = "..."` /// -/// Use this attribute to specify a custom path to the `subxt` crate: +/// Use this attribute to specify a custom path to the `subxt_core` crate: /// /// ```rust -/// # pub extern crate subxt; -/// # pub mod path { pub mod to { pub use subxt; } } +/// # pub extern crate subxt_core; +/// # pub mod path { pub mod to { pub use subxt_core; } } /// # fn main() {} /// #[subxt::subxt( /// runtime_metadata_path = "../artifacts/polkadot_metadata_full.scale", -/// crate = "crate::path::to::subxt" +/// crate = "crate::path::to::subxt_core" /// )] /// mod polkadot {} /// ``` diff --git a/subxt/src/macros.rs b/subxt/src/macros.rs index 47362f18ca..8e5a8283df 100644 --- a/subxt/src/macros.rs +++ b/subxt/src/macros.rs @@ -56,7 +56,7 @@ macro_rules! cfg_jsonrpsee_web { macro_rules! cfg_reconnecting_rpc_client { ($($item:item)*) => { $( - #[cfg(all(feature = "unstable-reconnecting-rpc-client"))] + #[cfg(feature = "unstable-reconnecting-rpc-client")] #[cfg_attr(docsrs, doc(cfg(feature = "unstable-reconnecting-rpc-client")))] $item )* diff --git a/subxt/src/metadata/metadata_type.rs b/subxt/src/metadata/metadata_type.rs deleted file mode 100644 index 29ae567afa..0000000000 --- a/subxt/src/metadata/metadata_type.rs +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2019-2023 Parity Technologies (UK) Ltd. -// This file is dual-licensed as Apache-2.0 or GPL-3.0. -// see LICENSE for license details. - -use crate::error::MetadataError; - -use std::sync::Arc; - -/// A cheaply clone-able representation of the runtime metadata received from a node. -#[derive(Clone, Debug)] -pub struct Metadata { - inner: Arc, -} - -impl std::ops::Deref for Metadata { - type Target = subxt_metadata::Metadata; - fn deref(&self) -> &Self::Target { - &self.inner - } -} - -impl Metadata { - pub(crate) fn new(md: subxt_metadata::Metadata) -> Self { - Metadata { - inner: Arc::new(md), - } - } - - /// Identical to `metadata.pallet_by_name()`, but returns an error if the pallet is not found. - pub fn pallet_by_name_err( - &self, - name: &str, - ) -> Result { - self.pallet_by_name(name) - .ok_or_else(|| MetadataError::PalletNameNotFound(name.to_owned())) - } - - /// Identical to `metadata.pallet_by_index()`, but returns an error if the pallet is not found. - pub fn pallet_by_index_err( - &self, - index: u8, - ) -> Result { - self.pallet_by_index(index) - .ok_or(MetadataError::PalletIndexNotFound(index)) - } - - /// Identical to `metadata.runtime_api_trait_by_name()`, but returns an error if the trait is not found. - pub fn runtime_api_trait_by_name_err( - &self, - name: &str, - ) -> Result { - self.runtime_api_trait_by_name(name) - .ok_or_else(|| MetadataError::RuntimeTraitNotFound(name.to_owned())) - } -} - -impl From for Metadata { - fn from(md: subxt_metadata::Metadata) -> Self { - Metadata::new(md) - } -} - -impl TryFrom for Metadata { - type Error = subxt_metadata::TryFromError; - fn try_from(value: frame_metadata::RuntimeMetadataPrefixed) -> Result { - subxt_metadata::Metadata::try_from(value).map(Metadata::from) - } -} - -impl codec::Decode for Metadata { - fn decode(input: &mut I) -> Result { - subxt_metadata::Metadata::decode(input).map(Metadata::new) - } -} diff --git a/subxt/src/runtime_api/mod.rs b/subxt/src/runtime_api/mod.rs index 49a17a4dd7..9eecb12978 100644 --- a/subxt/src/runtime_api/mod.rs +++ b/subxt/src/runtime_api/mod.rs @@ -5,9 +5,8 @@ //! Types associated with executing runtime API calls. mod runtime_client; -mod runtime_payload; mod runtime_types; pub use runtime_client::RuntimeApiClient; -pub use runtime_payload::{dynamic, DynamicRuntimeApiPayload, Payload, RuntimeApiPayload}; pub use runtime_types::RuntimeApi; +pub use subxt_core::runtime_api::{dynamic, DynamicRuntimeApiPayload, Payload, RuntimeApiPayload}; diff --git a/subxt/src/runtime_api/runtime_client.rs b/subxt/src/runtime_api/runtime_client.rs index 5770285b83..e2dfc79c54 100644 --- a/subxt/src/runtime_api/runtime_client.rs +++ b/subxt/src/runtime_api/runtime_client.rs @@ -5,12 +5,11 @@ use super::runtime_types::RuntimeApi; use crate::{backend::BlockRef, client::OnlineClientT, error::Error, Config}; -use derivative::Derivative; +use derive_where::derive_where; use std::{future::Future, marker::PhantomData}; /// Execute runtime API calls. -#[derive(Derivative)] -#[derivative(Clone(bound = "Client: Clone"))] +#[derive_where(Clone; Client)] pub struct RuntimeApiClient { client: Client, _marker: PhantomData, diff --git a/subxt/src/runtime_api/runtime_types.rs b/subxt/src/runtime_api/runtime_types.rs index 3ea8c93947..6f0eb9e526 100644 --- a/subxt/src/runtime_api/runtime_types.rs +++ b/subxt/src/runtime_api/runtime_types.rs @@ -10,14 +10,13 @@ use crate::{ Config, }; use codec::Decode; -use derivative::Derivative; +use derive_where::derive_where; use std::{future::Future, marker::PhantomData}; use super::RuntimeApiPayload; /// Execute runtime API calls. -#[derive(Derivative)] -#[derivative(Clone(bound = "Client: Clone"))] +#[derive_where(Clone; Client)] pub struct RuntimeApi { client: Client, block_ref: BlockRef, diff --git a/subxt/src/storage/mod.rs b/subxt/src/storage/mod.rs index 98f8365274..a9837330f6 100644 --- a/subxt/src/storage/mod.rs +++ b/subxt/src/storage/mod.rs @@ -4,11 +4,8 @@ //! Types associated with accessing and working with storage items. -mod storage_address; mod storage_client; -mod storage_key; mod storage_type; -mod utils; pub use storage_client::StorageClient; @@ -17,12 +14,13 @@ pub use storage_type::{Storage, StorageKeyValuePair}; /// Types representing an address which describes where a storage /// entry lives and how to properly decode it. pub mod address { - pub use super::storage_address::{dynamic, Address, DynamicAddress, StorageAddress, Yes}; - pub use super::storage_key::{StaticStorageKey, StorageKey}; + pub use subxt_core::storage::address::{ + dynamic, Address, DynamicAddress, StaticStorageKey, StorageAddress, StorageKey, + }; } -pub use storage_key::StorageKey; +pub use subxt_core::storage::StorageKey; // For consistency with other modules, also expose // the basic address stuff at the root of the module. -pub use storage_address::{dynamic, Address, DynamicAddress, StorageAddress}; +pub use address::{dynamic, Address, DynamicAddress, StorageAddress}; diff --git a/subxt/src/storage/storage_client.rs b/subxt/src/storage/storage_client.rs index 55ab339aea..942967ee95 100644 --- a/subxt/src/storage/storage_client.rs +++ b/subxt/src/storage/storage_client.rs @@ -4,7 +4,7 @@ use super::{ storage_type::{validate_storage_address, Storage}, - utils, StorageAddress, + StorageAddress, }; use crate::{ backend::BlockRef, @@ -12,12 +12,11 @@ use crate::{ error::Error, Config, }; -use derivative::Derivative; +use derive_where::derive_where; use std::{future::Future, marker::PhantomData}; /// Query the runtime storage. -#[derive(Derivative)] -#[derivative(Clone(bound = "Client: Clone"))] +#[derive_where(Clone; Client)] pub struct StorageClient { client: Client, _marker: PhantomData, @@ -51,7 +50,7 @@ where /// Convert some storage address into the raw bytes that would be submitted to the node in order /// to retrieve the entries at the root of the associated address. pub fn address_root_bytes(&self, address: &Address) -> Vec { - utils::storage_address_root_bytes(address) + subxt_core::storage::utils::storage_address_root_bytes(address) } /// Convert some storage address into the raw bytes that would be submitted to the node in order @@ -63,7 +62,8 @@ where &self, address: &Address, ) -> Result, Error> { - utils::storage_address_bytes(address, &self.client.metadata()) + subxt_core::storage::utils::storage_address_bytes(address, &self.client.metadata()) + .map_err(Into::into) } } diff --git a/subxt/src/storage/storage_type.rs b/subxt/src/storage/storage_type.rs index d072c1e40b..8e7dec790e 100644 --- a/subxt/src/storage/storage_type.rs +++ b/subxt/src/storage/storage_type.rs @@ -2,9 +2,8 @@ // This file is dual-licensed as Apache-2.0 or GPL-3.0. // see LICENSE for license details. -use super::storage_address::{StorageAddress, Yes}; -use super::storage_key::StorageHashers; -use super::StorageKey; +use subxt_core::storage::address::{StorageAddress, StorageHashers, StorageKey}; +use subxt_core::utils::Yes; use crate::{ backend::{BackendExt, BlockRef}, @@ -14,7 +13,7 @@ use crate::{ Config, }; use codec::Decode; -use derivative::Derivative; +use derive_where::derive_where; use futures::StreamExt; use std::{future::Future, marker::PhantomData}; @@ -25,8 +24,7 @@ use subxt_metadata::{PalletMetadata, StorageEntryMetadata, StorageEntryType}; pub use crate::backend::StreamOfResults; /// Query the runtime storage. -#[derive(Derivative)] -#[derivative(Clone(bound = "Client: Clone"))] +#[derive_where(Clone; Client)] pub struct Storage { client: Client, block_ref: BlockRef, @@ -136,7 +134,8 @@ where validate_storage_address(address, pallet)?; // Look up the return type ID to enable DecodeWithMetadata: - let lookup_bytes = super::utils::storage_address_bytes(address, &metadata)?; + let lookup_bytes = + subxt_core::storage::utils::storage_address_bytes(address, &metadata)?; if let Some(data) = client.fetch_raw(lookup_bytes).await? { let val = decode_storage_with_metadata::(&mut &*data, &metadata, entry)?; @@ -237,7 +236,8 @@ where let hashers = StorageHashers::new(entry, metadata.types())?; // The address bytes of this entry: - let address_bytes = super::utils::storage_address_bytes(&address, &metadata)?; + let address_bytes = + subxt_core::storage::utils::storage_address_bytes(&address, &metadata)?; let s = client .backend() .storage_fetch_descendant_values(address_bytes, block_ref.hash()) diff --git a/subxt/src/tx/mod.rs b/subxt/src/tx/mod.rs index c48cf1382b..e0288fbef4 100644 --- a/subxt/src/tx/mod.rs +++ b/subxt/src/tx/mod.rs @@ -11,15 +11,16 @@ use crate::macros::cfg_substrate_compat; -mod signer; mod tx_client; -mod tx_payload; mod tx_progress; +pub use subxt_core::tx as tx_payload; +pub use subxt_core::tx::signer; + // The PairSigner impl currently relies on Substrate bits and pieces, so make it an optional // feature if we want to avoid needing sp_core and sp_runtime. cfg_substrate_compat! { - pub use self::signer::PairSigner; + pub use signer::PairSigner; } pub use self::{ diff --git a/subxt/src/tx/tx_client.rs b/subxt/src/tx/tx_client.rs index c4a5924c11..31969d58ea 100644 --- a/subxt/src/tx/tx_client.rs +++ b/subxt/src/tx/tx_client.rs @@ -16,12 +16,11 @@ use crate::{ utils::{Encoded, PhantomDataSendSync}, }; use codec::{Compact, Decode, Encode}; -use derivative::Derivative; +use derive_where::derive_where; use sp_crypto_hashing::blake2_256; /// A client for working with transactions. -#[derive(Derivative)] -#[derivative(Clone(bound = "Client: Clone"))] +#[derive_where(Clone; Client)] pub struct TxClient { client: Client, _marker: PhantomDataSendSync, @@ -126,7 +125,7 @@ impl> TxClient { // 3. Construct our custom additional/extra params. let additional_and_extra_params = - >::new(self.client.clone(), params)?; + >::new(&self.client.client_state(), params)?; // Return these details, ready to construct a signed extrinsic from. Ok(PartialExtrinsic { diff --git a/subxt/src/tx/tx_progress.rs b/subxt/src/tx/tx_progress.rs index b949de2be4..3c5d9b7de5 100644 --- a/subxt/src/tx/tx_progress.rs +++ b/subxt/src/tx/tx_progress.rs @@ -6,7 +6,6 @@ use std::task::Poll; -use crate::utils::strip_compact_prefix; use crate::{ backend::{BlockRef, StreamOfResults, TransactionStatus as BackendTxStatus}, client::OnlineClientT, @@ -14,8 +13,9 @@ use crate::{ events::EventsClient, Config, }; -use derivative::Derivative; +use derive_where::derive_where; use futures::{Stream, StreamExt}; +use subxt_core::utils::strip_compact_prefix; /// This struct represents a subscription to the progress of some transaction. pub struct TxProgress { @@ -167,8 +167,7 @@ impl Stream for TxProgress { } /// Possible transaction statuses returned from our [`TxProgress::next()`] call. -#[derive(Derivative)] -#[derivative(Debug(bound = "C: std::fmt::Debug"))] +#[derive_where(Debug; C)] pub enum TxStatus { /// Transaction is part of the future queue. Validated, @@ -221,8 +220,7 @@ impl TxStatus { } /// This struct represents a transaction that has made it into a block. -#[derive(Derivative)] -#[derivative(Debug(bound = "C: std::fmt::Debug"))] +#[derive_where(Debug; C)] pub struct TxInBlock { block_ref: BlockRef, ext_hash: T::Hash, @@ -321,6 +319,8 @@ impl> TxInBlock { #[cfg(test)] mod test { + use subxt_core::client::RuntimeVersion; + use crate::{ backend::{StreamOfResults, TransactionStatus}, client::{OfflineClientT, OnlineClientT}, @@ -345,7 +345,11 @@ mod test { unimplemented!("just a mock impl to satisfy trait bounds") } - fn runtime_version(&self) -> crate::backend::RuntimeVersion { + fn runtime_version(&self) -> RuntimeVersion { + unimplemented!("just a mock impl to satisfy trait bounds") + } + + fn client_state(&self) -> subxt_core::client::ClientState { unimplemented!("just a mock impl to satisfy trait bounds") } } diff --git a/subxt/src/utils/mod.rs b/subxt/src/utils/mod.rs index 7826ffcfad..0bf2c35689 100644 --- a/subxt/src/utils/mod.rs +++ b/subxt/src/utils/mod.rs @@ -4,58 +4,21 @@ //! Miscellaneous utility helpers. -mod account_id; -pub mod bits; -mod era; -mod multi_address; -mod multi_signature; -mod static_type; -mod unchecked_extrinsic; -mod wrapper_opaque; - -use crate::error::RpcError; use crate::macros::cfg_jsonrpsee; -use crate::Error; -use codec::{Compact, Decode, Encode}; -use derivative::Derivative; +use crate::{error::RpcError, Error}; use url::Url; -pub use account_id::AccountId32; -pub use era::Era; -pub use multi_address::MultiAddress; -pub use multi_signature::MultiSignature; -pub use static_type::Static; -pub use unchecked_extrinsic::UncheckedExtrinsic; -pub use wrapper_opaque::WrapperKeepOpaque; +pub use subxt_core::utils::{ + bits, strip_compact_prefix, to_hex, AccountId32, Encoded, Era, KeyedVec, MultiAddress, + MultiSignature, PhantomDataSendSync, Static, UncheckedExtrinsic, WrapperKeepOpaque, Yes, H160, + H256, H512, +}; cfg_jsonrpsee! { mod fetch_chain_spec; pub use fetch_chain_spec::{fetch_chainspec_from_rpc_node, FetchChainspecError}; } -// Used in codegen -#[doc(hidden)] -pub use primitive_types::{H160, H256, H512}; - -/// Wraps an already encoded byte vector, prevents being encoded as a raw byte vector as part of -/// the transaction payload -#[derive(Clone, Debug, Eq, PartialEq)] -pub struct Encoded(pub Vec); - -impl codec::Encode for Encoded { - fn encode(&self) -> Vec { - self.0.to_owned() - } -} - -/// Decodes a compact encoded value from the beginning of the provided bytes, -/// returning the value and any remaining bytes. -pub(crate) fn strip_compact_prefix(bytes: &[u8]) -> Result<(u64, &[u8]), codec::Error> { - let cursor = &mut &*bytes; - let val = >::decode(cursor)?; - Ok((val.0, *cursor)) -} - /// A URL is considered secure if it uses a secure scheme ("https" or "wss") or is referring to localhost. /// /// Returns an error if the the string could not be parsed into a URL. @@ -80,33 +43,3 @@ pub fn validate_url_is_secure(url: &str) -> Result<(), Error> { Ok(()) } } - -/// A version of [`std::marker::PhantomData`] that is also Send and Sync (which is fine -/// because regardless of the generic param, it is always possible to Send + Sync this -/// 0 size type). -#[derive(Derivative, Encode, Decode, scale_info::TypeInfo)] -#[derivative( - Clone(bound = ""), - PartialEq(bound = ""), - Debug(bound = ""), - Eq(bound = ""), - Default(bound = ""), - Hash(bound = "") -)] -#[scale_info(skip_type_params(T))] -#[doc(hidden)] -pub struct PhantomDataSendSync(core::marker::PhantomData); - -impl PhantomDataSendSync { - pub(crate) fn new() -> Self { - Self(core::marker::PhantomData) - } -} - -unsafe impl Send for PhantomDataSendSync {} -unsafe impl Sync for PhantomDataSendSync {} - -/// This represents a key-value collection and is SCALE compatible -/// with collections like BTreeMap. This has the same type params -/// as `BTreeMap` which allows us to easily swap the two during codegen. -pub type KeyedVec = Vec<(K, V)>; diff --git a/testing/integration-tests/src/full_client/client/unstable_rpcs.rs b/testing/integration-tests/src/full_client/client/unstable_rpcs.rs index ba46681433..bcf797c263 100644 --- a/testing/integration-tests/src/full_client/client/unstable_rpcs.rs +++ b/testing/integration-tests/src/full_client/client/unstable_rpcs.rs @@ -51,8 +51,8 @@ async fn chainhead_unstable_follow() { FollowEvent::Initialized(init) => { assert_eq!(init.finalized_block_hashes, vec![finalized_block_hash]); if let Some(RuntimeEvent::Valid(RuntimeVersionEvent { spec })) = init.finalized_block_runtime { - assert_eq!(spec.spec_version, runtime_version.spec_version); - assert_eq!(spec.transaction_version, runtime_version.transaction_version); + assert_eq!(spec.spec_version, runtime_version.spec_version()); + assert_eq!(spec.transaction_version, runtime_version.transaction_version()); } else { panic!("runtime details not provided with init event, got {:?}", init.finalized_block_runtime); } diff --git a/testing/integration-tests/src/full_client/codegen/polkadot.rs b/testing/integration-tests/src/full_client/codegen/polkadot.rs index f07877742b..e25d14d698 100644 --- a/testing/integration-tests/src/full_client/codegen/polkadot.rs +++ b/testing/integration-tests/src/full_client/codegen/polkadot.rs @@ -6,7 +6,7 @@ pub mod api { mod root_mod { pub use super::*; } - pub static PALLETS: [&str; 66usize] = [ + pub static PALLETS: [&str; 64usize] = [ "System", "Babe", "Timestamp", @@ -16,15 +16,18 @@ pub mod api { "Authorship", "Offences", "Historical", + "Beefy", + "Mmr", + "MmrLeaf", "Session", "Grandpa", + "ImOnline", "AuthorityDiscovery", "Treasury", "ConvictionVoting", "Referenda", "FellowshipCollective", "FellowshipReferenda", - "Origins", "Whitelist", "Claims", "Utility", @@ -55,23 +58,18 @@ pub mod api { "ParasDisputes", "ParasSlashing", "MessageQueue", + "ParaAssignmentProvider", "OnDemandAssignmentProvider", - "CoretimeAssignmentProvider", + "ParachainsAssignmentProvider", "Registrar", "Slots", "Auctions", "Crowdloan", - "Coretime", "XcmPallet", - "Beefy", - "Mmr", - "MmrLeaf", - "IdentityMigrator", "ParasSudoWrapper", "AssignedSlots", "ValidatorManager", "StateTrieMigration", - "RootTesting", "Sudo", ]; pub static RUNTIME_APIS: [&str; 16usize] = [ @@ -115,7 +113,7 @@ pub mod api { pub mod runtime_apis { use super::root_mod; use super::runtime_types; - use subxt::ext::codec::Encode; + use subxt::ext::subxt_core::ext::codec::Encode; pub struct RuntimeApi; impl RuntimeApi { pub fn core(&self) -> core::Core { @@ -182,9 +180,11 @@ pub mod api { #[doc = " Returns the version of the runtime."] pub fn version( &self, - ) -> ::subxt::runtime_api::Payload - { - ::subxt::runtime_api::Payload::new_static( + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< + types::Version, + types::version::output::Output, + > { + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "Core", "version", types::Version {}, @@ -200,11 +200,11 @@ pub mod api { pub fn execute_block( &self, block: types::execute_block::Block, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::ExecuteBlock, types::execute_block::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "Core", "execute_block", types::ExecuteBlock { block }, @@ -215,22 +215,22 @@ pub mod api { ], ) } - #[doc = " Initialize a block with the given header and return the runtime executive mode."] + #[doc = " Initialize a block with the given header."] pub fn initialize_block( &self, header: types::initialize_block::Header, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::InitializeBlock, types::initialize_block::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "Core", "initialize_block", types::InitializeBlock { header }, [ - 132u8, 169u8, 113u8, 112u8, 80u8, 139u8, 113u8, 35u8, 41u8, 81u8, 36u8, - 35u8, 37u8, 202u8, 29u8, 207u8, 205u8, 229u8, 145u8, 7u8, 133u8, 94u8, - 25u8, 108u8, 233u8, 86u8, 234u8, 29u8, 236u8, 57u8, 56u8, 186u8, + 146u8, 138u8, 72u8, 240u8, 63u8, 96u8, 110u8, 189u8, 77u8, 92u8, 96u8, + 232u8, 41u8, 217u8, 105u8, 148u8, 83u8, 190u8, 152u8, 219u8, 19u8, + 87u8, 163u8, 1u8, 232u8, 25u8, 221u8, 74u8, 224u8, 67u8, 223u8, 34u8, ], ) } @@ -245,34 +245,42 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Version {} pub mod execute_block { use super::runtime_types; - pub type Block = runtime_types :: sp_runtime :: generic :: block :: Block < runtime_types :: sp_runtime :: generic :: header :: Header < :: core :: primitive :: u32 > , :: subxt :: utils :: UncheckedExtrinsic < :: subxt :: utils :: MultiAddress < :: subxt :: utils :: AccountId32 , () > , runtime_types :: rococo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment ,) > > ; + pub type Block = runtime_types :: sp_runtime :: generic :: block :: Block < runtime_types :: sp_runtime :: generic :: header :: Header < :: core :: primitive :: u32 > , :: subxt :: ext :: subxt_core :: utils :: UncheckedExtrinsic < :: subxt :: ext :: subxt_core :: utils :: MultiAddress < :: subxt :: ext :: subxt_core :: utils :: AccountId32 , () > , runtime_types :: rococo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment ,) > > ; pub mod output { use super::runtime_types; pub type Output = (); } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct ExecuteBlock { pub block: execute_block::Block, } @@ -282,19 +290,23 @@ pub mod api { runtime_types::sp_runtime::generic::header::Header<::core::primitive::u32>; pub mod output { use super::runtime_types; - pub type Output = runtime_types::sp_runtime::ExtrinsicInclusionMode; + pub type Output = (); } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct InitializeBlock { pub header: initialize_block::Header, } @@ -309,9 +321,11 @@ pub mod api { #[doc = " Returns the metadata of a runtime."] pub fn metadata( &self, - ) -> ::subxt::runtime_api::Payload - { - ::subxt::runtime_api::Payload::new_static( + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< + types::Metadata, + types::metadata::output::Output, + > { + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "Metadata", "metadata", types::Metadata {}, @@ -329,11 +343,11 @@ pub mod api { pub fn metadata_at_version( &self, version: types::metadata_at_version::Version, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::MetadataAtVersion, types::metadata_at_version::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "Metadata", "metadata_at_version", types::MetadataAtVersion { version }, @@ -350,11 +364,11 @@ pub mod api { #[doc = " This can be used to call `metadata_at_version`."] pub fn metadata_versions( &self, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::MetadataVersions, types::metadata_versions::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "Metadata", "metadata_versions", types::MetadataVersions {}, @@ -377,15 +391,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Metadata {} pub mod metadata_at_version { use super::runtime_types; @@ -397,15 +415,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct MetadataAtVersion { pub version: metadata_at_version::Version, } @@ -413,19 +435,24 @@ pub mod api { use super::runtime_types; pub mod output { use super::runtime_types; - pub type Output = ::std::vec::Vec<::core::primitive::u32>; + pub type Output = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u32>; } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct MetadataVersions {} } } @@ -442,11 +469,11 @@ pub mod api { pub fn apply_extrinsic( &self, extrinsic: types::apply_extrinsic::Extrinsic, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::ApplyExtrinsic, types::apply_extrinsic::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "BlockBuilder", "apply_extrinsic", types::ApplyExtrinsic { extrinsic }, @@ -460,11 +487,11 @@ pub mod api { #[doc = " Finish the current block."] pub fn finalize_block( &self, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::FinalizeBlock, types::finalize_block::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "BlockBuilder", "finalize_block", types::FinalizeBlock {}, @@ -479,11 +506,11 @@ pub mod api { pub fn inherent_extrinsics( &self, inherent: types::inherent_extrinsics::Inherent, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::InherentExtrinsics, types::inherent_extrinsics::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "BlockBuilder", "inherent_extrinsics", types::InherentExtrinsics { inherent }, @@ -500,11 +527,11 @@ pub mod api { &self, block: types::check_inherents::Block, data: types::check_inherents::Data, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::CheckInherents, types::check_inherents::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "BlockBuilder", "check_inherents", types::CheckInherents { block, data }, @@ -521,22 +548,26 @@ pub mod api { use super::runtime_types; pub mod apply_extrinsic { use super::runtime_types; - pub type Extrinsic = :: subxt :: utils :: UncheckedExtrinsic < :: subxt :: utils :: MultiAddress < :: subxt :: utils :: AccountId32 , () > , runtime_types :: rococo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment ,) > ; + pub type Extrinsic = :: subxt :: ext :: subxt_core :: utils :: UncheckedExtrinsic < :: subxt :: ext :: subxt_core :: utils :: MultiAddress < :: subxt :: ext :: subxt_core :: utils :: AccountId32 , () > , runtime_types :: rococo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment ,) > ; pub mod output { use super::runtime_types; pub type Output = :: core :: result :: Result < :: core :: result :: Result < () , runtime_types :: sp_runtime :: DispatchError > , runtime_types :: sp_runtime :: transaction_validity :: TransactionValidityError > ; } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct ApplyExtrinsic { pub extrinsic: apply_extrinsic::Extrinsic, } @@ -550,40 +581,48 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct FinalizeBlock {} pub mod inherent_extrinsics { use super::runtime_types; pub type Inherent = runtime_types::sp_inherents::InherentData; pub mod output { use super::runtime_types; - pub type Output = :: std :: vec :: Vec < :: subxt :: utils :: UncheckedExtrinsic < :: subxt :: utils :: MultiAddress < :: subxt :: utils :: AccountId32 , () > , runtime_types :: rococo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment ,) > > ; + pub type Output = :: subxt :: ext :: subxt_core :: alloc :: vec :: Vec < :: subxt :: ext :: subxt_core :: utils :: UncheckedExtrinsic < :: subxt :: ext :: subxt_core :: utils :: MultiAddress < :: subxt :: ext :: subxt_core :: utils :: AccountId32 , () > , runtime_types :: rococo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment ,) > > ; } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct InherentExtrinsics { pub inherent: inherent_extrinsics::Inherent, } pub mod check_inherents { use super::runtime_types; - pub type Block = runtime_types :: sp_runtime :: generic :: block :: Block < runtime_types :: sp_runtime :: generic :: header :: Header < :: core :: primitive :: u32 > , :: subxt :: utils :: UncheckedExtrinsic < :: subxt :: utils :: MultiAddress < :: subxt :: utils :: AccountId32 , () > , runtime_types :: rococo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment ,) > > ; + pub type Block = runtime_types :: sp_runtime :: generic :: block :: Block < runtime_types :: sp_runtime :: generic :: header :: Header < :: core :: primitive :: u32 > , :: subxt :: ext :: subxt_core :: utils :: UncheckedExtrinsic < :: subxt :: ext :: subxt_core :: utils :: MultiAddress < :: subxt :: ext :: subxt_core :: utils :: AccountId32 , () > , runtime_types :: rococo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment ,) > > ; pub type Data = runtime_types::sp_inherents::InherentData; pub mod output { use super::runtime_types; @@ -591,15 +630,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct CheckInherents { pub block: check_inherents::Block, pub data: check_inherents::Data, @@ -626,11 +669,11 @@ pub mod api { source: types::validate_transaction::Source, tx: types::validate_transaction::Tx, block_hash: types::validate_transaction::BlockHash, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::ValidateTransaction, types::validate_transaction::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "TaggedTransactionQueue", "validate_transaction", types::ValidateTransaction { @@ -652,23 +695,27 @@ pub mod api { use super::runtime_types; pub type Source = runtime_types::sp_runtime::transaction_validity::TransactionSource; - pub type Tx = :: subxt :: utils :: UncheckedExtrinsic < :: subxt :: utils :: MultiAddress < :: subxt :: utils :: AccountId32 , () > , runtime_types :: rococo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment ,) > ; - pub type BlockHash = ::subxt::utils::H256; + pub type Tx = :: subxt :: ext :: subxt_core :: utils :: UncheckedExtrinsic < :: subxt :: ext :: subxt_core :: utils :: MultiAddress < :: subxt :: ext :: subxt_core :: utils :: AccountId32 , () > , runtime_types :: rococo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment ,) > ; + pub type BlockHash = ::subxt::ext::subxt_core::utils::H256; pub mod output { use super::runtime_types; pub type Output = :: core :: result :: Result < runtime_types :: sp_runtime :: transaction_validity :: ValidTransaction , runtime_types :: sp_runtime :: transaction_validity :: TransactionValidityError > ; } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct ValidateTransaction { pub source: validate_transaction::Source, pub tx: validate_transaction::Tx, @@ -686,11 +733,11 @@ pub mod api { pub fn offchain_worker( &self, header: types::offchain_worker::Header, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::OffchainWorker, types::offchain_worker::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "OffchainWorkerApi", "offchain_worker", types::OffchainWorker { header }, @@ -714,15 +761,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct OffchainWorker { pub header: offchain_worker::Header, } @@ -737,11 +788,11 @@ pub mod api { #[doc = " Get the current validators."] pub fn validators( &self, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::Validators, types::validators::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "validators", types::Validators {}, @@ -758,11 +809,11 @@ pub mod api { #[doc = " should be the successor of the number of the block."] pub fn validator_groups( &self, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::ValidatorGroups, types::validator_groups::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "validator_groups", types::ValidatorGroups {}, @@ -778,11 +829,11 @@ pub mod api { #[doc = " Cores are either free or occupied. Free cores can have paras assigned to them."] pub fn availability_cores( &self, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::AvailabilityCores, types::availability_cores::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "availability_cores", types::AvailabilityCores {}, @@ -802,11 +853,11 @@ pub mod api { &self, para_id: types::persisted_validation_data::ParaId, assumption: types::persisted_validation_data::Assumption, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::PersistedValidationData, types::persisted_validation_data::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "persisted_validation_data", types::PersistedValidationData { @@ -827,11 +878,11 @@ pub mod api { &self, para_id: types::assumed_validation_data::ParaId, expected_persisted_validation_data_hash : types :: assumed_validation_data :: ExpectedPersistedValidationDataHash, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::AssumedValidationData, types::assumed_validation_data::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "assumed_validation_data", types::AssumedValidationData { @@ -850,11 +901,11 @@ pub mod api { &self, para_id: types::check_validation_outputs::ParaId, outputs: types::check_validation_outputs::Outputs, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::CheckValidationOutputs, types::check_validation_outputs::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "check_validation_outputs", types::CheckValidationOutputs { para_id, outputs }, @@ -871,11 +922,11 @@ pub mod api { #[doc = " This can be used to instantiate a `SigningContext`."] pub fn session_index_for_child( &self, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::SessionIndexForChild, types::session_index_for_child::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "session_index_for_child", types::SessionIndexForChild {}, @@ -894,11 +945,11 @@ pub mod api { &self, para_id: types::validation_code::ParaId, assumption: types::validation_code::Assumption, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::ValidationCode, types::validation_code::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "validation_code", types::ValidationCode { @@ -918,11 +969,11 @@ pub mod api { pub fn candidate_pending_availability( &self, para_id: types::candidate_pending_availability::ParaId, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::CandidatePendingAvailability, types::candidate_pending_availability::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "candidate_pending_availability", types::CandidatePendingAvailability { para_id }, @@ -937,11 +988,11 @@ pub mod api { #[doc = " Get a vector of events concerning candidates that occurred within a block."] pub fn candidate_events( &self, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::CandidateEvents, types::candidate_events::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "candidate_events", types::CandidateEvents {}, @@ -957,11 +1008,11 @@ pub mod api { pub fn dmq_contents( &self, recipient: types::dmq_contents::Recipient, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::DmqContents, types::dmq_contents::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "dmq_contents", types::DmqContents { recipient }, @@ -977,11 +1028,11 @@ pub mod api { pub fn inbound_hrmp_channels_contents( &self, recipient: types::inbound_hrmp_channels_contents::Recipient, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::InboundHrmpChannelsContents, types::inbound_hrmp_channels_contents::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "inbound_hrmp_channels_contents", types::InboundHrmpChannelsContents { recipient }, @@ -996,11 +1047,11 @@ pub mod api { pub fn validation_code_by_hash( &self, hash: types::validation_code_by_hash::Hash, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::ValidationCodeByHash, types::validation_code_by_hash::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "validation_code_by_hash", types::ValidationCodeByHash { hash }, @@ -1015,19 +1066,18 @@ pub mod api { #[doc = " Scrape dispute relevant from on-chain, backing votes and resolved disputes."] pub fn on_chain_votes( &self, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::OnChainVotes, types::on_chain_votes::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "on_chain_votes", types::OnChainVotes {}, [ - 158u8, 98u8, 68u8, 85u8, 65u8, 186u8, 211u8, 5u8, 16u8, 63u8, 34u8, - 85u8, 16u8, 114u8, 115u8, 174u8, 154u8, 127u8, 176u8, 205u8, 12u8, - 231u8, 3u8, 170u8, 102u8, 223u8, 25u8, 130u8, 225u8, 214u8, 98u8, - 255u8, + 8u8, 253u8, 248u8, 13u8, 221u8, 83u8, 199u8, 65u8, 180u8, 193u8, 232u8, + 179u8, 56u8, 186u8, 72u8, 128u8, 27u8, 168u8, 177u8, 82u8, 194u8, + 139u8, 78u8, 32u8, 147u8, 67u8, 27u8, 252u8, 118u8, 60u8, 74u8, 31u8, ], ) } @@ -1037,11 +1087,11 @@ pub mod api { pub fn session_info( &self, index: types::session_info::Index, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::SessionInfo, types::session_info::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "session_info", types::SessionInfo { index }, @@ -1060,11 +1110,11 @@ pub mod api { &self, stmt: types::submit_pvf_check_statement::Stmt, signature: types::submit_pvf_check_statement::Signature, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::SubmitPvfCheckStatement, types::submit_pvf_check_statement::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "submit_pvf_check_statement", types::SubmitPvfCheckStatement { stmt, signature }, @@ -1081,11 +1131,11 @@ pub mod api { #[doc = " NOTE: This function is only available since parachain host version 2."] pub fn pvfs_require_precheck( &self, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::PvfsRequirePrecheck, types::pvfs_require_precheck::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "pvfs_require_precheck", types::PvfsRequirePrecheck {}, @@ -1103,11 +1153,11 @@ pub mod api { &self, para_id: types::validation_code_hash::ParaId, assumption: types::validation_code_hash::Assumption, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::ValidationCodeHash, types::validation_code_hash::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "validation_code_hash", types::ValidationCodeHash { @@ -1125,9 +1175,11 @@ pub mod api { #[doc = " Returns all onchain disputes."] pub fn disputes( &self, - ) -> ::subxt::runtime_api::Payload - { - ::subxt::runtime_api::Payload::new_static( + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< + types::Disputes, + types::disputes::output::Output, + > { + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "disputes", types::Disputes {}, @@ -1142,18 +1194,18 @@ pub mod api { pub fn session_executor_params( &self, session_index: types::session_executor_params::SessionIndex, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::SessionExecutorParams, types::session_executor_params::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "session_executor_params", types::SessionExecutorParams { session_index }, [ - 94u8, 35u8, 29u8, 188u8, 247u8, 116u8, 165u8, 43u8, 248u8, 76u8, 21u8, - 237u8, 26u8, 25u8, 105u8, 27u8, 24u8, 245u8, 97u8, 25u8, 47u8, 118u8, - 98u8, 231u8, 27u8, 76u8, 172u8, 207u8, 90u8, 103u8, 52u8, 168u8, + 207u8, 66u8, 10u8, 104u8, 146u8, 219u8, 75u8, 157u8, 93u8, 224u8, + 215u8, 13u8, 255u8, 62u8, 134u8, 168u8, 185u8, 101u8, 39u8, 78u8, 98u8, + 44u8, 129u8, 38u8, 48u8, 244u8, 103u8, 205u8, 66u8, 121u8, 18u8, 247u8, ], ) } @@ -1161,11 +1213,11 @@ pub mod api { #[doc = " NOTE: This function is only available since parachain host version 5."] pub fn unapplied_slashes( &self, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::UnappliedSlashes, types::unapplied_slashes::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "unapplied_slashes", types::UnappliedSlashes {}, @@ -1181,11 +1233,11 @@ pub mod api { pub fn key_ownership_proof( &self, validator_id: types::key_ownership_proof::ValidatorId, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::KeyOwnershipProof, types::key_ownership_proof::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "key_ownership_proof", types::KeyOwnershipProof { validator_id }, @@ -1203,11 +1255,11 @@ pub mod api { &self, dispute_proof: types::submit_report_dispute_lost::DisputeProof, key_ownership_proof: types::submit_report_dispute_lost::KeyOwnershipProof, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::SubmitReportDisputeLost, types::submit_report_dispute_lost::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "submit_report_dispute_lost", types::SubmitReportDisputeLost { @@ -1225,11 +1277,11 @@ pub mod api { #[doc = " This is a staging method! Do not use on production runtimes!"] pub fn minimum_backing_votes( &self, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::MinimumBackingVotes, types::minimum_backing_votes::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "minimum_backing_votes", types::MinimumBackingVotes {}, @@ -1245,11 +1297,11 @@ pub mod api { pub fn para_backing_state( &self, _0: types::para_backing_state::Param0, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::ParaBackingState, types::para_backing_state::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "para_backing_state", types::ParaBackingState { _0 }, @@ -1263,11 +1315,11 @@ pub mod api { #[doc = " Returns candidate's acceptance limitations for asynchronous backing for a relay parent."] pub fn async_backing_params( &self, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::AsyncBackingParams, types::async_backing_params::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "async_backing_params", types::AsyncBackingParams {}, @@ -1282,11 +1334,11 @@ pub mod api { #[doc = " Returns a list of all disabled validators at the given block."] pub fn disabled_validators( &self, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::DisabledValidators, types::disabled_validators::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "ParachainHost", "disabled_validators", types::DisabledValidators {}, @@ -1298,44 +1350,6 @@ pub mod api { ], ) } - #[doc = " Get node features."] - #[doc = " This is a staging method! Do not use on production runtimes!"] - pub fn node_features( - &self, - ) -> ::subxt::runtime_api::Payload< - types::NodeFeatures, - types::node_features::output::Output, - > { - ::subxt::runtime_api::Payload::new_static( - "ParachainHost", - "node_features", - types::NodeFeatures {}, - [ - 94u8, 110u8, 38u8, 62u8, 66u8, 234u8, 216u8, 228u8, 36u8, 17u8, 33u8, - 56u8, 184u8, 122u8, 34u8, 254u8, 46u8, 62u8, 107u8, 227u8, 3u8, 126u8, - 220u8, 142u8, 92u8, 226u8, 123u8, 236u8, 34u8, 234u8, 82u8, 80u8, - ], - ) - } - #[doc = " Approval voting configuration parameters"] - pub fn approval_voting_params( - &self, - ) -> ::subxt::runtime_api::Payload< - types::ApprovalVotingParams, - types::approval_voting_params::output::Output, - > { - ::subxt::runtime_api::Payload::new_static( - "ParachainHost", - "approval_voting_params", - types::ApprovalVotingParams {}, - [ - 89u8, 130u8, 95u8, 58u8, 124u8, 176u8, 43u8, 109u8, 222u8, 178u8, - 241u8, 177u8, 242u8, 32u8, 84u8, 22u8, 252u8, 178u8, 168u8, 17u8, 38u8, - 249u8, 25u8, 229u8, 75u8, 119u8, 150u8, 112u8, 144u8, 118u8, 189u8, - 253u8, - ], - ) - } } pub mod types { use super::runtime_types; @@ -1343,29 +1357,33 @@ pub mod api { use super::runtime_types; pub mod output { use super::runtime_types; - pub type Output = ::std::vec::Vec< + pub type Output = ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_primitives::v6::validator_app::Public, >; } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Validators {} pub mod validator_groups { use super::runtime_types; pub mod output { use super::runtime_types; pub type Output = ( - ::std::vec::Vec< - ::std::vec::Vec< + ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_primitives::v6::ValidatorIndex, >, >, @@ -1376,38 +1394,46 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct ValidatorGroups {} pub mod availability_cores { use super::runtime_types; pub mod output { use super::runtime_types; - pub type Output = ::std::vec::Vec< + pub type Output = ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_primitives::v6::CoreState< - ::subxt::utils::H256, + ::subxt::ext::subxt_core::utils::H256, ::core::primitive::u32, >, >; } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct AvailabilityCores {} pub mod persisted_validation_data { use super::runtime_types; @@ -1418,22 +1444,26 @@ pub mod api { use super::runtime_types; pub type Output = ::core::option::Option< runtime_types::polkadot_primitives::v6::PersistedValidationData< - ::subxt::utils::H256, + ::subxt::ext::subxt_core::utils::H256, ::core::primitive::u32, >, >; } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct PersistedValidationData { pub para_id: persisted_validation_data::ParaId, pub assumption: persisted_validation_data::Assumption, @@ -1441,22 +1471,27 @@ pub mod api { pub mod assumed_validation_data { use super::runtime_types; pub type ParaId = runtime_types::polkadot_parachain_primitives::primitives::Id; - pub type ExpectedPersistedValidationDataHash = ::subxt::utils::H256; + pub type ExpectedPersistedValidationDataHash = + ::subxt::ext::subxt_core::utils::H256; pub mod output { use super::runtime_types; - pub type Output = :: core :: option :: Option < (runtime_types :: polkadot_primitives :: v6 :: PersistedValidationData < :: subxt :: utils :: H256 , :: core :: primitive :: u32 > , runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash ,) > ; + pub type Output = :: core :: option :: Option < (runtime_types :: polkadot_primitives :: v6 :: PersistedValidationData < :: subxt :: ext :: subxt_core :: utils :: H256 , :: core :: primitive :: u32 > , runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash ,) > ; } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct AssumedValidationData { pub para_id: assumed_validation_data::ParaId, pub expected_persisted_validation_data_hash: @@ -1474,15 +1509,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct CheckValidationOutputs { pub para_id: check_validation_outputs::ParaId, pub outputs: check_validation_outputs::Outputs, @@ -1495,15 +1534,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct SessionIndexForChild {} pub mod validation_code { use super::runtime_types; @@ -1516,15 +1559,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct ValidationCode { pub para_id: validation_code::ParaId, pub assumption: validation_code::Assumption, @@ -1536,21 +1583,25 @@ pub mod api { use super::runtime_types; pub type Output = ::core::option::Option< runtime_types::polkadot_primitives::v6::CommittedCandidateReceipt< - ::subxt::utils::H256, + ::subxt::ext::subxt_core::utils::H256, >, >; } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct CandidatePendingAvailability { pub para_id: candidate_pending_availability::ParaId, } @@ -1558,23 +1609,27 @@ pub mod api { use super::runtime_types; pub mod output { use super::runtime_types; - pub type Output = ::std::vec::Vec< + pub type Output = ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_primitives::v6::CandidateEvent< - ::subxt::utils::H256, + ::subxt::ext::subxt_core::utils::H256, >, >; } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct CandidateEvents {} pub mod dmq_contents { use super::runtime_types; @@ -1582,7 +1637,7 @@ pub mod api { runtime_types::polkadot_parachain_primitives::primitives::Id; pub mod output { use super::runtime_types; - pub type Output = ::std::vec::Vec< + pub type Output = ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_core_primitives::InboundDownwardMessage< ::core::primitive::u32, >, @@ -1590,15 +1645,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct DmqContents { pub recipient: dmq_contents::Recipient, } @@ -1608,9 +1667,9 @@ pub mod api { runtime_types::polkadot_parachain_primitives::primitives::Id; pub mod output { use super::runtime_types; - pub type Output = ::subxt::utils::KeyedVec< + pub type Output = ::subxt::ext::subxt_core::utils::KeyedVec< runtime_types::polkadot_parachain_primitives::primitives::Id, - ::std::vec::Vec< + ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_core_primitives::InboundHrmpMessage< ::core::primitive::u32, >, @@ -1619,15 +1678,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct InboundHrmpChannelsContents { pub recipient: inbound_hrmp_channels_contents::Recipient, } @@ -1640,15 +1703,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct ValidationCodeByHash { pub hash: validation_code_by_hash::Hash, } @@ -1658,21 +1725,25 @@ pub mod api { use super::runtime_types; pub type Output = ::core::option::Option< runtime_types::polkadot_primitives::v6::ScrapedOnChainVotes< - ::subxt::utils::H256, + ::subxt::ext::subxt_core::utils::H256, >, >; } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct OnChainVotes {} pub mod session_info { use super::runtime_types; @@ -1685,15 +1756,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct SessionInfo { pub index: session_info::Index, } @@ -1708,15 +1783,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct SubmitPvfCheckStatement { pub stmt: submit_pvf_check_statement::Stmt, pub signature: submit_pvf_check_statement::Signature, @@ -1725,19 +1804,23 @@ pub mod api { use super::runtime_types; pub mod output { use super::runtime_types; - pub type Output = :: std :: vec :: Vec < runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash > ; + pub type Output = :: subxt :: ext :: subxt_core :: alloc :: vec :: Vec < runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash > ; } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct PvfsRequirePrecheck {} pub mod validation_code_hash { use super::runtime_types; @@ -1750,15 +1833,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct ValidationCodeHash { pub para_id: validation_code_hash::ParaId, pub assumption: validation_code_hash::Assumption, @@ -1767,7 +1854,7 @@ pub mod api { use super::runtime_types; pub mod output { use super::runtime_types; - pub type Output = ::std::vec::Vec<( + pub type Output = ::subxt::ext::subxt_core::alloc::vec::Vec<( ::core::primitive::u32, runtime_types::polkadot_core_primitives::CandidateHash, runtime_types::polkadot_primitives::v6::DisputeState< @@ -1777,15 +1864,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Disputes {} pub mod session_executor_params { use super::runtime_types; @@ -1798,15 +1889,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct SessionExecutorParams { pub session_index: session_executor_params::SessionIndex, } @@ -1814,7 +1909,7 @@ pub mod api { use super::runtime_types; pub mod output { use super::runtime_types; - pub type Output = ::std::vec::Vec<( + pub type Output = ::subxt::ext::subxt_core::alloc::vec::Vec<( ::core::primitive::u32, runtime_types::polkadot_core_primitives::CandidateHash, runtime_types::polkadot_primitives::v6::slashing::PendingSlashes, @@ -1822,15 +1917,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct UnappliedSlashes {} pub mod key_ownership_proof { use super::runtime_types; @@ -1842,15 +1941,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct KeyOwnershipProof { pub validator_id: key_ownership_proof::ValidatorId, } @@ -1866,15 +1969,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct SubmitReportDisputeLost { pub dispute_proof: submit_report_dispute_lost::DisputeProof, pub key_ownership_proof: submit_report_dispute_lost::KeyOwnershipProof, @@ -1887,15 +1994,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct MinimumBackingVotes {} pub mod para_backing_state { use super::runtime_types; @@ -1904,22 +2015,26 @@ pub mod api { use super::runtime_types; pub type Output = ::core::option::Option< runtime_types::polkadot_primitives::v6::async_backing::BackingState< - ::subxt::utils::H256, + ::subxt::ext::subxt_core::utils::H256, ::core::primitive::u32, >, >; } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct ParaBackingState { pub _0: para_backing_state::Param0, } @@ -1931,75 +2046,44 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct AsyncBackingParams {} pub mod disabled_validators { use super::runtime_types; pub mod output { use super::runtime_types; - pub type Output = - ::std::vec::Vec; - } - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct DisabledValidators {} - pub mod node_features { - use super::runtime_types; - pub mod output { - use super::runtime_types; - pub type Output = ::subxt::utils::bits::DecodedBits< - ::core::primitive::u8, - ::subxt::utils::bits::Lsb0, + pub type Output = ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::polkadot_primitives::v6::ValidatorIndex, >; } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct NodeFeatures {} - pub mod approval_voting_params { - use super::runtime_types; - pub mod output { - use super::runtime_types; - pub type Output = - runtime_types::polkadot_primitives::vstaging::ApprovalVotingParams; - } - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ApprovalVotingParams {} + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct DisabledValidators {} } } pub mod beefy_api { @@ -2011,11 +2095,11 @@ pub mod api { #[doc = " Return the block number where BEEFY consensus is enabled/started"] pub fn beefy_genesis( &self, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::BeefyGenesis, types::beefy_genesis::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "BeefyApi", "beefy_genesis", types::BeefyGenesis {}, @@ -2030,11 +2114,11 @@ pub mod api { #[doc = " Return the current active BEEFY validator set"] pub fn validator_set( &self, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::ValidatorSet, types::validator_set::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "BeefyApi", "validator_set", types::ValidatorSet {}, @@ -2057,11 +2141,11 @@ pub mod api { &self, equivocation_proof : types :: submit_report_equivocation_unsigned_extrinsic :: EquivocationProof, key_owner_proof : types :: submit_report_equivocation_unsigned_extrinsic :: KeyOwnerProof, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::SubmitReportEquivocationUnsignedExtrinsic, types::submit_report_equivocation_unsigned_extrinsic::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "BeefyApi", "submit_report_equivocation_unsigned_extrinsic", types::SubmitReportEquivocationUnsignedExtrinsic { @@ -2091,11 +2175,11 @@ pub mod api { &self, set_id: types::generate_key_ownership_proof::SetId, authority_id: types::generate_key_ownership_proof::AuthorityId, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::GenerateKeyOwnershipProof, types::generate_key_ownership_proof::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "BeefyApi", "generate_key_ownership_proof", types::GenerateKeyOwnershipProof { @@ -2120,15 +2204,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct BeefyGenesis {} pub mod validator_set { use super::runtime_types; @@ -2142,15 +2230,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct ValidatorSet {} pub mod submit_report_equivocation_unsigned_extrinsic { use super::runtime_types; @@ -2168,15 +2260,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct SubmitReportEquivocationUnsignedExtrinsic { pub equivocation_proof: submit_report_equivocation_unsigned_extrinsic::EquivocationProof, @@ -2195,15 +2291,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct GenerateKeyOwnershipProof { pub set_id: generate_key_ownership_proof::SetId, pub authority_id: generate_key_ownership_proof::AuthorityId, @@ -2219,9 +2319,11 @@ pub mod api { #[doc = " Return the on-chain MMR root hash."] pub fn mmr_root( &self, - ) -> ::subxt::runtime_api::Payload - { - ::subxt::runtime_api::Payload::new_static( + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< + types::MmrRoot, + types::mmr_root::output::Output, + > { + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "MmrApi", "mmr_root", types::MmrRoot {}, @@ -2235,11 +2337,11 @@ pub mod api { #[doc = " Return the number of MMR blocks in the chain."] pub fn mmr_leaf_count( &self, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::MmrLeafCount, types::mmr_leaf_count::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "MmrApi", "mmr_leaf_count", types::MmrLeafCount {}, @@ -2257,11 +2359,11 @@ pub mod api { &self, block_numbers: types::generate_proof::BlockNumbers, best_known_block_number: types::generate_proof::BestKnownBlockNumber, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::GenerateProof, types::generate_proof::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "MmrApi", "generate_proof", types::GenerateProof { @@ -2285,11 +2387,11 @@ pub mod api { &self, leaves: types::verify_proof::Leaves, proof: types::verify_proof::Proof, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::VerifyProof, types::verify_proof::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "MmrApi", "verify_proof", types::VerifyProof { leaves, proof }, @@ -2313,11 +2415,11 @@ pub mod api { root: types::verify_proof_stateless::Root, leaves: types::verify_proof_stateless::Leaves, proof: types::verify_proof_stateless::Proof, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::VerifyProofStateless, types::verify_proof_stateless::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "MmrApi", "verify_proof_stateless", types::VerifyProofStateless { @@ -2340,21 +2442,25 @@ pub mod api { pub mod output { use super::runtime_types; pub type Output = ::core::result::Result< - ::subxt::utils::H256, + ::subxt::ext::subxt_core::utils::H256, runtime_types::sp_mmr_primitives::Error, >; } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct MmrRoot {} pub mod mmr_leaf_count { use super::runtime_types; @@ -2367,52 +2473,66 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct MmrLeafCount {} pub mod generate_proof { use super::runtime_types; - pub type BlockNumbers = ::std::vec::Vec<::core::primitive::u32>; + pub type BlockNumbers = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u32>; pub type BestKnownBlockNumber = ::core::option::Option<::core::primitive::u32>; pub mod output { use super::runtime_types; pub type Output = ::core::result::Result< ( - ::std::vec::Vec< + ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::sp_mmr_primitives::EncodableOpaqueLeaf, >, - runtime_types::sp_mmr_primitives::Proof<::subxt::utils::H256>, + runtime_types::sp_mmr_primitives::Proof< + ::subxt::ext::subxt_core::utils::H256, + >, ), runtime_types::sp_mmr_primitives::Error, >; } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct GenerateProof { pub block_numbers: generate_proof::BlockNumbers, pub best_known_block_number: generate_proof::BestKnownBlockNumber, } pub mod verify_proof { use super::runtime_types; - pub type Leaves = - ::std::vec::Vec; - pub type Proof = runtime_types::sp_mmr_primitives::Proof<::subxt::utils::H256>; + pub type Leaves = ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::sp_mmr_primitives::EncodableOpaqueLeaf, + >; + pub type Proof = runtime_types::sp_mmr_primitives::Proof< + ::subxt::ext::subxt_core::utils::H256, + >; pub mod output { use super::runtime_types; pub type Output = @@ -2420,25 +2540,32 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct VerifyProof { pub leaves: verify_proof::Leaves, pub proof: verify_proof::Proof, } pub mod verify_proof_stateless { use super::runtime_types; - pub type Root = ::subxt::utils::H256; - pub type Leaves = - ::std::vec::Vec; - pub type Proof = runtime_types::sp_mmr_primitives::Proof<::subxt::utils::H256>; + pub type Root = ::subxt::ext::subxt_core::utils::H256; + pub type Leaves = ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::sp_mmr_primitives::EncodableOpaqueLeaf, + >; + pub type Proof = runtime_types::sp_mmr_primitives::Proof< + ::subxt::ext::subxt_core::utils::H256, + >; pub mod output { use super::runtime_types; pub type Output = @@ -2446,15 +2573,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct VerifyProofStateless { pub root: verify_proof_stateless::Root, pub leaves: verify_proof_stateless::Leaves, @@ -2484,11 +2615,11 @@ pub mod api { #[doc = " is finalized by the authorities from block B-1."] pub fn grandpa_authorities( &self, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::GrandpaAuthorities, types::grandpa_authorities::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "GrandpaApi", "grandpa_authorities", types::GrandpaAuthorities {}, @@ -2512,11 +2643,11 @@ pub mod api { &self, equivocation_proof : types :: submit_report_equivocation_unsigned_extrinsic :: EquivocationProof, key_owner_proof : types :: submit_report_equivocation_unsigned_extrinsic :: KeyOwnerProof, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::SubmitReportEquivocationUnsignedExtrinsic, types::submit_report_equivocation_unsigned_extrinsic::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "GrandpaApi", "submit_report_equivocation_unsigned_extrinsic", types::SubmitReportEquivocationUnsignedExtrinsic { @@ -2546,11 +2677,11 @@ pub mod api { &self, set_id: types::generate_key_ownership_proof::SetId, authority_id: types::generate_key_ownership_proof::AuthorityId, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::GenerateKeyOwnershipProof, types::generate_key_ownership_proof::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "GrandpaApi", "generate_key_ownership_proof", types::GenerateKeyOwnershipProof { @@ -2568,11 +2699,11 @@ pub mod api { #[doc = " Get current GRANDPA authority set id."] pub fn current_set_id( &self, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::CurrentSetId, types::current_set_id::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "GrandpaApi", "current_set_id", types::CurrentSetId {}, @@ -2591,28 +2722,32 @@ pub mod api { use super::runtime_types; pub mod output { use super::runtime_types; - pub type Output = ::std::vec::Vec<( + pub type Output = ::subxt::ext::subxt_core::alloc::vec::Vec<( runtime_types::sp_consensus_grandpa::app::Public, ::core::primitive::u64, )>; } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct GrandpaAuthorities {} pub mod submit_report_equivocation_unsigned_extrinsic { use super::runtime_types; pub type EquivocationProof = runtime_types::sp_consensus_grandpa::EquivocationProof< - ::subxt::utils::H256, + ::subxt::ext::subxt_core::utils::H256, ::core::primitive::u32, >; pub type KeyOwnerProof = @@ -2623,15 +2758,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct SubmitReportEquivocationUnsignedExtrinsic { pub equivocation_proof: submit_report_equivocation_unsigned_extrinsic::EquivocationProof, @@ -2650,15 +2789,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct GenerateKeyOwnershipProof { pub set_id: generate_key_ownership_proof::SetId, pub authority_id: generate_key_ownership_proof::AuthorityId, @@ -2671,15 +2814,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct CurrentSetId {} } } @@ -2692,11 +2839,11 @@ pub mod api { #[doc = " Return the configuration for BABE."] pub fn configuration( &self, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::Configuration, types::configuration::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "BabeApi", "configuration", types::Configuration {}, @@ -2710,11 +2857,11 @@ pub mod api { #[doc = " Returns the slot that started the current epoch."] pub fn current_epoch_start( &self, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::CurrentEpochStart, types::current_epoch_start::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "BabeApi", "current_epoch_start", types::CurrentEpochStart {}, @@ -2729,11 +2876,11 @@ pub mod api { #[doc = " Returns information regarding the current epoch."] pub fn current_epoch( &self, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::CurrentEpoch, types::current_epoch::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "BabeApi", "current_epoch", types::CurrentEpoch {}, @@ -2748,11 +2895,11 @@ pub mod api { #[doc = " previously announced)."] pub fn next_epoch( &self, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::NextEpoch, types::next_epoch::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "BabeApi", "next_epoch", types::NextEpoch {}, @@ -2779,11 +2926,11 @@ pub mod api { &self, slot: types::generate_key_ownership_proof::Slot, authority_id: types::generate_key_ownership_proof::AuthorityId, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::GenerateKeyOwnershipProof, types::generate_key_ownership_proof::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "BabeApi", "generate_key_ownership_proof", types::GenerateKeyOwnershipProof { slot, authority_id }, @@ -2807,11 +2954,11 @@ pub mod api { &self, equivocation_proof : types :: submit_report_equivocation_unsigned_extrinsic :: EquivocationProof, key_owner_proof : types :: submit_report_equivocation_unsigned_extrinsic :: KeyOwnerProof, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::SubmitReportEquivocationUnsignedExtrinsic, types::submit_report_equivocation_unsigned_extrinsic::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "BabeApi", "submit_report_equivocation_unsigned_extrinsic", types::SubmitReportEquivocationUnsignedExtrinsic { @@ -2836,15 +2983,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Configuration {} pub mod current_epoch_start { use super::runtime_types; @@ -2854,15 +3005,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct CurrentEpochStart {} pub mod current_epoch { use super::runtime_types; @@ -2872,15 +3027,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct CurrentEpoch {} pub mod next_epoch { use super::runtime_types; @@ -2890,15 +3049,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct NextEpoch {} pub mod generate_key_ownership_proof { use super::runtime_types; @@ -2912,15 +3075,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct GenerateKeyOwnershipProof { pub slot: generate_key_ownership_proof::Slot, pub authority_id: generate_key_ownership_proof::AuthorityId, @@ -2942,15 +3109,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct SubmitReportEquivocationUnsignedExtrinsic { pub equivocation_proof: submit_report_equivocation_unsigned_extrinsic::EquivocationProof, @@ -2971,11 +3142,11 @@ pub mod api { #[doc = " Retrieve authority identifiers of the current and next authority set."] pub fn authorities( &self, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::Authorities, types::authorities::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "AuthorityDiscoveryApi", "authorities", types::Authorities {}, @@ -2993,20 +3164,25 @@ pub mod api { use super::runtime_types; pub mod output { use super::runtime_types; - pub type Output = - ::std::vec::Vec; + pub type Output = ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::sp_authority_discovery::app::Public, + >; } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Authorities {} } } @@ -3026,11 +3202,11 @@ pub mod api { pub fn generate_session_keys( &self, seed: types::generate_session_keys::Seed, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::GenerateSessionKeys, types::generate_session_keys::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "SessionKeys", "generate_session_keys", types::GenerateSessionKeys { seed }, @@ -3047,11 +3223,11 @@ pub mod api { pub fn decode_session_keys( &self, encoded: types::decode_session_keys::Encoded, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::DecodeSessionKeys, types::decode_session_keys::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "SessionKeys", "decode_session_keys", types::DecodeSessionKeys { encoded }, @@ -3068,48 +3244,60 @@ pub mod api { use super::runtime_types; pub mod generate_session_keys { use super::runtime_types; - pub type Seed = ::core::option::Option<::std::vec::Vec<::core::primitive::u8>>; + pub type Seed = ::core::option::Option< + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + >; pub mod output { use super::runtime_types; - pub type Output = ::std::vec::Vec<::core::primitive::u8>; + pub type Output = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct GenerateSessionKeys { pub seed: generate_session_keys::Seed, } pub mod decode_session_keys { use super::runtime_types; - pub type Encoded = ::std::vec::Vec<::core::primitive::u8>; + pub type Encoded = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; pub mod output { use super::runtime_types; pub type Output = ::core::option::Option< - ::std::vec::Vec<( - ::std::vec::Vec<::core::primitive::u8>, + ::subxt::ext::subxt_core::alloc::vec::Vec<( + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, runtime_types::sp_core::crypto::KeyTypeId, )>, >; } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct DecodeSessionKeys { pub encoded: decode_session_keys::Encoded, } @@ -3125,11 +3313,11 @@ pub mod api { pub fn account_nonce( &self, account: types::account_nonce::Account, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::AccountNonce, types::account_nonce::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "AccountNonceApi", "account_nonce", types::AccountNonce { account }, @@ -3146,22 +3334,26 @@ pub mod api { use super::runtime_types; pub mod account_nonce { use super::runtime_types; - pub type Account = ::subxt::utils::AccountId32; + pub type Account = ::subxt::ext::subxt_core::utils::AccountId32; pub mod output { use super::runtime_types; pub type Output = ::core::primitive::u32; } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct AccountNonce { pub account: account_nonce::Account, } @@ -3176,11 +3368,11 @@ pub mod api { &self, uxt: types::query_info::Uxt, len: types::query_info::Len, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::QueryInfo, types::query_info::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "TransactionPaymentApi", "query_info", types::QueryInfo { uxt, len }, @@ -3195,11 +3387,11 @@ pub mod api { &self, uxt: types::query_fee_details::Uxt, len: types::query_fee_details::Len, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::QueryFeeDetails, types::query_fee_details::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "TransactionPaymentApi", "query_fee_details", types::QueryFeeDetails { uxt, len }, @@ -3214,11 +3406,11 @@ pub mod api { pub fn query_weight_to_fee( &self, weight: types::query_weight_to_fee::Weight, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::QueryWeightToFee, types::query_weight_to_fee::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "TransactionPaymentApi", "query_weight_to_fee", types::QueryWeightToFee { weight }, @@ -3233,11 +3425,11 @@ pub mod api { pub fn query_length_to_fee( &self, length: types::query_length_to_fee::Length, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::QueryLengthToFee, types::query_length_to_fee::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "TransactionPaymentApi", "query_length_to_fee", types::QueryLengthToFee { length }, @@ -3253,7 +3445,7 @@ pub mod api { use super::runtime_types; pub mod query_info { use super::runtime_types; - pub type Uxt = :: subxt :: utils :: UncheckedExtrinsic < :: subxt :: utils :: MultiAddress < :: subxt :: utils :: AccountId32 , () > , runtime_types :: rococo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment ,) > ; + pub type Uxt = :: subxt :: ext :: subxt_core :: utils :: UncheckedExtrinsic < :: subxt :: ext :: subxt_core :: utils :: MultiAddress < :: subxt :: ext :: subxt_core :: utils :: AccountId32 , () > , runtime_types :: rococo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment ,) > ; pub type Len = ::core::primitive::u32; pub mod output { use super::runtime_types; @@ -3265,22 +3457,26 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct QueryInfo { pub uxt: query_info::Uxt, pub len: query_info::Len, } pub mod query_fee_details { use super::runtime_types; - pub type Uxt = :: subxt :: utils :: UncheckedExtrinsic < :: subxt :: utils :: MultiAddress < :: subxt :: utils :: AccountId32 , () > , runtime_types :: rococo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment ,) > ; + pub type Uxt = :: subxt :: ext :: subxt_core :: utils :: UncheckedExtrinsic < :: subxt :: ext :: subxt_core :: utils :: MultiAddress < :: subxt :: ext :: subxt_core :: utils :: AccountId32 , () > , runtime_types :: rococo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment ,) > ; pub type Len = ::core::primitive::u32; pub mod output { use super::runtime_types; @@ -3291,15 +3487,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct QueryFeeDetails { pub uxt: query_fee_details::Uxt, pub len: query_fee_details::Len, @@ -3313,15 +3513,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct QueryWeightToFee { pub weight: query_weight_to_fee::Weight, } @@ -3334,15 +3538,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct QueryLengthToFee { pub length: query_length_to_fee::Length, } @@ -3357,11 +3565,11 @@ pub mod api { #[doc = " Return the currently active BEEFY authority set proof."] pub fn authority_set_proof( &self, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::AuthoritySetProof, types::authority_set_proof::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "BeefyMmrApi", "authority_set_proof", types::AuthoritySetProof {}, @@ -3376,11 +3584,11 @@ pub mod api { #[doc = " Return the next/queued BEEFY authority set proof."] pub fn next_authority_set_proof( &self, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::NextAuthoritySetProof, types::next_authority_set_proof::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "BeefyMmrApi", "next_authority_set_proof", types::NextAuthoritySetProof {}, @@ -3399,60 +3607,68 @@ pub mod api { pub mod output { use super::runtime_types; pub type Output = runtime_types::sp_consensus_beefy::mmr::BeefyAuthoritySet< - ::subxt::utils::H256, + ::subxt::ext::subxt_core::utils::H256, >; } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct AuthoritySetProof {} pub mod next_authority_set_proof { use super::runtime_types; pub mod output { use super::runtime_types; pub type Output = runtime_types::sp_consensus_beefy::mmr::BeefyAuthoritySet< - ::subxt::utils::H256, + ::subxt::ext::subxt_core::utils::H256, >; } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct NextAuthoritySetProof {} } } pub mod genesis_builder { use super::root_mod; use super::runtime_types; - #[doc = " API to interact with RuntimeGenesisConfig for the runtime"] + #[doc = " API to interact with GenesisConfig for the runtime"] pub struct GenesisBuilder; impl GenesisBuilder { - #[doc = " Creates the default `RuntimeGenesisConfig` and returns it as a JSON blob."] + #[doc = " Creates the default `GenesisConfig` and returns it as a JSON blob."] #[doc = ""] - #[doc = " This function instantiates the default `RuntimeGenesisConfig` struct for the runtime and serializes it into a JSON"] - #[doc = " blob. It returns a `Vec` containing the JSON representation of the default `RuntimeGenesisConfig`."] + #[doc = " This function instantiates the default `GenesisConfig` struct for the runtime and serializes it into a JSON"] + #[doc = " blob. It returns a `Vec` containing the JSON representation of the default `GenesisConfig`."] pub fn create_default_config( &self, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::CreateDefaultConfig, types::create_default_config::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "GenesisBuilder", "create_default_config", types::CreateDefaultConfig {}, @@ -3463,21 +3679,21 @@ pub mod api { ], ) } - #[doc = " Build `RuntimeGenesisConfig` from a JSON blob not using any defaults and store it in the storage."] + #[doc = " Build `GenesisConfig` from a JSON blob not using any defaults and store it in the storage."] #[doc = ""] - #[doc = " This function deserializes the full `RuntimeGenesisConfig` from the given JSON blob and puts it into the storage."] + #[doc = " This function deserializes the full `GenesisConfig` from the given JSON blob and puts it into the storage."] #[doc = " If the provided JSON blob is incorrect or incomplete or the deserialization fails, an error is returned."] #[doc = " It is recommended to log any errors encountered during the process."] #[doc = ""] - #[doc = " Please note that provided json blob must contain all `RuntimeGenesisConfig` fields, no defaults will be used."] + #[doc = " Please note that provided json blob must contain all `GenesisConfig` fields, no defaults will be used."] pub fn build_config( &self, json: types::build_config::Json, - ) -> ::subxt::runtime_api::Payload< + ) -> ::subxt::ext::subxt_core::runtime_api::Payload< types::BuildConfig, types::build_config::output::Output, > { - ::subxt::runtime_api::Payload::new_static( + ::subxt::ext::subxt_core::runtime_api::Payload::new_static( "GenesisBuilder", "build_config", types::BuildConfig { json }, @@ -3496,38 +3712,51 @@ pub mod api { use super::runtime_types; pub mod output { use super::runtime_types; - pub type Output = ::std::vec::Vec<::core::primitive::u8>; + pub type Output = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct CreateDefaultConfig {} pub mod build_config { use super::runtime_types; - pub type Json = ::std::vec::Vec<::core::primitive::u8>; + pub type Json = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; pub mod output { use super::runtime_types; - pub type Output = ::core::result::Result<(), ::std::string::String>; + pub type Output = ::core::result::Result< + (), + ::subxt::ext::subxt_core::alloc::string::String, + >; } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct BuildConfig { pub json: build_config::Json, } @@ -3559,9 +3788,15 @@ pub mod api { pub fn transaction_payment(&self) -> transaction_payment::constants::ConstantsApi { transaction_payment::constants::ConstantsApi } + pub fn beefy(&self) -> beefy::constants::ConstantsApi { + beefy::constants::ConstantsApi + } pub fn grandpa(&self) -> grandpa::constants::ConstantsApi { grandpa::constants::ConstantsApi } + pub fn im_online(&self) -> im_online::constants::ConstantsApi { + im_online::constants::ConstantsApi + } pub fn treasury(&self) -> treasury::constants::ConstantsApi { treasury::constants::ConstantsApi } @@ -3638,12 +3873,6 @@ pub mod api { pub fn crowdloan(&self) -> crowdloan::constants::ConstantsApi { crowdloan::constants::ConstantsApi } - pub fn coretime(&self) -> coretime::constants::ConstantsApi { - coretime::constants::ConstantsApi - } - pub fn beefy(&self) -> beefy::constants::ConstantsApi { - beefy::constants::ConstantsApi - } pub fn assigned_slots(&self) -> assigned_slots::constants::ConstantsApi { assigned_slots::constants::ConstantsApi } @@ -3677,8 +3906,14 @@ pub mod api { pub fn offences(&self) -> offences::storage::StorageApi { offences::storage::StorageApi } - pub fn historical(&self) -> historical::storage::StorageApi { - historical::storage::StorageApi + pub fn beefy(&self) -> beefy::storage::StorageApi { + beefy::storage::StorageApi + } + pub fn mmr(&self) -> mmr::storage::StorageApi { + mmr::storage::StorageApi + } + pub fn mmr_leaf(&self) -> mmr_leaf::storage::StorageApi { + mmr_leaf::storage::StorageApi } pub fn session(&self) -> session::storage::StorageApi { session::storage::StorageApi @@ -3686,8 +3921,8 @@ pub mod api { pub fn grandpa(&self) -> grandpa::storage::StorageApi { grandpa::storage::StorageApi } - pub fn authority_discovery(&self) -> authority_discovery::storage::StorageApi { - authority_discovery::storage::StorageApi + pub fn im_online(&self) -> im_online::storage::StorageApi { + im_online::storage::StorageApi } pub fn treasury(&self) -> treasury::storage::StorageApi { treasury::storage::StorageApi @@ -3788,16 +4023,14 @@ pub mod api { pub fn message_queue(&self) -> message_queue::storage::StorageApi { message_queue::storage::StorageApi } + pub fn para_assignment_provider(&self) -> para_assignment_provider::storage::StorageApi { + para_assignment_provider::storage::StorageApi + } pub fn on_demand_assignment_provider( &self, ) -> on_demand_assignment_provider::storage::StorageApi { on_demand_assignment_provider::storage::StorageApi } - pub fn coretime_assignment_provider( - &self, - ) -> coretime_assignment_provider::storage::StorageApi { - coretime_assignment_provider::storage::StorageApi - } pub fn registrar(&self) -> registrar::storage::StorageApi { registrar::storage::StorageApi } @@ -3813,15 +4046,6 @@ pub mod api { pub fn xcm_pallet(&self) -> xcm_pallet::storage::StorageApi { xcm_pallet::storage::StorageApi } - pub fn beefy(&self) -> beefy::storage::StorageApi { - beefy::storage::StorageApi - } - pub fn mmr(&self) -> mmr::storage::StorageApi { - mmr::storage::StorageApi - } - pub fn mmr_leaf(&self) -> mmr_leaf::storage::StorageApi { - mmr_leaf::storage::StorageApi - } pub fn assigned_slots(&self) -> assigned_slots::storage::StorageApi { assigned_slots::storage::StorageApi } @@ -3852,12 +4076,18 @@ pub mod api { pub fn balances(&self) -> balances::calls::TransactionApi { balances::calls::TransactionApi } + pub fn beefy(&self) -> beefy::calls::TransactionApi { + beefy::calls::TransactionApi + } pub fn session(&self) -> session::calls::TransactionApi { session::calls::TransactionApi } pub fn grandpa(&self) -> grandpa::calls::TransactionApi { grandpa::calls::TransactionApi } + pub fn im_online(&self) -> im_online::calls::TransactionApi { + im_online::calls::TransactionApi + } pub fn treasury(&self) -> treasury::calls::TransactionApi { treasury::calls::TransactionApi } @@ -3968,18 +4198,9 @@ pub mod api { pub fn crowdloan(&self) -> crowdloan::calls::TransactionApi { crowdloan::calls::TransactionApi } - pub fn coretime(&self) -> coretime::calls::TransactionApi { - coretime::calls::TransactionApi - } pub fn xcm_pallet(&self) -> xcm_pallet::calls::TransactionApi { xcm_pallet::calls::TransactionApi } - pub fn beefy(&self) -> beefy::calls::TransactionApi { - beefy::calls::TransactionApi - } - pub fn identity_migrator(&self) -> identity_migrator::calls::TransactionApi { - identity_migrator::calls::TransactionApi - } pub fn paras_sudo_wrapper(&self) -> paras_sudo_wrapper::calls::TransactionApi { paras_sudo_wrapper::calls::TransactionApi } @@ -3992,15 +4213,12 @@ pub mod api { pub fn state_trie_migration(&self) -> state_trie_migration::calls::TransactionApi { state_trie_migration::calls::TransactionApi } - pub fn root_testing(&self) -> root_testing::calls::TransactionApi { - root_testing::calls::TransactionApi - } pub fn sudo(&self) -> sudo::calls::TransactionApi { sudo::calls::TransactionApi } } #[doc = r" check whether the metadata provided is aligned with this statically generated code."] - pub fn is_codegen_valid_for(metadata: &::subxt::Metadata) -> bool { + pub fn is_codegen_valid_for(metadata: &::subxt::ext::subxt_core::Metadata) -> bool { let runtime_metadata_hash = metadata .hasher() .only_these_pallets(&PALLETS) @@ -4008,9 +4226,9 @@ pub mod api { .hash(); runtime_metadata_hash == [ - 156u8, 238u8, 89u8, 253u8, 131u8, 142u8, 74u8, 227u8, 39u8, 8u8, 168u8, 223u8, - 105u8, 129u8, 225u8, 253u8, 181u8, 1u8, 91u8, 107u8, 103u8, 177u8, 147u8, 165u8, - 10u8, 219u8, 72u8, 215u8, 120u8, 62u8, 229u8, 179u8, + 175u8, 118u8, 21u8, 61u8, 145u8, 16u8, 77u8, 206u8, 11u8, 26u8, 133u8, 39u8, 11u8, + 10u8, 45u8, 3u8, 37u8, 12u8, 170u8, 170u8, 252u8, 10u8, 141u8, 176u8, 190u8, 76u8, + 176u8, 211u8, 99u8, 9u8, 160u8, 78u8, ] } pub mod system { @@ -4027,40 +4245,47 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Make some on-chain remark."] - #[doc = ""] - #[doc = "Can be executed by every `origin`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::remark`]."] pub struct Remark { pub remark: remark::Remark, } pub mod remark { use super::runtime_types; - pub type Remark = ::std::vec::Vec<::core::primitive::u8>; + pub type Remark = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; } - impl ::subxt::blocks::StaticExtrinsic for Remark { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Remark { const PALLET: &'static str = "System"; const CALL: &'static str = "remark"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the number of pages in the WebAssembly environment's heap."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_heap_pages`]."] pub struct SetHeapPages { pub pages: set_heap_pages::Pages, } @@ -4068,248 +4293,186 @@ pub mod api { use super::runtime_types; pub type Pages = ::core::primitive::u64; } - impl ::subxt::blocks::StaticExtrinsic for SetHeapPages { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetHeapPages { const PALLET: &'static str = "System"; const CALL: &'static str = "set_heap_pages"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the new runtime code."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_code`]."] pub struct SetCode { pub code: set_code::Code, } pub mod set_code { use super::runtime_types; - pub type Code = ::std::vec::Vec<::core::primitive::u8>; + pub type Code = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; } - impl ::subxt::blocks::StaticExtrinsic for SetCode { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetCode { const PALLET: &'static str = "System"; const CALL: &'static str = "set_code"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the new runtime code without doing any checks of the given `code`."] - #[doc = ""] - #[doc = "Note that runtime upgrades will not run if this is called with a not-increasing spec"] - #[doc = "version!"] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_code_without_checks`]."] pub struct SetCodeWithoutChecks { pub code: set_code_without_checks::Code, } pub mod set_code_without_checks { use super::runtime_types; - pub type Code = ::std::vec::Vec<::core::primitive::u8>; + pub type Code = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; } - impl ::subxt::blocks::StaticExtrinsic for SetCodeWithoutChecks { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetCodeWithoutChecks { const PALLET: &'static str = "System"; const CALL: &'static str = "set_code_without_checks"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set some items of storage."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_storage`]."] pub struct SetStorage { pub items: set_storage::Items, } pub mod set_storage { use super::runtime_types; - pub type Items = ::std::vec::Vec<( - ::std::vec::Vec<::core::primitive::u8>, - ::std::vec::Vec<::core::primitive::u8>, + pub type Items = ::subxt::ext::subxt_core::alloc::vec::Vec<( + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, )>; } - impl ::subxt::blocks::StaticExtrinsic for SetStorage { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetStorage { const PALLET: &'static str = "System"; const CALL: &'static str = "set_storage"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Kill some items from storage."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::kill_storage`]."] pub struct KillStorage { pub keys: kill_storage::Keys, } pub mod kill_storage { use super::runtime_types; - pub type Keys = ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>; + pub type Keys = ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + >; } - impl ::subxt::blocks::StaticExtrinsic for KillStorage { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for KillStorage { const PALLET: &'static str = "System"; const CALL: &'static str = "kill_storage"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Kill all storage items with a key that starts with the given prefix."] - #[doc = ""] - #[doc = "**NOTE:** We rely on the Root origin to provide us the number of subkeys under"] - #[doc = "the prefix we are removing to accurately calculate the weight of this function."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::kill_prefix`]."] pub struct KillPrefix { pub prefix: kill_prefix::Prefix, pub subkeys: kill_prefix::Subkeys, } pub mod kill_prefix { use super::runtime_types; - pub type Prefix = ::std::vec::Vec<::core::primitive::u8>; + pub type Prefix = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; pub type Subkeys = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for KillPrefix { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for KillPrefix { const PALLET: &'static str = "System"; const CALL: &'static str = "kill_prefix"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Make some on-chain remark and emit event."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::remark_with_event`]."] pub struct RemarkWithEvent { pub remark: remark_with_event::Remark, } pub mod remark_with_event { use super::runtime_types; - pub type Remark = ::std::vec::Vec<::core::primitive::u8>; + pub type Remark = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; } - impl ::subxt::blocks::StaticExtrinsic for RemarkWithEvent { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RemarkWithEvent { const PALLET: &'static str = "System"; const CALL: &'static str = "remark_with_event"; } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Authorize an upgrade to a given `code_hash` for the runtime. The runtime can be supplied"] - #[doc = "later."] - #[doc = ""] - #[doc = "This call requires Root origin."] - pub struct AuthorizeUpgrade { - pub code_hash: authorize_upgrade::CodeHash, - } - pub mod authorize_upgrade { - use super::runtime_types; - pub type CodeHash = ::subxt::utils::H256; - } - impl ::subxt::blocks::StaticExtrinsic for AuthorizeUpgrade { - const PALLET: &'static str = "System"; - const CALL: &'static str = "authorize_upgrade"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Authorize an upgrade to a given `code_hash` for the runtime. The runtime can be supplied"] - #[doc = "later."] - #[doc = ""] - #[doc = "WARNING: This authorizes an upgrade that will take place without any safety checks, for"] - #[doc = "example that the spec name remains the same and that the version number increases. Not"] - #[doc = "recommended for normal use. Use `authorize_upgrade` instead."] - #[doc = ""] - #[doc = "This call requires Root origin."] - pub struct AuthorizeUpgradeWithoutChecks { - pub code_hash: authorize_upgrade_without_checks::CodeHash, - } - pub mod authorize_upgrade_without_checks { - use super::runtime_types; - pub type CodeHash = ::subxt::utils::H256; - } - impl ::subxt::blocks::StaticExtrinsic for AuthorizeUpgradeWithoutChecks { - const PALLET: &'static str = "System"; - const CALL: &'static str = "authorize_upgrade_without_checks"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Provide the preimage (runtime binary) `code` for an upgrade that has been authorized."] - #[doc = ""] - #[doc = "If the authorization required a version check, this call will ensure the spec name"] - #[doc = "remains unchanged and that the spec version has increased."] - #[doc = ""] - #[doc = "Depending on the runtime's `OnSetCode` configuration, this function may directly apply"] - #[doc = "the new `code` in the same block or attempt to schedule the upgrade."] - #[doc = ""] - #[doc = "All origins are allowed."] - pub struct ApplyAuthorizedUpgrade { - pub code: apply_authorized_upgrade::Code, - } - pub mod apply_authorized_upgrade { - use super::runtime_types; - pub type Code = ::std::vec::Vec<::core::primitive::u8>; - } - impl ::subxt::blocks::StaticExtrinsic for ApplyAuthorizedUpgrade { - const PALLET: &'static str = "System"; - const CALL: &'static str = "apply_authorized_upgrade"; - } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Make some on-chain remark."] - #[doc = ""] - #[doc = "Can be executed by every `origin`."] + #[doc = "See [`Pallet::remark`]."] pub fn remark( &self, remark: types::remark::Remark, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "System", "remark", types::Remark { remark }, @@ -4321,12 +4484,12 @@ pub mod api { ], ) } - #[doc = "Set the number of pages in the WebAssembly environment's heap."] + #[doc = "See [`Pallet::set_heap_pages`]."] pub fn set_heap_pages( &self, pages: types::set_heap_pages::Pages, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "System", "set_heap_pages", types::SetHeapPages { pages }, @@ -4338,12 +4501,12 @@ pub mod api { ], ) } - #[doc = "Set the new runtime code."] + #[doc = "See [`Pallet::set_code`]."] pub fn set_code( &self, code: types::set_code::Code, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "System", "set_code", types::SetCode { code }, @@ -4354,15 +4517,13 @@ pub mod api { ], ) } - #[doc = "Set the new runtime code without doing any checks of the given `code`."] - #[doc = ""] - #[doc = "Note that runtime upgrades will not run if this is called with a not-increasing spec"] - #[doc = "version!"] + #[doc = "See [`Pallet::set_code_without_checks`]."] pub fn set_code_without_checks( &self, code: types::set_code_without_checks::Code, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "System", "set_code_without_checks", types::SetCodeWithoutChecks { code }, @@ -4374,12 +4535,12 @@ pub mod api { ], ) } - #[doc = "Set some items of storage."] + #[doc = "See [`Pallet::set_storage`]."] pub fn set_storage( &self, items: types::set_storage::Items, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "System", "set_storage", types::SetStorage { items }, @@ -4391,12 +4552,12 @@ pub mod api { ], ) } - #[doc = "Kill some items from storage."] + #[doc = "See [`Pallet::kill_storage`]."] pub fn kill_storage( &self, keys: types::kill_storage::Keys, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "System", "kill_storage", types::KillStorage { keys }, @@ -4408,16 +4569,13 @@ pub mod api { ], ) } - #[doc = "Kill all storage items with a key that starts with the given prefix."] - #[doc = ""] - #[doc = "**NOTE:** We rely on the Root origin to provide us the number of subkeys under"] - #[doc = "the prefix we are removing to accurately calculate the weight of this function."] + #[doc = "See [`Pallet::kill_prefix`]."] pub fn kill_prefix( &self, prefix: types::kill_prefix::Prefix, subkeys: types::kill_prefix::Subkeys, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "System", "kill_prefix", types::KillPrefix { prefix, subkeys }, @@ -4429,12 +4587,12 @@ pub mod api { ], ) } - #[doc = "Make some on-chain remark and emit event."] + #[doc = "See [`Pallet::remark_with_event`]."] pub fn remark_with_event( &self, remark: types::remark_with_event::Remark, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "System", "remark_with_event", types::RemarkWithEvent { remark }, @@ -4445,74 +4603,6 @@ pub mod api { ], ) } - #[doc = "Authorize an upgrade to a given `code_hash` for the runtime. The runtime can be supplied"] - #[doc = "later."] - #[doc = ""] - #[doc = "This call requires Root origin."] - pub fn authorize_upgrade( - &self, - code_hash: types::authorize_upgrade::CodeHash, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "System", - "authorize_upgrade", - types::AuthorizeUpgrade { code_hash }, - [ - 4u8, 14u8, 76u8, 107u8, 209u8, 129u8, 9u8, 39u8, 193u8, 17u8, 84u8, - 254u8, 170u8, 214u8, 24u8, 155u8, 29u8, 184u8, 249u8, 241u8, 109u8, - 58u8, 145u8, 131u8, 109u8, 63u8, 38u8, 165u8, 107u8, 215u8, 217u8, - 172u8, - ], - ) - } - #[doc = "Authorize an upgrade to a given `code_hash` for the runtime. The runtime can be supplied"] - #[doc = "later."] - #[doc = ""] - #[doc = "WARNING: This authorizes an upgrade that will take place without any safety checks, for"] - #[doc = "example that the spec name remains the same and that the version number increases. Not"] - #[doc = "recommended for normal use. Use `authorize_upgrade` instead."] - #[doc = ""] - #[doc = "This call requires Root origin."] - pub fn authorize_upgrade_without_checks( - &self, - code_hash: types::authorize_upgrade_without_checks::CodeHash, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "System", - "authorize_upgrade_without_checks", - types::AuthorizeUpgradeWithoutChecks { code_hash }, - [ - 126u8, 126u8, 55u8, 26u8, 47u8, 55u8, 66u8, 8u8, 167u8, 18u8, 29u8, - 136u8, 146u8, 14u8, 189u8, 117u8, 16u8, 227u8, 162u8, 61u8, 149u8, - 197u8, 104u8, 184u8, 185u8, 161u8, 99u8, 154u8, 80u8, 125u8, 181u8, - 233u8, - ], - ) - } - #[doc = "Provide the preimage (runtime binary) `code` for an upgrade that has been authorized."] - #[doc = ""] - #[doc = "If the authorization required a version check, this call will ensure the spec name"] - #[doc = "remains unchanged and that the spec version has increased."] - #[doc = ""] - #[doc = "Depending on the runtime's `OnSetCode` configuration, this function may directly apply"] - #[doc = "the new `code` in the same block or attempt to schedule the upgrade."] - #[doc = ""] - #[doc = "All origins are allowed."] - pub fn apply_authorized_upgrade( - &self, - code: types::apply_authorized_upgrade::Code, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "System", - "apply_authorized_upgrade", - types::ApplyAuthorizedUpgrade { code }, - [ - 232u8, 107u8, 127u8, 38u8, 230u8, 29u8, 97u8, 4u8, 160u8, 191u8, 222u8, - 156u8, 245u8, 102u8, 196u8, 141u8, 44u8, 163u8, 98u8, 68u8, 125u8, - 32u8, 124u8, 101u8, 108u8, 93u8, 211u8, 52u8, 0u8, 231u8, 33u8, 227u8, - ], - ) - } } } #[doc = "Event for the System pallet."] @@ -4520,15 +4610,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "An extrinsic completed successfully."] pub struct ExtrinsicSuccess { pub dispatch_info: extrinsic_success::DispatchInfo, @@ -4537,20 +4627,20 @@ pub mod api { use super::runtime_types; pub type DispatchInfo = runtime_types::frame_support::dispatch::DispatchInfo; } - impl ::subxt::events::StaticEvent for ExtrinsicSuccess { + impl ::subxt::ext::subxt_core::events::StaticEvent for ExtrinsicSuccess { const PALLET: &'static str = "System"; const EVENT: &'static str = "ExtrinsicSuccess"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "An extrinsic failed."] pub struct ExtrinsicFailed { pub dispatch_error: extrinsic_failed::DispatchError, @@ -4561,80 +4651,80 @@ pub mod api { pub type DispatchError = runtime_types::sp_runtime::DispatchError; pub type DispatchInfo = runtime_types::frame_support::dispatch::DispatchInfo; } - impl ::subxt::events::StaticEvent for ExtrinsicFailed { + impl ::subxt::ext::subxt_core::events::StaticEvent for ExtrinsicFailed { const PALLET: &'static str = "System"; const EVENT: &'static str = "ExtrinsicFailed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "`:code` was updated."] pub struct CodeUpdated; - impl ::subxt::events::StaticEvent for CodeUpdated { + impl ::subxt::ext::subxt_core::events::StaticEvent for CodeUpdated { const PALLET: &'static str = "System"; const EVENT: &'static str = "CodeUpdated"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A new account was created."] pub struct NewAccount { pub account: new_account::Account, } pub mod new_account { use super::runtime_types; - pub type Account = ::subxt::utils::AccountId32; + pub type Account = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for NewAccount { + impl ::subxt::ext::subxt_core::events::StaticEvent for NewAccount { const PALLET: &'static str = "System"; const EVENT: &'static str = "NewAccount"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "An account was reaped."] pub struct KilledAccount { pub account: killed_account::Account, } pub mod killed_account { use super::runtime_types; - pub type Account = ::subxt::utils::AccountId32; + pub type Account = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for KilledAccount { + impl ::subxt::ext::subxt_core::events::StaticEvent for KilledAccount { const PALLET: &'static str = "System"; const EVENT: &'static str = "KilledAccount"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "On on-chain remark happened."] pub struct Remarked { pub sender: remarked::Sender, @@ -4642,37 +4732,13 @@ pub mod api { } pub mod remarked { use super::runtime_types; - pub type Sender = ::subxt::utils::AccountId32; - pub type Hash = ::subxt::utils::H256; + pub type Sender = ::subxt::ext::subxt_core::utils::AccountId32; + pub type Hash = ::subxt::ext::subxt_core::utils::H256; } - impl ::subxt::events::StaticEvent for Remarked { + impl ::subxt::ext::subxt_core::events::StaticEvent for Remarked { const PALLET: &'static str = "System"; const EVENT: &'static str = "Remarked"; } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "An upgrade was authorized."] - pub struct UpgradeAuthorized { - pub code_hash: upgrade_authorized::CodeHash, - pub check_version: upgrade_authorized::CheckVersion, - } - pub mod upgrade_authorized { - use super::runtime_types; - pub type CodeHash = ::subxt::utils::H256; - pub type CheckVersion = ::core::primitive::bool; - } - impl ::subxt::events::StaticEvent for UpgradeAuthorized { - const PALLET: &'static str = "System"; - const EVENT: &'static str = "UpgradeAuthorized"; - } } pub mod storage { use super::runtime_types; @@ -4684,16 +4750,12 @@ pub mod api { ::core::primitive::u32, runtime_types::pallet_balances::types::AccountData<::core::primitive::u128>, >; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod extrinsic_count { use super::runtime_types; pub type ExtrinsicCount = ::core::primitive::u32; } - pub mod inherents_applied { - use super::runtime_types; - pub type InherentsApplied = ::core::primitive::bool; - } pub mod block_weight { use super::runtime_types; pub type BlockWeight = runtime_types::frame_support::dispatch::PerDispatchClass< @@ -4706,12 +4768,13 @@ pub mod api { } pub mod block_hash { use super::runtime_types; - pub type BlockHash = ::subxt::utils::H256; + pub type BlockHash = ::subxt::ext::subxt_core::utils::H256; pub type Param0 = ::core::primitive::u32; } pub mod extrinsic_data { use super::runtime_types; - pub type ExtrinsicData = ::std::vec::Vec<::core::primitive::u8>; + pub type ExtrinsicData = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; pub type Param0 = ::core::primitive::u32; } pub mod number { @@ -4720,7 +4783,7 @@ pub mod api { } pub mod parent_hash { use super::runtime_types; - pub type ParentHash = ::subxt::utils::H256; + pub type ParentHash = ::subxt::ext::subxt_core::utils::H256; } pub mod digest { use super::runtime_types; @@ -4728,10 +4791,10 @@ pub mod api { } pub mod events { use super::runtime_types; - pub type Events = ::std::vec::Vec< + pub type Events = ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::frame_system::EventRecord< runtime_types::rococo_runtime::RuntimeEvent, - ::subxt::utils::H256, + ::subxt::ext::subxt_core::utils::H256, >, >; } @@ -4741,9 +4804,11 @@ pub mod api { } pub mod event_topics { use super::runtime_types; - pub type EventTopics = - ::std::vec::Vec<(::core::primitive::u32, ::core::primitive::u32)>; - pub type Param0 = ::subxt::utils::H256; + pub type EventTopics = ::subxt::ext::subxt_core::alloc::vec::Vec<( + ::core::primitive::u32, + ::core::primitive::u32, + )>; + pub type Param0 = ::subxt::ext::subxt_core::utils::H256; } pub mod last_runtime_upgrade { use super::runtime_types; @@ -4762,25 +4827,20 @@ pub mod api { use super::runtime_types; pub type ExecutionPhase = runtime_types::frame_system::Phase; } - pub mod authorized_upgrade { - use super::runtime_types; - pub type AuthorizedUpgrade = - runtime_types::frame_system::CodeUpgradeAuthorization; - } } pub struct StorageApi; impl StorageApi { #[doc = " The full account information for a particular account ID."] pub fn account_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::account::Account, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "System", "Account", (), @@ -4794,18 +4854,22 @@ pub mod api { #[doc = " The full account information for a particular account ID."] pub fn account( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::account::Param0, + >, types::account::Account, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "System", "Account", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 14u8, 233u8, 115u8, 214u8, 0u8, 109u8, 222u8, 121u8, 162u8, 65u8, 60u8, 175u8, 209u8, 79u8, 222u8, 124u8, 22u8, 235u8, 138u8, 176u8, 133u8, @@ -4816,14 +4880,14 @@ pub mod api { #[doc = " Total extrinsics count for the current block."] pub fn extrinsic_count( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::extrinsic_count::ExtrinsicCount, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "System", "ExtrinsicCount", (), @@ -4835,38 +4899,17 @@ pub mod api { ], ) } - #[doc = " Whether all inherents have been applied."] - pub fn inherents_applied( - &self, - ) -> ::subxt::storage::address::Address< - (), - types::inherents_applied::InherentsApplied, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "System", - "InherentsApplied", - (), - [ - 132u8, 249u8, 142u8, 252u8, 8u8, 103u8, 80u8, 120u8, 50u8, 6u8, 188u8, - 223u8, 101u8, 55u8, 165u8, 189u8, 172u8, 249u8, 165u8, 230u8, 183u8, - 109u8, 34u8, 65u8, 185u8, 150u8, 29u8, 8u8, 186u8, 129u8, 135u8, 239u8, - ], - ) - } #[doc = " The current weight for the block."] pub fn block_weight( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::block_weight::BlockWeight, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "System", "BlockWeight", (), @@ -4880,14 +4923,14 @@ pub mod api { #[doc = " Total length (in bytes) for all extrinsics put together, for the current block."] pub fn all_extrinsics_len( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::all_extrinsics_len::AllExtrinsicsLen, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "System", "AllExtrinsicsLen", (), @@ -4902,14 +4945,14 @@ pub mod api { #[doc = " Map of block numbers to block hashes."] pub fn block_hash_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::block_hash::BlockHash, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "System", "BlockHash", (), @@ -4924,18 +4967,22 @@ pub mod api { #[doc = " Map of block numbers to block hashes."] pub fn block_hash( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::block_hash::Param0, + >, types::block_hash::BlockHash, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "System", "BlockHash", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 217u8, 32u8, 215u8, 253u8, 24u8, 182u8, 207u8, 178u8, 157u8, 24u8, 103u8, 100u8, 195u8, 165u8, 69u8, 152u8, 112u8, 181u8, 56u8, 192u8, @@ -4947,14 +4994,14 @@ pub mod api { #[doc = " Extrinsics data for the current block (maps an extrinsic's index to its data)."] pub fn extrinsic_data_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::extrinsic_data::ExtrinsicData, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "System", "ExtrinsicData", (), @@ -4968,18 +5015,22 @@ pub mod api { #[doc = " Extrinsics data for the current block (maps an extrinsic's index to its data)."] pub fn extrinsic_data( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::extrinsic_data::Param0, + >, types::extrinsic_data::ExtrinsicData, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "System", "ExtrinsicData", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 160u8, 180u8, 122u8, 18u8, 196u8, 26u8, 2u8, 37u8, 115u8, 232u8, 133u8, 220u8, 106u8, 245u8, 4u8, 129u8, 42u8, 84u8, 241u8, 45u8, 199u8, 179u8, @@ -4990,14 +5041,14 @@ pub mod api { #[doc = " The current block number being processed. Set by `execute_block`."] pub fn number( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::number::Number, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "System", "Number", (), @@ -5011,14 +5062,14 @@ pub mod api { #[doc = " Hash of the previous block."] pub fn parent_hash( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::parent_hash::ParentHash, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "System", "ParentHash", (), @@ -5032,14 +5083,14 @@ pub mod api { #[doc = " Digest of the current block, also part of the block header."] pub fn digest( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::digest::Digest, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "System", "Digest", (), @@ -5059,36 +5110,36 @@ pub mod api { #[doc = " just in case someone still reads them from within the runtime."] pub fn events( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::events::Events, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "System", "Events", (), [ - 45u8, 244u8, 178u8, 49u8, 95u8, 31u8, 121u8, 90u8, 24u8, 201u8, 101u8, - 147u8, 242u8, 227u8, 121u8, 238u8, 126u8, 20u8, 227u8, 97u8, 123u8, - 195u8, 229u8, 245u8, 27u8, 158u8, 50u8, 231u8, 219u8, 54u8, 168u8, - 30u8, + 52u8, 237u8, 85u8, 54u8, 238u8, 212u8, 107u8, 140u8, 46u8, 226u8, + 212u8, 254u8, 94u8, 185u8, 110u8, 10u8, 52u8, 19u8, 52u8, 76u8, 50u8, + 110u8, 156u8, 8u8, 175u8, 172u8, 137u8, 145u8, 2u8, 163u8, 167u8, + 186u8, ], ) } #[doc = " The number of events in the `Events` list."] pub fn event_count( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::event_count::EventCount, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "System", "EventCount", (), @@ -5112,14 +5163,14 @@ pub mod api { #[doc = " no notification will be triggered thus the event might be lost."] pub fn event_topics_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::event_topics::EventTopics, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "System", "EventTopics", (), @@ -5142,18 +5193,22 @@ pub mod api { #[doc = " no notification will be triggered thus the event might be lost."] pub fn event_topics( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::event_topics::Param0, + >, types::event_topics::EventTopics, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "System", "EventTopics", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 40u8, 225u8, 14u8, 75u8, 44u8, 176u8, 76u8, 34u8, 143u8, 107u8, 69u8, 133u8, 114u8, 13u8, 172u8, 250u8, 141u8, 73u8, 12u8, 65u8, 217u8, 63u8, @@ -5164,14 +5219,14 @@ pub mod api { #[doc = " Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened."] pub fn last_runtime_upgrade( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::last_runtime_upgrade::LastRuntimeUpgrade, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "System", "LastRuntimeUpgrade", (), @@ -5185,14 +5240,14 @@ pub mod api { #[doc = " True if we have upgraded so that `type RefCount` is `u32`. False (default) if not."] pub fn upgraded_to_u32_ref_count( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::upgraded_to_u32_ref_count::UpgradedToU32RefCount, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "System", "UpgradedToU32RefCount", (), @@ -5207,14 +5262,14 @@ pub mod api { #[doc = " (default) if not."] pub fn upgraded_to_triple_ref_count( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::upgraded_to_triple_ref_count::UpgradedToTripleRefCount, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "System", "UpgradedToTripleRefCount", (), @@ -5229,14 +5284,14 @@ pub mod api { #[doc = " The execution phase of the block."] pub fn execution_phase( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::execution_phase::ExecutionPhase, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "System", "ExecutionPhase", (), @@ -5247,27 +5302,6 @@ pub mod api { ], ) } - #[doc = " `Some` if a code upgrade has been authorized."] - pub fn authorized_upgrade( - &self, - ) -> ::subxt::storage::address::Address< - (), - types::authorized_upgrade::AuthorizedUpgrade, - ::subxt::storage::address::Yes, - (), - (), - > { - ::subxt::storage::address::Address::new_static( - "System", - "AuthorizedUpgrade", - (), - [ - 165u8, 97u8, 27u8, 138u8, 2u8, 28u8, 55u8, 92u8, 96u8, 96u8, 168u8, - 169u8, 55u8, 178u8, 44u8, 127u8, 58u8, 140u8, 206u8, 178u8, 1u8, 37u8, - 214u8, 213u8, 251u8, 123u8, 5u8, 111u8, 90u8, 148u8, 217u8, 135u8, - ], - ) - } } } pub mod constants { @@ -5277,9 +5311,10 @@ pub mod api { #[doc = " Block & extrinsics weights: base values and limits."] pub fn block_weights( &self, - ) -> ::subxt::constants::Address - { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address< + runtime_types::frame_system::limits::BlockWeights, + > { + ::subxt::ext::subxt_core::constants::Address::new_static( "System", "BlockWeights", [ @@ -5292,9 +5327,10 @@ pub mod api { #[doc = " The maximum length of a block (in bytes)."] pub fn block_length( &self, - ) -> ::subxt::constants::Address - { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address< + runtime_types::frame_system::limits::BlockLength, + > { + ::subxt::ext::subxt_core::constants::Address::new_static( "System", "BlockLength", [ @@ -5307,8 +5343,9 @@ pub mod api { #[doc = " Maximum number of block number to block hash mappings to keep (oldest pruned first)."] pub fn block_hash_count( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "System", "BlockHashCount", [ @@ -5322,9 +5359,10 @@ pub mod api { #[doc = " The weight of runtime database operations the runtime can invoke."] pub fn db_weight( &self, - ) -> ::subxt::constants::Address - { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address< + runtime_types::sp_weights::RuntimeDbWeight, + > { + ::subxt::ext::subxt_core::constants::Address::new_static( "System", "DbWeight", [ @@ -5335,12 +5373,13 @@ pub mod api { ], ) } - #[doc = " Get the chain's in-code version."] + #[doc = " Get the chain's current version."] pub fn version( &self, - ) -> ::subxt::constants::Address - { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address< + runtime_types::sp_version::RuntimeVersion, + > { + ::subxt::ext::subxt_core::constants::Address::new_static( "System", "Version", [ @@ -5356,8 +5395,11 @@ pub mod api { #[doc = " This replaces the \"ss58Format\" property declared in the chain spec. Reason is"] #[doc = " that the runtime should know about the prefix in order to make use of it as"] #[doc = " an identifier of the chain."] - pub fn ss58_prefix(&self) -> ::subxt::constants::Address<::core::primitive::u16> { - ::subxt::constants::Address::new_static( + pub fn ss58_prefix( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u16> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "System", "SS58Prefix", [ @@ -5384,22 +5426,24 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Report authority equivocation/misbehavior. This method will verify"] - #[doc = "the equivocation proof and validate the given key ownership proof"] - #[doc = "against the extracted offender. If both are valid, the offence will"] - #[doc = "be reported."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::report_equivocation`]."] pub struct ReportEquivocation { - pub equivocation_proof: - ::std::boxed::Box, + pub equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< + report_equivocation::EquivocationProof, + >, pub key_owner_proof: report_equivocation::KeyOwnerProof, } pub mod report_equivocation { @@ -5413,31 +5457,29 @@ pub mod api { >; pub type KeyOwnerProof = runtime_types::sp_session::MembershipProof; } - impl ::subxt::blocks::StaticExtrinsic for ReportEquivocation { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ReportEquivocation { const PALLET: &'static str = "Babe"; const CALL: &'static str = "report_equivocation"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Report authority equivocation/misbehavior. This method will verify"] - #[doc = "the equivocation proof and validate the given key ownership proof"] - #[doc = "against the extracted offender. If both are valid, the offence will"] - #[doc = "be reported."] - #[doc = "This extrinsic must be called unsigned and it is expected that only"] - #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] - #[doc = "if the block author is defined it will be defined as the equivocation"] - #[doc = "reporter."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::report_equivocation_unsigned`]."] pub struct ReportEquivocationUnsigned { - pub equivocation_proof: - ::std::boxed::Box, + pub equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< + report_equivocation_unsigned::EquivocationProof, + >, pub key_owner_proof: report_equivocation_unsigned::KeyOwnerProof, } pub mod report_equivocation_unsigned { @@ -5451,24 +5493,25 @@ pub mod api { >; pub type KeyOwnerProof = runtime_types::sp_session::MembershipProof; } - impl ::subxt::blocks::StaticExtrinsic for ReportEquivocationUnsigned { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ReportEquivocationUnsigned { const PALLET: &'static str = "Babe"; const CALL: &'static str = "report_equivocation_unsigned"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Plan an epoch config change. The epoch config change is recorded and will be enacted on"] - #[doc = "the next call to `enact_epoch_change`. The config will be activated one epoch after."] - #[doc = "Multiple calls to this method will replace any existing planned config change that had"] - #[doc = "not been enacted yet."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::plan_config_change`]."] pub struct PlanConfigChange { pub config: plan_config_change::Config, } @@ -5477,27 +5520,27 @@ pub mod api { pub type Config = runtime_types::sp_consensus_babe::digests::NextConfigDescriptor; } - impl ::subxt::blocks::StaticExtrinsic for PlanConfigChange { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for PlanConfigChange { const PALLET: &'static str = "Babe"; const CALL: &'static str = "plan_config_change"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Report authority equivocation/misbehavior. This method will verify"] - #[doc = "the equivocation proof and validate the given key ownership proof"] - #[doc = "against the extracted offender. If both are valid, the offence will"] - #[doc = "be reported."] + #[doc = "See [`Pallet::report_equivocation`]."] pub fn report_equivocation( &self, equivocation_proof: types::report_equivocation::EquivocationProof, key_owner_proof: types::report_equivocation::KeyOwnerProof, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Babe", "report_equivocation", types::ReportEquivocation { - equivocation_proof: ::std::boxed::Box::new(equivocation_proof), + equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box::new( + equivocation_proof, + ), key_owner_proof, }, [ @@ -5508,24 +5551,20 @@ pub mod api { ], ) } - #[doc = "Report authority equivocation/misbehavior. This method will verify"] - #[doc = "the equivocation proof and validate the given key ownership proof"] - #[doc = "against the extracted offender. If both are valid, the offence will"] - #[doc = "be reported."] - #[doc = "This extrinsic must be called unsigned and it is expected that only"] - #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] - #[doc = "if the block author is defined it will be defined as the equivocation"] - #[doc = "reporter."] + #[doc = "See [`Pallet::report_equivocation_unsigned`]."] pub fn report_equivocation_unsigned( &self, equivocation_proof: types::report_equivocation_unsigned::EquivocationProof, key_owner_proof: types::report_equivocation_unsigned::KeyOwnerProof, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Babe", "report_equivocation_unsigned", types::ReportEquivocationUnsigned { - equivocation_proof: ::std::boxed::Box::new(equivocation_proof), + equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box::new( + equivocation_proof, + ), key_owner_proof, }, [ @@ -5535,15 +5574,13 @@ pub mod api { ], ) } - #[doc = "Plan an epoch config change. The epoch config change is recorded and will be enacted on"] - #[doc = "the next call to `enact_epoch_change`. The config will be activated one epoch after."] - #[doc = "Multiple calls to this method will replace any existing planned config change that had"] - #[doc = "not been enacted yet."] + #[doc = "See [`Pallet::plan_config_change`]."] pub fn plan_config_change( &self, config: types::plan_config_change::Config, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Babe", "plan_config_change", types::PlanConfigChange { config }, @@ -5568,7 +5605,7 @@ pub mod api { pub mod authorities { use super::runtime_types; pub type Authorities = - runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec<( + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec2<( runtime_types::sp_consensus_babe::app::Public, ::core::primitive::u64, )>; @@ -5597,7 +5634,7 @@ pub mod api { pub mod next_authorities { use super::runtime_types; pub type NextAuthorities = - runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec<( + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec2<( runtime_types::sp_consensus_babe::app::Public, ::core::primitive::u64, )>; @@ -5609,7 +5646,7 @@ pub mod api { pub mod under_construction { use super::runtime_types; pub type UnderConstruction = - runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::bounded_collections::bounded_vec::BoundedVec6< [::core::primitive::u8; 32usize], >; pub type Param0 = ::core::primitive::u32; @@ -5645,7 +5682,7 @@ pub mod api { pub mod skipped_epochs { use super::runtime_types; pub type SkippedEpochs = - runtime_types::bounded_collections::bounded_vec::BoundedVec<( + runtime_types::bounded_collections::bounded_vec::BoundedVec7<( ::core::primitive::u64, ::core::primitive::u32, )>; @@ -5656,14 +5693,14 @@ pub mod api { #[doc = " Current epoch index."] pub fn epoch_index( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::epoch_index::EpochIndex, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Babe", "EpochIndex", (), @@ -5678,14 +5715,14 @@ pub mod api { #[doc = " Current epoch authorities."] pub fn authorities( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::authorities::Authorities, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Babe", "Authorities", (), @@ -5701,14 +5738,14 @@ pub mod api { #[doc = " until the first block of the chain."] pub fn genesis_slot( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::genesis_slot::GenesisSlot, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Babe", "GenesisSlot", (), @@ -5723,14 +5760,14 @@ pub mod api { #[doc = " Current slot number."] pub fn current_slot( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::current_slot::CurrentSlot, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Babe", "CurrentSlot", (), @@ -5754,14 +5791,14 @@ pub mod api { #[doc = " adversary, for purposes such as public-coin zero-knowledge proofs."] pub fn randomness( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::randomness::Randomness, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Babe", "Randomness", (), @@ -5776,14 +5813,14 @@ pub mod api { #[doc = " Pending epoch configuration change that will be applied when the next epoch is enacted."] pub fn pending_epoch_config_change( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::pending_epoch_config_change::PendingEpochConfigChange, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Babe", "PendingEpochConfigChange", (), @@ -5797,14 +5834,14 @@ pub mod api { #[doc = " Next epoch randomness."] pub fn next_randomness( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::next_randomness::NextRandomness, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Babe", "NextRandomness", (), @@ -5818,14 +5855,14 @@ pub mod api { #[doc = " Next epoch authorities."] pub fn next_authorities( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::next_authorities::NextAuthorities, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Babe", "NextAuthorities", (), @@ -5848,14 +5885,14 @@ pub mod api { #[doc = " epoch."] pub fn segment_index( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::segment_index::SegmentIndex, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Babe", "SegmentIndex", (), @@ -5870,14 +5907,14 @@ pub mod api { #[doc = " TWOX-NOTE: `SegmentIndex` is an increasing integer, so this is okay."] pub fn under_construction_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::under_construction::UnderConstruction, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Babe", "UnderConstruction", (), @@ -5891,18 +5928,22 @@ pub mod api { #[doc = " TWOX-NOTE: `SegmentIndex` is an increasing integer, so this is okay."] pub fn under_construction( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::under_construction::Param0, + >, types::under_construction::UnderConstruction, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Babe", "UnderConstruction", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 120u8, 120u8, 59u8, 247u8, 50u8, 6u8, 220u8, 14u8, 2u8, 76u8, 203u8, 244u8, 232u8, 144u8, 253u8, 191u8, 101u8, 35u8, 99u8, 85u8, 111u8, @@ -5914,22 +5955,21 @@ pub mod api { #[doc = " if per-block initialization has already been called for current block."] pub fn initialized( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::initialized::Initialized, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Babe", "Initialized", (), [ - 169u8, 217u8, 237u8, 78u8, 186u8, 202u8, 206u8, 213u8, 54u8, 85u8, - 206u8, 166u8, 22u8, 138u8, 236u8, 60u8, 211u8, 169u8, 12u8, 183u8, - 23u8, 69u8, 194u8, 236u8, 112u8, 21u8, 62u8, 219u8, 92u8, 131u8, 134u8, - 145u8, + 137u8, 31u8, 4u8, 130u8, 35u8, 232u8, 67u8, 108u8, 17u8, 123u8, 26u8, + 96u8, 238u8, 95u8, 138u8, 208u8, 163u8, 83u8, 218u8, 143u8, 8u8, 119u8, + 138u8, 130u8, 9u8, 194u8, 92u8, 40u8, 7u8, 89u8, 53u8, 237u8, ], ) } @@ -5939,14 +5979,14 @@ pub mod api { #[doc = " It is set in `on_finalize`, before it will contain the value from the last block."] pub fn author_vrf_randomness( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::author_vrf_randomness::AuthorVrfRandomness, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Babe", "AuthorVrfRandomness", (), @@ -5965,14 +6005,14 @@ pub mod api { #[doc = " slots, which may be skipped, the block numbers may not line up with the slot numbers."] pub fn epoch_start( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::epoch_start::EpochStart, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Babe", "EpochStart", (), @@ -5991,14 +6031,14 @@ pub mod api { #[doc = " execution context should always yield zero."] pub fn lateness( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::lateness::Lateness, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Babe", "Lateness", (), @@ -6014,14 +6054,14 @@ pub mod api { #[doc = " genesis."] pub fn epoch_config( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::epoch_config::EpochConfig, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Babe", "EpochConfig", (), @@ -6037,14 +6077,14 @@ pub mod api { #[doc = " (you can fallback to `EpochConfig` instead in that case)."] pub fn next_epoch_config( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::next_epoch_config::NextEpochConfig, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Babe", "NextEpochConfig", (), @@ -6066,14 +6106,14 @@ pub mod api { #[doc = " active epoch index was during that session."] pub fn skipped_epochs( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::skipped_epochs::SkippedEpochs, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Babe", "SkippedEpochs", (), @@ -6095,8 +6135,9 @@ pub mod api { #[doc = " the chain has started. Attempting to do so will brick block production."] pub fn epoch_duration( &self, - ) -> ::subxt::constants::Address<::core::primitive::u64> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u64> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Babe", "EpochDuration", [ @@ -6114,8 +6155,9 @@ pub mod api { #[doc = " the probability of a slot being empty)."] pub fn expected_block_time( &self, - ) -> ::subxt::constants::Address<::core::primitive::u64> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u64> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Babe", "ExpectedBlockTime", [ @@ -6129,8 +6171,9 @@ pub mod api { #[doc = " Max number of authorities allowed"] pub fn max_authorities( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Babe", "MaxAuthorities", [ @@ -6144,8 +6187,9 @@ pub mod api { #[doc = " The maximum number of nominators for each validator."] pub fn max_nominators( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Babe", "MaxNominators", [ @@ -6171,34 +6215,20 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the current time."] - #[doc = ""] - #[doc = "This call should be invoked exactly once per block. It will panic at the finalization"] - #[doc = "phase, if this call hasn't been invoked by that time."] - #[doc = ""] - #[doc = "The timestamp should be greater than the previous one by the amount specified by"] - #[doc = "[`Config::MinimumPeriod`]."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _None_."] - #[doc = ""] - #[doc = "This dispatch class is _Mandatory_ to ensure it gets executed in the block. Be aware"] - #[doc = "that changing the complexity of this call could result exhausting the resources in a"] - #[doc = "block to execute any other calls."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)` (Note that implementations of `OnTimestampSet` must also be `O(1)`)"] - #[doc = "- 1 storage read and 1 storage mutation (codec `O(1)` because of `DidUpdate::take` in"] - #[doc = " `on_finalize`)"] - #[doc = "- 1 event handler `on_timestamp_set`. Must be `O(1)`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set`]."] pub struct Set { #[codec(compact)] pub now: set::Now, @@ -6207,34 +6237,19 @@ pub mod api { use super::runtime_types; pub type Now = ::core::primitive::u64; } - impl ::subxt::blocks::StaticExtrinsic for Set { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Set { const PALLET: &'static str = "Timestamp"; const CALL: &'static str = "set"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Set the current time."] - #[doc = ""] - #[doc = "This call should be invoked exactly once per block. It will panic at the finalization"] - #[doc = "phase, if this call hasn't been invoked by that time."] - #[doc = ""] - #[doc = "The timestamp should be greater than the previous one by the amount specified by"] - #[doc = "[`Config::MinimumPeriod`]."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _None_."] - #[doc = ""] - #[doc = "This dispatch class is _Mandatory_ to ensure it gets executed in the block. Be aware"] - #[doc = "that changing the complexity of this call could result exhausting the resources in a"] - #[doc = "block to execute any other calls."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)` (Note that implementations of `OnTimestampSet` must also be `O(1)`)"] - #[doc = "- 1 storage read and 1 storage mutation (codec `O(1)` because of `DidUpdate::take` in"] - #[doc = " `on_finalize`)"] - #[doc = "- 1 event handler `on_timestamp_set`. Must be `O(1)`."] - pub fn set(&self, now: types::set::Now) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + #[doc = "See [`Pallet::set`]."] + pub fn set( + &self, + now: types::set::Now, + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Timestamp", "set", types::Set { now }, @@ -6265,14 +6280,14 @@ pub mod api { #[doc = " The current time for the current block."] pub fn now( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::now::Now, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Timestamp", "Now", (), @@ -6289,14 +6304,14 @@ pub mod api { #[doc = " It is then checked at the end of each block execution in the `on_finalize` hook."] pub fn did_update( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::did_update::DidUpdate, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Timestamp", "DidUpdate", (), @@ -6322,8 +6337,9 @@ pub mod api { #[doc = " period on default settings."] pub fn minimum_period( &self, - ) -> ::subxt::constants::Address<::core::primitive::u64> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u64> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Timestamp", "MinimumPeriod", [ @@ -6351,27 +6367,20 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Assign an previously unassigned index."] - #[doc = ""] - #[doc = "Payment: `Deposit` is reserved from the sender account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `index`: the index to be claimed. This must not be in use."] - #[doc = ""] - #[doc = "Emits `IndexAssigned` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::claim`]."] pub struct Claim { pub index: claim::Index, } @@ -6379,67 +6388,56 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for Claim { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Claim { const PALLET: &'static str = "Indices"; const CALL: &'static str = "claim"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Assign an index already owned by the sender to another account. The balance reservation"] - #[doc = "is effectively transferred to the new account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `index`: the index to be re-assigned. This must be owned by the sender."] - #[doc = "- `new`: the new owner of the index. This function is a no-op if it is equal to sender."] - #[doc = ""] - #[doc = "Emits `IndexAssigned` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::transfer`]."] pub struct Transfer { pub new: transfer::New, pub index: transfer::Index, } pub mod transfer { use super::runtime_types; - pub type New = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type New = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type Index = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for Transfer { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Transfer { const PALLET: &'static str = "Indices"; const CALL: &'static str = "transfer"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Free up an index owned by the sender."] - #[doc = ""] - #[doc = "Payment: Any previous deposit placed for the index is unreserved in the sender account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must own the index."] - #[doc = ""] - #[doc = "- `index`: the index to be freed. This must be owned by the sender."] - #[doc = ""] - #[doc = "Emits `IndexFreed` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::free`]."] pub struct Free { pub index: free::Index, } @@ -6447,33 +6445,25 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for Free { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Free { const PALLET: &'static str = "Indices"; const CALL: &'static str = "free"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Force an index to an account. This doesn't require a deposit. If the index is already"] - #[doc = "held, then any deposit is reimbursed to its current owner."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] - #[doc = ""] - #[doc = "- `index`: the index to be (re-)assigned."] - #[doc = "- `new`: the new owner of the index. This function is a no-op if it is equal to sender."] - #[doc = "- `freeze`: if set to `true`, will freeze the index so it cannot be transferred."] - #[doc = ""] - #[doc = "Emits `IndexAssigned` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_transfer`]."] pub struct ForceTransfer { pub new: force_transfer::New, pub index: force_transfer::Index, @@ -6481,36 +6471,32 @@ pub mod api { } pub mod force_transfer { use super::runtime_types; - pub type New = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type New = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type Index = ::core::primitive::u32; pub type Freeze = ::core::primitive::bool; } - impl ::subxt::blocks::StaticExtrinsic for ForceTransfer { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceTransfer { const PALLET: &'static str = "Indices"; const CALL: &'static str = "force_transfer"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Freeze an index so it will always point to the sender account. This consumes the"] - #[doc = "deposit."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the signing account must have a"] - #[doc = "non-frozen account `index`."] - #[doc = ""] - #[doc = "- `index`: the index to be frozen in place."] - #[doc = ""] - #[doc = "Emits `IndexFrozen` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::freeze`]."] pub struct Freeze { pub index: freeze::Index, } @@ -6518,30 +6504,19 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for Freeze { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Freeze { const PALLET: &'static str = "Indices"; const CALL: &'static str = "freeze"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Assign an previously unassigned index."] - #[doc = ""] - #[doc = "Payment: `Deposit` is reserved from the sender account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `index`: the index to be claimed. This must not be in use."] - #[doc = ""] - #[doc = "Emits `IndexAssigned` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::claim`]."] pub fn claim( &self, index: types::claim::Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Indices", "claim", types::Claim { index }, @@ -6552,24 +6527,13 @@ pub mod api { ], ) } - #[doc = "Assign an index already owned by the sender to another account. The balance reservation"] - #[doc = "is effectively transferred to the new account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `index`: the index to be re-assigned. This must be owned by the sender."] - #[doc = "- `new`: the new owner of the index. This function is a no-op if it is equal to sender."] - #[doc = ""] - #[doc = "Emits `IndexAssigned` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::transfer`]."] pub fn transfer( &self, new: types::transfer::New, index: types::transfer::Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Indices", "transfer", types::Transfer { new, index }, @@ -6581,20 +6545,12 @@ pub mod api { ], ) } - #[doc = "Free up an index owned by the sender."] - #[doc = ""] - #[doc = "Payment: Any previous deposit placed for the index is unreserved in the sender account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must own the index."] - #[doc = ""] - #[doc = "- `index`: the index to be freed. This must be owned by the sender."] - #[doc = ""] - #[doc = "Emits `IndexFreed` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] - pub fn free(&self, index: types::free::Index) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + #[doc = "See [`Pallet::free`]."] + pub fn free( + &self, + index: types::free::Index, + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Indices", "free", types::Free { index }, @@ -6606,26 +6562,14 @@ pub mod api { ], ) } - #[doc = "Force an index to an account. This doesn't require a deposit. If the index is already"] - #[doc = "held, then any deposit is reimbursed to its current owner."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] - #[doc = ""] - #[doc = "- `index`: the index to be (re-)assigned."] - #[doc = "- `new`: the new owner of the index. This function is a no-op if it is equal to sender."] - #[doc = "- `freeze`: if set to `true`, will freeze the index so it cannot be transferred."] - #[doc = ""] - #[doc = "Emits `IndexAssigned` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::force_transfer`]."] pub fn force_transfer( &self, new: types::force_transfer::New, index: types::force_transfer::Index, freeze: types::force_transfer::Freeze, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Indices", "force_transfer", types::ForceTransfer { new, index, freeze }, @@ -6637,23 +6581,12 @@ pub mod api { ], ) } - #[doc = "Freeze an index so it will always point to the sender account. This consumes the"] - #[doc = "deposit."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the signing account must have a"] - #[doc = "non-frozen account `index`."] - #[doc = ""] - #[doc = "- `index`: the index to be frozen in place."] - #[doc = ""] - #[doc = "Emits `IndexFrozen` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::freeze`]."] pub fn freeze( &self, index: types::freeze::Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Indices", "freeze", types::Freeze { index }, @@ -6672,15 +6605,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A account index was assigned."] pub struct IndexAssigned { pub who: index_assigned::Who, @@ -6688,23 +6621,23 @@ pub mod api { } pub mod index_assigned { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Index = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for IndexAssigned { + impl ::subxt::ext::subxt_core::events::StaticEvent for IndexAssigned { const PALLET: &'static str = "Indices"; const EVENT: &'static str = "IndexAssigned"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A account index has been freed up (unassigned)."] pub struct IndexFreed { pub index: index_freed::Index, @@ -6713,20 +6646,20 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for IndexFreed { + impl ::subxt::ext::subxt_core::events::StaticEvent for IndexFreed { const PALLET: &'static str = "Indices"; const EVENT: &'static str = "IndexFreed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A account index has been frozen to its current account ID."] pub struct IndexFrozen { pub index: index_frozen::Index, @@ -6735,9 +6668,9 @@ pub mod api { pub mod index_frozen { use super::runtime_types; pub type Index = ::core::primitive::u32; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for IndexFrozen { + impl ::subxt::ext::subxt_core::events::StaticEvent for IndexFrozen { const PALLET: &'static str = "Indices"; const EVENT: &'static str = "IndexFrozen"; } @@ -6749,7 +6682,7 @@ pub mod api { pub mod accounts { use super::runtime_types; pub type Accounts = ( - ::subxt::utils::AccountId32, + ::subxt::ext::subxt_core::utils::AccountId32, ::core::primitive::u128, ::core::primitive::bool, ); @@ -6761,14 +6694,14 @@ pub mod api { #[doc = " The lookup from index to account."] pub fn accounts_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::accounts::Accounts, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Indices", "Accounts", (), @@ -6783,18 +6716,22 @@ pub mod api { #[doc = " The lookup from index to account."] pub fn accounts( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::accounts::Param0, + >, types::accounts::Accounts, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Indices", "Accounts", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 48u8, 189u8, 43u8, 119u8, 32u8, 168u8, 28u8, 12u8, 245u8, 81u8, 119u8, 182u8, 23u8, 201u8, 33u8, 147u8, 128u8, 171u8, 155u8, 134u8, 71u8, @@ -6810,8 +6747,11 @@ pub mod api { pub struct ConstantsApi; impl ConstantsApi { #[doc = " The deposit needed for reserving an index."] - pub fn deposit(&self) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + pub fn deposit( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Indices", "Deposit", [ @@ -6838,22 +6778,20 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Transfer some liquid free balance to another account."] - #[doc = ""] - #[doc = "`transfer_allow_death` will set the `FreeBalance` of the sender and receiver."] - #[doc = "If the sender's account is below the existential deposit as a result"] - #[doc = "of the transfer, the account will be reaped."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be `Signed` by the transactor."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::transfer_allow_death`]."] pub struct TransferAllowDeath { pub dest: transfer_allow_death::Dest, #[codec(compact)] @@ -6861,25 +6799,31 @@ pub mod api { } pub mod transfer_allow_death { use super::runtime_types; - pub type Dest = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Dest = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type Value = ::core::primitive::u128; } - impl ::subxt::blocks::StaticExtrinsic for TransferAllowDeath { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for TransferAllowDeath { const PALLET: &'static str = "Balances"; const CALL: &'static str = "transfer_allow_death"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Exactly as `transfer_allow_death`, except the origin must be root and the source account"] - #[doc = "may be specified."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_transfer`]."] pub struct ForceTransfer { pub source: force_transfer::Source, pub dest: force_transfer::Dest, @@ -6888,30 +6832,35 @@ pub mod api { } pub mod force_transfer { use super::runtime_types; - pub type Source = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; - pub type Dest = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Source = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; + pub type Dest = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type Value = ::core::primitive::u128; } - impl ::subxt::blocks::StaticExtrinsic for ForceTransfer { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceTransfer { const PALLET: &'static str = "Balances"; const CALL: &'static str = "force_transfer"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Same as the [`transfer_allow_death`] call, but with a check that the transfer will not"] - #[doc = "kill the origin account."] - #[doc = ""] - #[doc = "99% of the time you want [`transfer_allow_death`] instead."] - #[doc = ""] - #[doc = "[`transfer_allow_death`]: struct.Pallet.html#method.transfer"] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::transfer_keep_alive`]."] pub struct TransferKeepAlive { pub dest: transfer_keep_alive::Dest, #[codec(compact)] @@ -6919,119 +6868,121 @@ pub mod api { } pub mod transfer_keep_alive { use super::runtime_types; - pub type Dest = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Dest = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type Value = ::core::primitive::u128; } - impl ::subxt::blocks::StaticExtrinsic for TransferKeepAlive { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for TransferKeepAlive { const PALLET: &'static str = "Balances"; const CALL: &'static str = "transfer_keep_alive"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Transfer the entire transferable balance from the caller account."] - #[doc = ""] - #[doc = "NOTE: This function only attempts to transfer _transferable_ balances. This means that"] - #[doc = "any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be"] - #[doc = "transferred by this function. To ensure that this function results in a killed account,"] - #[doc = "you might need to prepare the account by removing any reference counters, storage"] - #[doc = "deposits, etc..."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be Signed."] - #[doc = ""] - #[doc = "- `dest`: The recipient of the transfer."] - #[doc = "- `keep_alive`: A boolean to determine if the `transfer_all` operation should send all"] - #[doc = " of the funds the account has, causing the sender account to be killed (false), or"] - #[doc = " transfer everything except at least the existential deposit, which will guarantee to"] - #[doc = " keep the sender account alive (true)."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::transfer_all`]."] pub struct TransferAll { pub dest: transfer_all::Dest, pub keep_alive: transfer_all::KeepAlive, } pub mod transfer_all { use super::runtime_types; - pub type Dest = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Dest = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type KeepAlive = ::core::primitive::bool; } - impl ::subxt::blocks::StaticExtrinsic for TransferAll { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for TransferAll { const PALLET: &'static str = "Balances"; const CALL: &'static str = "transfer_all"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Unreserve some balance from a user by force."] - #[doc = ""] - #[doc = "Can only be called by ROOT."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_unreserve`]."] pub struct ForceUnreserve { pub who: force_unreserve::Who, pub amount: force_unreserve::Amount, } pub mod force_unreserve { use super::runtime_types; - pub type Who = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Who = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type Amount = ::core::primitive::u128; } - impl ::subxt::blocks::StaticExtrinsic for ForceUnreserve { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceUnreserve { const PALLET: &'static str = "Balances"; const CALL: &'static str = "force_unreserve"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Upgrade a specified account."] - #[doc = ""] - #[doc = "- `origin`: Must be `Signed`."] - #[doc = "- `who`: The account to be upgraded."] - #[doc = ""] - #[doc = "This will waive the transaction fee if at least all but 10% of the accounts needed to"] - #[doc = "be upgraded. (We let some not have to be upgraded just in order to allow for the"] - #[doc = "possibililty of churn)."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::upgrade_accounts`]."] pub struct UpgradeAccounts { pub who: upgrade_accounts::Who, } pub mod upgrade_accounts { use super::runtime_types; - pub type Who = ::std::vec::Vec<::subxt::utils::AccountId32>; + pub type Who = ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >; } - impl ::subxt::blocks::StaticExtrinsic for UpgradeAccounts { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for UpgradeAccounts { const PALLET: &'static str = "Balances"; const CALL: &'static str = "upgrade_accounts"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the regular balance of a given account."] - #[doc = ""] - #[doc = "The dispatch origin for this call is `root`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_set_balance`]."] pub struct ForceSetBalance { pub who: force_set_balance::Who, #[codec(compact)] @@ -7039,58 +6990,27 @@ pub mod api { } pub mod force_set_balance { use super::runtime_types; - pub type Who = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Who = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type NewFree = ::core::primitive::u128; } - impl ::subxt::blocks::StaticExtrinsic for ForceSetBalance { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceSetBalance { const PALLET: &'static str = "Balances"; const CALL: &'static str = "force_set_balance"; } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Adjust the total issuance in a saturating way."] - #[doc = ""] - #[doc = "Can only be called by root and always needs a positive `delta`."] - #[doc = ""] - #[doc = "# Example"] - pub struct ForceAdjustTotalIssuance { - pub direction: force_adjust_total_issuance::Direction, - #[codec(compact)] - pub delta: force_adjust_total_issuance::Delta, - } - pub mod force_adjust_total_issuance { - use super::runtime_types; - pub type Direction = runtime_types::pallet_balances::types::AdjustmentDirection; - pub type Delta = ::core::primitive::u128; - } - impl ::subxt::blocks::StaticExtrinsic for ForceAdjustTotalIssuance { - const PALLET: &'static str = "Balances"; - const CALL: &'static str = "force_adjust_total_issuance"; - } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Transfer some liquid free balance to another account."] - #[doc = ""] - #[doc = "`transfer_allow_death` will set the `FreeBalance` of the sender and receiver."] - #[doc = "If the sender's account is below the existential deposit as a result"] - #[doc = "of the transfer, the account will be reaped."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be `Signed` by the transactor."] + #[doc = "See [`Pallet::transfer_allow_death`]."] pub fn transfer_allow_death( &self, dest: types::transfer_allow_death::Dest, value: types::transfer_allow_death::Value, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Balances", "transfer_allow_death", types::TransferAllowDeath { dest, value }, @@ -7102,15 +7022,14 @@ pub mod api { ], ) } - #[doc = "Exactly as `transfer_allow_death`, except the origin must be root and the source account"] - #[doc = "may be specified."] + #[doc = "See [`Pallet::force_transfer`]."] pub fn force_transfer( &self, source: types::force_transfer::Source, dest: types::force_transfer::Dest, value: types::force_transfer::Value, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Balances", "force_transfer", types::ForceTransfer { @@ -7125,18 +7044,14 @@ pub mod api { ], ) } - #[doc = "Same as the [`transfer_allow_death`] call, but with a check that the transfer will not"] - #[doc = "kill the origin account."] - #[doc = ""] - #[doc = "99% of the time you want [`transfer_allow_death`] instead."] - #[doc = ""] - #[doc = "[`transfer_allow_death`]: struct.Pallet.html#method.transfer"] + #[doc = "See [`Pallet::transfer_keep_alive`]."] pub fn transfer_keep_alive( &self, dest: types::transfer_keep_alive::Dest, value: types::transfer_keep_alive::Value, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Balances", "transfer_keep_alive", types::TransferKeepAlive { dest, value }, @@ -7147,27 +7062,13 @@ pub mod api { ], ) } - #[doc = "Transfer the entire transferable balance from the caller account."] - #[doc = ""] - #[doc = "NOTE: This function only attempts to transfer _transferable_ balances. This means that"] - #[doc = "any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be"] - #[doc = "transferred by this function. To ensure that this function results in a killed account,"] - #[doc = "you might need to prepare the account by removing any reference counters, storage"] - #[doc = "deposits, etc..."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be Signed."] - #[doc = ""] - #[doc = "- `dest`: The recipient of the transfer."] - #[doc = "- `keep_alive`: A boolean to determine if the `transfer_all` operation should send all"] - #[doc = " of the funds the account has, causing the sender account to be killed (false), or"] - #[doc = " transfer everything except at least the existential deposit, which will guarantee to"] - #[doc = " keep the sender account alive (true)."] + #[doc = "See [`Pallet::transfer_all`]."] pub fn transfer_all( &self, dest: types::transfer_all::Dest, keep_alive: types::transfer_all::KeepAlive, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Balances", "transfer_all", types::TransferAll { dest, keep_alive }, @@ -7178,15 +7079,13 @@ pub mod api { ], ) } - #[doc = "Unreserve some balance from a user by force."] - #[doc = ""] - #[doc = "Can only be called by ROOT."] + #[doc = "See [`Pallet::force_unreserve`]."] pub fn force_unreserve( &self, who: types::force_unreserve::Who, amount: types::force_unreserve::Amount, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Balances", "force_unreserve", types::ForceUnreserve { who, amount }, @@ -7198,19 +7097,12 @@ pub mod api { ], ) } - #[doc = "Upgrade a specified account."] - #[doc = ""] - #[doc = "- `origin`: Must be `Signed`."] - #[doc = "- `who`: The account to be upgraded."] - #[doc = ""] - #[doc = "This will waive the transaction fee if at least all but 10% of the accounts needed to"] - #[doc = "be upgraded. (We let some not have to be upgraded just in order to allow for the"] - #[doc = "possibililty of churn)."] + #[doc = "See [`Pallet::upgrade_accounts`]."] pub fn upgrade_accounts( &self, who: types::upgrade_accounts::Who, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Balances", "upgrade_accounts", types::UpgradeAccounts { who }, @@ -7221,15 +7113,13 @@ pub mod api { ], ) } - #[doc = "Set the regular balance of a given account."] - #[doc = ""] - #[doc = "The dispatch origin for this call is `root`."] + #[doc = "See [`Pallet::force_set_balance`]."] pub fn force_set_balance( &self, who: types::force_set_balance::Who, new_free: types::force_set_balance::NewFree, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Balances", "force_set_balance", types::ForceSetBalance { who, new_free }, @@ -7240,28 +7130,6 @@ pub mod api { ], ) } - #[doc = "Adjust the total issuance in a saturating way."] - #[doc = ""] - #[doc = "Can only be called by root and always needs a positive `delta`."] - #[doc = ""] - #[doc = "# Example"] - pub fn force_adjust_total_issuance( - &self, - direction: types::force_adjust_total_issuance::Direction, - delta: types::force_adjust_total_issuance::Delta, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Balances", - "force_adjust_total_issuance", - types::ForceAdjustTotalIssuance { direction, delta }, - [ - 208u8, 134u8, 56u8, 133u8, 232u8, 164u8, 10u8, 213u8, 53u8, 193u8, - 190u8, 63u8, 236u8, 186u8, 96u8, 122u8, 104u8, 87u8, 173u8, 38u8, 58u8, - 176u8, 21u8, 78u8, 42u8, 106u8, 46u8, 248u8, 251u8, 190u8, 150u8, - 202u8, - ], - ) - } } } #[doc = "The `Event` enum of this pallet"] @@ -7269,15 +7137,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "An account was created with some free balance."] pub struct Endowed { pub account: endowed::Account, @@ -7285,23 +7153,23 @@ pub mod api { } pub mod endowed { use super::runtime_types; - pub type Account = ::subxt::utils::AccountId32; + pub type Account = ::subxt::ext::subxt_core::utils::AccountId32; pub type FreeBalance = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Endowed { + impl ::subxt::ext::subxt_core::events::StaticEvent for Endowed { const PALLET: &'static str = "Balances"; const EVENT: &'static str = "Endowed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "An account was removed whose balance was non-zero but below ExistentialDeposit,"] #[doc = "resulting in an outright loss."] pub struct DustLost { @@ -7310,23 +7178,23 @@ pub mod api { } pub mod dust_lost { use super::runtime_types; - pub type Account = ::subxt::utils::AccountId32; + pub type Account = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for DustLost { + impl ::subxt::ext::subxt_core::events::StaticEvent for DustLost { const PALLET: &'static str = "Balances"; const EVENT: &'static str = "DustLost"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Transfer succeeded."] pub struct Transfer { pub from: transfer::From, @@ -7335,24 +7203,24 @@ pub mod api { } pub mod transfer { use super::runtime_types; - pub type From = ::subxt::utils::AccountId32; - pub type To = ::subxt::utils::AccountId32; + pub type From = ::subxt::ext::subxt_core::utils::AccountId32; + pub type To = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Transfer { + impl ::subxt::ext::subxt_core::events::StaticEvent for Transfer { const PALLET: &'static str = "Balances"; const EVENT: &'static str = "Transfer"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A balance was set by root."] pub struct BalanceSet { pub who: balance_set::Who, @@ -7360,23 +7228,23 @@ pub mod api { } pub mod balance_set { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Free = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for BalanceSet { + impl ::subxt::ext::subxt_core::events::StaticEvent for BalanceSet { const PALLET: &'static str = "Balances"; const EVENT: &'static str = "BalanceSet"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some balance was reserved (moved from free to reserved)."] pub struct Reserved { pub who: reserved::Who, @@ -7384,23 +7252,23 @@ pub mod api { } pub mod reserved { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Reserved { + impl ::subxt::ext::subxt_core::events::StaticEvent for Reserved { const PALLET: &'static str = "Balances"; const EVENT: &'static str = "Reserved"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some balance was unreserved (moved from reserved to free)."] pub struct Unreserved { pub who: unreserved::Who, @@ -7408,23 +7276,23 @@ pub mod api { } pub mod unreserved { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Unreserved { + impl ::subxt::ext::subxt_core::events::StaticEvent for Unreserved { const PALLET: &'static str = "Balances"; const EVENT: &'static str = "Unreserved"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some balance was moved from the reserve of the first account to the second account."] #[doc = "Final argument indicates the destination balance type."] pub struct ReserveRepatriated { @@ -7435,26 +7303,26 @@ pub mod api { } pub mod reserve_repatriated { use super::runtime_types; - pub type From = ::subxt::utils::AccountId32; - pub type To = ::subxt::utils::AccountId32; + pub type From = ::subxt::ext::subxt_core::utils::AccountId32; + pub type To = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; pub type DestinationStatus = runtime_types::frame_support::traits::tokens::misc::BalanceStatus; } - impl ::subxt::events::StaticEvent for ReserveRepatriated { + impl ::subxt::ext::subxt_core::events::StaticEvent for ReserveRepatriated { const PALLET: &'static str = "Balances"; const EVENT: &'static str = "ReserveRepatriated"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some amount was deposited (e.g. for transaction fees)."] pub struct Deposit { pub who: deposit::Who, @@ -7462,23 +7330,23 @@ pub mod api { } pub mod deposit { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Deposit { + impl ::subxt::ext::subxt_core::events::StaticEvent for Deposit { const PALLET: &'static str = "Balances"; const EVENT: &'static str = "Deposit"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some amount was withdrawn from the account (e.g. for transaction fees)."] pub struct Withdraw { pub who: withdraw::Who, @@ -7486,23 +7354,23 @@ pub mod api { } pub mod withdraw { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Withdraw { + impl ::subxt::ext::subxt_core::events::StaticEvent for Withdraw { const PALLET: &'static str = "Balances"; const EVENT: &'static str = "Withdraw"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some amount was removed from the account (e.g. for misbehavior)."] pub struct Slashed { pub who: slashed::Who, @@ -7510,23 +7378,23 @@ pub mod api { } pub mod slashed { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Slashed { + impl ::subxt::ext::subxt_core::events::StaticEvent for Slashed { const PALLET: &'static str = "Balances"; const EVENT: &'static str = "Slashed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some amount was minted into an account."] pub struct Minted { pub who: minted::Who, @@ -7534,23 +7402,23 @@ pub mod api { } pub mod minted { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Minted { + impl ::subxt::ext::subxt_core::events::StaticEvent for Minted { const PALLET: &'static str = "Balances"; const EVENT: &'static str = "Minted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some amount was burned from an account."] pub struct Burned { pub who: burned::Who, @@ -7558,23 +7426,23 @@ pub mod api { } pub mod burned { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Burned { + impl ::subxt::ext::subxt_core::events::StaticEvent for Burned { const PALLET: &'static str = "Balances"; const EVENT: &'static str = "Burned"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some amount was suspended from an account (it can be restored later)."] pub struct Suspended { pub who: suspended::Who, @@ -7582,23 +7450,23 @@ pub mod api { } pub mod suspended { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Suspended { + impl ::subxt::ext::subxt_core::events::StaticEvent for Suspended { const PALLET: &'static str = "Balances"; const EVENT: &'static str = "Suspended"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some amount was restored into an account."] pub struct Restored { pub who: restored::Who, @@ -7606,45 +7474,45 @@ pub mod api { } pub mod restored { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Restored { + impl ::subxt::ext::subxt_core::events::StaticEvent for Restored { const PALLET: &'static str = "Balances"; const EVENT: &'static str = "Restored"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "An account was upgraded."] pub struct Upgraded { pub who: upgraded::Who, } pub mod upgraded { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for Upgraded { + impl ::subxt::ext::subxt_core::events::StaticEvent for Upgraded { const PALLET: &'static str = "Balances"; const EVENT: &'static str = "Upgraded"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Total issuance was increased by `amount`, creating a credit to be balanced."] pub struct Issued { pub amount: issued::Amount, @@ -7653,20 +7521,20 @@ pub mod api { use super::runtime_types; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Issued { + impl ::subxt::ext::subxt_core::events::StaticEvent for Issued { const PALLET: &'static str = "Balances"; const EVENT: &'static str = "Issued"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Total issuance was decreased by `amount`, creating a debt to be balanced."] pub struct Rescinded { pub amount: rescinded::Amount, @@ -7675,20 +7543,20 @@ pub mod api { use super::runtime_types; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Rescinded { + impl ::subxt::ext::subxt_core::events::StaticEvent for Rescinded { const PALLET: &'static str = "Balances"; const EVENT: &'static str = "Rescinded"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some balance was locked."] pub struct Locked { pub who: locked::Who, @@ -7696,23 +7564,23 @@ pub mod api { } pub mod locked { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Locked { + impl ::subxt::ext::subxt_core::events::StaticEvent for Locked { const PALLET: &'static str = "Balances"; const EVENT: &'static str = "Locked"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some balance was unlocked."] pub struct Unlocked { pub who: unlocked::Who, @@ -7720,23 +7588,23 @@ pub mod api { } pub mod unlocked { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Unlocked { + impl ::subxt::ext::subxt_core::events::StaticEvent for Unlocked { const PALLET: &'static str = "Balances"; const EVENT: &'static str = "Unlocked"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some balance was frozen."] pub struct Frozen { pub who: frozen::Who, @@ -7744,23 +7612,23 @@ pub mod api { } pub mod frozen { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Frozen { + impl ::subxt::ext::subxt_core::events::StaticEvent for Frozen { const PALLET: &'static str = "Balances"; const EVENT: &'static str = "Frozen"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some balance was thawed."] pub struct Thawed { pub who: thawed::Who, @@ -7768,37 +7636,13 @@ pub mod api { } pub mod thawed { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Thawed { + impl ::subxt::ext::subxt_core::events::StaticEvent for Thawed { const PALLET: &'static str = "Balances"; const EVENT: &'static str = "Thawed"; } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The `TotalIssuance` was forcefully changed."] - pub struct TotalIssuanceForced { - pub old: total_issuance_forced::Old, - pub new: total_issuance_forced::New, - } - pub mod total_issuance_forced { - use super::runtime_types; - pub type Old = ::core::primitive::u128; - pub type New = ::core::primitive::u128; - } - impl ::subxt::events::StaticEvent for TotalIssuanceForced { - const PALLET: &'static str = "Balances"; - const EVENT: &'static str = "TotalIssuanceForced"; - } } pub mod storage { use super::runtime_types; @@ -7816,47 +7660,49 @@ pub mod api { use super::runtime_types; pub type Account = runtime_types::pallet_balances::types::AccountData<::core::primitive::u128>; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod locks { use super::runtime_types; pub type Locks = - runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec3< runtime_types::pallet_balances::types::BalanceLock< ::core::primitive::u128, >, >; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod reserves { use super::runtime_types; - pub type Reserves = runtime_types::bounded_collections::bounded_vec::BoundedVec< - runtime_types::pallet_balances::types::ReserveData< - [::core::primitive::u8; 8usize], - ::core::primitive::u128, - >, - >; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Reserves = + runtime_types::bounded_collections::bounded_vec::BoundedVec8< + runtime_types::pallet_balances::types::ReserveData< + [::core::primitive::u8; 8usize], + ::core::primitive::u128, + >, + >; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod holds { use super::runtime_types; - pub type Holds = runtime_types::bounded_collections::bounded_vec::BoundedVec< + pub type Holds = runtime_types::bounded_collections::bounded_vec::BoundedVec9< runtime_types::pallet_balances::types::IdAmount< runtime_types::rococo_runtime::RuntimeHoldReason, ::core::primitive::u128, >, >; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod freezes { use super::runtime_types; - pub type Freezes = runtime_types::bounded_collections::bounded_vec::BoundedVec< - runtime_types::pallet_balances::types::IdAmount< - (), - ::core::primitive::u128, - >, - >; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Freezes = + runtime_types::bounded_collections::bounded_vec::BoundedVec10< + runtime_types::pallet_balances::types::IdAmount< + (), + ::core::primitive::u128, + >, + >; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } } pub struct StorageApi; @@ -7864,14 +7710,14 @@ pub mod api { #[doc = " The total units issued in the system."] pub fn total_issuance( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::total_issuance::TotalIssuance, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Balances", "TotalIssuance", (), @@ -7886,14 +7732,14 @@ pub mod api { #[doc = " The total units of outstanding deactivated balance in the system."] pub fn inactive_issuance( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::inactive_issuance::InactiveIssuance, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Balances", "InactiveIssuance", (), @@ -7930,14 +7776,14 @@ pub mod api { #[doc = " NOTE: This is only used in the case that this pallet is used to store balances."] pub fn account_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::account::Account, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Balances", "Account", (), @@ -7974,18 +7820,22 @@ pub mod api { #[doc = " NOTE: This is only used in the case that this pallet is used to store balances."] pub fn account( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::account::Param0, + >, types::account::Account, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Balances", "Account", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 213u8, 38u8, 200u8, 69u8, 218u8, 0u8, 112u8, 181u8, 160u8, 23u8, 96u8, 90u8, 3u8, 88u8, 126u8, 22u8, 103u8, 74u8, 64u8, 69u8, 29u8, 247u8, @@ -7997,14 +7847,14 @@ pub mod api { #[doc = " NOTE: Should only be accessed when setting, changing and freeing a lock."] pub fn locks_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::locks::Locks, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Balances", "Locks", (), @@ -8019,18 +7869,22 @@ pub mod api { #[doc = " NOTE: Should only be accessed when setting, changing and freeing a lock."] pub fn locks( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::locks::Param0, + >, types::locks::Locks, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Balances", "Locks", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 10u8, 223u8, 55u8, 0u8, 249u8, 69u8, 168u8, 41u8, 75u8, 35u8, 120u8, 167u8, 18u8, 132u8, 9u8, 20u8, 91u8, 51u8, 27u8, 69u8, 136u8, 187u8, @@ -8041,14 +7895,14 @@ pub mod api { #[doc = " Named reserves on some account balances."] pub fn reserves_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::reserves::Reserves, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Balances", "Reserves", (), @@ -8062,18 +7916,22 @@ pub mod api { #[doc = " Named reserves on some account balances."] pub fn reserves( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::reserves::Param0, + >, types::reserves::Reserves, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Balances", "Reserves", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 112u8, 10u8, 241u8, 77u8, 64u8, 187u8, 106u8, 159u8, 13u8, 153u8, 140u8, 178u8, 182u8, 50u8, 1u8, 55u8, 149u8, 92u8, 196u8, 229u8, 170u8, @@ -8084,59 +7942,63 @@ pub mod api { #[doc = " Holds on account balances."] pub fn holds_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::holds::Holds, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Balances", "Holds", (), [ - 181u8, 39u8, 29u8, 45u8, 45u8, 198u8, 129u8, 210u8, 189u8, 183u8, - 121u8, 125u8, 57u8, 90u8, 95u8, 107u8, 51u8, 13u8, 22u8, 105u8, 191u8, - 61u8, 54u8, 182u8, 50u8, 200u8, 137u8, 247u8, 180u8, 158u8, 16u8, - 193u8, + 72u8, 161u8, 107u8, 123u8, 240u8, 3u8, 198u8, 75u8, 46u8, 131u8, 122u8, + 141u8, 253u8, 141u8, 232u8, 192u8, 146u8, 54u8, 174u8, 162u8, 48u8, + 165u8, 226u8, 233u8, 12u8, 227u8, 23u8, 17u8, 237u8, 179u8, 193u8, + 166u8, ], ) } #[doc = " Holds on account balances."] pub fn holds( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::holds::Param0, + >, types::holds::Holds, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Balances", "Holds", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ - 181u8, 39u8, 29u8, 45u8, 45u8, 198u8, 129u8, 210u8, 189u8, 183u8, - 121u8, 125u8, 57u8, 90u8, 95u8, 107u8, 51u8, 13u8, 22u8, 105u8, 191u8, - 61u8, 54u8, 182u8, 50u8, 200u8, 137u8, 247u8, 180u8, 158u8, 16u8, - 193u8, + 72u8, 161u8, 107u8, 123u8, 240u8, 3u8, 198u8, 75u8, 46u8, 131u8, 122u8, + 141u8, 253u8, 141u8, 232u8, 192u8, 146u8, 54u8, 174u8, 162u8, 48u8, + 165u8, 226u8, 233u8, 12u8, 227u8, 23u8, 17u8, 237u8, 179u8, 193u8, + 166u8, ], ) } #[doc = " Freeze locks on account balances."] pub fn freezes_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::freezes::Freezes, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Balances", "Freezes", (), @@ -8150,18 +8012,22 @@ pub mod api { #[doc = " Freeze locks on account balances."] pub fn freezes( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::freezes::Param0, + >, types::freezes::Freezes, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Balances", "Freezes", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 69u8, 49u8, 165u8, 76u8, 135u8, 142u8, 179u8, 118u8, 50u8, 109u8, 53u8, 112u8, 110u8, 94u8, 30u8, 93u8, 173u8, 38u8, 27u8, 142u8, 19u8, 5u8, @@ -8185,8 +8051,9 @@ pub mod api { #[doc = " Bottom line: Do yourself a favour and make it at least one!"] pub fn existential_deposit( &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Balances", "ExistentialDeposit", [ @@ -8198,8 +8065,11 @@ pub mod api { } #[doc = " The maximum number of locks that should exist on an account."] #[doc = " Not strictly enforced, but used for weight estimation."] - pub fn max_locks(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn max_locks( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Balances", "MaxLocks", [ @@ -8211,8 +8081,11 @@ pub mod api { ) } #[doc = " The maximum number of named reserves that can exist on an account."] - pub fn max_reserves(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn max_reserves( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Balances", "MaxReserves", [ @@ -8223,9 +8096,28 @@ pub mod api { ], ) } + #[doc = " The maximum number of holds that can exist on an account at any time."] + pub fn max_holds( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( + "Balances", + "MaxHolds", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } #[doc = " The maximum number of individual freeze locks that can exist on an account at any time."] - pub fn max_freezes(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn max_freezes( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Balances", "MaxFreezes", [ @@ -8247,15 +8139,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A transaction fee `actual_fee`, of which `tip` was added to the minimum inclusion fee,"] #[doc = "has been paid by `who`."] pub struct TransactionFeePaid { @@ -8265,11 +8157,11 @@ pub mod api { } pub mod transaction_fee_paid { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type ActualFee = ::core::primitive::u128; pub type Tip = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for TransactionFeePaid { + impl ::subxt::ext::subxt_core::events::StaticEvent for TransactionFeePaid { const PALLET: &'static str = "TransactionPayment"; const EVENT: &'static str = "TransactionFeePaid"; } @@ -8292,14 +8184,14 @@ pub mod api { impl StorageApi { pub fn next_fee_multiplier( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::next_fee_multiplier::NextFeeMultiplier, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "TransactionPayment", "NextFeeMultiplier", (), @@ -8313,14 +8205,14 @@ pub mod api { } pub fn storage_version( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::storage_version::StorageVersion, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "TransactionPayment", "StorageVersion", (), @@ -8338,10 +8230,10 @@ pub mod api { use super::runtime_types; pub struct ConstantsApi; impl ConstantsApi { - #[doc = " A fee multiplier for `Operational` extrinsics to compute \"virtual tip\" to boost their"] + #[doc = " A fee mulitplier for `Operational` extrinsics to compute \"virtual tip\" to boost their"] #[doc = " `priority`"] #[doc = ""] - #[doc = " This value is multiplied by the `final_fee` to obtain a \"virtual tip\" that is later"] + #[doc = " This value is multipled by the `final_fee` to obtain a \"virtual tip\" that is later"] #[doc = " added to a tip component in regular `priority` calculations."] #[doc = " It means that a `Normal` transaction can front-run a similarly-sized `Operational`"] #[doc = " extrinsic (with no tip), by including a tip value greater than the virtual tip."] @@ -8361,8 +8253,9 @@ pub mod api { #[doc = " transactions."] pub fn operational_fee_multiplier( &self, - ) -> ::subxt::constants::Address<::core::primitive::u8> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u8> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "TransactionPayment", "OperationalFeeMultiplier", [ @@ -8385,7 +8278,7 @@ pub mod api { use super::runtime_types; pub mod author { use super::runtime_types; - pub type Author = ::subxt::utils::AccountId32; + pub type Author = ::subxt::ext::subxt_core::utils::AccountId32; } } pub struct StorageApi; @@ -8393,14 +8286,14 @@ pub mod api { #[doc = " Author of current block."] pub fn author( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::author::Author, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Authorship", "Author", (), @@ -8423,15 +8316,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "There is an offence reported of the given `kind` happened at the `session_index` and"] #[doc = "(kind-specific) time slot. This event is not deposited for duplicate slashes."] #[doc = "\\[kind, timeslot\\]."] @@ -8442,9 +8335,10 @@ pub mod api { pub mod offence { use super::runtime_types; pub type Kind = [::core::primitive::u8; 16usize]; - pub type Timeslot = ::std::vec::Vec<::core::primitive::u8>; + pub type Timeslot = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; } - impl ::subxt::events::StaticEvent for Offence { + impl ::subxt::ext::subxt_core::events::StaticEvent for Offence { const PALLET: &'static str = "Offences"; const EVENT: &'static str = "Offence"; } @@ -8456,14 +8350,16 @@ pub mod api { pub mod reports { use super::runtime_types; pub type Reports = runtime_types::sp_staking::offence::OffenceDetails< - ::subxt::utils::AccountId32, - (::subxt::utils::AccountId32, ()), + ::subxt::ext::subxt_core::utils::AccountId32, + (::subxt::ext::subxt_core::utils::AccountId32, ()), >; - pub type Param0 = ::subxt::utils::H256; + pub type Param0 = ::subxt::ext::subxt_core::utils::H256; } pub mod concurrent_reports_index { use super::runtime_types; - pub type ConcurrentReportsIndex = ::std::vec::Vec<::subxt::utils::H256>; + pub type ConcurrentReportsIndex = ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::H256, + >; pub type Param0 = [::core::primitive::u8; 16usize]; pub type Param1 = [::core::primitive::u8]; } @@ -8473,14 +8369,14 @@ pub mod api { #[doc = " The primary structure that holds all offence records keyed by report identifiers."] pub fn reports_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::reports::Reports, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Offences", "Reports", (), @@ -8495,18 +8391,22 @@ pub mod api { #[doc = " The primary structure that holds all offence records keyed by report identifiers."] pub fn reports( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::reports::Param0, + >, types::reports::Reports, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Offences", "Reports", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 255u8, 234u8, 162u8, 48u8, 243u8, 210u8, 198u8, 231u8, 218u8, 142u8, 167u8, 10u8, 232u8, 223u8, 239u8, 55u8, 74u8, 23u8, 14u8, 236u8, 88u8, @@ -8518,14 +8418,14 @@ pub mod api { #[doc = " A vector of reports of the same kind that happened at the same time slot."] pub fn concurrent_reports_index_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::concurrent_reports_index::ConcurrentReportsIndex, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Offences", "ConcurrentReportsIndex", (), @@ -8540,20 +8440,22 @@ pub mod api { #[doc = " A vector of reports of the same kind that happened at the same time slot."] pub fn concurrent_reports_index_iter1( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::concurrent_reports_index::Param0, >, types::concurrent_reports_index::ConcurrentReportsIndex, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Offences", "ConcurrentReportsIndex", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 170u8, 186u8, 72u8, 29u8, 251u8, 38u8, 193u8, 195u8, 109u8, 86u8, 0u8, 241u8, 20u8, 235u8, 108u8, 126u8, 215u8, 82u8, 73u8, 113u8, 199u8, @@ -8565,28 +8467,32 @@ pub mod api { #[doc = " A vector of reports of the same kind that happened at the same time slot."] pub fn concurrent_reports_index( &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< ( - ::subxt::storage::address::StaticStorageKey< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::concurrent_reports_index::Param0, >, - ::subxt::storage::address::StaticStorageKey< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::concurrent_reports_index::Param1, >, ), types::concurrent_reports_index::ConcurrentReportsIndex, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Offences", "ConcurrentReportsIndex", ( - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), ), [ 170u8, 186u8, 72u8, 29u8, 251u8, 38u8, 193u8, 195u8, 109u8, 86u8, 0u8, @@ -8602,85 +8508,620 @@ pub mod api { pub mod historical { use super::root_mod; use super::runtime_types; + } + pub mod beefy { + use super::root_mod; + use super::runtime_types; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_beefy::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_beefy::pallet::Call; + pub mod calls { + use super::root_mod; + use super::runtime_types; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::report_equivocation`]."] + pub struct ReportEquivocation { + pub equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< + report_equivocation::EquivocationProof, + >, + pub key_owner_proof: report_equivocation::KeyOwnerProof, + } + pub mod report_equivocation { + use super::runtime_types; + pub type EquivocationProof = + runtime_types::sp_consensus_beefy::EquivocationProof< + ::core::primitive::u32, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, + >; + pub type KeyOwnerProof = runtime_types::sp_session::MembershipProof; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ReportEquivocation { + const PALLET: &'static str = "Beefy"; + const CALL: &'static str = "report_equivocation"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + pub struct ReportEquivocationUnsigned { + pub equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< + report_equivocation_unsigned::EquivocationProof, + >, + pub key_owner_proof: report_equivocation_unsigned::KeyOwnerProof, + } + pub mod report_equivocation_unsigned { + use super::runtime_types; + pub type EquivocationProof = + runtime_types::sp_consensus_beefy::EquivocationProof< + ::core::primitive::u32, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, + >; + pub type KeyOwnerProof = runtime_types::sp_session::MembershipProof; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ReportEquivocationUnsigned { + const PALLET: &'static str = "Beefy"; + const CALL: &'static str = "report_equivocation_unsigned"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_new_genesis`]."] + pub struct SetNewGenesis { + pub delay_in_blocks: set_new_genesis::DelayInBlocks, + } + pub mod set_new_genesis { + use super::runtime_types; + pub type DelayInBlocks = ::core::primitive::u32; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetNewGenesis { + const PALLET: &'static str = "Beefy"; + const CALL: &'static str = "set_new_genesis"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::report_equivocation`]."] + pub fn report_equivocation( + &self, + equivocation_proof: types::report_equivocation::EquivocationProof, + key_owner_proof: types::report_equivocation::KeyOwnerProof, + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( + "Beefy", + "report_equivocation", + types::ReportEquivocation { + equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box::new( + equivocation_proof, + ), + key_owner_proof, + }, + [ + 156u8, 32u8, 92u8, 179u8, 165u8, 93u8, 216u8, 130u8, 121u8, 225u8, + 33u8, 141u8, 255u8, 12u8, 101u8, 136u8, 177u8, 25u8, 23u8, 239u8, 12u8, + 142u8, 88u8, 228u8, 85u8, 171u8, 218u8, 185u8, 146u8, 245u8, 149u8, + 85u8, + ], + ) + } + #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + pub fn report_equivocation_unsigned( + &self, + equivocation_proof: types::report_equivocation_unsigned::EquivocationProof, + key_owner_proof: types::report_equivocation_unsigned::KeyOwnerProof, + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( + "Beefy", + "report_equivocation_unsigned", + types::ReportEquivocationUnsigned { + equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box::new( + equivocation_proof, + ), + key_owner_proof, + }, + [ + 126u8, 201u8, 236u8, 234u8, 107u8, 52u8, 37u8, 115u8, 228u8, 232u8, + 103u8, 193u8, 143u8, 224u8, 79u8, 192u8, 207u8, 204u8, 161u8, 103u8, + 210u8, 131u8, 64u8, 251u8, 48u8, 196u8, 249u8, 148u8, 2u8, 179u8, + 135u8, 121u8, + ], + ) + } + #[doc = "See [`Pallet::set_new_genesis`]."] + pub fn set_new_genesis( + &self, + delay_in_blocks: types::set_new_genesis::DelayInBlocks, + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( + "Beefy", + "set_new_genesis", + types::SetNewGenesis { delay_in_blocks }, + [ + 147u8, 6u8, 252u8, 43u8, 77u8, 91u8, 170u8, 45u8, 112u8, 155u8, 158u8, + 79u8, 1u8, 116u8, 162u8, 146u8, 181u8, 9u8, 171u8, 48u8, 198u8, 210u8, + 243u8, 64u8, 229u8, 35u8, 28u8, 177u8, 144u8, 22u8, 165u8, 163u8, + ], + ) + } + } + } pub mod storage { use super::runtime_types; pub mod types { use super::runtime_types; - pub mod historical_sessions { + pub mod authorities { use super::runtime_types; - pub type HistoricalSessions = (::subxt::utils::H256, ::core::primitive::u32); - pub type Param0 = ::core::primitive::u32; + pub type Authorities = + runtime_types::bounded_collections::bounded_vec::BoundedVec11< + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + >; } - pub mod stored_range { + pub mod validator_set_id { use super::runtime_types; - pub type StoredRange = (::core::primitive::u32, ::core::primitive::u32); + pub type ValidatorSetId = ::core::primitive::u64; + } + pub mod next_authorities { + use super::runtime_types; + pub type NextAuthorities = + runtime_types::bounded_collections::bounded_vec::BoundedVec11< + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + >; + } + pub mod set_id_session { + use super::runtime_types; + pub type SetIdSession = ::core::primitive::u32; + pub type Param0 = ::core::primitive::u64; + } + pub mod genesis_block { + use super::runtime_types; + pub type GenesisBlock = ::core::option::Option<::core::primitive::u32>; } } pub struct StorageApi; impl StorageApi { - #[doc = " Mapping from historical session indices to session-data root hash and validator count."] - pub fn historical_sessions_iter( + #[doc = " The current authorities set"] + pub fn authorities( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), - types::historical_sessions::HistoricalSessions, + types::authorities::Authorities, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), - (), - ::subxt::storage::address::Yes, > { - ::subxt::storage::address::Address::new_static( - "Historical", - "HistoricalSessions", + ::subxt::ext::subxt_core::storage::address::Address::new_static( + "Beefy", + "Authorities", (), [ - 9u8, 138u8, 247u8, 141u8, 178u8, 146u8, 124u8, 81u8, 162u8, 211u8, - 205u8, 149u8, 222u8, 254u8, 253u8, 188u8, 170u8, 242u8, 218u8, 41u8, - 124u8, 178u8, 109u8, 209u8, 163u8, 125u8, 225u8, 206u8, 249u8, 175u8, - 117u8, 75u8, + 53u8, 171u8, 94u8, 33u8, 46u8, 83u8, 105u8, 120u8, 123u8, 201u8, 141u8, + 71u8, 131u8, 150u8, 51u8, 121u8, 67u8, 45u8, 249u8, 146u8, 85u8, 113u8, + 23u8, 59u8, 59u8, 41u8, 0u8, 226u8, 98u8, 166u8, 253u8, 59u8, ], ) } - #[doc = " Mapping from historical session indices to session-data root hash and validator count."] - pub fn historical_sessions( + #[doc = " The current validator set id"] + pub fn validator_set_id( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, - types::historical_sessions::HistoricalSessions, - ::subxt::storage::address::Yes, + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), + types::validator_set_id::ValidatorSetId, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( - "Historical", - "HistoricalSessions", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::Address::new_static( + "Beefy", + "ValidatorSetId", + (), [ - 9u8, 138u8, 247u8, 141u8, 178u8, 146u8, 124u8, 81u8, 162u8, 211u8, - 205u8, 149u8, 222u8, 254u8, 253u8, 188u8, 170u8, 242u8, 218u8, 41u8, - 124u8, 178u8, 109u8, 209u8, 163u8, 125u8, 225u8, 206u8, 249u8, 175u8, - 117u8, 75u8, + 168u8, 84u8, 23u8, 134u8, 153u8, 30u8, 183u8, 176u8, 206u8, 100u8, + 109u8, 86u8, 109u8, 126u8, 146u8, 175u8, 173u8, 1u8, 253u8, 42u8, + 122u8, 207u8, 71u8, 4u8, 145u8, 83u8, 148u8, 29u8, 243u8, 52u8, 29u8, + 78u8, ], ) } - #[doc = " The range of historical sessions we store. [first, last)"] - pub fn stored_range( + #[doc = " Authorities set scheduled to be used with the next session"] + pub fn next_authorities( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), - types::stored_range::StoredRange, - ::subxt::storage::address::Yes, + types::next_authorities::NextAuthorities, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + (), + > { + ::subxt::ext::subxt_core::storage::address::Address::new_static( + "Beefy", + "NextAuthorities", + (), + [ + 87u8, 180u8, 0u8, 85u8, 209u8, 13u8, 131u8, 103u8, 8u8, 226u8, 42u8, + 72u8, 38u8, 47u8, 190u8, 78u8, 62u8, 4u8, 161u8, 130u8, 87u8, 196u8, + 13u8, 209u8, 205u8, 98u8, 104u8, 91u8, 3u8, 47u8, 82u8, 11u8, + ], + ) + } + #[doc = " A mapping from BEEFY set ID to the index of the *most recent* session for which its"] + #[doc = " members were responsible."] + #[doc = ""] + #[doc = " This is only used for validating equivocation proofs. An equivocation proof must"] + #[doc = " contains a key-ownership proof for a given session, therefore we need a way to tie"] + #[doc = " together sessions and BEEFY set ids, i.e. we need to validate that a validator"] + #[doc = " was the owner of a given key on a given session, and what the active set ID was"] + #[doc = " during that session."] + #[doc = ""] + #[doc = " TWOX-NOTE: `ValidatorSetId` is not under user control."] + pub fn set_id_session_iter( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + (), + types::set_id_session::SetIdSession, + (), + (), + ::subxt::ext::subxt_core::utils::Yes, + > { + ::subxt::ext::subxt_core::storage::address::Address::new_static( + "Beefy", + "SetIdSession", + (), + [ + 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, + 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, + 238u8, 18u8, 209u8, 203u8, 38u8, 148u8, 16u8, 105u8, 72u8, 169u8, + ], + ) + } + #[doc = " A mapping from BEEFY set ID to the index of the *most recent* session for which its"] + #[doc = " members were responsible."] + #[doc = ""] + #[doc = " This is only used for validating equivocation proofs. An equivocation proof must"] + #[doc = " contains a key-ownership proof for a given session, therefore we need a way to tie"] + #[doc = " together sessions and BEEFY set ids, i.e. we need to validate that a validator"] + #[doc = " was the owner of a given key on a given session, and what the active set ID was"] + #[doc = " during that session."] + #[doc = ""] + #[doc = " TWOX-NOTE: `ValidatorSetId` is not under user control."] + pub fn set_id_session( + &self, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::set_id_session::Param0, + >, + types::set_id_session::SetIdSession, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( - "Historical", - "StoredRange", + ::subxt::ext::subxt_core::storage::address::Address::new_static( + "Beefy", + "SetIdSession", + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + [ + 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, + 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, + 238u8, 18u8, 209u8, 203u8, 38u8, 148u8, 16u8, 105u8, 72u8, 169u8, + ], + ) + } + #[doc = " Block number where BEEFY consensus is enabled/started."] + #[doc = " By changing this (through privileged `set_new_genesis()`), BEEFY consensus is effectively"] + #[doc = " restarted from the newly set block number."] + pub fn genesis_block( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + (), + types::genesis_block::GenesisBlock, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + (), + > { + ::subxt::ext::subxt_core::storage::address::Address::new_static( + "Beefy", + "GenesisBlock", (), [ - 134u8, 32u8, 250u8, 13u8, 201u8, 25u8, 54u8, 243u8, 231u8, 81u8, 252u8, - 231u8, 68u8, 217u8, 235u8, 43u8, 22u8, 223u8, 220u8, 133u8, 198u8, - 218u8, 95u8, 152u8, 189u8, 87u8, 6u8, 228u8, 242u8, 59u8, 232u8, 59u8, + 198u8, 155u8, 11u8, 240u8, 189u8, 245u8, 159u8, 127u8, 55u8, 33u8, + 48u8, 29u8, 209u8, 119u8, 163u8, 24u8, 28u8, 22u8, 163u8, 163u8, 124u8, + 88u8, 126u8, 4u8, 193u8, 158u8, 29u8, 243u8, 212u8, 4u8, 41u8, 22u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The maximum number of authorities that can be added."] + pub fn max_authorities( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( + "Beefy", + "MaxAuthorities", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum number of nominators for each validator."] + pub fn max_nominators( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( + "Beefy", + "MaxNominators", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum number of entries to keep in the set id to session index mapping."] + #[doc = ""] + #[doc = " Since the `SetIdSession` map is only used for validating equivocations this"] + #[doc = " value should relate to the bonding duration of whatever staking system is"] + #[doc = " being used (if any). If equivocation handling is not enabled then this value"] + #[doc = " can be zero."] + pub fn max_set_id_session_entries( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u64> + { + ::subxt::ext::subxt_core::constants::Address::new_static( + "Beefy", + "MaxSetIdSessionEntries", + [ + 128u8, 214u8, 205u8, 242u8, 181u8, 142u8, 124u8, 231u8, 190u8, 146u8, + 59u8, 226u8, 157u8, 101u8, 103u8, 117u8, 249u8, 65u8, 18u8, 191u8, + 103u8, 119u8, 53u8, 85u8, 81u8, 96u8, 220u8, 42u8, 184u8, 239u8, 42u8, + 246u8, + ], + ) + } + } + } + } + pub mod mmr { + use super::root_mod; + use super::runtime_types; + pub mod storage { + use super::runtime_types; + pub mod types { + use super::runtime_types; + pub mod root_hash { + use super::runtime_types; + pub type RootHash = ::subxt::ext::subxt_core::utils::H256; + } + pub mod number_of_leaves { + use super::runtime_types; + pub type NumberOfLeaves = ::core::primitive::u64; + } + pub mod nodes { + use super::runtime_types; + pub type Nodes = ::subxt::ext::subxt_core::utils::H256; + pub type Param0 = ::core::primitive::u64; + } + } + pub struct StorageApi; + impl StorageApi { + #[doc = " Latest MMR Root hash."] + pub fn root_hash( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + (), + types::root_hash::RootHash, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + (), + > { + ::subxt::ext::subxt_core::storage::address::Address::new_static( + "Mmr", + "RootHash", + (), + [ + 111u8, 206u8, 173u8, 92u8, 67u8, 49u8, 150u8, 113u8, 90u8, 245u8, 38u8, + 254u8, 76u8, 250u8, 167u8, 66u8, 130u8, 129u8, 251u8, 220u8, 172u8, + 229u8, 162u8, 251u8, 36u8, 227u8, 43u8, 189u8, 7u8, 106u8, 23u8, 13u8, + ], + ) + } + #[doc = " Current size of the MMR (number of leaves)."] + pub fn number_of_leaves( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + (), + types::number_of_leaves::NumberOfLeaves, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + (), + > { + ::subxt::ext::subxt_core::storage::address::Address::new_static( + "Mmr", + "NumberOfLeaves", + (), + [ + 123u8, 58u8, 149u8, 174u8, 85u8, 45u8, 20u8, 115u8, 241u8, 0u8, 51u8, + 174u8, 234u8, 60u8, 230u8, 59u8, 237u8, 144u8, 170u8, 32u8, 4u8, 0u8, + 34u8, 163u8, 238u8, 205u8, 93u8, 208u8, 53u8, 38u8, 141u8, 195u8, + ], + ) + } + #[doc = " Hashes of the nodes in the MMR."] + #[doc = ""] + #[doc = " Note this collection only contains MMR peaks, the inner nodes (and leaves)"] + #[doc = " are pruned and only stored in the Offchain DB."] + pub fn nodes_iter( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + (), + types::nodes::Nodes, + (), + (), + ::subxt::ext::subxt_core::utils::Yes, + > { + ::subxt::ext::subxt_core::storage::address::Address::new_static( + "Mmr", + "Nodes", + (), + [ + 27u8, 84u8, 41u8, 195u8, 146u8, 81u8, 211u8, 189u8, 63u8, 125u8, 173u8, + 206u8, 69u8, 198u8, 202u8, 213u8, 89u8, 31u8, 89u8, 177u8, 76u8, 154u8, + 249u8, 197u8, 133u8, 78u8, 142u8, 71u8, 183u8, 3u8, 132u8, 25u8, + ], + ) + } + #[doc = " Hashes of the nodes in the MMR."] + #[doc = ""] + #[doc = " Note this collection only contains MMR peaks, the inner nodes (and leaves)"] + #[doc = " are pruned and only stored in the Offchain DB."] + pub fn nodes( + &self, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::nodes::Param0, + >, + types::nodes::Nodes, + ::subxt::ext::subxt_core::utils::Yes, + (), + (), + > { + ::subxt::ext::subxt_core::storage::address::Address::new_static( + "Mmr", + "Nodes", + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + [ + 27u8, 84u8, 41u8, 195u8, 146u8, 81u8, 211u8, 189u8, 63u8, 125u8, 173u8, + 206u8, 69u8, 198u8, 202u8, 213u8, 89u8, 31u8, 89u8, 177u8, 76u8, 154u8, + 249u8, 197u8, 133u8, 78u8, 142u8, 71u8, 183u8, 3u8, 132u8, 25u8, + ], + ) + } + } + } + } + pub mod mmr_leaf { + use super::root_mod; + use super::runtime_types; + pub mod storage { + use super::runtime_types; + pub mod types { + use super::runtime_types; + pub mod beefy_authorities { + use super::runtime_types; + pub type BeefyAuthorities = + runtime_types::sp_consensus_beefy::mmr::BeefyAuthoritySet< + ::subxt::ext::subxt_core::utils::H256, + >; + } + pub mod beefy_next_authorities { + use super::runtime_types; + pub type BeefyNextAuthorities = + runtime_types::sp_consensus_beefy::mmr::BeefyAuthoritySet< + ::subxt::ext::subxt_core::utils::H256, + >; + } + } + pub struct StorageApi; + impl StorageApi { + #[doc = " Details of current BEEFY authority set."] + pub fn beefy_authorities( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + (), + types::beefy_authorities::BeefyAuthorities, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + (), + > { + ::subxt::ext::subxt_core::storage::address::Address::new_static( + "MmrLeaf", + "BeefyAuthorities", + (), + [ + 128u8, 35u8, 176u8, 79u8, 224u8, 58u8, 214u8, 234u8, 231u8, 71u8, + 227u8, 153u8, 180u8, 189u8, 66u8, 44u8, 47u8, 174u8, 0u8, 83u8, 121u8, + 182u8, 226u8, 44u8, 224u8, 173u8, 237u8, 102u8, 231u8, 146u8, 110u8, + 7u8, + ], + ) + } + #[doc = " Details of next BEEFY authority set."] + #[doc = ""] + #[doc = " This storage entry is used as cache for calls to `update_beefy_next_authority_set`."] + pub fn beefy_next_authorities( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + (), + types::beefy_next_authorities::BeefyNextAuthorities, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + (), + > { + ::subxt::ext::subxt_core::storage::address::Address::new_static( + "MmrLeaf", + "BeefyNextAuthorities", + (), + [ + 97u8, 71u8, 52u8, 111u8, 120u8, 251u8, 183u8, 155u8, 177u8, 100u8, + 236u8, 142u8, 204u8, 117u8, 95u8, 40u8, 201u8, 36u8, 32u8, 82u8, 38u8, + 234u8, 135u8, 39u8, 224u8, 69u8, 94u8, 85u8, 12u8, 89u8, 97u8, 218u8, ], ) } @@ -8701,24 +9142,20 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Sets the session key(s) of the function caller to `keys`."] - #[doc = "Allows an account to set its session key prior to becoming a validator."] - #[doc = "This doesn't take effect until the next session."] - #[doc = ""] - #[doc = "The dispatch origin of this function must be signed."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`. Actual cost depends on the number of length of `T::Keys::key_ids()` which is"] - #[doc = " fixed."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_keys`]."] pub struct SetKeys { pub keys: set_keys::Keys, pub proof: set_keys::Proof, @@ -8726,82 +9163,58 @@ pub mod api { pub mod set_keys { use super::runtime_types; pub type Keys = runtime_types::rococo_runtime::SessionKeys; - pub type Proof = ::std::vec::Vec<::core::primitive::u8>; + pub type Proof = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; } - impl ::subxt::blocks::StaticExtrinsic for SetKeys { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetKeys { const PALLET: &'static str = "Session"; const CALL: &'static str = "set_keys"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Removes any session key(s) of the function caller."] - #[doc = ""] - #[doc = "This doesn't take effect until the next session."] - #[doc = ""] - #[doc = "The dispatch origin of this function must be Signed and the account must be either be"] - #[doc = "convertible to a validator ID using the chain's typical addressing system (this usually"] - #[doc = "means being a controller account) or directly convertible into a validator ID (which"] - #[doc = "usually means being a stash account)."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)` in number of key types. Actual cost depends on the number of length of"] - #[doc = " `T::Keys::key_ids()` which is fixed."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::purge_keys`]."] pub struct PurgeKeys; - impl ::subxt::blocks::StaticExtrinsic for PurgeKeys { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for PurgeKeys { const PALLET: &'static str = "Session"; const CALL: &'static str = "purge_keys"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Sets the session key(s) of the function caller to `keys`."] - #[doc = "Allows an account to set its session key prior to becoming a validator."] - #[doc = "This doesn't take effect until the next session."] - #[doc = ""] - #[doc = "The dispatch origin of this function must be signed."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`. Actual cost depends on the number of length of `T::Keys::key_ids()` which is"] - #[doc = " fixed."] + #[doc = "See [`Pallet::set_keys`]."] pub fn set_keys( &self, keys: types::set_keys::Keys, proof: types::set_keys::Proof, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Session", "set_keys", types::SetKeys { keys, proof }, [ - 160u8, 137u8, 167u8, 56u8, 165u8, 202u8, 149u8, 39u8, 16u8, 52u8, - 173u8, 215u8, 250u8, 158u8, 78u8, 126u8, 236u8, 153u8, 173u8, 68u8, - 237u8, 8u8, 47u8, 77u8, 119u8, 226u8, 248u8, 220u8, 139u8, 68u8, 145u8, - 207u8, + 50u8, 154u8, 235u8, 252u8, 160u8, 25u8, 233u8, 90u8, 76u8, 227u8, 22u8, + 129u8, 221u8, 129u8, 95u8, 124u8, 117u8, 117u8, 43u8, 17u8, 109u8, + 252u8, 39u8, 115u8, 150u8, 80u8, 38u8, 34u8, 62u8, 237u8, 248u8, 246u8, ], ) } - #[doc = "Removes any session key(s) of the function caller."] - #[doc = ""] - #[doc = "This doesn't take effect until the next session."] - #[doc = ""] - #[doc = "The dispatch origin of this function must be Signed and the account must be either be"] - #[doc = "convertible to a validator ID using the chain's typical addressing system (this usually"] - #[doc = "means being a controller account) or directly convertible into a validator ID (which"] - #[doc = "usually means being a stash account)."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)` in number of key types. Actual cost depends on the number of length of"] - #[doc = " `T::Keys::key_ids()` which is fixed."] - pub fn purge_keys(&self) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + #[doc = "See [`Pallet::purge_keys`]."] + pub fn purge_keys( + &self, + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Session", "purge_keys", types::PurgeKeys {}, @@ -8820,15 +9233,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "New session has happened. Note that the argument is the session index, not the"] #[doc = "block number as the type might suggest."] pub struct NewSession { @@ -8838,7 +9251,7 @@ pub mod api { use super::runtime_types; pub type SessionIndex = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for NewSession { + impl ::subxt::ext::subxt_core::events::StaticEvent for NewSession { const PALLET: &'static str = "Session"; const EVENT: &'static str = "NewSession"; } @@ -8849,7 +9262,9 @@ pub mod api { use super::runtime_types; pub mod validators { use super::runtime_types; - pub type Validators = ::std::vec::Vec<::subxt::utils::AccountId32>; + pub type Validators = ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >; } pub mod current_index { use super::runtime_types; @@ -8861,23 +9276,24 @@ pub mod api { } pub mod queued_keys { use super::runtime_types; - pub type QueuedKeys = ::std::vec::Vec<( - ::subxt::utils::AccountId32, + pub type QueuedKeys = ::subxt::ext::subxt_core::alloc::vec::Vec<( + ::subxt::ext::subxt_core::utils::AccountId32, runtime_types::rococo_runtime::SessionKeys, )>; } pub mod disabled_validators { use super::runtime_types; - pub type DisabledValidators = ::std::vec::Vec<::core::primitive::u32>; + pub type DisabledValidators = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u32>; } pub mod next_keys { use super::runtime_types; pub type NextKeys = runtime_types::rococo_runtime::SessionKeys; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod key_owner { use super::runtime_types; - pub type KeyOwner = ::subxt::utils::AccountId32; + pub type KeyOwner = ::subxt::ext::subxt_core::utils::AccountId32; pub type Param0 = runtime_types::sp_core::crypto::KeyTypeId; pub type Param1 = [::core::primitive::u8]; } @@ -8887,14 +9303,14 @@ pub mod api { #[doc = " The current set of validators."] pub fn validators( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::validators::Validators, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Session", "Validators", (), @@ -8909,14 +9325,14 @@ pub mod api { #[doc = " Current index of the session."] pub fn current_index( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::current_index::CurrentIndex, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Session", "CurrentIndex", (), @@ -8932,14 +9348,14 @@ pub mod api { #[doc = " has changed in the queued validator set."] pub fn queued_changed( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::queued_changed::QueuedChanged, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Session", "QueuedChanged", (), @@ -8955,22 +9371,21 @@ pub mod api { #[doc = " will be used to determine the validator's session keys."] pub fn queued_keys( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::queued_keys::QueuedKeys, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Session", "QueuedKeys", (), [ - 123u8, 8u8, 241u8, 219u8, 141u8, 50u8, 254u8, 247u8, 130u8, 71u8, - 105u8, 18u8, 149u8, 204u8, 28u8, 104u8, 184u8, 6u8, 165u8, 31u8, 153u8, - 54u8, 235u8, 78u8, 48u8, 182u8, 83u8, 221u8, 243u8, 110u8, 249u8, - 212u8, + 251u8, 240u8, 64u8, 86u8, 241u8, 74u8, 141u8, 38u8, 46u8, 18u8, 92u8, + 101u8, 227u8, 161u8, 58u8, 222u8, 17u8, 29u8, 248u8, 237u8, 74u8, 69u8, + 18u8, 16u8, 129u8, 187u8, 172u8, 249u8, 162u8, 96u8, 218u8, 186u8, ], ) } @@ -8981,14 +9396,14 @@ pub mod api { #[doc = " a new set of identities."] pub fn disabled_validators( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::disabled_validators::DisabledValidators, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Session", "DisabledValidators", (), @@ -9002,59 +9417,61 @@ pub mod api { #[doc = " The next session keys for a validator."] pub fn next_keys_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::next_keys::NextKeys, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Session", "NextKeys", (), [ - 13u8, 219u8, 184u8, 220u8, 199u8, 150u8, 34u8, 166u8, 125u8, 46u8, - 26u8, 160u8, 113u8, 243u8, 227u8, 6u8, 121u8, 176u8, 222u8, 250u8, - 108u8, 240u8, 0u8, 15u8, 177u8, 220u8, 206u8, 94u8, 179u8, 41u8, 209u8, - 23u8, + 87u8, 61u8, 243u8, 159u8, 164u8, 196u8, 130u8, 218u8, 136u8, 189u8, + 253u8, 151u8, 230u8, 9u8, 214u8, 58u8, 102u8, 67u8, 61u8, 138u8, 242u8, + 214u8, 80u8, 166u8, 130u8, 47u8, 141u8, 197u8, 11u8, 73u8, 100u8, 16u8, ], ) } #[doc = " The next session keys for a validator."] pub fn next_keys( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::next_keys::Param0, + >, types::next_keys::NextKeys, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Session", "NextKeys", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ - 13u8, 219u8, 184u8, 220u8, 199u8, 150u8, 34u8, 166u8, 125u8, 46u8, - 26u8, 160u8, 113u8, 243u8, 227u8, 6u8, 121u8, 176u8, 222u8, 250u8, - 108u8, 240u8, 0u8, 15u8, 177u8, 220u8, 206u8, 94u8, 179u8, 41u8, 209u8, - 23u8, + 87u8, 61u8, 243u8, 159u8, 164u8, 196u8, 130u8, 218u8, 136u8, 189u8, + 253u8, 151u8, 230u8, 9u8, 214u8, 58u8, 102u8, 67u8, 61u8, 138u8, 242u8, + 214u8, 80u8, 166u8, 130u8, 47u8, 141u8, 197u8, 11u8, 73u8, 100u8, 16u8, ], ) } #[doc = " The owner of a key. The key is the `KeyTypeId` + the encoded key."] pub fn key_owner_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::key_owner::KeyOwner, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Session", "KeyOwner", (), @@ -9069,18 +9486,22 @@ pub mod api { #[doc = " The owner of a key. The key is the `KeyTypeId` + the encoded key."] pub fn key_owner_iter1( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::key_owner::Param0, + >, types::key_owner::KeyOwner, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Session", "KeyOwner", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 217u8, 204u8, 21u8, 114u8, 247u8, 129u8, 32u8, 242u8, 93u8, 91u8, 253u8, 253u8, 248u8, 90u8, 12u8, 202u8, 195u8, 25u8, 18u8, 100u8, @@ -9092,24 +9513,32 @@ pub mod api { #[doc = " The owner of a key. The key is the `KeyTypeId` + the encoded key."] pub fn key_owner( &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< ( - ::subxt::storage::address::StaticStorageKey, - ::subxt::storage::address::StaticStorageKey, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::key_owner::Param0, + >, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::key_owner::Param1, + >, ), types::key_owner::KeyOwner, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Session", "KeyOwner", ( - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), ), [ 217u8, 204u8, 21u8, 114u8, 247u8, 129u8, 32u8, 242u8, 93u8, 91u8, @@ -9136,96 +9565,88 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Report voter equivocation/misbehavior. This method will verify the"] - #[doc = "equivocation proof and validate the given key ownership proof"] - #[doc = "against the extracted offender. If both are valid, the offence"] - #[doc = "will be reported."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::report_equivocation`]."] pub struct ReportEquivocation { - pub equivocation_proof: - ::std::boxed::Box, + pub equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< + report_equivocation::EquivocationProof, + >, pub key_owner_proof: report_equivocation::KeyOwnerProof, } pub mod report_equivocation { use super::runtime_types; pub type EquivocationProof = runtime_types::sp_consensus_grandpa::EquivocationProof< - ::subxt::utils::H256, + ::subxt::ext::subxt_core::utils::H256, ::core::primitive::u32, >; pub type KeyOwnerProof = runtime_types::sp_session::MembershipProof; } - impl ::subxt::blocks::StaticExtrinsic for ReportEquivocation { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ReportEquivocation { const PALLET: &'static str = "Grandpa"; const CALL: &'static str = "report_equivocation"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Report voter equivocation/misbehavior. This method will verify the"] - #[doc = "equivocation proof and validate the given key ownership proof"] - #[doc = "against the extracted offender. If both are valid, the offence"] - #[doc = "will be reported."] - #[doc = ""] - #[doc = "This extrinsic must be called unsigned and it is expected that only"] - #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] - #[doc = "if the block author is defined it will be defined as the equivocation"] - #[doc = "reporter."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::report_equivocation_unsigned`]."] pub struct ReportEquivocationUnsigned { - pub equivocation_proof: - ::std::boxed::Box, + pub equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< + report_equivocation_unsigned::EquivocationProof, + >, pub key_owner_proof: report_equivocation_unsigned::KeyOwnerProof, } pub mod report_equivocation_unsigned { use super::runtime_types; pub type EquivocationProof = runtime_types::sp_consensus_grandpa::EquivocationProof< - ::subxt::utils::H256, + ::subxt::ext::subxt_core::utils::H256, ::core::primitive::u32, >; pub type KeyOwnerProof = runtime_types::sp_session::MembershipProof; } - impl ::subxt::blocks::StaticExtrinsic for ReportEquivocationUnsigned { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ReportEquivocationUnsigned { const PALLET: &'static str = "Grandpa"; const CALL: &'static str = "report_equivocation_unsigned"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Note that the current authority set of the GRANDPA finality gadget has stalled."] - #[doc = ""] - #[doc = "This will trigger a forced authority set change at the beginning of the next session, to"] - #[doc = "be enacted `delay` blocks after that. The `delay` should be high enough to safely assume"] - #[doc = "that the block signalling the forced change will not be re-orged e.g. 1000 blocks."] - #[doc = "The block production rate (which may be slowed down because of finality lagging) should"] - #[doc = "be taken into account when choosing the `delay`. The GRANDPA voters based on the new"] - #[doc = "authority will start voting on top of `best_finalized_block_number` for new finalized"] - #[doc = "blocks. `best_finalized_block_number` should be the highest of the latest finalized"] - #[doc = "block of all validators of the new authority set."] - #[doc = ""] - #[doc = "Only callable by root."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::note_stalled`]."] pub struct NoteStalled { pub delay: note_stalled::Delay, pub best_finalized_block_number: note_stalled::BestFinalizedBlockNumber, @@ -9235,27 +9656,27 @@ pub mod api { pub type Delay = ::core::primitive::u32; pub type BestFinalizedBlockNumber = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for NoteStalled { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for NoteStalled { const PALLET: &'static str = "Grandpa"; const CALL: &'static str = "note_stalled"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Report voter equivocation/misbehavior. This method will verify the"] - #[doc = "equivocation proof and validate the given key ownership proof"] - #[doc = "against the extracted offender. If both are valid, the offence"] - #[doc = "will be reported."] + #[doc = "See [`Pallet::report_equivocation`]."] pub fn report_equivocation( &self, equivocation_proof: types::report_equivocation::EquivocationProof, key_owner_proof: types::report_equivocation::KeyOwnerProof, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Grandpa", "report_equivocation", types::ReportEquivocation { - equivocation_proof: ::std::boxed::Box::new(equivocation_proof), + equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box::new( + equivocation_proof, + ), key_owner_proof, }, [ @@ -9265,25 +9686,20 @@ pub mod api { ], ) } - #[doc = "Report voter equivocation/misbehavior. This method will verify the"] - #[doc = "equivocation proof and validate the given key ownership proof"] - #[doc = "against the extracted offender. If both are valid, the offence"] - #[doc = "will be reported."] - #[doc = ""] - #[doc = "This extrinsic must be called unsigned and it is expected that only"] - #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] - #[doc = "if the block author is defined it will be defined as the equivocation"] - #[doc = "reporter."] + #[doc = "See [`Pallet::report_equivocation_unsigned`]."] pub fn report_equivocation_unsigned( &self, equivocation_proof: types::report_equivocation_unsigned::EquivocationProof, key_owner_proof: types::report_equivocation_unsigned::KeyOwnerProof, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Grandpa", "report_equivocation_unsigned", types::ReportEquivocationUnsigned { - equivocation_proof: ::std::boxed::Box::new(equivocation_proof), + equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box::new( + equivocation_proof, + ), key_owner_proof, }, [ @@ -9293,24 +9709,13 @@ pub mod api { ], ) } - #[doc = "Note that the current authority set of the GRANDPA finality gadget has stalled."] - #[doc = ""] - #[doc = "This will trigger a forced authority set change at the beginning of the next session, to"] - #[doc = "be enacted `delay` blocks after that. The `delay` should be high enough to safely assume"] - #[doc = "that the block signalling the forced change will not be re-orged e.g. 1000 blocks."] - #[doc = "The block production rate (which may be slowed down because of finality lagging) should"] - #[doc = "be taken into account when choosing the `delay`. The GRANDPA voters based on the new"] - #[doc = "authority will start voting on top of `best_finalized_block_number` for new finalized"] - #[doc = "blocks. `best_finalized_block_number` should be the highest of the latest finalized"] - #[doc = "block of all validators of the new authority set."] - #[doc = ""] - #[doc = "Only callable by root."] + #[doc = "See [`Pallet::note_stalled`]."] pub fn note_stalled( &self, delay: types::note_stalled::Delay, best_finalized_block_number: types::note_stalled::BestFinalizedBlockNumber, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Grandpa", "note_stalled", types::NoteStalled { @@ -9331,59 +9736,59 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "New authority set has been applied."] pub struct NewAuthorities { pub authority_set: new_authorities::AuthoritySet, } pub mod new_authorities { use super::runtime_types; - pub type AuthoritySet = ::std::vec::Vec<( + pub type AuthoritySet = ::subxt::ext::subxt_core::alloc::vec::Vec<( runtime_types::sp_consensus_grandpa::app::Public, ::core::primitive::u64, )>; } - impl ::subxt::events::StaticEvent for NewAuthorities { + impl ::subxt::ext::subxt_core::events::StaticEvent for NewAuthorities { const PALLET: &'static str = "Grandpa"; const EVENT: &'static str = "NewAuthorities"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Current authority set has been paused."] pub struct Paused; - impl ::subxt::events::StaticEvent for Paused { + impl ::subxt::ext::subxt_core::events::StaticEvent for Paused { const PALLET: &'static str = "Grandpa"; const EVENT: &'static str = "Paused"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Current authority set has been resumed."] pub struct Resumed; - impl ::subxt::events::StaticEvent for Resumed { + impl ::subxt::ext::subxt_core::events::StaticEvent for Resumed { const PALLET: &'static str = "Grandpa"; const EVENT: &'static str = "Resumed"; } @@ -9419,28 +9824,20 @@ pub mod api { pub type SetIdSession = ::core::primitive::u32; pub type Param0 = ::core::primitive::u64; } - pub mod authorities { - use super::runtime_types; - pub type Authorities = - runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec<( - runtime_types::sp_consensus_grandpa::app::Public, - ::core::primitive::u64, - )>; - } } pub struct StorageApi; impl StorageApi { #[doc = " State of the current authority set."] pub fn state( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::state::State, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Grandpa", "State", (), @@ -9454,14 +9851,14 @@ pub mod api { #[doc = " Pending change: (signaled at, scheduled change)."] pub fn pending_change( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::pending_change::PendingChange, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Grandpa", "PendingChange", (), @@ -9476,14 +9873,14 @@ pub mod api { #[doc = " next block number where we can force a change."] pub fn next_forced( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::next_forced::NextForced, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Grandpa", "NextForced", (), @@ -9497,14 +9894,14 @@ pub mod api { #[doc = " `true` if we are currently stalled."] pub fn stalled( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::stalled::Stalled, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Grandpa", "Stalled", (), @@ -9519,14 +9916,14 @@ pub mod api { #[doc = " in the \"set\" of Grandpa validators from genesis."] pub fn current_set_id( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::current_set_id::CurrentSetId, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Grandpa", "CurrentSetId", (), @@ -9550,14 +9947,14 @@ pub mod api { #[doc = " TWOX-NOTE: `SetId` is not under user control."] pub fn set_id_session_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::set_id_session::SetIdSession, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Grandpa", "SetIdSession", (), @@ -9580,18 +9977,22 @@ pub mod api { #[doc = " TWOX-NOTE: `SetId` is not under user control."] pub fn set_id_session( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::set_id_session::Param0, + >, types::set_id_session::SetIdSession, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Grandpa", "SetIdSession", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, @@ -9599,28 +10000,6 @@ pub mod api { ], ) } - #[doc = " The current list of authorities."] - pub fn authorities( - &self, - ) -> ::subxt::storage::address::Address< - (), - types::authorities::Authorities, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Grandpa", - "Authorities", - (), - [ - 67u8, 196u8, 244u8, 13u8, 246u8, 245u8, 198u8, 98u8, 81u8, 55u8, 182u8, - 187u8, 214u8, 5u8, 181u8, 76u8, 251u8, 213u8, 144u8, 166u8, 36u8, - 153u8, 234u8, 181u8, 252u8, 55u8, 198u8, 175u8, 55u8, 211u8, 105u8, - 85u8, - ], - ) - } } } pub mod constants { @@ -9630,8 +10009,9 @@ pub mod api { #[doc = " Max Authorities in use"] pub fn max_authorities( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Grandpa", "MaxAuthorities", [ @@ -9645,8 +10025,9 @@ pub mod api { #[doc = " The maximum number of nominators for each validator."] pub fn max_nominators( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Grandpa", "MaxNominators", [ @@ -9665,8 +10046,9 @@ pub mod api { #[doc = " can be zero."] pub fn max_set_id_session_entries( &self, - ) -> ::subxt::constants::Address<::core::primitive::u64> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u64> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Grandpa", "MaxSetIdSessionEntries", [ @@ -9680,75 +10062,431 @@ pub mod api { } } } + pub mod im_online { + use super::root_mod; + use super::runtime_types; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_im_online::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_im_online::pallet::Call; + pub mod calls { + use super::root_mod; + use super::runtime_types; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::heartbeat`]."] + pub struct Heartbeat { + pub heartbeat: heartbeat::Heartbeat, + pub signature: heartbeat::Signature, + } + pub mod heartbeat { + use super::runtime_types; + pub type Heartbeat = + runtime_types::pallet_im_online::Heartbeat<::core::primitive::u32>; + pub type Signature = + runtime_types::pallet_im_online::sr25519::app_sr25519::Signature; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Heartbeat { + const PALLET: &'static str = "ImOnline"; + const CALL: &'static str = "heartbeat"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::heartbeat`]."] + pub fn heartbeat( + &self, + heartbeat: types::heartbeat::Heartbeat, + signature: types::heartbeat::Signature, + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( + "ImOnline", + "heartbeat", + types::Heartbeat { + heartbeat, + signature, + }, + [ + 41u8, 78u8, 115u8, 250u8, 94u8, 34u8, 215u8, 28u8, 33u8, 175u8, 203u8, + 205u8, 14u8, 40u8, 197u8, 51u8, 24u8, 198u8, 173u8, 32u8, 119u8, 154u8, + 213u8, 125u8, 219u8, 3u8, 128u8, 52u8, 166u8, 223u8, 241u8, 129u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_im_online::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "A new heartbeat was received from `AuthorityId`."] + pub struct HeartbeatReceived { + pub authority_id: heartbeat_received::AuthorityId, + } + pub mod heartbeat_received { + use super::runtime_types; + pub type AuthorityId = + runtime_types::pallet_im_online::sr25519::app_sr25519::Public; + } + impl ::subxt::ext::subxt_core::events::StaticEvent for HeartbeatReceived { + const PALLET: &'static str = "ImOnline"; + const EVENT: &'static str = "HeartbeatReceived"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "At the end of the session, no offence was committed."] + pub struct AllGood; + impl ::subxt::ext::subxt_core::events::StaticEvent for AllGood { + const PALLET: &'static str = "ImOnline"; + const EVENT: &'static str = "AllGood"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "At the end of the session, at least one validator was found to be offline."] + pub struct SomeOffline { + pub offline: some_offline::Offline, + } + pub mod some_offline { + use super::runtime_types; + pub type Offline = ::subxt::ext::subxt_core::alloc::vec::Vec<( + ::subxt::ext::subxt_core::utils::AccountId32, + (), + )>; + } + impl ::subxt::ext::subxt_core::events::StaticEvent for SomeOffline { + const PALLET: &'static str = "ImOnline"; + const EVENT: &'static str = "SomeOffline"; + } + } + pub mod storage { + use super::runtime_types; + pub mod types { + use super::runtime_types; + pub mod heartbeat_after { + use super::runtime_types; + pub type HeartbeatAfter = ::core::primitive::u32; + } + pub mod keys { + use super::runtime_types; + pub type Keys = + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec5< + runtime_types::pallet_im_online::sr25519::app_sr25519::Public, + >; + } + pub mod received_heartbeats { + use super::runtime_types; + pub type ReceivedHeartbeats = ::core::primitive::bool; + pub type Param0 = ::core::primitive::u32; + pub type Param1 = ::core::primitive::u32; + } + pub mod authored_blocks { + use super::runtime_types; + pub type AuthoredBlocks = ::core::primitive::u32; + pub type Param0 = ::core::primitive::u32; + pub type Param1 = ::subxt::ext::subxt_core::utils::AccountId32; + } + } + pub struct StorageApi; + impl StorageApi { + #[doc = " The block number after which it's ok to send heartbeats in the current"] + #[doc = " session."] + #[doc = ""] + #[doc = " At the beginning of each session we set this to a value that should fall"] + #[doc = " roughly in the middle of the session duration. The idea is to first wait for"] + #[doc = " the validators to produce a block in the current session, so that the"] + #[doc = " heartbeat later on will not be necessary."] + #[doc = ""] + #[doc = " This value will only be used as a fallback if we fail to get a proper session"] + #[doc = " progress estimate from `NextSessionRotation`, as those estimates should be"] + #[doc = " more accurate then the value we calculate for `HeartbeatAfter`."] + pub fn heartbeat_after( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + (), + types::heartbeat_after::HeartbeatAfter, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + (), + > { + ::subxt::ext::subxt_core::storage::address::Address::new_static( + "ImOnline", + "HeartbeatAfter", + (), + [ + 36u8, 179u8, 76u8, 254u8, 3u8, 184u8, 154u8, 142u8, 70u8, 104u8, 44u8, + 244u8, 39u8, 97u8, 31u8, 31u8, 93u8, 228u8, 185u8, 224u8, 13u8, 160u8, + 231u8, 210u8, 110u8, 143u8, 116u8, 29u8, 0u8, 215u8, 217u8, 137u8, + ], + ) + } + #[doc = " The current set of keys that may issue a heartbeat."] + pub fn keys( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + (), + types::keys::Keys, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + (), + > { + ::subxt::ext::subxt_core::storage::address::Address::new_static( + "ImOnline", + "Keys", + (), + [ + 111u8, 104u8, 188u8, 46u8, 152u8, 140u8, 137u8, 244u8, 52u8, 214u8, + 115u8, 156u8, 39u8, 239u8, 15u8, 168u8, 193u8, 125u8, 57u8, 195u8, + 250u8, 156u8, 234u8, 222u8, 222u8, 253u8, 135u8, 232u8, 196u8, 163u8, + 29u8, 218u8, + ], + ) + } + #[doc = " For each session index, we keep a mapping of `SessionIndex` and `AuthIndex`."] + pub fn received_heartbeats_iter( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + (), + types::received_heartbeats::ReceivedHeartbeats, + (), + (), + ::subxt::ext::subxt_core::utils::Yes, + > { + ::subxt::ext::subxt_core::storage::address::Address::new_static( + "ImOnline", + "ReceivedHeartbeats", + (), + [ + 30u8, 155u8, 42u8, 200u8, 223u8, 48u8, 127u8, 31u8, 253u8, 195u8, + 234u8, 108u8, 64u8, 27u8, 247u8, 17u8, 187u8, 199u8, 41u8, 138u8, 55u8, + 163u8, 94u8, 226u8, 10u8, 3u8, 132u8, 129u8, 8u8, 138u8, 137u8, 171u8, + ], + ) + } + #[doc = " For each session index, we keep a mapping of `SessionIndex` and `AuthIndex`."] + pub fn received_heartbeats_iter1( + &self, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::received_heartbeats::Param0, + >, + types::received_heartbeats::ReceivedHeartbeats, + (), + (), + ::subxt::ext::subxt_core::utils::Yes, + > { + ::subxt::ext::subxt_core::storage::address::Address::new_static( + "ImOnline", + "ReceivedHeartbeats", + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + [ + 30u8, 155u8, 42u8, 200u8, 223u8, 48u8, 127u8, 31u8, 253u8, 195u8, + 234u8, 108u8, 64u8, 27u8, 247u8, 17u8, 187u8, 199u8, 41u8, 138u8, 55u8, + 163u8, 94u8, 226u8, 10u8, 3u8, 132u8, 129u8, 8u8, 138u8, 137u8, 171u8, + ], + ) + } + #[doc = " For each session index, we keep a mapping of `SessionIndex` and `AuthIndex`."] + pub fn received_heartbeats( + &self, + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ( + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::received_heartbeats::Param0, + >, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::received_heartbeats::Param1, + >, + ), + types::received_heartbeats::ReceivedHeartbeats, + ::subxt::ext::subxt_core::utils::Yes, + (), + (), + > { + ::subxt::ext::subxt_core::storage::address::Address::new_static( + "ImOnline", + "ReceivedHeartbeats", + ( + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), + ), + [ + 30u8, 155u8, 42u8, 200u8, 223u8, 48u8, 127u8, 31u8, 253u8, 195u8, + 234u8, 108u8, 64u8, 27u8, 247u8, 17u8, 187u8, 199u8, 41u8, 138u8, 55u8, + 163u8, 94u8, 226u8, 10u8, 3u8, 132u8, 129u8, 8u8, 138u8, 137u8, 171u8, + ], + ) + } + #[doc = " For each session index, we keep a mapping of `ValidatorId` to the"] + #[doc = " number of blocks authored by the given authority."] + pub fn authored_blocks_iter( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + (), + types::authored_blocks::AuthoredBlocks, + (), + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + > { + ::subxt::ext::subxt_core::storage::address::Address::new_static( + "ImOnline", + "AuthoredBlocks", + (), + [ + 123u8, 76u8, 230u8, 113u8, 65u8, 255u8, 99u8, 79u8, 131u8, 139u8, + 218u8, 20u8, 174u8, 191u8, 224u8, 67u8, 137u8, 48u8, 146u8, 209u8, + 148u8, 69u8, 130u8, 9u8, 173u8, 253u8, 206u8, 196u8, 68u8, 160u8, + 233u8, 126u8, + ], + ) + } + #[doc = " For each session index, we keep a mapping of `ValidatorId` to the"] + #[doc = " number of blocks authored by the given authority."] + pub fn authored_blocks_iter1( + &self, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::authored_blocks::Param0, + >, + types::authored_blocks::AuthoredBlocks, + (), + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + > { + ::subxt::ext::subxt_core::storage::address::Address::new_static( + "ImOnline", + "AuthoredBlocks", + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + [ + 123u8, 76u8, 230u8, 113u8, 65u8, 255u8, 99u8, 79u8, 131u8, 139u8, + 218u8, 20u8, 174u8, 191u8, 224u8, 67u8, 137u8, 48u8, 146u8, 209u8, + 148u8, 69u8, 130u8, 9u8, 173u8, 253u8, 206u8, 196u8, 68u8, 160u8, + 233u8, 126u8, + ], + ) + } + #[doc = " For each session index, we keep a mapping of `ValidatorId` to the"] + #[doc = " number of blocks authored by the given authority."] + pub fn authored_blocks( + &self, + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ( + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::authored_blocks::Param0, + >, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::authored_blocks::Param1, + >, + ), + types::authored_blocks::AuthoredBlocks, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + (), + > { + ::subxt::ext::subxt_core::storage::address::Address::new_static( + "ImOnline", + "AuthoredBlocks", + ( + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), + ), + [ + 123u8, 76u8, 230u8, 113u8, 65u8, 255u8, 99u8, 79u8, 131u8, 139u8, + 218u8, 20u8, 174u8, 191u8, 224u8, 67u8, 137u8, 48u8, 146u8, 209u8, + 148u8, 69u8, 130u8, 9u8, 173u8, 253u8, 206u8, 196u8, 68u8, 160u8, + 233u8, 126u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " A configuration for base priority of unsigned transactions."] + #[doc = ""] + #[doc = " This is exposed so that it can be tuned for particular runtime, when"] + #[doc = " multiple pallets send unsigned transactions."] + pub fn unsigned_priority( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u64> + { + ::subxt::ext::subxt_core::constants::Address::new_static( + "ImOnline", + "UnsignedPriority", + [ + 128u8, 214u8, 205u8, 242u8, 181u8, 142u8, 124u8, 231u8, 190u8, 146u8, + 59u8, 226u8, 157u8, 101u8, 103u8, 117u8, 249u8, 65u8, 18u8, 191u8, + 103u8, 119u8, 53u8, 85u8, 81u8, 96u8, 220u8, 42u8, 184u8, 239u8, 42u8, + 246u8, + ], + ) + } + } + } + } pub mod authority_discovery { use super::root_mod; use super::runtime_types; - pub mod storage { - use super::runtime_types; - pub mod types { - use super::runtime_types; - pub mod keys { - use super::runtime_types; - pub type Keys = - runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< - runtime_types::sp_authority_discovery::app::Public, - >; - } - pub mod next_keys { - use super::runtime_types; - pub type NextKeys = - runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< - runtime_types::sp_authority_discovery::app::Public, - >; - } - } - pub struct StorageApi; - impl StorageApi { - #[doc = " Keys of the current authority set."] - pub fn keys( - &self, - ) -> ::subxt::storage::address::Address< - (), - types::keys::Keys, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "AuthorityDiscovery", - "Keys", - (), - [ - 111u8, 104u8, 188u8, 46u8, 152u8, 140u8, 137u8, 244u8, 52u8, 214u8, - 115u8, 156u8, 39u8, 239u8, 15u8, 168u8, 193u8, 125u8, 57u8, 195u8, - 250u8, 156u8, 234u8, 222u8, 222u8, 253u8, 135u8, 232u8, 196u8, 163u8, - 29u8, 218u8, - ], - ) - } - #[doc = " Keys of the next authority set."] - pub fn next_keys( - &self, - ) -> ::subxt::storage::address::Address< - (), - types::next_keys::NextKeys, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "AuthorityDiscovery", - "NextKeys", - (), - [ - 171u8, 107u8, 15u8, 108u8, 125u8, 102u8, 193u8, 240u8, 127u8, 160u8, - 53u8, 1u8, 208u8, 36u8, 134u8, 4u8, 216u8, 26u8, 156u8, 143u8, 154u8, - 194u8, 153u8, 199u8, 46u8, 211u8, 153u8, 222u8, 244u8, 4u8, 165u8, 2u8, - ], - ) - } - } - } } pub mod treasury { use super::root_mod; @@ -9764,31 +10502,20 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Put forward a suggestion for spending."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be signed."] - #[doc = ""] - #[doc = "## Details"] - #[doc = "A deposit proportional to the value is reserved and slashed if the proposal is rejected."] - #[doc = "It is returned once the proposal is awarded."] - #[doc = ""] - #[doc = "### Complexity"] - #[doc = "- O(1)"] - #[doc = ""] - #[doc = "## Events"] - #[doc = ""] - #[doc = "Emits [`Event::Proposed`] if successful."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::propose_spend`]."] pub struct ProposeSpend { #[codec(compact)] pub value: propose_spend::Value, @@ -9797,38 +10524,30 @@ pub mod api { pub mod propose_spend { use super::runtime_types; pub type Value = ::core::primitive::u128; - pub type Beneficiary = - ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Beneficiary = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; } - impl ::subxt::blocks::StaticExtrinsic for ProposeSpend { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ProposeSpend { const PALLET: &'static str = "Treasury"; const CALL: &'static str = "propose_spend"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Reject a proposed spend."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be [`Config::RejectOrigin`]."] - #[doc = ""] - #[doc = "## Details"] - #[doc = "The original deposit will be slashed."] - #[doc = ""] - #[doc = "### Complexity"] - #[doc = "- O(1)"] - #[doc = ""] - #[doc = "## Events"] - #[doc = ""] - #[doc = "Emits [`Event::Rejected`] if successful."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::reject_proposal`]."] pub struct RejectProposal { #[codec(compact)] pub proposal_id: reject_proposal::ProposalId, @@ -9837,37 +10556,25 @@ pub mod api { use super::runtime_types; pub type ProposalId = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for RejectProposal { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RejectProposal { const PALLET: &'static str = "Treasury"; const CALL: &'static str = "reject_proposal"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Approve a proposal."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be [`Config::ApproveOrigin`]."] - #[doc = ""] - #[doc = "## Details"] - #[doc = ""] - #[doc = "At a later time, the proposal will be allocated to the beneficiary and the original"] - #[doc = "deposit will be returned."] - #[doc = ""] - #[doc = "### Complexity"] - #[doc = " - O(1)."] - #[doc = ""] - #[doc = "## Events"] - #[doc = ""] - #[doc = "No events are emitted from this dispatch."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::approve_proposal`]."] pub struct ApproveProposal { #[codec(compact)] pub proposal_id: approve_proposal::ProposalId, @@ -9876,37 +10583,25 @@ pub mod api { use super::runtime_types; pub type ProposalId = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for ApproveProposal { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ApproveProposal { const PALLET: &'static str = "Treasury"; const CALL: &'static str = "approve_proposal"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Propose and approve a spend of treasury funds."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be [`Config::SpendOrigin`] with the `Success` value being at least `amount`."] - #[doc = ""] - #[doc = "### Details"] - #[doc = "NOTE: For record-keeping purposes, the proposer is deemed to be equivalent to the"] - #[doc = "beneficiary."] - #[doc = ""] - #[doc = "### Parameters"] - #[doc = "- `amount`: The amount to be transferred from the treasury to the `beneficiary`."] - #[doc = "- `beneficiary`: The destination account for the transfer."] - #[doc = ""] - #[doc = "## Events"] - #[doc = ""] - #[doc = "Emits [`Event::SpendApproved`] if successful."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::spend_local`]."] pub struct SpendLocal { #[codec(compact)] pub amount: spend_local::Amount, @@ -9915,44 +10610,30 @@ pub mod api { pub mod spend_local { use super::runtime_types; pub type Amount = ::core::primitive::u128; - pub type Beneficiary = - ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Beneficiary = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; } - impl ::subxt::blocks::StaticExtrinsic for SpendLocal { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SpendLocal { const PALLET: &'static str = "Treasury"; const CALL: &'static str = "spend_local"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Force a previously approved proposal to be removed from the approval queue."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be [`Config::RejectOrigin`]."] - #[doc = ""] - #[doc = "## Details"] - #[doc = ""] - #[doc = "The original deposit will no longer be returned."] - #[doc = ""] - #[doc = "### Parameters"] - #[doc = "- `proposal_id`: The index of a proposal"] - #[doc = ""] - #[doc = "### Complexity"] - #[doc = "- O(A) where `A` is the number of approvals"] - #[doc = ""] - #[doc = "### Errors"] - #[doc = "- [`Error::ProposalNotApproved`]: The `proposal_id` supplied was not found in the"] - #[doc = " approval queue, i.e., the proposal has not been approved. This could also mean the"] - #[doc = " proposal does not exist altogether, thus there is no way it would have been approved"] - #[doc = " in the first place."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::remove_approval`]."] pub struct RemoveApproval { #[codec(compact)] pub proposal_id: remove_approval::ProposalId, @@ -9961,51 +10642,31 @@ pub mod api { use super::runtime_types; pub type ProposalId = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for RemoveApproval { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RemoveApproval { const PALLET: &'static str = "Treasury"; const CALL: &'static str = "remove_approval"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Propose and approve a spend of treasury funds."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be [`Config::SpendOrigin`] with the `Success` value being at least"] - #[doc = "`amount` of `asset_kind` in the native asset. The amount of `asset_kind` is converted"] - #[doc = "for assertion using the [`Config::BalanceConverter`]."] - #[doc = ""] - #[doc = "## Details"] - #[doc = ""] - #[doc = "Create an approved spend for transferring a specific `amount` of `asset_kind` to a"] - #[doc = "designated beneficiary. The spend must be claimed using the `payout` dispatchable within"] - #[doc = "the [`Config::PayoutPeriod`]."] - #[doc = ""] - #[doc = "### Parameters"] - #[doc = "- `asset_kind`: An indicator of the specific asset class to be spent."] - #[doc = "- `amount`: The amount to be transferred from the treasury to the `beneficiary`."] - #[doc = "- `beneficiary`: The beneficiary of the spend."] - #[doc = "- `valid_from`: The block number from which the spend can be claimed. It can refer to"] - #[doc = " the past if the resulting spend has not yet expired according to the"] - #[doc = " [`Config::PayoutPeriod`]. If `None`, the spend can be claimed immediately after"] - #[doc = " approval."] - #[doc = ""] - #[doc = "## Events"] - #[doc = ""] - #[doc = "Emits [`Event::AssetSpendApproved`] if successful."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::spend`]."] pub struct Spend { - pub asset_kind: ::std::boxed::Box, + pub asset_kind: ::subxt::ext::subxt_core::alloc::boxed::Box, #[codec(compact)] pub amount: spend::Amount, - pub beneficiary: ::std::boxed::Box, + pub beneficiary: + ::subxt::ext::subxt_core::alloc::boxed::Box, pub valid_from: spend::ValidFrom, } pub mod spend { @@ -10013,42 +10674,28 @@ pub mod api { pub type AssetKind = runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset; pub type Amount = ::core::primitive::u128; - pub type Beneficiary = runtime_types::xcm::VersionedLocation; + pub type Beneficiary = runtime_types::xcm::VersionedMultiLocation; pub type ValidFrom = ::core::option::Option<::core::primitive::u32>; } - impl ::subxt::blocks::StaticExtrinsic for Spend { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Spend { const PALLET: &'static str = "Treasury"; const CALL: &'static str = "spend"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Claim a spend."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be signed."] - #[doc = ""] - #[doc = "## Details"] - #[doc = ""] - #[doc = "Spends must be claimed within some temporal bounds. A spend may be claimed within one"] - #[doc = "[`Config::PayoutPeriod`] from the `valid_from` block."] - #[doc = "In case of a payout failure, the spend status must be updated with the `check_status`"] - #[doc = "dispatchable before retrying with the current function."] - #[doc = ""] - #[doc = "### Parameters"] - #[doc = "- `index`: The spend index."] - #[doc = ""] - #[doc = "## Events"] - #[doc = ""] - #[doc = "Emits [`Event::Paid`] if successful."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::payout`]."] pub struct Payout { pub index: payout::Index, } @@ -10056,39 +10703,25 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for Payout { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Payout { const PALLET: &'static str = "Treasury"; const CALL: &'static str = "payout"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Check the status of the spend and remove it from the storage if processed."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be signed."] - #[doc = ""] - #[doc = "## Details"] - #[doc = ""] - #[doc = "The status check is a prerequisite for retrying a failed payout."] - #[doc = "If a spend has either succeeded or expired, it is removed from the storage by this"] - #[doc = "function. In such instances, transaction fees are refunded."] - #[doc = ""] - #[doc = "### Parameters"] - #[doc = "- `index`: The spend index."] - #[doc = ""] - #[doc = "## Events"] - #[doc = ""] - #[doc = "Emits [`Event::PaymentFailed`] if the spend payout has failed."] - #[doc = "Emits [`Event::SpendProcessed`] if the spend payout has succeed."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::check_status`]."] pub struct CheckStatus { pub index: check_status::Index, } @@ -10096,36 +10729,25 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for CheckStatus { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for CheckStatus { const PALLET: &'static str = "Treasury"; const CALL: &'static str = "check_status"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Void previously approved spend."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be [`Config::RejectOrigin`]."] - #[doc = ""] - #[doc = "## Details"] - #[doc = ""] - #[doc = "A spend void is only possible if the payout has not been attempted yet."] - #[doc = ""] - #[doc = "### Parameters"] - #[doc = "- `index`: The spend index."] - #[doc = ""] - #[doc = "## Events"] - #[doc = ""] - #[doc = "Emits [`Event::AssetSpendVoided`] if successful."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::void_spend`]."] pub struct VoidSpend { pub index: void_spend::Index, } @@ -10133,35 +10755,20 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for VoidSpend { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for VoidSpend { const PALLET: &'static str = "Treasury"; const CALL: &'static str = "void_spend"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Put forward a suggestion for spending."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be signed."] - #[doc = ""] - #[doc = "## Details"] - #[doc = "A deposit proportional to the value is reserved and slashed if the proposal is rejected."] - #[doc = "It is returned once the proposal is awarded."] - #[doc = ""] - #[doc = "### Complexity"] - #[doc = "- O(1)"] - #[doc = ""] - #[doc = "## Events"] - #[doc = ""] - #[doc = "Emits [`Event::Proposed`] if successful."] + #[doc = "See [`Pallet::propose_spend`]."] pub fn propose_spend( &self, value: types::propose_spend::Value, beneficiary: types::propose_spend::Beneficiary, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Treasury", "propose_spend", types::ProposeSpend { value, beneficiary }, @@ -10172,26 +10779,12 @@ pub mod api { ], ) } - #[doc = "Reject a proposed spend."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be [`Config::RejectOrigin`]."] - #[doc = ""] - #[doc = "## Details"] - #[doc = "The original deposit will be slashed."] - #[doc = ""] - #[doc = "### Complexity"] - #[doc = "- O(1)"] - #[doc = ""] - #[doc = "## Events"] - #[doc = ""] - #[doc = "Emits [`Event::Rejected`] if successful."] + #[doc = "See [`Pallet::reject_proposal`]."] pub fn reject_proposal( &self, proposal_id: types::reject_proposal::ProposalId, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Treasury", "reject_proposal", types::RejectProposal { proposal_id }, @@ -10202,28 +10795,12 @@ pub mod api { ], ) } - #[doc = "Approve a proposal."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be [`Config::ApproveOrigin`]."] - #[doc = ""] - #[doc = "## Details"] - #[doc = ""] - #[doc = "At a later time, the proposal will be allocated to the beneficiary and the original"] - #[doc = "deposit will be returned."] - #[doc = ""] - #[doc = "### Complexity"] - #[doc = " - O(1)."] - #[doc = ""] - #[doc = "## Events"] - #[doc = ""] - #[doc = "No events are emitted from this dispatch."] + #[doc = "See [`Pallet::approve_proposal`]."] pub fn approve_proposal( &self, proposal_id: types::approve_proposal::ProposalId, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Treasury", "approve_proposal", types::ApproveProposal { proposal_id }, @@ -10234,29 +10811,13 @@ pub mod api { ], ) } - #[doc = "Propose and approve a spend of treasury funds."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be [`Config::SpendOrigin`] with the `Success` value being at least `amount`."] - #[doc = ""] - #[doc = "### Details"] - #[doc = "NOTE: For record-keeping purposes, the proposer is deemed to be equivalent to the"] - #[doc = "beneficiary."] - #[doc = ""] - #[doc = "### Parameters"] - #[doc = "- `amount`: The amount to be transferred from the treasury to the `beneficiary`."] - #[doc = "- `beneficiary`: The destination account for the transfer."] - #[doc = ""] - #[doc = "## Events"] - #[doc = ""] - #[doc = "Emits [`Event::SpendApproved`] if successful."] + #[doc = "See [`Pallet::spend_local`]."] pub fn spend_local( &self, amount: types::spend_local::Amount, beneficiary: types::spend_local::Beneficiary, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Treasury", "spend_local", types::SpendLocal { @@ -10270,32 +10831,12 @@ pub mod api { ], ) } - #[doc = "Force a previously approved proposal to be removed from the approval queue."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be [`Config::RejectOrigin`]."] - #[doc = ""] - #[doc = "## Details"] - #[doc = ""] - #[doc = "The original deposit will no longer be returned."] - #[doc = ""] - #[doc = "### Parameters"] - #[doc = "- `proposal_id`: The index of a proposal"] - #[doc = ""] - #[doc = "### Complexity"] - #[doc = "- O(A) where `A` is the number of approvals"] - #[doc = ""] - #[doc = "### Errors"] - #[doc = "- [`Error::ProposalNotApproved`]: The `proposal_id` supplied was not found in the"] - #[doc = " approval queue, i.e., the proposal has not been approved. This could also mean the"] - #[doc = " proposal does not exist altogether, thus there is no way it would have been approved"] - #[doc = " in the first place."] + #[doc = "See [`Pallet::remove_approval`]."] pub fn remove_approval( &self, proposal_id: types::remove_approval::ProposalId, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Treasury", "remove_approval", types::RemoveApproval { proposal_id }, @@ -10307,80 +10848,41 @@ pub mod api { ], ) } - #[doc = "Propose and approve a spend of treasury funds."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be [`Config::SpendOrigin`] with the `Success` value being at least"] - #[doc = "`amount` of `asset_kind` in the native asset. The amount of `asset_kind` is converted"] - #[doc = "for assertion using the [`Config::BalanceConverter`]."] - #[doc = ""] - #[doc = "## Details"] - #[doc = ""] - #[doc = "Create an approved spend for transferring a specific `amount` of `asset_kind` to a"] - #[doc = "designated beneficiary. The spend must be claimed using the `payout` dispatchable within"] - #[doc = "the [`Config::PayoutPeriod`]."] - #[doc = ""] - #[doc = "### Parameters"] - #[doc = "- `asset_kind`: An indicator of the specific asset class to be spent."] - #[doc = "- `amount`: The amount to be transferred from the treasury to the `beneficiary`."] - #[doc = "- `beneficiary`: The beneficiary of the spend."] - #[doc = "- `valid_from`: The block number from which the spend can be claimed. It can refer to"] - #[doc = " the past if the resulting spend has not yet expired according to the"] - #[doc = " [`Config::PayoutPeriod`]. If `None`, the spend can be claimed immediately after"] - #[doc = " approval."] - #[doc = ""] - #[doc = "## Events"] - #[doc = ""] - #[doc = "Emits [`Event::AssetSpendApproved`] if successful."] + #[doc = "See [`Pallet::spend`]."] pub fn spend( &self, asset_kind: types::spend::AssetKind, amount: types::spend::Amount, beneficiary: types::spend::Beneficiary, valid_from: types::spend::ValidFrom, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Treasury", "spend", types::Spend { - asset_kind: ::std::boxed::Box::new(asset_kind), + asset_kind: ::subxt::ext::subxt_core::alloc::boxed::Box::new( + asset_kind, + ), amount, - beneficiary: ::std::boxed::Box::new(beneficiary), + beneficiary: ::subxt::ext::subxt_core::alloc::boxed::Box::new( + beneficiary, + ), valid_from, }, [ - 127u8, 68u8, 115u8, 140u8, 122u8, 90u8, 253u8, 105u8, 230u8, 137u8, - 104u8, 130u8, 221u8, 123u8, 49u8, 126u8, 247u8, 80u8, 12u8, 4u8, 223u8, - 218u8, 187u8, 192u8, 61u8, 221u8, 46u8, 211u8, 71u8, 196u8, 55u8, - 237u8, + 124u8, 75u8, 215u8, 13u8, 48u8, 105u8, 201u8, 35u8, 199u8, 228u8, 38u8, + 229u8, 147u8, 255u8, 237u8, 249u8, 114u8, 154u8, 129u8, 209u8, 177u8, + 17u8, 70u8, 107u8, 74u8, 175u8, 244u8, 132u8, 206u8, 24u8, 224u8, + 156u8, ], ) } - #[doc = "Claim a spend."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be signed."] - #[doc = ""] - #[doc = "## Details"] - #[doc = ""] - #[doc = "Spends must be claimed within some temporal bounds. A spend may be claimed within one"] - #[doc = "[`Config::PayoutPeriod`] from the `valid_from` block."] - #[doc = "In case of a payout failure, the spend status must be updated with the `check_status`"] - #[doc = "dispatchable before retrying with the current function."] - #[doc = ""] - #[doc = "### Parameters"] - #[doc = "- `index`: The spend index."] - #[doc = ""] - #[doc = "## Events"] - #[doc = ""] - #[doc = "Emits [`Event::Paid`] if successful."] + #[doc = "See [`Pallet::payout`]."] pub fn payout( &self, index: types::payout::Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Treasury", "payout", types::Payout { index }, @@ -10391,30 +10893,12 @@ pub mod api { ], ) } - #[doc = "Check the status of the spend and remove it from the storage if processed."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be signed."] - #[doc = ""] - #[doc = "## Details"] - #[doc = ""] - #[doc = "The status check is a prerequisite for retrying a failed payout."] - #[doc = "If a spend has either succeeded or expired, it is removed from the storage by this"] - #[doc = "function. In such instances, transaction fees are refunded."] - #[doc = ""] - #[doc = "### Parameters"] - #[doc = "- `index`: The spend index."] - #[doc = ""] - #[doc = "## Events"] - #[doc = ""] - #[doc = "Emits [`Event::PaymentFailed`] if the spend payout has failed."] - #[doc = "Emits [`Event::SpendProcessed`] if the spend payout has succeed."] + #[doc = "See [`Pallet::check_status`]."] pub fn check_status( &self, index: types::check_status::Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Treasury", "check_status", types::CheckStatus { index }, @@ -10425,27 +10909,12 @@ pub mod api { ], ) } - #[doc = "Void previously approved spend."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be [`Config::RejectOrigin`]."] - #[doc = ""] - #[doc = "## Details"] - #[doc = ""] - #[doc = "A spend void is only possible if the payout has not been attempted yet."] - #[doc = ""] - #[doc = "### Parameters"] - #[doc = "- `index`: The spend index."] - #[doc = ""] - #[doc = "## Events"] - #[doc = ""] - #[doc = "Emits [`Event::AssetSpendVoided`] if successful."] + #[doc = "See [`Pallet::void_spend`]."] pub fn void_spend( &self, index: types::void_spend::Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Treasury", "void_spend", types::VoidSpend { index }, @@ -10463,15 +10932,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "New proposal."] pub struct Proposed { pub proposal_index: proposed::ProposalIndex, @@ -10480,20 +10949,20 @@ pub mod api { use super::runtime_types; pub type ProposalIndex = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for Proposed { + impl ::subxt::ext::subxt_core::events::StaticEvent for Proposed { const PALLET: &'static str = "Treasury"; const EVENT: &'static str = "Proposed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "We have ended a spend period and will now allocate funds."] pub struct Spending { pub budget_remaining: spending::BudgetRemaining, @@ -10502,20 +10971,20 @@ pub mod api { use super::runtime_types; pub type BudgetRemaining = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Spending { + impl ::subxt::ext::subxt_core::events::StaticEvent for Spending { const PALLET: &'static str = "Treasury"; const EVENT: &'static str = "Spending"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some funds have been allocated."] pub struct Awarded { pub proposal_index: awarded::ProposalIndex, @@ -10526,22 +10995,22 @@ pub mod api { use super::runtime_types; pub type ProposalIndex = ::core::primitive::u32; pub type Award = ::core::primitive::u128; - pub type Account = ::subxt::utils::AccountId32; + pub type Account = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for Awarded { + impl ::subxt::ext::subxt_core::events::StaticEvent for Awarded { const PALLET: &'static str = "Treasury"; const EVENT: &'static str = "Awarded"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A proposal was rejected; funds were slashed."] pub struct Rejected { pub proposal_index: rejected::ProposalIndex, @@ -10552,20 +11021,20 @@ pub mod api { pub type ProposalIndex = ::core::primitive::u32; pub type Slashed = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Rejected { + impl ::subxt::ext::subxt_core::events::StaticEvent for Rejected { const PALLET: &'static str = "Treasury"; const EVENT: &'static str = "Rejected"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some of our funds have been burnt."] pub struct Burnt { pub burnt_funds: burnt::BurntFunds, @@ -10574,20 +11043,20 @@ pub mod api { use super::runtime_types; pub type BurntFunds = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Burnt { + impl ::subxt::ext::subxt_core::events::StaticEvent for Burnt { const PALLET: &'static str = "Treasury"; const EVENT: &'static str = "Burnt"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Spending has finished; this is the amount that rolls over until next spend."] pub struct Rollover { pub rollover_balance: rollover::RolloverBalance, @@ -10596,20 +11065,20 @@ pub mod api { use super::runtime_types; pub type RolloverBalance = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Rollover { + impl ::subxt::ext::subxt_core::events::StaticEvent for Rollover { const PALLET: &'static str = "Treasury"; const EVENT: &'static str = "Rollover"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some funds have been deposited."] pub struct Deposit { pub value: deposit::Value, @@ -10618,20 +11087,20 @@ pub mod api { use super::runtime_types; pub type Value = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Deposit { + impl ::subxt::ext::subxt_core::events::StaticEvent for Deposit { const PALLET: &'static str = "Treasury"; const EVENT: &'static str = "Deposit"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A new spend proposal has been approved."] pub struct SpendApproved { pub proposal_index: spend_approved::ProposalIndex, @@ -10642,22 +11111,22 @@ pub mod api { use super::runtime_types; pub type ProposalIndex = ::core::primitive::u32; pub type Amount = ::core::primitive::u128; - pub type Beneficiary = ::subxt::utils::AccountId32; + pub type Beneficiary = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for SpendApproved { + impl ::subxt::ext::subxt_core::events::StaticEvent for SpendApproved { const PALLET: &'static str = "Treasury"; const EVENT: &'static str = "SpendApproved"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The inactive funds of the pallet have been updated."] pub struct UpdatedInactive { pub reactivated: updated_inactive::Reactivated, @@ -10668,20 +11137,20 @@ pub mod api { pub type Reactivated = ::core::primitive::u128; pub type Deactivated = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for UpdatedInactive { + impl ::subxt::ext::subxt_core::events::StaticEvent for UpdatedInactive { const PALLET: &'static str = "Treasury"; const EVENT: &'static str = "UpdatedInactive"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A new asset spend proposal has been approved."] pub struct AssetSpendApproved { pub index: asset_spend_approved::Index, @@ -10697,24 +11166,24 @@ pub mod api { pub type AssetKind = runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset; pub type Amount = ::core::primitive::u128; - pub type Beneficiary = runtime_types::xcm::VersionedLocation; + pub type Beneficiary = runtime_types::xcm::VersionedMultiLocation; pub type ValidFrom = ::core::primitive::u32; pub type ExpireAt = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for AssetSpendApproved { + impl ::subxt::ext::subxt_core::events::StaticEvent for AssetSpendApproved { const PALLET: &'static str = "Treasury"; const EVENT: &'static str = "AssetSpendApproved"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "An approved spend was voided."] pub struct AssetSpendVoided { pub index: asset_spend_voided::Index, @@ -10723,20 +11192,20 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for AssetSpendVoided { + impl ::subxt::ext::subxt_core::events::StaticEvent for AssetSpendVoided { const PALLET: &'static str = "Treasury"; const EVENT: &'static str = "AssetSpendVoided"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A payment happened."] pub struct Paid { pub index: paid::Index, @@ -10747,20 +11216,20 @@ pub mod api { pub type Index = ::core::primitive::u32; pub type PaymentId = ::core::primitive::u64; } - impl ::subxt::events::StaticEvent for Paid { + impl ::subxt::ext::subxt_core::events::StaticEvent for Paid { const PALLET: &'static str = "Treasury"; const EVENT: &'static str = "Paid"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A payment failed and can be retried."] pub struct PaymentFailed { pub index: payment_failed::Index, @@ -10771,20 +11240,20 @@ pub mod api { pub type Index = ::core::primitive::u32; pub type PaymentId = ::core::primitive::u64; } - impl ::subxt::events::StaticEvent for PaymentFailed { + impl ::subxt::ext::subxt_core::events::StaticEvent for PaymentFailed { const PALLET: &'static str = "Treasury"; const EVENT: &'static str = "PaymentFailed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A spend was processed and removed from the storage. It might have been successfully"] #[doc = "paid or it may have expired."] pub struct SpendProcessed { @@ -10794,7 +11263,7 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for SpendProcessed { + impl ::subxt::ext::subxt_core::events::StaticEvent for SpendProcessed { const PALLET: &'static str = "Treasury"; const EVENT: &'static str = "SpendProcessed"; } @@ -10810,7 +11279,7 @@ pub mod api { pub mod proposals { use super::runtime_types; pub type Proposals = runtime_types::pallet_treasury::Proposal< - ::subxt::utils::AccountId32, + ::subxt::ext::subxt_core::utils::AccountId32, ::core::primitive::u128, >; pub type Param0 = ::core::primitive::u32; @@ -10822,7 +11291,7 @@ pub mod api { pub mod approvals { use super::runtime_types; pub type Approvals = - runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::bounded_collections::bounded_vec::BoundedVec12< ::core::primitive::u32, >; } @@ -10835,7 +11304,7 @@ pub mod api { pub type Spends = runtime_types::pallet_treasury::SpendStatus< runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, ::core::primitive::u128, - runtime_types::xcm::VersionedLocation, + runtime_types::xcm::VersionedMultiLocation, ::core::primitive::u32, ::core::primitive::u64, >; @@ -10847,14 +11316,14 @@ pub mod api { #[doc = " Number of proposals that have been made."] pub fn proposal_count( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::proposal_count::ProposalCount, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Treasury", "ProposalCount", (), @@ -10868,14 +11337,14 @@ pub mod api { #[doc = " Proposals that have been made."] pub fn proposals_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::proposals::Proposals, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Treasury", "Proposals", (), @@ -10890,18 +11359,22 @@ pub mod api { #[doc = " Proposals that have been made."] pub fn proposals( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::proposals::Param0, + >, types::proposals::Proposals, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Treasury", "Proposals", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 207u8, 135u8, 145u8, 146u8, 48u8, 10u8, 252u8, 40u8, 20u8, 115u8, 205u8, 41u8, 173u8, 83u8, 115u8, 46u8, 106u8, 40u8, 130u8, 157u8, @@ -10913,14 +11386,14 @@ pub mod api { #[doc = " The amount which has been reported as inactive to Currency."] pub fn deactivated( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::deactivated::Deactivated, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Treasury", "Deactivated", (), @@ -10935,14 +11408,14 @@ pub mod api { #[doc = " Proposal indices that have been approved but not yet awarded."] pub fn approvals( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::approvals::Approvals, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Treasury", "Approvals", (), @@ -10956,14 +11429,14 @@ pub mod api { #[doc = " The count of spends that have been made."] pub fn spend_count( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::spend_count::SpendCount, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Treasury", "SpendCount", (), @@ -10978,45 +11451,49 @@ pub mod api { #[doc = " Spends that have been approved and being processed."] pub fn spends_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::spends::Spends, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Treasury", "Spends", (), [ - 207u8, 104u8, 63u8, 103u8, 177u8, 66u8, 236u8, 100u8, 122u8, 213u8, - 125u8, 153u8, 180u8, 219u8, 124u8, 22u8, 88u8, 161u8, 188u8, 197u8, - 70u8, 46u8, 72u8, 170u8, 146u8, 4u8, 127u8, 160u8, 204u8, 2u8, 89u8, - 95u8, + 231u8, 192u8, 40u8, 149u8, 163u8, 98u8, 111u8, 136u8, 44u8, 162u8, + 87u8, 181u8, 233u8, 204u8, 87u8, 111u8, 210u8, 225u8, 235u8, 73u8, + 217u8, 8u8, 129u8, 51u8, 54u8, 85u8, 33u8, 103u8, 186u8, 128u8, 61u8, + 5u8, ], ) } #[doc = " Spends that have been approved and being processed."] pub fn spends( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::spends::Param0, + >, types::spends::Spends, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Treasury", "Spends", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ - 207u8, 104u8, 63u8, 103u8, 177u8, 66u8, 236u8, 100u8, 122u8, 213u8, - 125u8, 153u8, 180u8, 219u8, 124u8, 22u8, 88u8, 161u8, 188u8, 197u8, - 70u8, 46u8, 72u8, 170u8, 146u8, 4u8, 127u8, 160u8, 204u8, 2u8, 89u8, - 95u8, + 231u8, 192u8, 40u8, 149u8, 163u8, 98u8, 111u8, 136u8, 44u8, 162u8, + 87u8, 181u8, 233u8, 204u8, 87u8, 111u8, 210u8, 225u8, 235u8, 73u8, + 217u8, 8u8, 129u8, 51u8, 54u8, 85u8, 33u8, 103u8, 186u8, 128u8, 61u8, + 5u8, ], ) } @@ -11030,9 +11507,10 @@ pub mod api { #[doc = " An accepted proposal gets these back. A rejected proposal does not."] pub fn proposal_bond( &self, - ) -> ::subxt::constants::Address - { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address< + runtime_types::sp_arithmetic::per_things::Permill, + > { + ::subxt::ext::subxt_core::constants::Address::new_static( "Treasury", "ProposalBond", [ @@ -11045,8 +11523,9 @@ pub mod api { #[doc = " Minimum amount of funds that should be placed in a deposit for making a proposal."] pub fn proposal_bond_minimum( &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Treasury", "ProposalBondMinimum", [ @@ -11059,9 +11538,10 @@ pub mod api { #[doc = " Maximum amount of funds that should be placed in a deposit for making a proposal."] pub fn proposal_bond_maximum( &self, - ) -> ::subxt::constants::Address<::core::option::Option<::core::primitive::u128>> - { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address< + ::core::option::Option<::core::primitive::u128>, + > { + ::subxt::ext::subxt_core::constants::Address::new_static( "Treasury", "ProposalBondMaximum", [ @@ -11073,8 +11553,11 @@ pub mod api { ) } #[doc = " Period between successive spends."] - pub fn spend_period(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn spend_period( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Treasury", "SpendPeriod", [ @@ -11088,9 +11571,10 @@ pub mod api { #[doc = " Percentage of spare funds (if any) that are burnt per spend period."] pub fn burn( &self, - ) -> ::subxt::constants::Address - { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address< + runtime_types::sp_arithmetic::per_things::Permill, + > { + ::subxt::ext::subxt_core::constants::Address::new_static( "Treasury", "Burn", [ @@ -11103,9 +11587,10 @@ pub mod api { #[doc = " The treasury's pallet id, used for deriving its sovereign account ID."] pub fn pallet_id( &self, - ) -> ::subxt::constants::Address - { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address< + runtime_types::frame_support::PalletId, + > { + ::subxt::ext::subxt_core::constants::Address::new_static( "Treasury", "PalletId", [ @@ -11118,8 +11603,11 @@ pub mod api { #[doc = " The maximum number of approvals that can wait in the spending queue."] #[doc = ""] #[doc = " NOTE: This parameter is also used within the Bounties Pallet extension if enabled."] - pub fn max_approvals(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn max_approvals( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Treasury", "MaxApprovals", [ @@ -11131,8 +11619,11 @@ pub mod api { ) } #[doc = " The period during which an approved treasury spend has to be claimed."] - pub fn payout_period(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn payout_period( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Treasury", "PayoutPeriod", [ @@ -11160,24 +11651,20 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Vote in a poll. If `vote.is_aye()`, the vote is to enact the proposal;"] - #[doc = "otherwise it is a vote to keep the status quo."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_."] - #[doc = ""] - #[doc = "- `poll_index`: The index of the poll to vote for."] - #[doc = "- `vote`: The vote configuration."] - #[doc = ""] - #[doc = "Weight: `O(R)` where R is the number of polls the voter has voted on."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::vote`]."] pub struct Vote { #[codec(compact)] pub poll_index: vote::PollIndex, @@ -11190,43 +11677,25 @@ pub mod api { ::core::primitive::u128, >; } - impl ::subxt::blocks::StaticExtrinsic for Vote { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Vote { const PALLET: &'static str = "ConvictionVoting"; const CALL: &'static str = "vote"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Delegate the voting power (with some given conviction) of the sending account for a"] - #[doc = "particular class of polls."] - #[doc = ""] - #[doc = "The balance delegated is locked for as long as it's delegated, and thereafter for the"] - #[doc = "time appropriate for the conviction's lock period."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_, and the signing account must either:"] - #[doc = " - be delegating already; or"] - #[doc = " - have no voting activity (if there is, then it will need to be removed through"] - #[doc = " `remove_vote`)."] - #[doc = ""] - #[doc = "- `to`: The account whose voting the `target` account's voting power will follow."] - #[doc = "- `class`: The class of polls to delegate. To delegate multiple classes, multiple calls"] - #[doc = " to this function are required."] - #[doc = "- `conviction`: The conviction that will be attached to the delegated votes. When the"] - #[doc = " account is undelegated, the funds will be locked for the corresponding period."] - #[doc = "- `balance`: The amount of the account's balance to be used in delegating. This must not"] - #[doc = " be more than the account's current balance."] - #[doc = ""] - #[doc = "Emits `Delegated`."] - #[doc = ""] - #[doc = "Weight: `O(R)` where R is the number of polls the voter delegating to has"] - #[doc = " voted on. Weight is initially charged as if maximum votes, but is refunded later."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::delegate`]."] pub struct Delegate { pub class: delegate::Class, pub to: delegate::To, @@ -11236,39 +11705,33 @@ pub mod api { pub mod delegate { use super::runtime_types; pub type Class = ::core::primitive::u16; - pub type To = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type To = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type Conviction = runtime_types::pallet_conviction_voting::conviction::Conviction; pub type Balance = ::core::primitive::u128; } - impl ::subxt::blocks::StaticExtrinsic for Delegate { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Delegate { const PALLET: &'static str = "ConvictionVoting"; const CALL: &'static str = "delegate"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Undelegate the voting power of the sending account for a particular class of polls."] - #[doc = ""] - #[doc = "Tokens may be unlocked following once an amount of time consistent with the lock period"] - #[doc = "of the conviction with which the delegation was issued has passed."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_ and the signing account must be"] - #[doc = "currently delegating."] - #[doc = ""] - #[doc = "- `class`: The class of polls to remove the delegation from."] - #[doc = ""] - #[doc = "Emits `Undelegated`."] - #[doc = ""] - #[doc = "Weight: `O(R)` where R is the number of polls the voter delegating to has"] - #[doc = " voted on. Weight is initially charged as if maximum votes, but is refunded later."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::undelegate`]."] pub struct Undelegate { pub class: undelegate::Class, } @@ -11276,29 +11739,25 @@ pub mod api { use super::runtime_types; pub type Class = ::core::primitive::u16; } - impl ::subxt::blocks::StaticExtrinsic for Undelegate { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Undelegate { const PALLET: &'static str = "ConvictionVoting"; const CALL: &'static str = "undelegate"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Remove the lock caused by prior voting/delegating which has expired within a particular"] - #[doc = "class."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_."] - #[doc = ""] - #[doc = "- `class`: The class of polls to unlock."] - #[doc = "- `target`: The account to remove the lock on."] - #[doc = ""] - #[doc = "Weight: `O(R)` with R number of vote of target."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::unlock`]."] pub struct Unlock { pub class: unlock::Class, pub target: unlock::Target, @@ -11306,51 +11765,30 @@ pub mod api { pub mod unlock { use super::runtime_types; pub type Class = ::core::primitive::u16; - pub type Target = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Target = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; } - impl ::subxt::blocks::StaticExtrinsic for Unlock { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Unlock { const PALLET: &'static str = "ConvictionVoting"; const CALL: &'static str = "unlock"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Remove a vote for a poll."] - #[doc = ""] - #[doc = "If:"] - #[doc = "- the poll was cancelled, or"] - #[doc = "- the poll is ongoing, or"] - #[doc = "- the poll has ended such that"] - #[doc = " - the vote of the account was in opposition to the result; or"] - #[doc = " - there was no conviction to the account's vote; or"] - #[doc = " - the account made a split vote"] - #[doc = "...then the vote is removed cleanly and a following call to `unlock` may result in more"] - #[doc = "funds being available."] - #[doc = ""] - #[doc = "If, however, the poll has ended and:"] - #[doc = "- it finished corresponding to the vote of the account, and"] - #[doc = "- the account made a standard vote with conviction, and"] - #[doc = "- the lock period of the conviction is not over"] - #[doc = "...then the lock will be aggregated into the overall account's lock, which may involve"] - #[doc = "*overlocking* (where the two locks are combined into a single lock that is the maximum"] - #[doc = "of both the amount locked and the time is it locked for)."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_, and the signer must have a vote"] - #[doc = "registered for poll `index`."] - #[doc = ""] - #[doc = "- `index`: The index of poll of the vote to be removed."] - #[doc = "- `class`: Optional parameter, if given it indicates the class of the poll. For polls"] - #[doc = " which have finished or are cancelled, this must be `Some`."] - #[doc = ""] - #[doc = "Weight: `O(R + log R)` where R is the number of polls that `target` has voted on."] - #[doc = " Weight is calculated for the maximum number of vote."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::remove_vote`]."] pub struct RemoveVote { pub class: remove_vote::Class, pub index: remove_vote::Index, @@ -11360,36 +11798,25 @@ pub mod api { pub type Class = ::core::option::Option<::core::primitive::u16>; pub type Index = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for RemoveVote { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RemoveVote { const PALLET: &'static str = "ConvictionVoting"; const CALL: &'static str = "remove_vote"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Remove a vote for a poll."] - #[doc = ""] - #[doc = "If the `target` is equal to the signer, then this function is exactly equivalent to"] - #[doc = "`remove_vote`. If not equal to the signer, then the vote must have expired,"] - #[doc = "either because the poll was cancelled, because the voter lost the poll or"] - #[doc = "because the conviction period is over."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_."] - #[doc = ""] - #[doc = "- `target`: The account of the vote to be removed; this account must have voted for poll"] - #[doc = " `index`."] - #[doc = "- `index`: The index of poll of the vote to be removed."] - #[doc = "- `class`: The class of the poll."] - #[doc = ""] - #[doc = "Weight: `O(R + log R)` where R is the number of polls that `target` has voted on."] - #[doc = " Weight is calculated for the maximum number of vote."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::remove_other_vote`]."] pub struct RemoveOtherVote { pub target: remove_other_vote::Target, pub class: remove_other_vote::Class, @@ -11397,32 +11824,27 @@ pub mod api { } pub mod remove_other_vote { use super::runtime_types; - pub type Target = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Target = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type Class = ::core::primitive::u16; pub type Index = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for RemoveOtherVote { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RemoveOtherVote { const PALLET: &'static str = "ConvictionVoting"; const CALL: &'static str = "remove_other_vote"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Vote in a poll. If `vote.is_aye()`, the vote is to enact the proposal;"] - #[doc = "otherwise it is a vote to keep the status quo."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_."] - #[doc = ""] - #[doc = "- `poll_index`: The index of the poll to vote for."] - #[doc = "- `vote`: The vote configuration."] - #[doc = ""] - #[doc = "Weight: `O(R)` where R is the number of polls the voter has voted on."] + #[doc = "See [`Pallet::vote`]."] pub fn vote( &self, poll_index: types::vote::PollIndex, vote: types::vote::Vote, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "ConvictionVoting", "vote", types::Vote { poll_index, vote }, @@ -11434,37 +11856,15 @@ pub mod api { ], ) } - #[doc = "Delegate the voting power (with some given conviction) of the sending account for a"] - #[doc = "particular class of polls."] - #[doc = ""] - #[doc = "The balance delegated is locked for as long as it's delegated, and thereafter for the"] - #[doc = "time appropriate for the conviction's lock period."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_, and the signing account must either:"] - #[doc = " - be delegating already; or"] - #[doc = " - have no voting activity (if there is, then it will need to be removed through"] - #[doc = " `remove_vote`)."] - #[doc = ""] - #[doc = "- `to`: The account whose voting the `target` account's voting power will follow."] - #[doc = "- `class`: The class of polls to delegate. To delegate multiple classes, multiple calls"] - #[doc = " to this function are required."] - #[doc = "- `conviction`: The conviction that will be attached to the delegated votes. When the"] - #[doc = " account is undelegated, the funds will be locked for the corresponding period."] - #[doc = "- `balance`: The amount of the account's balance to be used in delegating. This must not"] - #[doc = " be more than the account's current balance."] - #[doc = ""] - #[doc = "Emits `Delegated`."] - #[doc = ""] - #[doc = "Weight: `O(R)` where R is the number of polls the voter delegating to has"] - #[doc = " voted on. Weight is initially charged as if maximum votes, but is refunded later."] + #[doc = "See [`Pallet::delegate`]."] pub fn delegate( &self, class: types::delegate::Class, to: types::delegate::To, conviction: types::delegate::Conviction, balance: types::delegate::Balance, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "ConvictionVoting", "delegate", types::Delegate { @@ -11480,25 +11880,12 @@ pub mod api { ], ) } - #[doc = "Undelegate the voting power of the sending account for a particular class of polls."] - #[doc = ""] - #[doc = "Tokens may be unlocked following once an amount of time consistent with the lock period"] - #[doc = "of the conviction with which the delegation was issued has passed."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_ and the signing account must be"] - #[doc = "currently delegating."] - #[doc = ""] - #[doc = "- `class`: The class of polls to remove the delegation from."] - #[doc = ""] - #[doc = "Emits `Undelegated`."] - #[doc = ""] - #[doc = "Weight: `O(R)` where R is the number of polls the voter delegating to has"] - #[doc = " voted on. Weight is initially charged as if maximum votes, but is refunded later."] + #[doc = "See [`Pallet::undelegate`]."] pub fn undelegate( &self, class: types::undelegate::Class, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "ConvictionVoting", "undelegate", types::Undelegate { class }, @@ -11510,21 +11897,13 @@ pub mod api { ], ) } - #[doc = "Remove the lock caused by prior voting/delegating which has expired within a particular"] - #[doc = "class."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_."] - #[doc = ""] - #[doc = "- `class`: The class of polls to unlock."] - #[doc = "- `target`: The account to remove the lock on."] - #[doc = ""] - #[doc = "Weight: `O(R)` with R number of vote of target."] + #[doc = "See [`Pallet::unlock`]."] pub fn unlock( &self, class: types::unlock::Class, target: types::unlock::Target, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "ConvictionVoting", "unlock", types::Unlock { class, target }, @@ -11536,41 +11915,13 @@ pub mod api { ], ) } - #[doc = "Remove a vote for a poll."] - #[doc = ""] - #[doc = "If:"] - #[doc = "- the poll was cancelled, or"] - #[doc = "- the poll is ongoing, or"] - #[doc = "- the poll has ended such that"] - #[doc = " - the vote of the account was in opposition to the result; or"] - #[doc = " - there was no conviction to the account's vote; or"] - #[doc = " - the account made a split vote"] - #[doc = "...then the vote is removed cleanly and a following call to `unlock` may result in more"] - #[doc = "funds being available."] - #[doc = ""] - #[doc = "If, however, the poll has ended and:"] - #[doc = "- it finished corresponding to the vote of the account, and"] - #[doc = "- the account made a standard vote with conviction, and"] - #[doc = "- the lock period of the conviction is not over"] - #[doc = "...then the lock will be aggregated into the overall account's lock, which may involve"] - #[doc = "*overlocking* (where the two locks are combined into a single lock that is the maximum"] - #[doc = "of both the amount locked and the time is it locked for)."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_, and the signer must have a vote"] - #[doc = "registered for poll `index`."] - #[doc = ""] - #[doc = "- `index`: The index of poll of the vote to be removed."] - #[doc = "- `class`: Optional parameter, if given it indicates the class of the poll. For polls"] - #[doc = " which have finished or are cancelled, this must be `Some`."] - #[doc = ""] - #[doc = "Weight: `O(R + log R)` where R is the number of polls that `target` has voted on."] - #[doc = " Weight is calculated for the maximum number of vote."] + #[doc = "See [`Pallet::remove_vote`]."] pub fn remove_vote( &self, class: types::remove_vote::Class, index: types::remove_vote::Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "ConvictionVoting", "remove_vote", types::RemoveVote { class, index }, @@ -11582,29 +11933,14 @@ pub mod api { ], ) } - #[doc = "Remove a vote for a poll."] - #[doc = ""] - #[doc = "If the `target` is equal to the signer, then this function is exactly equivalent to"] - #[doc = "`remove_vote`. If not equal to the signer, then the vote must have expired,"] - #[doc = "either because the poll was cancelled, because the voter lost the poll or"] - #[doc = "because the conviction period is over."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_."] - #[doc = ""] - #[doc = "- `target`: The account of the vote to be removed; this account must have voted for poll"] - #[doc = " `index`."] - #[doc = "- `index`: The index of poll of the vote to be removed."] - #[doc = "- `class`: The class of the poll."] - #[doc = ""] - #[doc = "Weight: `O(R + log R)` where R is the number of polls that `target` has voted on."] - #[doc = " Weight is calculated for the maximum number of vote."] + #[doc = "See [`Pallet::remove_other_vote`]."] pub fn remove_other_vote( &self, target: types::remove_other_vote::Target, class: types::remove_other_vote::Class, index: types::remove_other_vote::Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "ConvictionVoting", "remove_other_vote", types::RemoveOtherVote { @@ -11626,43 +11962,43 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "An account has delegated their vote to another account. \\[who, target\\]"] pub struct Delegated(pub delegated::Field0, pub delegated::Field1); pub mod delegated { use super::runtime_types; - pub type Field0 = ::subxt::utils::AccountId32; - pub type Field1 = ::subxt::utils::AccountId32; + pub type Field0 = ::subxt::ext::subxt_core::utils::AccountId32; + pub type Field1 = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for Delegated { + impl ::subxt::ext::subxt_core::events::StaticEvent for Delegated { const PALLET: &'static str = "ConvictionVoting"; const EVENT: &'static str = "Delegated"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "An \\[account\\] has cancelled a previous delegation operation."] pub struct Undelegated(pub undelegated::Field0); pub mod undelegated { use super::runtime_types; - pub type Field0 = ::subxt::utils::AccountId32; + pub type Field0 = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for Undelegated { + impl ::subxt::ext::subxt_core::events::StaticEvent for Undelegated { const PALLET: &'static str = "ConvictionVoting"; const EVENT: &'static str = "Undelegated"; } @@ -11675,21 +12011,21 @@ pub mod api { use super::runtime_types; pub type VotingFor = runtime_types::pallet_conviction_voting::vote::Voting< ::core::primitive::u128, - ::subxt::utils::AccountId32, + ::subxt::ext::subxt_core::utils::AccountId32, ::core::primitive::u32, ::core::primitive::u32, >; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; pub type Param1 = ::core::primitive::u16; } pub mod class_locks_for { use super::runtime_types; pub type ClassLocksFor = - runtime_types::bounded_collections::bounded_vec::BoundedVec<( + runtime_types::bounded_collections::bounded_vec::BoundedVec14<( ::core::primitive::u16, ::core::primitive::u128, )>; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } } pub struct StorageApi; @@ -11698,14 +12034,14 @@ pub mod api { #[doc = " number of votes that we have recorded."] pub fn voting_for_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::voting_for::VotingFor, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ConvictionVoting", "VotingFor", (), @@ -11720,18 +12056,22 @@ pub mod api { #[doc = " number of votes that we have recorded."] pub fn voting_for_iter1( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::voting_for::Param0, + >, types::voting_for::VotingFor, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ConvictionVoting", "VotingFor", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 76u8, 63u8, 153u8, 193u8, 39u8, 137u8, 186u8, 29u8, 202u8, 56u8, 169u8, 56u8, 103u8, 138u8, 192u8, 18u8, 179u8, 114u8, 56u8, 121u8, 197u8, @@ -11743,24 +12083,32 @@ pub mod api { #[doc = " number of votes that we have recorded."] pub fn voting_for( &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< ( - ::subxt::storage::address::StaticStorageKey, - ::subxt::storage::address::StaticStorageKey, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::voting_for::Param0, + >, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::voting_for::Param1, + >, ), types::voting_for::VotingFor, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ConvictionVoting", "VotingFor", ( - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), ), [ 76u8, 63u8, 153u8, 193u8, 39u8, 137u8, 186u8, 29u8, 202u8, 56u8, 169u8, @@ -11774,14 +12122,14 @@ pub mod api { #[doc = " this list."] pub fn class_locks_for_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::class_locks_for::ClassLocksFor, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ConvictionVoting", "ClassLocksFor", (), @@ -11797,18 +12145,22 @@ pub mod api { #[doc = " this list."] pub fn class_locks_for( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::class_locks_for::Param0, + >, types::class_locks_for::ClassLocksFor, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ConvictionVoting", "ClassLocksFor", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 74u8, 74u8, 8u8, 82u8, 215u8, 61u8, 13u8, 9u8, 44u8, 222u8, 33u8, 245u8, 195u8, 124u8, 6u8, 174u8, 65u8, 245u8, 71u8, 42u8, 47u8, 46u8, @@ -11826,8 +12178,11 @@ pub mod api { #[doc = ""] #[doc = " Also used to compute weight, an overly large value can lead to extrinsics with large"] #[doc = " weight estimation: see `delegate` for instance."] - pub fn max_votes(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn max_votes( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "ConvictionVoting", "MaxVotes", [ @@ -11844,8 +12199,9 @@ pub mod api { #[doc = " those successful voters are locked into the consequences that their votes entail."] pub fn vote_locking_period( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "ConvictionVoting", "VoteLockingPeriod", [ @@ -11873,26 +12229,23 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Propose a referendum on a privileged action."] - #[doc = ""] - #[doc = "- `origin`: must be `SubmitOrigin` and the account must have `SubmissionDeposit` funds"] - #[doc = " available."] - #[doc = "- `proposal_origin`: The origin from which the proposal should be executed."] - #[doc = "- `proposal`: The proposal."] - #[doc = "- `enactment_moment`: The moment that the proposal should be enacted."] - #[doc = ""] - #[doc = "Emits `Submitted`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::submit`]."] pub struct Submit { - pub proposal_origin: ::std::boxed::Box, + pub proposal_origin: + ::subxt::ext::subxt_core::alloc::boxed::Box, pub proposal: submit::Proposal, pub enactment_moment: submit::EnactmentMoment, } @@ -11908,28 +12261,25 @@ pub mod api { ::core::primitive::u32, >; } - impl ::subxt::blocks::StaticExtrinsic for Submit { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Submit { const PALLET: &'static str = "Referenda"; const CALL: &'static str = "submit"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Post the Decision Deposit for a referendum."] - #[doc = ""] - #[doc = "- `origin`: must be `Signed` and the account must have funds available for the"] - #[doc = " referendum's track's Decision Deposit."] - #[doc = "- `index`: The index of the submitted referendum whose Decision Deposit is yet to be"] - #[doc = " posted."] - #[doc = ""] - #[doc = "Emits `DecisionDepositPlaced`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::place_decision_deposit`]."] pub struct PlaceDecisionDeposit { pub index: place_decision_deposit::Index, } @@ -11937,27 +12287,25 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for PlaceDecisionDeposit { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for PlaceDecisionDeposit { const PALLET: &'static str = "Referenda"; const CALL: &'static str = "place_decision_deposit"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Refund the Decision Deposit for a closed referendum back to the depositor."] - #[doc = ""] - #[doc = "- `origin`: must be `Signed` or `Root`."] - #[doc = "- `index`: The index of a closed referendum whose Decision Deposit has not yet been"] - #[doc = " refunded."] - #[doc = ""] - #[doc = "Emits `DecisionDepositRefunded`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::refund_decision_deposit`]."] pub struct RefundDecisionDeposit { pub index: refund_decision_deposit::Index, } @@ -11965,26 +12313,25 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for RefundDecisionDeposit { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RefundDecisionDeposit { const PALLET: &'static str = "Referenda"; const CALL: &'static str = "refund_decision_deposit"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Cancel an ongoing referendum."] - #[doc = ""] - #[doc = "- `origin`: must be the `CancelOrigin`."] - #[doc = "- `index`: The index of the referendum to be cancelled."] - #[doc = ""] - #[doc = "Emits `Cancelled`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::cancel`]."] pub struct Cancel { pub index: cancel::Index, } @@ -11992,26 +12339,25 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for Cancel { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Cancel { const PALLET: &'static str = "Referenda"; const CALL: &'static str = "cancel"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Cancel an ongoing referendum and slash the deposits."] - #[doc = ""] - #[doc = "- `origin`: must be the `KillOrigin`."] - #[doc = "- `index`: The index of the referendum to be cancelled."] - #[doc = ""] - #[doc = "Emits `Killed` and `DepositSlashed`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::kill`]."] pub struct Kill { pub index: kill::Index, } @@ -12019,24 +12365,25 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for Kill { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Kill { const PALLET: &'static str = "Referenda"; const CALL: &'static str = "kill"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Advance a referendum onto its next logical state. Only used internally."] - #[doc = ""] - #[doc = "- `origin`: must be `Root`."] - #[doc = "- `index`: the referendum to be advanced."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::nudge_referendum`]."] pub struct NudgeReferendum { pub index: nudge_referendum::Index, } @@ -12044,29 +12391,25 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for NudgeReferendum { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for NudgeReferendum { const PALLET: &'static str = "Referenda"; const CALL: &'static str = "nudge_referendum"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Advance a track onto its next logical state. Only used internally."] - #[doc = ""] - #[doc = "- `origin`: must be `Root`."] - #[doc = "- `track`: the track to be advanced."] - #[doc = ""] - #[doc = "Action item for when there is now one fewer referendum in the deciding phase and the"] - #[doc = "`DecidingCount` is not yet updated. This means that we should either:"] - #[doc = "- begin deciding another referendum (and leave `DecidingCount` alone); or"] - #[doc = "- decrement `DecidingCount`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::one_fewer_deciding`]."] pub struct OneFewerDeciding { pub track: one_fewer_deciding::Track, } @@ -12074,27 +12417,25 @@ pub mod api { use super::runtime_types; pub type Track = ::core::primitive::u16; } - impl ::subxt::blocks::StaticExtrinsic for OneFewerDeciding { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for OneFewerDeciding { const PALLET: &'static str = "Referenda"; const CALL: &'static str = "one_fewer_deciding"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Refund the Submission Deposit for a closed referendum back to the depositor."] - #[doc = ""] - #[doc = "- `origin`: must be `Signed` or `Root`."] - #[doc = "- `index`: The index of a closed referendum whose Submission Deposit has not yet been"] - #[doc = " refunded."] - #[doc = ""] - #[doc = "Emits `SubmissionDepositRefunded`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::refund_submission_deposit`]."] pub struct RefundSubmissionDeposit { pub index: refund_submission_deposit::Index, } @@ -12102,27 +12443,25 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for RefundSubmissionDeposit { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RefundSubmissionDeposit { const PALLET: &'static str = "Referenda"; const CALL: &'static str = "refund_submission_deposit"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set or clear metadata of a referendum."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `origin`: Must be `Signed` by a creator of a referendum or by anyone to clear a"] - #[doc = " metadata of a finished referendum."] - #[doc = "- `index`: The index of a referendum to set or clear metadata for."] - #[doc = "- `maybe_hash`: The hash of an on-chain stored preimage. `None` to clear a metadata."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_metadata`]."] pub struct SetMetadata { pub index: set_metadata::Index, pub maybe_hash: set_metadata::MaybeHash, @@ -12130,58 +12469,48 @@ pub mod api { pub mod set_metadata { use super::runtime_types; pub type Index = ::core::primitive::u32; - pub type MaybeHash = ::core::option::Option<::subxt::utils::H256>; + pub type MaybeHash = + ::core::option::Option<::subxt::ext::subxt_core::utils::H256>; } - impl ::subxt::blocks::StaticExtrinsic for SetMetadata { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetMetadata { const PALLET: &'static str = "Referenda"; const CALL: &'static str = "set_metadata"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Propose a referendum on a privileged action."] - #[doc = ""] - #[doc = "- `origin`: must be `SubmitOrigin` and the account must have `SubmissionDeposit` funds"] - #[doc = " available."] - #[doc = "- `proposal_origin`: The origin from which the proposal should be executed."] - #[doc = "- `proposal`: The proposal."] - #[doc = "- `enactment_moment`: The moment that the proposal should be enacted."] - #[doc = ""] - #[doc = "Emits `Submitted`."] + #[doc = "See [`Pallet::submit`]."] pub fn submit( &self, proposal_origin: types::submit::ProposalOrigin, proposal: types::submit::Proposal, enactment_moment: types::submit::EnactmentMoment, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Referenda", "submit", types::Submit { - proposal_origin: ::std::boxed::Box::new(proposal_origin), + proposal_origin: ::subxt::ext::subxt_core::alloc::boxed::Box::new( + proposal_origin, + ), proposal, enactment_moment, }, [ - 252u8, 72u8, 60u8, 208u8, 214u8, 81u8, 179u8, 80u8, 7u8, 215u8, 54u8, - 7u8, 214u8, 49u8, 72u8, 70u8, 213u8, 143u8, 217u8, 190u8, 47u8, 3u8, - 191u8, 110u8, 67u8, 139u8, 137u8, 215u8, 14u8, 225u8, 124u8, 117u8, + 116u8, 212u8, 158u8, 18u8, 89u8, 136u8, 153u8, 97u8, 43u8, 197u8, + 200u8, 161u8, 145u8, 102u8, 19u8, 25u8, 135u8, 13u8, 199u8, 101u8, + 107u8, 221u8, 244u8, 15u8, 192u8, 176u8, 3u8, 154u8, 248u8, 70u8, + 113u8, 69u8, ], ) } - #[doc = "Post the Decision Deposit for a referendum."] - #[doc = ""] - #[doc = "- `origin`: must be `Signed` and the account must have funds available for the"] - #[doc = " referendum's track's Decision Deposit."] - #[doc = "- `index`: The index of the submitted referendum whose Decision Deposit is yet to be"] - #[doc = " posted."] - #[doc = ""] - #[doc = "Emits `DecisionDepositPlaced`."] + #[doc = "See [`Pallet::place_decision_deposit`]."] pub fn place_decision_deposit( &self, index: types::place_decision_deposit::Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Referenda", "place_decision_deposit", types::PlaceDecisionDeposit { index }, @@ -12192,18 +12521,13 @@ pub mod api { ], ) } - #[doc = "Refund the Decision Deposit for a closed referendum back to the depositor."] - #[doc = ""] - #[doc = "- `origin`: must be `Signed` or `Root`."] - #[doc = "- `index`: The index of a closed referendum whose Decision Deposit has not yet been"] - #[doc = " refunded."] - #[doc = ""] - #[doc = "Emits `DecisionDepositRefunded`."] + #[doc = "See [`Pallet::refund_decision_deposit`]."] pub fn refund_decision_deposit( &self, index: types::refund_decision_deposit::Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Referenda", "refund_decision_deposit", types::RefundDecisionDeposit { index }, @@ -12214,17 +12538,12 @@ pub mod api { ], ) } - #[doc = "Cancel an ongoing referendum."] - #[doc = ""] - #[doc = "- `origin`: must be the `CancelOrigin`."] - #[doc = "- `index`: The index of the referendum to be cancelled."] - #[doc = ""] - #[doc = "Emits `Cancelled`."] + #[doc = "See [`Pallet::cancel`]."] pub fn cancel( &self, index: types::cancel::Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Referenda", "cancel", types::Cancel { index }, @@ -12236,14 +12555,12 @@ pub mod api { ], ) } - #[doc = "Cancel an ongoing referendum and slash the deposits."] - #[doc = ""] - #[doc = "- `origin`: must be the `KillOrigin`."] - #[doc = "- `index`: The index of the referendum to be cancelled."] - #[doc = ""] - #[doc = "Emits `Killed` and `DepositSlashed`."] - pub fn kill(&self, index: types::kill::Index) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + #[doc = "See [`Pallet::kill`]."] + pub fn kill( + &self, + index: types::kill::Index, + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Referenda", "kill", types::Kill { index }, @@ -12255,15 +12572,12 @@ pub mod api { ], ) } - #[doc = "Advance a referendum onto its next logical state. Only used internally."] - #[doc = ""] - #[doc = "- `origin`: must be `Root`."] - #[doc = "- `index`: the referendum to be advanced."] + #[doc = "See [`Pallet::nudge_referendum`]."] pub fn nudge_referendum( &self, index: types::nudge_referendum::Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Referenda", "nudge_referendum", types::NudgeReferendum { index }, @@ -12275,20 +12589,13 @@ pub mod api { ], ) } - #[doc = "Advance a track onto its next logical state. Only used internally."] - #[doc = ""] - #[doc = "- `origin`: must be `Root`."] - #[doc = "- `track`: the track to be advanced."] - #[doc = ""] - #[doc = "Action item for when there is now one fewer referendum in the deciding phase and the"] - #[doc = "`DecidingCount` is not yet updated. This means that we should either:"] - #[doc = "- begin deciding another referendum (and leave `DecidingCount` alone); or"] - #[doc = "- decrement `DecidingCount`."] + #[doc = "See [`Pallet::one_fewer_deciding`]."] pub fn one_fewer_deciding( &self, track: types::one_fewer_deciding::Track, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Referenda", "one_fewer_deciding", types::OneFewerDeciding { track }, @@ -12300,18 +12607,13 @@ pub mod api { ], ) } - #[doc = "Refund the Submission Deposit for a closed referendum back to the depositor."] - #[doc = ""] - #[doc = "- `origin`: must be `Signed` or `Root`."] - #[doc = "- `index`: The index of a closed referendum whose Submission Deposit has not yet been"] - #[doc = " refunded."] - #[doc = ""] - #[doc = "Emits `SubmissionDepositRefunded`."] + #[doc = "See [`Pallet::refund_submission_deposit`]."] pub fn refund_submission_deposit( &self, index: types::refund_submission_deposit::Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Referenda", "refund_submission_deposit", types::RefundSubmissionDeposit { index }, @@ -12322,19 +12624,13 @@ pub mod api { ], ) } - #[doc = "Set or clear metadata of a referendum."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `origin`: Must be `Signed` by a creator of a referendum or by anyone to clear a"] - #[doc = " metadata of a finished referendum."] - #[doc = "- `index`: The index of a referendum to set or clear metadata for."] - #[doc = "- `maybe_hash`: The hash of an on-chain stored preimage. `None` to clear a metadata."] + #[doc = "See [`Pallet::set_metadata`]."] pub fn set_metadata( &self, index: types::set_metadata::Index, maybe_hash: types::set_metadata::MaybeHash, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Referenda", "set_metadata", types::SetMetadata { index, maybe_hash }, @@ -12349,19 +12645,19 @@ pub mod api { } } #[doc = "The `Event` enum of this pallet"] - pub type Event = runtime_types::pallet_referenda::pallet::Event; + pub type Event = runtime_types::pallet_referenda::pallet::Event1; pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A referendum has been submitted."] pub struct Submitted { pub index: submitted::Index, @@ -12377,20 +12673,20 @@ pub mod api { runtime_types::sp_runtime::traits::BlakeTwo256, >; } - impl ::subxt::events::StaticEvent for Submitted { + impl ::subxt::ext::subxt_core::events::StaticEvent for Submitted { const PALLET: &'static str = "Referenda"; const EVENT: &'static str = "Submitted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The decision deposit has been placed."] pub struct DecisionDepositPlaced { pub index: decision_deposit_placed::Index, @@ -12400,23 +12696,23 @@ pub mod api { pub mod decision_deposit_placed { use super::runtime_types; pub type Index = ::core::primitive::u32; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for DecisionDepositPlaced { + impl ::subxt::ext::subxt_core::events::StaticEvent for DecisionDepositPlaced { const PALLET: &'static str = "Referenda"; const EVENT: &'static str = "DecisionDepositPlaced"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The decision deposit has been refunded."] pub struct DecisionDepositRefunded { pub index: decision_deposit_refunded::Index, @@ -12426,47 +12722,47 @@ pub mod api { pub mod decision_deposit_refunded { use super::runtime_types; pub type Index = ::core::primitive::u32; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for DecisionDepositRefunded { + impl ::subxt::ext::subxt_core::events::StaticEvent for DecisionDepositRefunded { const PALLET: &'static str = "Referenda"; const EVENT: &'static str = "DecisionDepositRefunded"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A deposit has been slashed."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "A deposit has been slashaed."] pub struct DepositSlashed { pub who: deposit_slashed::Who, pub amount: deposit_slashed::Amount, } pub mod deposit_slashed { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for DepositSlashed { + impl ::subxt::ext::subxt_core::events::StaticEvent for DepositSlashed { const PALLET: &'static str = "Referenda"; const EVENT: &'static str = "DepositSlashed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A referendum has moved into the deciding phase."] pub struct DecisionStarted { pub index: decision_started::Index, @@ -12485,20 +12781,20 @@ pub mod api { pub type Tally = runtime_types::pallet_conviction_voting::types::Tally<::core::primitive::u128>; } - impl ::subxt::events::StaticEvent for DecisionStarted { + impl ::subxt::ext::subxt_core::events::StaticEvent for DecisionStarted { const PALLET: &'static str = "Referenda"; const EVENT: &'static str = "DecisionStarted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct ConfirmStarted { pub index: confirm_started::Index, } @@ -12506,20 +12802,20 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for ConfirmStarted { + impl ::subxt::ext::subxt_core::events::StaticEvent for ConfirmStarted { const PALLET: &'static str = "Referenda"; const EVENT: &'static str = "ConfirmStarted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct ConfirmAborted { pub index: confirm_aborted::Index, } @@ -12527,20 +12823,20 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for ConfirmAborted { + impl ::subxt::ext::subxt_core::events::StaticEvent for ConfirmAborted { const PALLET: &'static str = "Referenda"; const EVENT: &'static str = "ConfirmAborted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A referendum has ended its confirmation phase and is ready for approval."] pub struct Confirmed { pub index: confirmed::Index, @@ -12552,20 +12848,20 @@ pub mod api { pub type Tally = runtime_types::pallet_conviction_voting::types::Tally<::core::primitive::u128>; } - impl ::subxt::events::StaticEvent for Confirmed { + impl ::subxt::ext::subxt_core::events::StaticEvent for Confirmed { const PALLET: &'static str = "Referenda"; const EVENT: &'static str = "Confirmed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A referendum has been approved and its proposal has been scheduled."] pub struct Approved { pub index: approved::Index, @@ -12574,20 +12870,20 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for Approved { + impl ::subxt::ext::subxt_core::events::StaticEvent for Approved { const PALLET: &'static str = "Referenda"; const EVENT: &'static str = "Approved"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A proposal has been rejected by referendum."] pub struct Rejected { pub index: rejected::Index, @@ -12599,20 +12895,20 @@ pub mod api { pub type Tally = runtime_types::pallet_conviction_voting::types::Tally<::core::primitive::u128>; } - impl ::subxt::events::StaticEvent for Rejected { + impl ::subxt::ext::subxt_core::events::StaticEvent for Rejected { const PALLET: &'static str = "Referenda"; const EVENT: &'static str = "Rejected"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A referendum has been timed out without being decided."] pub struct TimedOut { pub index: timed_out::Index, @@ -12624,20 +12920,20 @@ pub mod api { pub type Tally = runtime_types::pallet_conviction_voting::types::Tally<::core::primitive::u128>; } - impl ::subxt::events::StaticEvent for TimedOut { + impl ::subxt::ext::subxt_core::events::StaticEvent for TimedOut { const PALLET: &'static str = "Referenda"; const EVENT: &'static str = "TimedOut"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A referendum has been cancelled."] pub struct Cancelled { pub index: cancelled::Index, @@ -12649,20 +12945,20 @@ pub mod api { pub type Tally = runtime_types::pallet_conviction_voting::types::Tally<::core::primitive::u128>; } - impl ::subxt::events::StaticEvent for Cancelled { + impl ::subxt::ext::subxt_core::events::StaticEvent for Cancelled { const PALLET: &'static str = "Referenda"; const EVENT: &'static str = "Cancelled"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A referendum has been killed."] pub struct Killed { pub index: killed::Index, @@ -12674,20 +12970,20 @@ pub mod api { pub type Tally = runtime_types::pallet_conviction_voting::types::Tally<::core::primitive::u128>; } - impl ::subxt::events::StaticEvent for Killed { + impl ::subxt::ext::subxt_core::events::StaticEvent for Killed { const PALLET: &'static str = "Referenda"; const EVENT: &'static str = "Killed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The submission deposit has been refunded."] pub struct SubmissionDepositRefunded { pub index: submission_deposit_refunded::Index, @@ -12697,23 +12993,23 @@ pub mod api { pub mod submission_deposit_refunded { use super::runtime_types; pub type Index = ::core::primitive::u32; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for SubmissionDepositRefunded { + impl ::subxt::ext::subxt_core::events::StaticEvent for SubmissionDepositRefunded { const PALLET: &'static str = "Referenda"; const EVENT: &'static str = "SubmissionDepositRefunded"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Metadata for a referendum has been set."] pub struct MetadataSet { pub index: metadata_set::Index, @@ -12722,22 +13018,22 @@ pub mod api { pub mod metadata_set { use super::runtime_types; pub type Index = ::core::primitive::u32; - pub type Hash = ::subxt::utils::H256; + pub type Hash = ::subxt::ext::subxt_core::utils::H256; } - impl ::subxt::events::StaticEvent for MetadataSet { + impl ::subxt::ext::subxt_core::events::StaticEvent for MetadataSet { const PALLET: &'static str = "Referenda"; const EVENT: &'static str = "MetadataSet"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Metadata for a referendum has been cleared."] pub struct MetadataCleared { pub index: metadata_cleared::Index, @@ -12746,9 +13042,9 @@ pub mod api { pub mod metadata_cleared { use super::runtime_types; pub type Index = ::core::primitive::u32; - pub type Hash = ::subxt::utils::H256; + pub type Hash = ::subxt::ext::subxt_core::utils::H256; } - impl ::subxt::events::StaticEvent for MetadataCleared { + impl ::subxt::ext::subxt_core::events::StaticEvent for MetadataCleared { const PALLET: &'static str = "Referenda"; const EVENT: &'static str = "MetadataCleared"; } @@ -12764,7 +13060,7 @@ pub mod api { pub mod referendum_info_for { use super::runtime_types; pub type ReferendumInfoFor = - runtime_types::pallet_referenda::types::ReferendumInfo< + runtime_types::pallet_referenda::types::ReferendumInfo1< ::core::primitive::u16, runtime_types::rococo_runtime::OriginCaller, ::core::primitive::u32, @@ -12776,7 +13072,7 @@ pub mod api { runtime_types::pallet_conviction_voting::types::Tally< ::core::primitive::u128, >, - ::subxt::utils::AccountId32, + ::subxt::ext::subxt_core::utils::AccountId32, (::core::primitive::u32, ::core::primitive::u32), >; pub type Param0 = ::core::primitive::u32; @@ -12784,7 +13080,7 @@ pub mod api { pub mod track_queue { use super::runtime_types; pub type TrackQueue = - runtime_types::bounded_collections::bounded_vec::BoundedVec<( + runtime_types::bounded_collections::bounded_vec::BoundedVec15<( ::core::primitive::u32, ::core::primitive::u128, )>; @@ -12797,7 +13093,7 @@ pub mod api { } pub mod metadata_of { use super::runtime_types; - pub type MetadataOf = ::subxt::utils::H256; + pub type MetadataOf = ::subxt::ext::subxt_core::utils::H256; pub type Param0 = ::core::primitive::u32; } } @@ -12806,14 +13102,14 @@ pub mod api { #[doc = " The next free referendum index, aka the number of referenda started so far."] pub fn referendum_count( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::referendum_count::ReferendumCount, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Referenda", "ReferendumCount", (), @@ -12828,45 +13124,47 @@ pub mod api { #[doc = " Information concerning any given referendum."] pub fn referendum_info_for_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::referendum_info_for::ReferendumInfoFor, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Referenda", "ReferendumInfoFor", (), [ - 244u8, 215u8, 156u8, 181u8, 105u8, 12u8, 138u8, 249u8, 173u8, 158u8, - 171u8, 67u8, 107u8, 228u8, 45u8, 180u8, 252u8, 244u8, 186u8, 78u8, - 226u8, 223u8, 168u8, 137u8, 6u8, 232u8, 169u8, 108u8, 104u8, 211u8, - 1u8, 157u8, + 82u8, 199u8, 121u8, 36u8, 81u8, 129u8, 79u8, 226u8, 19u8, 57u8, 26u8, + 76u8, 195u8, 60u8, 78u8, 91u8, 198u8, 250u8, 105u8, 111u8, 235u8, 11u8, + 195u8, 4u8, 39u8, 92u8, 156u8, 53u8, 248u8, 89u8, 26u8, 112u8, ], ) } #[doc = " Information concerning any given referendum."] pub fn referendum_info_for( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::referendum_info_for::Param0, + >, types::referendum_info_for::ReferendumInfoFor, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Referenda", "ReferendumInfoFor", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ - 244u8, 215u8, 156u8, 181u8, 105u8, 12u8, 138u8, 249u8, 173u8, 158u8, - 171u8, 67u8, 107u8, 228u8, 45u8, 180u8, 252u8, 244u8, 186u8, 78u8, - 226u8, 223u8, 168u8, 137u8, 6u8, 232u8, 169u8, 108u8, 104u8, 211u8, - 1u8, 157u8, + 82u8, 199u8, 121u8, 36u8, 81u8, 129u8, 79u8, 226u8, 19u8, 57u8, 26u8, + 76u8, 195u8, 60u8, 78u8, 91u8, 198u8, 250u8, 105u8, 111u8, 235u8, 11u8, + 195u8, 4u8, 39u8, 92u8, 156u8, 53u8, 248u8, 89u8, 26u8, 112u8, ], ) } @@ -12876,14 +13174,14 @@ pub mod api { #[doc = " This should be empty if `DecidingCount` is less than `TrackInfo::max_deciding`."] pub fn track_queue_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::track_queue::TrackQueue, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Referenda", "TrackQueue", (), @@ -12900,18 +13198,22 @@ pub mod api { #[doc = " This should be empty if `DecidingCount` is less than `TrackInfo::max_deciding`."] pub fn track_queue( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::track_queue::Param0, + >, types::track_queue::TrackQueue, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Referenda", "TrackQueue", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 125u8, 59u8, 111u8, 68u8, 27u8, 236u8, 82u8, 55u8, 83u8, 159u8, 105u8, 20u8, 241u8, 118u8, 58u8, 141u8, 103u8, 60u8, 246u8, 49u8, 121u8, @@ -12922,14 +13224,14 @@ pub mod api { #[doc = " The number of referenda being decided currently."] pub fn deciding_count_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::deciding_count::DecidingCount, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Referenda", "DecidingCount", (), @@ -12944,18 +13246,22 @@ pub mod api { #[doc = " The number of referenda being decided currently."] pub fn deciding_count( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::deciding_count::Param0, + >, types::deciding_count::DecidingCount, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Referenda", "DecidingCount", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 203u8, 89u8, 158u8, 179u8, 194u8, 82u8, 248u8, 162u8, 93u8, 140u8, 146u8, 51u8, 110u8, 232u8, 51u8, 1u8, 128u8, 212u8, 199u8, 14u8, 182u8, @@ -12972,14 +13278,14 @@ pub mod api { #[doc = " large preimages."] pub fn metadata_of_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::metadata_of::MetadataOf, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Referenda", "MetadataOf", (), @@ -12999,18 +13305,22 @@ pub mod api { #[doc = " large preimages."] pub fn metadata_of( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::metadata_of::Param0, + >, types::metadata_of::MetadataOf, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Referenda", "MetadataOf", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 159u8, 250u8, 56u8, 189u8, 247u8, 165u8, 206u8, 166u8, 91u8, 139u8, 124u8, 164u8, 25u8, 246u8, 199u8, 36u8, 159u8, 56u8, 227u8, 136u8, 4u8, @@ -13028,8 +13338,9 @@ pub mod api { #[doc = " The minimum amount to be used as a deposit for a public referendum proposal."] pub fn submission_deposit( &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Referenda", "SubmissionDeposit", [ @@ -13040,8 +13351,11 @@ pub mod api { ) } #[doc = " Maximum size of the referendum queue for a single track."] - pub fn max_queued(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn max_queued( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Referenda", "MaxQueued", [ @@ -13056,8 +13370,9 @@ pub mod api { #[doc = " Once this passes, then anyone may cancel the referendum."] pub fn undeciding_timeout( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Referenda", "UndecidingTimeout", [ @@ -13073,8 +13388,9 @@ pub mod api { #[doc = " automatic referendum status changes. Explicit servicing instructions are unaffected."] pub fn alarm_interval( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Referenda", "AlarmInterval", [ @@ -13088,8 +13404,8 @@ pub mod api { #[doc = " Information concerning the different referendum tracks."] pub fn tracks( &self, - ) -> ::subxt::constants::Address< - ::std::vec::Vec<( + ) -> ::subxt::ext::subxt_core::constants::Address< + ::subxt::ext::subxt_core::alloc::vec::Vec<( ::core::primitive::u16, runtime_types::pallet_referenda::types::TrackInfo< ::core::primitive::u128, @@ -13097,7 +13413,7 @@ pub mod api { >, )>, > { - ::subxt::constants::Address::new_static( + ::subxt::ext::subxt_core::constants::Address::new_static( "Referenda", "Tracks", [ @@ -13125,138 +13441,138 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Introduce a new member."] - #[doc = ""] - #[doc = "- `origin`: Must be the `AddOrigin`."] - #[doc = "- `who`: Account of non-member which will become a member."] - #[doc = ""] - #[doc = "Weight: `O(1)`"] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::add_member`]."] pub struct AddMember { pub who: add_member::Who, } pub mod add_member { use super::runtime_types; - pub type Who = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Who = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; } - impl ::subxt::blocks::StaticExtrinsic for AddMember { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for AddMember { const PALLET: &'static str = "FellowshipCollective"; const CALL: &'static str = "add_member"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Increment the rank of an existing member by one."] - #[doc = ""] - #[doc = "- `origin`: Must be the `PromoteOrigin`."] - #[doc = "- `who`: Account of existing member."] - #[doc = ""] - #[doc = "Weight: `O(1)`"] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::promote_member`]."] pub struct PromoteMember { pub who: promote_member::Who, } pub mod promote_member { use super::runtime_types; - pub type Who = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Who = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; } - impl ::subxt::blocks::StaticExtrinsic for PromoteMember { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for PromoteMember { const PALLET: &'static str = "FellowshipCollective"; const CALL: &'static str = "promote_member"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Decrement the rank of an existing member by one. If the member is already at rank zero,"] - #[doc = "then they are removed entirely."] - #[doc = ""] - #[doc = "- `origin`: Must be the `DemoteOrigin`."] - #[doc = "- `who`: Account of existing member of rank greater than zero."] - #[doc = ""] - #[doc = "Weight: `O(1)`, less if the member's index is highest in its rank."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::demote_member`]."] pub struct DemoteMember { pub who: demote_member::Who, } pub mod demote_member { use super::runtime_types; - pub type Who = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Who = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; } - impl ::subxt::blocks::StaticExtrinsic for DemoteMember { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for DemoteMember { const PALLET: &'static str = "FellowshipCollective"; const CALL: &'static str = "demote_member"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Remove the member entirely."] - #[doc = ""] - #[doc = "- `origin`: Must be the `RemoveOrigin`."] - #[doc = "- `who`: Account of existing member of rank greater than zero."] - #[doc = "- `min_rank`: The rank of the member or greater."] - #[doc = ""] - #[doc = "Weight: `O(min_rank)`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::remove_member`]."] pub struct RemoveMember { pub who: remove_member::Who, pub min_rank: remove_member::MinRank, } pub mod remove_member { use super::runtime_types; - pub type Who = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Who = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type MinRank = ::core::primitive::u16; } - impl ::subxt::blocks::StaticExtrinsic for RemoveMember { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RemoveMember { const PALLET: &'static str = "FellowshipCollective"; const CALL: &'static str = "remove_member"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Add an aye or nay vote for the sender to the given proposal."] - #[doc = ""] - #[doc = "- `origin`: Must be `Signed` by a member account."] - #[doc = "- `poll`: Index of a poll which is ongoing."] - #[doc = "- `aye`: `true` if the vote is to approve the proposal, `false` otherwise."] - #[doc = ""] - #[doc = "Transaction fees are be waived if the member is voting on any particular proposal"] - #[doc = "for the first time and the call is successful. Subsequent vote changes will charge a"] - #[doc = "fee."] - #[doc = ""] - #[doc = "Weight: `O(1)`, less if there was no previous vote on the poll by the member."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::vote`]."] pub struct Vote { pub poll: vote::Poll, pub aye: vote::Aye, @@ -13266,30 +13582,25 @@ pub mod api { pub type Poll = ::core::primitive::u32; pub type Aye = ::core::primitive::bool; } - impl ::subxt::blocks::StaticExtrinsic for Vote { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Vote { const PALLET: &'static str = "FellowshipCollective"; const CALL: &'static str = "vote"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Remove votes from the given poll. It must have ended."] - #[doc = ""] - #[doc = "- `origin`: Must be `Signed` by any account."] - #[doc = "- `poll_index`: Index of a poll which is completed and for which votes continue to"] - #[doc = " exist."] - #[doc = "- `max`: Maximum number of vote items from remove in this call."] - #[doc = ""] - #[doc = "Transaction fees are waived if the operation is successful."] - #[doc = ""] - #[doc = "Weight `O(max)` (less if there are fewer items to remove than `max`)."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::cleanup_poll`]."] pub struct CleanupPoll { pub poll_index: cleanup_poll::PollIndex, pub max: cleanup_poll::Max, @@ -13299,52 +13610,19 @@ pub mod api { pub type PollIndex = ::core::primitive::u32; pub type Max = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for CleanupPoll { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for CleanupPoll { const PALLET: &'static str = "FellowshipCollective"; const CALL: &'static str = "cleanup_poll"; } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Exchanges a member with a new account and the same existing rank."] - #[doc = ""] - #[doc = "- `origin`: Must be the `ExchangeOrigin`."] - #[doc = "- `who`: Account of existing member of rank greater than zero to be exchanged."] - #[doc = "- `new_who`: New Account of existing member of rank greater than zero to exchanged to."] - pub struct ExchangeMember { - pub who: exchange_member::Who, - pub new_who: exchange_member::NewWho, - } - pub mod exchange_member { - use super::runtime_types; - pub type Who = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; - pub type NewWho = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; - } - impl ::subxt::blocks::StaticExtrinsic for ExchangeMember { - const PALLET: &'static str = "FellowshipCollective"; - const CALL: &'static str = "exchange_member"; - } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Introduce a new member."] - #[doc = ""] - #[doc = "- `origin`: Must be the `AddOrigin`."] - #[doc = "- `who`: Account of non-member which will become a member."] - #[doc = ""] - #[doc = "Weight: `O(1)`"] + #[doc = "See [`Pallet::add_member`]."] pub fn add_member( &self, who: types::add_member::Who, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "FellowshipCollective", "add_member", types::AddMember { who }, @@ -13355,17 +13633,12 @@ pub mod api { ], ) } - #[doc = "Increment the rank of an existing member by one."] - #[doc = ""] - #[doc = "- `origin`: Must be the `PromoteOrigin`."] - #[doc = "- `who`: Account of existing member."] - #[doc = ""] - #[doc = "Weight: `O(1)`"] + #[doc = "See [`Pallet::promote_member`]."] pub fn promote_member( &self, who: types::promote_member::Who, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "FellowshipCollective", "promote_member", types::PromoteMember { who }, @@ -13377,18 +13650,12 @@ pub mod api { ], ) } - #[doc = "Decrement the rank of an existing member by one. If the member is already at rank zero,"] - #[doc = "then they are removed entirely."] - #[doc = ""] - #[doc = "- `origin`: Must be the `DemoteOrigin`."] - #[doc = "- `who`: Account of existing member of rank greater than zero."] - #[doc = ""] - #[doc = "Weight: `O(1)`, less if the member's index is highest in its rank."] + #[doc = "See [`Pallet::demote_member`]."] pub fn demote_member( &self, who: types::demote_member::Who, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "FellowshipCollective", "demote_member", types::DemoteMember { who }, @@ -13400,19 +13667,13 @@ pub mod api { ], ) } - #[doc = "Remove the member entirely."] - #[doc = ""] - #[doc = "- `origin`: Must be the `RemoveOrigin`."] - #[doc = "- `who`: Account of existing member of rank greater than zero."] - #[doc = "- `min_rank`: The rank of the member or greater."] - #[doc = ""] - #[doc = "Weight: `O(min_rank)`."] + #[doc = "See [`Pallet::remove_member`]."] pub fn remove_member( &self, who: types::remove_member::Who, min_rank: types::remove_member::MinRank, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "FellowshipCollective", "remove_member", types::RemoveMember { who, min_rank }, @@ -13424,23 +13685,13 @@ pub mod api { ], ) } - #[doc = "Add an aye or nay vote for the sender to the given proposal."] - #[doc = ""] - #[doc = "- `origin`: Must be `Signed` by a member account."] - #[doc = "- `poll`: Index of a poll which is ongoing."] - #[doc = "- `aye`: `true` if the vote is to approve the proposal, `false` otherwise."] - #[doc = ""] - #[doc = "Transaction fees are be waived if the member is voting on any particular proposal"] - #[doc = "for the first time and the call is successful. Subsequent vote changes will charge a"] - #[doc = "fee."] - #[doc = ""] - #[doc = "Weight: `O(1)`, less if there was no previous vote on the poll by the member."] + #[doc = "See [`Pallet::vote`]."] pub fn vote( &self, poll: types::vote::Poll, aye: types::vote::Aye, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "FellowshipCollective", "vote", types::Vote { poll, aye }, @@ -13451,22 +13702,13 @@ pub mod api { ], ) } - #[doc = "Remove votes from the given poll. It must have ended."] - #[doc = ""] - #[doc = "- `origin`: Must be `Signed` by any account."] - #[doc = "- `poll_index`: Index of a poll which is completed and for which votes continue to"] - #[doc = " exist."] - #[doc = "- `max`: Maximum number of vote items from remove in this call."] - #[doc = ""] - #[doc = "Transaction fees are waived if the operation is successful."] - #[doc = ""] - #[doc = "Weight `O(max)` (less if there are fewer items to remove than `max`)."] + #[doc = "See [`Pallet::cleanup_poll`]."] pub fn cleanup_poll( &self, poll_index: types::cleanup_poll::PollIndex, max: types::cleanup_poll::Max, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "FellowshipCollective", "cleanup_poll", types::CleanupPoll { poll_index, max }, @@ -13478,28 +13720,6 @@ pub mod api { ], ) } - #[doc = "Exchanges a member with a new account and the same existing rank."] - #[doc = ""] - #[doc = "- `origin`: Must be the `ExchangeOrigin`."] - #[doc = "- `who`: Account of existing member of rank greater than zero to be exchanged."] - #[doc = "- `new_who`: New Account of existing member of rank greater than zero to exchanged to."] - pub fn exchange_member( - &self, - who: types::exchange_member::Who, - new_who: types::exchange_member::NewWho, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "FellowshipCollective", - "exchange_member", - types::ExchangeMember { who, new_who }, - [ - 240u8, 208u8, 76u8, 147u8, 117u8, 23u8, 91u8, 37u8, 22u8, 101u8, 53u8, - 247u8, 161u8, 94u8, 109u8, 233u8, 104u8, 129u8, 67u8, 31u8, 223u8, - 182u8, 50u8, 233u8, 120u8, 129u8, 224u8, 135u8, 52u8, 162u8, 26u8, - 189u8, - ], - ) - } } } #[doc = "The `Event` enum of this pallet"] @@ -13507,37 +13727,37 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A member `who` has been added."] pub struct MemberAdded { pub who: member_added::Who, } pub mod member_added { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for MemberAdded { + impl ::subxt::ext::subxt_core::events::StaticEvent for MemberAdded { const PALLET: &'static str = "FellowshipCollective"; const EVENT: &'static str = "MemberAdded"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The member `who`se rank has been changed to the given `rank`."] pub struct RankChanged { pub who: rank_changed::Who, @@ -13545,23 +13765,23 @@ pub mod api { } pub mod rank_changed { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Rank = ::core::primitive::u16; } - impl ::subxt::events::StaticEvent for RankChanged { + impl ::subxt::ext::subxt_core::events::StaticEvent for RankChanged { const PALLET: &'static str = "FellowshipCollective"; const EVENT: &'static str = "RankChanged"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The member `who` of given `rank` has been removed from the collective."] pub struct MemberRemoved { pub who: member_removed::Who, @@ -13569,23 +13789,23 @@ pub mod api { } pub mod member_removed { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Rank = ::core::primitive::u16; } - impl ::subxt::events::StaticEvent for MemberRemoved { + impl ::subxt::ext::subxt_core::events::StaticEvent for MemberRemoved { const PALLET: &'static str = "FellowshipCollective"; const EVENT: &'static str = "MemberRemoved"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The member `who` has voted for the `poll` with the given `vote` leading to an updated"] #[doc = "`tally`."] pub struct Voted { @@ -13596,39 +13816,15 @@ pub mod api { } pub mod voted { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Poll = ::core::primitive::u32; pub type Vote = runtime_types::pallet_ranked_collective::VoteRecord; pub type Tally = runtime_types::pallet_ranked_collective::Tally; } - impl ::subxt::events::StaticEvent for Voted { + impl ::subxt::ext::subxt_core::events::StaticEvent for Voted { const PALLET: &'static str = "FellowshipCollective"; const EVENT: &'static str = "Voted"; } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The member `who` had their `AccountId` changed to `new_who`."] - pub struct MemberExchanged { - pub who: member_exchanged::Who, - pub new_who: member_exchanged::NewWho, - } - pub mod member_exchanged { - use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; - pub type NewWho = ::subxt::utils::AccountId32; - } - impl ::subxt::events::StaticEvent for MemberExchanged { - const PALLET: &'static str = "FellowshipCollective"; - const EVENT: &'static str = "MemberExchanged"; - } } pub mod storage { use super::runtime_types; @@ -13642,17 +13838,17 @@ pub mod api { pub mod members { use super::runtime_types; pub type Members = runtime_types::pallet_ranked_collective::MemberRecord; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod id_to_index { use super::runtime_types; pub type IdToIndex = ::core::primitive::u32; pub type Param0 = ::core::primitive::u16; - pub type Param1 = ::subxt::utils::AccountId32; + pub type Param1 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod index_to_id { use super::runtime_types; - pub type IndexToId = ::subxt::utils::AccountId32; + pub type IndexToId = ::subxt::ext::subxt_core::utils::AccountId32; pub type Param0 = ::core::primitive::u16; pub type Param1 = ::core::primitive::u32; } @@ -13660,12 +13856,12 @@ pub mod api { use super::runtime_types; pub type Voting = runtime_types::pallet_ranked_collective::VoteRecord; pub type Param0 = ::core::primitive::u32; - pub type Param1 = ::subxt::utils::AccountId32; + pub type Param1 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod voting_cleanup { use super::runtime_types; pub type VotingCleanup = - runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::bounded_collections::bounded_vec::BoundedVec5< ::core::primitive::u8, >; pub type Param0 = ::core::primitive::u32; @@ -13677,14 +13873,14 @@ pub mod api { #[doc = " of the vec."] pub fn member_count_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::member_count::MemberCount, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "FellowshipCollective", "MemberCount", (), @@ -13699,18 +13895,22 @@ pub mod api { #[doc = " of the vec."] pub fn member_count( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::member_count::Param0, + >, types::member_count::MemberCount, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "FellowshipCollective", "MemberCount", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 0u8, 141u8, 66u8, 91u8, 155u8, 74u8, 17u8, 191u8, 143u8, 41u8, 231u8, 56u8, 123u8, 219u8, 145u8, 27u8, 197u8, 62u8, 118u8, 237u8, 30u8, 7u8, @@ -13721,14 +13921,14 @@ pub mod api { #[doc = " The current members of the collective."] pub fn members_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::members::Members, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "FellowshipCollective", "Members", (), @@ -13743,18 +13943,22 @@ pub mod api { #[doc = " The current members of the collective."] pub fn members( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::members::Param0, + >, types::members::Members, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "FellowshipCollective", "Members", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 101u8, 183u8, 36u8, 241u8, 67u8, 8u8, 252u8, 116u8, 110u8, 153u8, 117u8, 210u8, 128u8, 80u8, 130u8, 163u8, 38u8, 76u8, 230u8, 107u8, @@ -13766,14 +13970,14 @@ pub mod api { #[doc = " The index of each ranks's member into the group of members who have at least that rank."] pub fn id_to_index_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::id_to_index::IdToIndex, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "FellowshipCollective", "IdToIndex", (), @@ -13787,18 +13991,22 @@ pub mod api { #[doc = " The index of each ranks's member into the group of members who have at least that rank."] pub fn id_to_index_iter1( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::id_to_index::Param0, + >, types::id_to_index::IdToIndex, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "FellowshipCollective", "IdToIndex", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 121u8, 225u8, 69u8, 131u8, 194u8, 3u8, 82u8, 27u8, 129u8, 152u8, 157u8, 45u8, 39u8, 47u8, 166u8, 28u8, 42u8, 92u8, 217u8, 189u8, 160u8, 102u8, @@ -13809,24 +14017,32 @@ pub mod api { #[doc = " The index of each ranks's member into the group of members who have at least that rank."] pub fn id_to_index( &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< ( - ::subxt::storage::address::StaticStorageKey, - ::subxt::storage::address::StaticStorageKey, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::id_to_index::Param0, + >, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::id_to_index::Param1, + >, ), types::id_to_index::IdToIndex, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "FellowshipCollective", "IdToIndex", ( - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), ), [ 121u8, 225u8, 69u8, 131u8, 194u8, 3u8, 82u8, 27u8, 129u8, 152u8, 157u8, @@ -13839,14 +14055,14 @@ pub mod api { #[doc = " return `Some`, however a member's index is not guaranteed to remain unchanged over time."] pub fn index_to_id_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::index_to_id::IndexToId, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "FellowshipCollective", "IndexToId", (), @@ -13862,18 +14078,22 @@ pub mod api { #[doc = " return `Some`, however a member's index is not guaranteed to remain unchanged over time."] pub fn index_to_id_iter1( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::index_to_id::Param0, + >, types::index_to_id::IndexToId, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "FellowshipCollective", "IndexToId", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 110u8, 48u8, 214u8, 224u8, 56u8, 195u8, 186u8, 24u8, 111u8, 37u8, 15u8, 153u8, 245u8, 101u8, 229u8, 149u8, 216u8, 185u8, 7u8, 242u8, 196u8, @@ -13886,24 +14106,32 @@ pub mod api { #[doc = " return `Some`, however a member's index is not guaranteed to remain unchanged over time."] pub fn index_to_id( &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< ( - ::subxt::storage::address::StaticStorageKey, - ::subxt::storage::address::StaticStorageKey, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::index_to_id::Param0, + >, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::index_to_id::Param1, + >, ), types::index_to_id::IndexToId, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "FellowshipCollective", "IndexToId", ( - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), ), [ 110u8, 48u8, 214u8, 224u8, 56u8, 195u8, 186u8, 24u8, 111u8, 37u8, 15u8, @@ -13916,14 +14144,14 @@ pub mod api { #[doc = " Votes on a given proposal, if it is ongoing."] pub fn voting_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::voting::Voting, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "FellowshipCollective", "Voting", (), @@ -13938,18 +14166,22 @@ pub mod api { #[doc = " Votes on a given proposal, if it is ongoing."] pub fn voting_iter1( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::voting::Param0, + >, types::voting::Voting, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "FellowshipCollective", "Voting", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 180u8, 146u8, 236u8, 178u8, 30u8, 50u8, 161u8, 50u8, 140u8, 110u8, 220u8, 1u8, 109u8, 209u8, 17u8, 94u8, 234u8, 223u8, 222u8, 177u8, @@ -13961,24 +14193,32 @@ pub mod api { #[doc = " Votes on a given proposal, if it is ongoing."] pub fn voting( &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< ( - ::subxt::storage::address::StaticStorageKey, - ::subxt::storage::address::StaticStorageKey, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::voting::Param0, + >, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::voting::Param1, + >, ), types::voting::Voting, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "FellowshipCollective", "Voting", ( - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), ), [ 180u8, 146u8, 236u8, 178u8, 30u8, 50u8, 161u8, 50u8, 140u8, 110u8, @@ -13990,14 +14230,14 @@ pub mod api { } pub fn voting_cleanup_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::voting_cleanup::VotingCleanup, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "FellowshipCollective", "VotingCleanup", (), @@ -14010,18 +14250,22 @@ pub mod api { } pub fn voting_cleanup( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::voting_cleanup::Param0, + >, types::voting_cleanup::VotingCleanup, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "FellowshipCollective", "VotingCleanup", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 223u8, 130u8, 79u8, 104u8, 94u8, 221u8, 222u8, 72u8, 187u8, 95u8, 231u8, 59u8, 28u8, 119u8, 191u8, 63u8, 40u8, 186u8, 58u8, 254u8, 14u8, @@ -14036,9 +14280,9 @@ pub mod api { use super::root_mod; use super::runtime_types; #[doc = "The `Error` enum of this pallet."] - pub type Error = runtime_types::pallet_referenda::pallet::Error2; + pub type Error = runtime_types::pallet_referenda::pallet::Error; #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub type Call = runtime_types::pallet_referenda::pallet::Call2; + pub type Call = runtime_types::pallet_referenda::pallet::Call; pub mod calls { use super::root_mod; use super::runtime_types; @@ -14046,26 +14290,23 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Propose a referendum on a privileged action."] - #[doc = ""] - #[doc = "- `origin`: must be `SubmitOrigin` and the account must have `SubmissionDeposit` funds"] - #[doc = " available."] - #[doc = "- `proposal_origin`: The origin from which the proposal should be executed."] - #[doc = "- `proposal`: The proposal."] - #[doc = "- `enactment_moment`: The moment that the proposal should be enacted."] - #[doc = ""] - #[doc = "Emits `Submitted`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::submit`]."] pub struct Submit { - pub proposal_origin: ::std::boxed::Box, + pub proposal_origin: + ::subxt::ext::subxt_core::alloc::boxed::Box, pub proposal: submit::Proposal, pub enactment_moment: submit::EnactmentMoment, } @@ -14081,28 +14322,25 @@ pub mod api { ::core::primitive::u32, >; } - impl ::subxt::blocks::StaticExtrinsic for Submit { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Submit { const PALLET: &'static str = "FellowshipReferenda"; const CALL: &'static str = "submit"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Post the Decision Deposit for a referendum."] - #[doc = ""] - #[doc = "- `origin`: must be `Signed` and the account must have funds available for the"] - #[doc = " referendum's track's Decision Deposit."] - #[doc = "- `index`: The index of the submitted referendum whose Decision Deposit is yet to be"] - #[doc = " posted."] - #[doc = ""] - #[doc = "Emits `DecisionDepositPlaced`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::place_decision_deposit`]."] pub struct PlaceDecisionDeposit { pub index: place_decision_deposit::Index, } @@ -14110,27 +14348,25 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for PlaceDecisionDeposit { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for PlaceDecisionDeposit { const PALLET: &'static str = "FellowshipReferenda"; const CALL: &'static str = "place_decision_deposit"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Refund the Decision Deposit for a closed referendum back to the depositor."] - #[doc = ""] - #[doc = "- `origin`: must be `Signed` or `Root`."] - #[doc = "- `index`: The index of a closed referendum whose Decision Deposit has not yet been"] - #[doc = " refunded."] - #[doc = ""] - #[doc = "Emits `DecisionDepositRefunded`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::refund_decision_deposit`]."] pub struct RefundDecisionDeposit { pub index: refund_decision_deposit::Index, } @@ -14138,26 +14374,25 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for RefundDecisionDeposit { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RefundDecisionDeposit { const PALLET: &'static str = "FellowshipReferenda"; const CALL: &'static str = "refund_decision_deposit"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Cancel an ongoing referendum."] - #[doc = ""] - #[doc = "- `origin`: must be the `CancelOrigin`."] - #[doc = "- `index`: The index of the referendum to be cancelled."] - #[doc = ""] - #[doc = "Emits `Cancelled`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::cancel`]."] pub struct Cancel { pub index: cancel::Index, } @@ -14165,26 +14400,25 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for Cancel { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Cancel { const PALLET: &'static str = "FellowshipReferenda"; const CALL: &'static str = "cancel"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Cancel an ongoing referendum and slash the deposits."] - #[doc = ""] - #[doc = "- `origin`: must be the `KillOrigin`."] - #[doc = "- `index`: The index of the referendum to be cancelled."] - #[doc = ""] - #[doc = "Emits `Killed` and `DepositSlashed`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::kill`]."] pub struct Kill { pub index: kill::Index, } @@ -14192,24 +14426,25 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for Kill { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Kill { const PALLET: &'static str = "FellowshipReferenda"; const CALL: &'static str = "kill"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Advance a referendum onto its next logical state. Only used internally."] - #[doc = ""] - #[doc = "- `origin`: must be `Root`."] - #[doc = "- `index`: the referendum to be advanced."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::nudge_referendum`]."] pub struct NudgeReferendum { pub index: nudge_referendum::Index, } @@ -14217,29 +14452,25 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for NudgeReferendum { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for NudgeReferendum { const PALLET: &'static str = "FellowshipReferenda"; const CALL: &'static str = "nudge_referendum"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Advance a track onto its next logical state. Only used internally."] - #[doc = ""] - #[doc = "- `origin`: must be `Root`."] - #[doc = "- `track`: the track to be advanced."] - #[doc = ""] - #[doc = "Action item for when there is now one fewer referendum in the deciding phase and the"] - #[doc = "`DecidingCount` is not yet updated. This means that we should either:"] - #[doc = "- begin deciding another referendum (and leave `DecidingCount` alone); or"] - #[doc = "- decrement `DecidingCount`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::one_fewer_deciding`]."] pub struct OneFewerDeciding { pub track: one_fewer_deciding::Track, } @@ -14247,27 +14478,25 @@ pub mod api { use super::runtime_types; pub type Track = ::core::primitive::u16; } - impl ::subxt::blocks::StaticExtrinsic for OneFewerDeciding { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for OneFewerDeciding { const PALLET: &'static str = "FellowshipReferenda"; const CALL: &'static str = "one_fewer_deciding"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Refund the Submission Deposit for a closed referendum back to the depositor."] - #[doc = ""] - #[doc = "- `origin`: must be `Signed` or `Root`."] - #[doc = "- `index`: The index of a closed referendum whose Submission Deposit has not yet been"] - #[doc = " refunded."] - #[doc = ""] - #[doc = "Emits `SubmissionDepositRefunded`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::refund_submission_deposit`]."] pub struct RefundSubmissionDeposit { pub index: refund_submission_deposit::Index, } @@ -14275,27 +14504,25 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for RefundSubmissionDeposit { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RefundSubmissionDeposit { const PALLET: &'static str = "FellowshipReferenda"; const CALL: &'static str = "refund_submission_deposit"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set or clear metadata of a referendum."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `origin`: Must be `Signed` by a creator of a referendum or by anyone to clear a"] - #[doc = " metadata of a finished referendum."] - #[doc = "- `index`: The index of a referendum to set or clear metadata for."] - #[doc = "- `maybe_hash`: The hash of an on-chain stored preimage. `None` to clear a metadata."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_metadata`]."] pub struct SetMetadata { pub index: set_metadata::Index, pub maybe_hash: set_metadata::MaybeHash, @@ -14303,58 +14530,48 @@ pub mod api { pub mod set_metadata { use super::runtime_types; pub type Index = ::core::primitive::u32; - pub type MaybeHash = ::core::option::Option<::subxt::utils::H256>; + pub type MaybeHash = + ::core::option::Option<::subxt::ext::subxt_core::utils::H256>; } - impl ::subxt::blocks::StaticExtrinsic for SetMetadata { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetMetadata { const PALLET: &'static str = "FellowshipReferenda"; const CALL: &'static str = "set_metadata"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Propose a referendum on a privileged action."] - #[doc = ""] - #[doc = "- `origin`: must be `SubmitOrigin` and the account must have `SubmissionDeposit` funds"] - #[doc = " available."] - #[doc = "- `proposal_origin`: The origin from which the proposal should be executed."] - #[doc = "- `proposal`: The proposal."] - #[doc = "- `enactment_moment`: The moment that the proposal should be enacted."] - #[doc = ""] - #[doc = "Emits `Submitted`."] + #[doc = "See [`Pallet::submit`]."] pub fn submit( &self, proposal_origin: types::submit::ProposalOrigin, proposal: types::submit::Proposal, enactment_moment: types::submit::EnactmentMoment, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "FellowshipReferenda", "submit", types::Submit { - proposal_origin: ::std::boxed::Box::new(proposal_origin), + proposal_origin: ::subxt::ext::subxt_core::alloc::boxed::Box::new( + proposal_origin, + ), proposal, enactment_moment, }, [ - 252u8, 72u8, 60u8, 208u8, 214u8, 81u8, 179u8, 80u8, 7u8, 215u8, 54u8, - 7u8, 214u8, 49u8, 72u8, 70u8, 213u8, 143u8, 217u8, 190u8, 47u8, 3u8, - 191u8, 110u8, 67u8, 139u8, 137u8, 215u8, 14u8, 225u8, 124u8, 117u8, + 116u8, 212u8, 158u8, 18u8, 89u8, 136u8, 153u8, 97u8, 43u8, 197u8, + 200u8, 161u8, 145u8, 102u8, 19u8, 25u8, 135u8, 13u8, 199u8, 101u8, + 107u8, 221u8, 244u8, 15u8, 192u8, 176u8, 3u8, 154u8, 248u8, 70u8, + 113u8, 69u8, ], ) } - #[doc = "Post the Decision Deposit for a referendum."] - #[doc = ""] - #[doc = "- `origin`: must be `Signed` and the account must have funds available for the"] - #[doc = " referendum's track's Decision Deposit."] - #[doc = "- `index`: The index of the submitted referendum whose Decision Deposit is yet to be"] - #[doc = " posted."] - #[doc = ""] - #[doc = "Emits `DecisionDepositPlaced`."] + #[doc = "See [`Pallet::place_decision_deposit`]."] pub fn place_decision_deposit( &self, index: types::place_decision_deposit::Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "FellowshipReferenda", "place_decision_deposit", types::PlaceDecisionDeposit { index }, @@ -14365,18 +14582,13 @@ pub mod api { ], ) } - #[doc = "Refund the Decision Deposit for a closed referendum back to the depositor."] - #[doc = ""] - #[doc = "- `origin`: must be `Signed` or `Root`."] - #[doc = "- `index`: The index of a closed referendum whose Decision Deposit has not yet been"] - #[doc = " refunded."] - #[doc = ""] - #[doc = "Emits `DecisionDepositRefunded`."] + #[doc = "See [`Pallet::refund_decision_deposit`]."] pub fn refund_decision_deposit( &self, index: types::refund_decision_deposit::Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "FellowshipReferenda", "refund_decision_deposit", types::RefundDecisionDeposit { index }, @@ -14387,17 +14599,12 @@ pub mod api { ], ) } - #[doc = "Cancel an ongoing referendum."] - #[doc = ""] - #[doc = "- `origin`: must be the `CancelOrigin`."] - #[doc = "- `index`: The index of the referendum to be cancelled."] - #[doc = ""] - #[doc = "Emits `Cancelled`."] + #[doc = "See [`Pallet::cancel`]."] pub fn cancel( &self, index: types::cancel::Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "FellowshipReferenda", "cancel", types::Cancel { index }, @@ -14409,14 +14616,12 @@ pub mod api { ], ) } - #[doc = "Cancel an ongoing referendum and slash the deposits."] - #[doc = ""] - #[doc = "- `origin`: must be the `KillOrigin`."] - #[doc = "- `index`: The index of the referendum to be cancelled."] - #[doc = ""] - #[doc = "Emits `Killed` and `DepositSlashed`."] - pub fn kill(&self, index: types::kill::Index) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + #[doc = "See [`Pallet::kill`]."] + pub fn kill( + &self, + index: types::kill::Index, + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "FellowshipReferenda", "kill", types::Kill { index }, @@ -14428,15 +14633,12 @@ pub mod api { ], ) } - #[doc = "Advance a referendum onto its next logical state. Only used internally."] - #[doc = ""] - #[doc = "- `origin`: must be `Root`."] - #[doc = "- `index`: the referendum to be advanced."] + #[doc = "See [`Pallet::nudge_referendum`]."] pub fn nudge_referendum( &self, index: types::nudge_referendum::Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "FellowshipReferenda", "nudge_referendum", types::NudgeReferendum { index }, @@ -14448,20 +14650,13 @@ pub mod api { ], ) } - #[doc = "Advance a track onto its next logical state. Only used internally."] - #[doc = ""] - #[doc = "- `origin`: must be `Root`."] - #[doc = "- `track`: the track to be advanced."] - #[doc = ""] - #[doc = "Action item for when there is now one fewer referendum in the deciding phase and the"] - #[doc = "`DecidingCount` is not yet updated. This means that we should either:"] - #[doc = "- begin deciding another referendum (and leave `DecidingCount` alone); or"] - #[doc = "- decrement `DecidingCount`."] + #[doc = "See [`Pallet::one_fewer_deciding`]."] pub fn one_fewer_deciding( &self, track: types::one_fewer_deciding::Track, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "FellowshipReferenda", "one_fewer_deciding", types::OneFewerDeciding { track }, @@ -14473,18 +14668,13 @@ pub mod api { ], ) } - #[doc = "Refund the Submission Deposit for a closed referendum back to the depositor."] - #[doc = ""] - #[doc = "- `origin`: must be `Signed` or `Root`."] - #[doc = "- `index`: The index of a closed referendum whose Submission Deposit has not yet been"] - #[doc = " refunded."] - #[doc = ""] - #[doc = "Emits `SubmissionDepositRefunded`."] + #[doc = "See [`Pallet::refund_submission_deposit`]."] pub fn refund_submission_deposit( &self, index: types::refund_submission_deposit::Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "FellowshipReferenda", "refund_submission_deposit", types::RefundSubmissionDeposit { index }, @@ -14495,19 +14685,13 @@ pub mod api { ], ) } - #[doc = "Set or clear metadata of a referendum."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `origin`: Must be `Signed` by a creator of a referendum or by anyone to clear a"] - #[doc = " metadata of a finished referendum."] - #[doc = "- `index`: The index of a referendum to set or clear metadata for."] - #[doc = "- `maybe_hash`: The hash of an on-chain stored preimage. `None` to clear a metadata."] + #[doc = "See [`Pallet::set_metadata`]."] pub fn set_metadata( &self, index: types::set_metadata::Index, maybe_hash: types::set_metadata::MaybeHash, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "FellowshipReferenda", "set_metadata", types::SetMetadata { index, maybe_hash }, @@ -14526,15 +14710,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A referendum has been submitted."] pub struct Submitted { pub index: submitted::Index, @@ -14550,20 +14734,20 @@ pub mod api { runtime_types::sp_runtime::traits::BlakeTwo256, >; } - impl ::subxt::events::StaticEvent for Submitted { + impl ::subxt::ext::subxt_core::events::StaticEvent for Submitted { const PALLET: &'static str = "FellowshipReferenda"; const EVENT: &'static str = "Submitted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The decision deposit has been placed."] pub struct DecisionDepositPlaced { pub index: decision_deposit_placed::Index, @@ -14573,23 +14757,23 @@ pub mod api { pub mod decision_deposit_placed { use super::runtime_types; pub type Index = ::core::primitive::u32; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for DecisionDepositPlaced { + impl ::subxt::ext::subxt_core::events::StaticEvent for DecisionDepositPlaced { const PALLET: &'static str = "FellowshipReferenda"; const EVENT: &'static str = "DecisionDepositPlaced"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The decision deposit has been refunded."] pub struct DecisionDepositRefunded { pub index: decision_deposit_refunded::Index, @@ -14599,47 +14783,47 @@ pub mod api { pub mod decision_deposit_refunded { use super::runtime_types; pub type Index = ::core::primitive::u32; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for DecisionDepositRefunded { + impl ::subxt::ext::subxt_core::events::StaticEvent for DecisionDepositRefunded { const PALLET: &'static str = "FellowshipReferenda"; const EVENT: &'static str = "DecisionDepositRefunded"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A deposit has been slashed."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "A deposit has been slashaed."] pub struct DepositSlashed { pub who: deposit_slashed::Who, pub amount: deposit_slashed::Amount, } pub mod deposit_slashed { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for DepositSlashed { + impl ::subxt::ext::subxt_core::events::StaticEvent for DepositSlashed { const PALLET: &'static str = "FellowshipReferenda"; const EVENT: &'static str = "DepositSlashed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A referendum has moved into the deciding phase."] pub struct DecisionStarted { pub index: decision_started::Index, @@ -14657,20 +14841,20 @@ pub mod api { >; pub type Tally = runtime_types::pallet_ranked_collective::Tally; } - impl ::subxt::events::StaticEvent for DecisionStarted { + impl ::subxt::ext::subxt_core::events::StaticEvent for DecisionStarted { const PALLET: &'static str = "FellowshipReferenda"; const EVENT: &'static str = "DecisionStarted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct ConfirmStarted { pub index: confirm_started::Index, } @@ -14678,20 +14862,20 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for ConfirmStarted { + impl ::subxt::ext::subxt_core::events::StaticEvent for ConfirmStarted { const PALLET: &'static str = "FellowshipReferenda"; const EVENT: &'static str = "ConfirmStarted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct ConfirmAborted { pub index: confirm_aborted::Index, } @@ -14699,20 +14883,20 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for ConfirmAborted { + impl ::subxt::ext::subxt_core::events::StaticEvent for ConfirmAborted { const PALLET: &'static str = "FellowshipReferenda"; const EVENT: &'static str = "ConfirmAborted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A referendum has ended its confirmation phase and is ready for approval."] pub struct Confirmed { pub index: confirmed::Index, @@ -14723,20 +14907,20 @@ pub mod api { pub type Index = ::core::primitive::u32; pub type Tally = runtime_types::pallet_ranked_collective::Tally; } - impl ::subxt::events::StaticEvent for Confirmed { + impl ::subxt::ext::subxt_core::events::StaticEvent for Confirmed { const PALLET: &'static str = "FellowshipReferenda"; const EVENT: &'static str = "Confirmed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A referendum has been approved and its proposal has been scheduled."] pub struct Approved { pub index: approved::Index, @@ -14745,20 +14929,20 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for Approved { + impl ::subxt::ext::subxt_core::events::StaticEvent for Approved { const PALLET: &'static str = "FellowshipReferenda"; const EVENT: &'static str = "Approved"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A proposal has been rejected by referendum."] pub struct Rejected { pub index: rejected::Index, @@ -14769,20 +14953,20 @@ pub mod api { pub type Index = ::core::primitive::u32; pub type Tally = runtime_types::pallet_ranked_collective::Tally; } - impl ::subxt::events::StaticEvent for Rejected { + impl ::subxt::ext::subxt_core::events::StaticEvent for Rejected { const PALLET: &'static str = "FellowshipReferenda"; const EVENT: &'static str = "Rejected"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A referendum has been timed out without being decided."] pub struct TimedOut { pub index: timed_out::Index, @@ -14793,20 +14977,20 @@ pub mod api { pub type Index = ::core::primitive::u32; pub type Tally = runtime_types::pallet_ranked_collective::Tally; } - impl ::subxt::events::StaticEvent for TimedOut { + impl ::subxt::ext::subxt_core::events::StaticEvent for TimedOut { const PALLET: &'static str = "FellowshipReferenda"; const EVENT: &'static str = "TimedOut"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A referendum has been cancelled."] pub struct Cancelled { pub index: cancelled::Index, @@ -14817,20 +15001,20 @@ pub mod api { pub type Index = ::core::primitive::u32; pub type Tally = runtime_types::pallet_ranked_collective::Tally; } - impl ::subxt::events::StaticEvent for Cancelled { + impl ::subxt::ext::subxt_core::events::StaticEvent for Cancelled { const PALLET: &'static str = "FellowshipReferenda"; const EVENT: &'static str = "Cancelled"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A referendum has been killed."] pub struct Killed { pub index: killed::Index, @@ -14841,20 +15025,20 @@ pub mod api { pub type Index = ::core::primitive::u32; pub type Tally = runtime_types::pallet_ranked_collective::Tally; } - impl ::subxt::events::StaticEvent for Killed { + impl ::subxt::ext::subxt_core::events::StaticEvent for Killed { const PALLET: &'static str = "FellowshipReferenda"; const EVENT: &'static str = "Killed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The submission deposit has been refunded."] pub struct SubmissionDepositRefunded { pub index: submission_deposit_refunded::Index, @@ -14864,23 +15048,23 @@ pub mod api { pub mod submission_deposit_refunded { use super::runtime_types; pub type Index = ::core::primitive::u32; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for SubmissionDepositRefunded { + impl ::subxt::ext::subxt_core::events::StaticEvent for SubmissionDepositRefunded { const PALLET: &'static str = "FellowshipReferenda"; const EVENT: &'static str = "SubmissionDepositRefunded"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Metadata for a referendum has been set."] pub struct MetadataSet { pub index: metadata_set::Index, @@ -14889,22 +15073,22 @@ pub mod api { pub mod metadata_set { use super::runtime_types; pub type Index = ::core::primitive::u32; - pub type Hash = ::subxt::utils::H256; + pub type Hash = ::subxt::ext::subxt_core::utils::H256; } - impl ::subxt::events::StaticEvent for MetadataSet { + impl ::subxt::ext::subxt_core::events::StaticEvent for MetadataSet { const PALLET: &'static str = "FellowshipReferenda"; const EVENT: &'static str = "MetadataSet"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Metadata for a referendum has been cleared."] pub struct MetadataCleared { pub index: metadata_cleared::Index, @@ -14913,9 +15097,9 @@ pub mod api { pub mod metadata_cleared { use super::runtime_types; pub type Index = ::core::primitive::u32; - pub type Hash = ::subxt::utils::H256; + pub type Hash = ::subxt::ext::subxt_core::utils::H256; } - impl ::subxt::events::StaticEvent for MetadataCleared { + impl ::subxt::ext::subxt_core::events::StaticEvent for MetadataCleared { const PALLET: &'static str = "FellowshipReferenda"; const EVENT: &'static str = "MetadataCleared"; } @@ -14931,7 +15115,7 @@ pub mod api { pub mod referendum_info_for { use super::runtime_types; pub type ReferendumInfoFor = - runtime_types::pallet_referenda::types::ReferendumInfo< + runtime_types::pallet_referenda::types::ReferendumInfo2< ::core::primitive::u16, runtime_types::rococo_runtime::OriginCaller, ::core::primitive::u32, @@ -14941,7 +15125,7 @@ pub mod api { >, ::core::primitive::u128, runtime_types::pallet_ranked_collective::Tally, - ::subxt::utils::AccountId32, + ::subxt::ext::subxt_core::utils::AccountId32, (::core::primitive::u32, ::core::primitive::u32), >; pub type Param0 = ::core::primitive::u32; @@ -14949,7 +15133,7 @@ pub mod api { pub mod track_queue { use super::runtime_types; pub type TrackQueue = - runtime_types::bounded_collections::bounded_vec::BoundedVec<( + runtime_types::bounded_collections::bounded_vec::BoundedVec16<( ::core::primitive::u32, ::core::primitive::u32, )>; @@ -14962,7 +15146,7 @@ pub mod api { } pub mod metadata_of { use super::runtime_types; - pub type MetadataOf = ::subxt::utils::H256; + pub type MetadataOf = ::subxt::ext::subxt_core::utils::H256; pub type Param0 = ::core::primitive::u32; } } @@ -14971,14 +15155,14 @@ pub mod api { #[doc = " The next free referendum index, aka the number of referenda started so far."] pub fn referendum_count( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::referendum_count::ReferendumCount, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "FellowshipReferenda", "ReferendumCount", (), @@ -14993,45 +15177,47 @@ pub mod api { #[doc = " Information concerning any given referendum."] pub fn referendum_info_for_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::referendum_info_for::ReferendumInfoFor, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "FellowshipReferenda", "ReferendumInfoFor", (), [ - 64u8, 146u8, 31u8, 207u8, 209u8, 86u8, 44u8, 53u8, 78u8, 240u8, 222u8, - 131u8, 225u8, 83u8, 114u8, 205u8, 225u8, 20u8, 128u8, 183u8, 19u8, - 204u8, 67u8, 31u8, 154u8, 115u8, 183u8, 218u8, 34u8, 134u8, 222u8, - 32u8, + 154u8, 115u8, 139u8, 27u8, 56u8, 76u8, 212u8, 73u8, 155u8, 177u8, 26u8, + 156u8, 1u8, 163u8, 243u8, 143u8, 10u8, 188u8, 63u8, 63u8, 190u8, 158u8, + 142u8, 61u8, 245u8, 254u8, 11u8, 109u8, 170u8, 98u8, 77u8, 95u8, ], ) } #[doc = " Information concerning any given referendum."] pub fn referendum_info_for( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::referendum_info_for::Param0, + >, types::referendum_info_for::ReferendumInfoFor, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "FellowshipReferenda", "ReferendumInfoFor", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ - 64u8, 146u8, 31u8, 207u8, 209u8, 86u8, 44u8, 53u8, 78u8, 240u8, 222u8, - 131u8, 225u8, 83u8, 114u8, 205u8, 225u8, 20u8, 128u8, 183u8, 19u8, - 204u8, 67u8, 31u8, 154u8, 115u8, 183u8, 218u8, 34u8, 134u8, 222u8, - 32u8, + 154u8, 115u8, 139u8, 27u8, 56u8, 76u8, 212u8, 73u8, 155u8, 177u8, 26u8, + 156u8, 1u8, 163u8, 243u8, 143u8, 10u8, 188u8, 63u8, 63u8, 190u8, 158u8, + 142u8, 61u8, 245u8, 254u8, 11u8, 109u8, 170u8, 98u8, 77u8, 95u8, ], ) } @@ -15041,14 +15227,14 @@ pub mod api { #[doc = " This should be empty if `DecidingCount` is less than `TrackInfo::max_deciding`."] pub fn track_queue_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::track_queue::TrackQueue, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "FellowshipReferenda", "TrackQueue", (), @@ -15066,18 +15252,22 @@ pub mod api { #[doc = " This should be empty if `DecidingCount` is less than `TrackInfo::max_deciding`."] pub fn track_queue( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::track_queue::Param0, + >, types::track_queue::TrackQueue, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "FellowshipReferenda", "TrackQueue", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 187u8, 113u8, 225u8, 99u8, 159u8, 207u8, 182u8, 41u8, 116u8, 136u8, 119u8, 196u8, 152u8, 50u8, 192u8, 22u8, 171u8, 182u8, 237u8, 228u8, @@ -15089,14 +15279,14 @@ pub mod api { #[doc = " The number of referenda being decided currently."] pub fn deciding_count_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::deciding_count::DecidingCount, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "FellowshipReferenda", "DecidingCount", (), @@ -15111,18 +15301,22 @@ pub mod api { #[doc = " The number of referenda being decided currently."] pub fn deciding_count( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::deciding_count::Param0, + >, types::deciding_count::DecidingCount, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "FellowshipReferenda", "DecidingCount", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 203u8, 89u8, 158u8, 179u8, 194u8, 82u8, 248u8, 162u8, 93u8, 140u8, 146u8, 51u8, 110u8, 232u8, 51u8, 1u8, 128u8, 212u8, 199u8, 14u8, 182u8, @@ -15139,14 +15333,14 @@ pub mod api { #[doc = " large preimages."] pub fn metadata_of_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::metadata_of::MetadataOf, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "FellowshipReferenda", "MetadataOf", (), @@ -15166,18 +15360,22 @@ pub mod api { #[doc = " large preimages."] pub fn metadata_of( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::metadata_of::Param0, + >, types::metadata_of::MetadataOf, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "FellowshipReferenda", "MetadataOf", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 159u8, 250u8, 56u8, 189u8, 247u8, 165u8, 206u8, 166u8, 91u8, 139u8, 124u8, 164u8, 25u8, 246u8, 199u8, 36u8, 159u8, 56u8, 227u8, 136u8, 4u8, @@ -15195,8 +15393,9 @@ pub mod api { #[doc = " The minimum amount to be used as a deposit for a public referendum proposal."] pub fn submission_deposit( &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "FellowshipReferenda", "SubmissionDeposit", [ @@ -15207,8 +15406,11 @@ pub mod api { ) } #[doc = " Maximum size of the referendum queue for a single track."] - pub fn max_queued(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn max_queued( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "FellowshipReferenda", "MaxQueued", [ @@ -15223,8 +15425,9 @@ pub mod api { #[doc = " Once this passes, then anyone may cancel the referendum."] pub fn undeciding_timeout( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "FellowshipReferenda", "UndecidingTimeout", [ @@ -15240,8 +15443,9 @@ pub mod api { #[doc = " automatic referendum status changes. Explicit servicing instructions are unaffected."] pub fn alarm_interval( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "FellowshipReferenda", "AlarmInterval", [ @@ -15255,8 +15459,8 @@ pub mod api { #[doc = " Information concerning the different referendum tracks."] pub fn tracks( &self, - ) -> ::subxt::constants::Address< - ::std::vec::Vec<( + ) -> ::subxt::ext::subxt_core::constants::Address< + ::subxt::ext::subxt_core::alloc::vec::Vec<( ::core::primitive::u16, runtime_types::pallet_referenda::types::TrackInfo< ::core::primitive::u128, @@ -15264,7 +15468,7 @@ pub mod api { >, )>, > { - ::subxt::constants::Address::new_static( + ::subxt::ext::subxt_core::constants::Address::new_static( "FellowshipReferenda", "Tracks", [ @@ -15278,10 +15482,6 @@ pub mod api { } } } - pub mod origins { - use super::root_mod; - use super::runtime_types; - } pub mod whitelist { use super::root_mod; use super::runtime_types; @@ -15296,57 +15496,72 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::whitelist_call`]."] pub struct WhitelistCall { pub call_hash: whitelist_call::CallHash, } pub mod whitelist_call { use super::runtime_types; - pub type CallHash = ::subxt::utils::H256; + pub type CallHash = ::subxt::ext::subxt_core::utils::H256; } - impl ::subxt::blocks::StaticExtrinsic for WhitelistCall { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for WhitelistCall { const PALLET: &'static str = "Whitelist"; const CALL: &'static str = "whitelist_call"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::remove_whitelisted_call`]."] pub struct RemoveWhitelistedCall { pub call_hash: remove_whitelisted_call::CallHash, } pub mod remove_whitelisted_call { use super::runtime_types; - pub type CallHash = ::subxt::utils::H256; + pub type CallHash = ::subxt::ext::subxt_core::utils::H256; } - impl ::subxt::blocks::StaticExtrinsic for RemoveWhitelistedCall { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RemoveWhitelistedCall { const PALLET: &'static str = "Whitelist"; const CALL: &'static str = "remove_whitelisted_call"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::dispatch_whitelisted_call`]."] pub struct DispatchWhitelistedCall { pub call_hash: dispatch_whitelisted_call::CallHash, pub call_encoded_len: dispatch_whitelisted_call::CallEncodedLen, @@ -15354,43 +15569,51 @@ pub mod api { } pub mod dispatch_whitelisted_call { use super::runtime_types; - pub type CallHash = ::subxt::utils::H256; + pub type CallHash = ::subxt::ext::subxt_core::utils::H256; pub type CallEncodedLen = ::core::primitive::u32; pub type CallWeightWitness = runtime_types::sp_weights::weight_v2::Weight; } - impl ::subxt::blocks::StaticExtrinsic for DispatchWhitelistedCall { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for DispatchWhitelistedCall { const PALLET: &'static str = "Whitelist"; const CALL: &'static str = "dispatch_whitelisted_call"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::dispatch_whitelisted_call_with_preimage`]."] pub struct DispatchWhitelistedCallWithPreimage { - pub call: ::std::boxed::Box, + pub call: ::subxt::ext::subxt_core::alloc::boxed::Box< + dispatch_whitelisted_call_with_preimage::Call, + >, } pub mod dispatch_whitelisted_call_with_preimage { use super::runtime_types; pub type Call = runtime_types::rococo_runtime::RuntimeCall; } - impl ::subxt::blocks::StaticExtrinsic for DispatchWhitelistedCallWithPreimage { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for DispatchWhitelistedCallWithPreimage { const PALLET: &'static str = "Whitelist"; const CALL: &'static str = "dispatch_whitelisted_call_with_preimage"; } } pub struct TransactionApi; impl TransactionApi { + #[doc = "See [`Pallet::whitelist_call`]."] pub fn whitelist_call( &self, call_hash: types::whitelist_call::CallHash, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Whitelist", "whitelist_call", types::WhitelistCall { call_hash }, @@ -15402,11 +15625,13 @@ pub mod api { ], ) } + #[doc = "See [`Pallet::remove_whitelisted_call`]."] pub fn remove_whitelisted_call( &self, call_hash: types::remove_whitelisted_call::CallHash, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Whitelist", "remove_whitelisted_call", types::RemoveWhitelistedCall { call_hash }, @@ -15418,13 +15643,15 @@ pub mod api { ], ) } + #[doc = "See [`Pallet::dispatch_whitelisted_call`]."] pub fn dispatch_whitelisted_call( &self, call_hash: types::dispatch_whitelisted_call::CallHash, call_encoded_len: types::dispatch_whitelisted_call::CallEncodedLen, call_weight_witness: types::dispatch_whitelisted_call::CallWeightWitness, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Whitelist", "dispatch_whitelisted_call", types::DispatchWhitelistedCall { @@ -15440,21 +15667,23 @@ pub mod api { ], ) } + #[doc = "See [`Pallet::dispatch_whitelisted_call_with_preimage`]."] pub fn dispatch_whitelisted_call_with_preimage( &self, call: types::dispatch_whitelisted_call_with_preimage::Call, - ) -> ::subxt::tx::Payload + ) -> ::subxt::ext::subxt_core::tx::Payload { - ::subxt::tx::Payload::new_static( + ::subxt::ext::subxt_core::tx::Payload::new_static( "Whitelist", "dispatch_whitelisted_call_with_preimage", types::DispatchWhitelistedCallWithPreimage { - call: ::std::boxed::Box::new(call), + call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), }, [ - 5u8, 34u8, 158u8, 60u8, 245u8, 185u8, 170u8, 44u8, 214u8, 208u8, 88u8, - 254u8, 35u8, 136u8, 207u8, 220u8, 73u8, 73u8, 39u8, 5u8, 118u8, 197u8, - 197u8, 222u8, 123u8, 52u8, 213u8, 237u8, 129u8, 4u8, 50u8, 143u8, + 85u8, 176u8, 96u8, 176u8, 10u8, 112u8, 30u8, 206u8, 107u8, 111u8, + 195u8, 253u8, 48u8, 252u8, 56u8, 75u8, 138u8, 201u8, 222u8, 79u8, + 234u8, 5u8, 81u8, 108u8, 103u8, 189u8, 81u8, 151u8, 57u8, 135u8, 63u8, + 222u8, ], ) } @@ -15465,64 +15694,64 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct CallWhitelisted { pub call_hash: call_whitelisted::CallHash, } pub mod call_whitelisted { use super::runtime_types; - pub type CallHash = ::subxt::utils::H256; + pub type CallHash = ::subxt::ext::subxt_core::utils::H256; } - impl ::subxt::events::StaticEvent for CallWhitelisted { + impl ::subxt::ext::subxt_core::events::StaticEvent for CallWhitelisted { const PALLET: &'static str = "Whitelist"; const EVENT: &'static str = "CallWhitelisted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct WhitelistedCallRemoved { pub call_hash: whitelisted_call_removed::CallHash, } pub mod whitelisted_call_removed { use super::runtime_types; - pub type CallHash = ::subxt::utils::H256; + pub type CallHash = ::subxt::ext::subxt_core::utils::H256; } - impl ::subxt::events::StaticEvent for WhitelistedCallRemoved { + impl ::subxt::ext::subxt_core::events::StaticEvent for WhitelistedCallRemoved { const PALLET: &'static str = "Whitelist"; const EVENT: &'static str = "WhitelistedCallRemoved"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct WhitelistedCallDispatched { pub call_hash: whitelisted_call_dispatched::CallHash, pub result: whitelisted_call_dispatched::Result, } pub mod whitelisted_call_dispatched { use super::runtime_types; - pub type CallHash = ::subxt::utils::H256; + pub type CallHash = ::subxt::ext::subxt_core::utils::H256; pub type Result = ::core::result::Result< runtime_types::frame_support::dispatch::PostDispatchInfo, runtime_types::sp_runtime::DispatchErrorWithPostInfo< @@ -15530,7 +15759,7 @@ pub mod api { >, >; } - impl ::subxt::events::StaticEvent for WhitelistedCallDispatched { + impl ::subxt::ext::subxt_core::events::StaticEvent for WhitelistedCallDispatched { const PALLET: &'static str = "Whitelist"; const EVENT: &'static str = "WhitelistedCallDispatched"; } @@ -15542,21 +15771,21 @@ pub mod api { pub mod whitelisted_call { use super::runtime_types; pub type WhitelistedCall = (); - pub type Param0 = ::subxt::utils::H256; + pub type Param0 = ::subxt::ext::subxt_core::utils::H256; } } pub struct StorageApi; impl StorageApi { pub fn whitelisted_call_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::whitelisted_call::WhitelistedCall, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Whitelist", "WhitelistedCall", (), @@ -15569,18 +15798,22 @@ pub mod api { } pub fn whitelisted_call( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::whitelisted_call::Param0, + >, types::whitelisted_call::WhitelistedCall, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Whitelist", "WhitelistedCall", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 82u8, 208u8, 214u8, 72u8, 225u8, 35u8, 51u8, 212u8, 25u8, 138u8, 30u8, 87u8, 54u8, 232u8, 72u8, 132u8, 4u8, 9u8, 28u8, 143u8, 251u8, 106u8, @@ -15605,78 +15838,49 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Make a claim to collect your DOTs."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _None_."] - #[doc = ""] - #[doc = "Unsigned Validation:"] - #[doc = "A call to claim is deemed valid if the signature provided matches"] - #[doc = "the expected signed message of:"] - #[doc = ""] - #[doc = "> Ethereum Signed Message:"] - #[doc = "> (configured prefix string)(address)"] - #[doc = ""] - #[doc = "and `address` matches the `dest` account."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `dest`: The destination account to payout the claim."] - #[doc = "- `ethereum_signature`: The signature of an ethereum signed message matching the format"] - #[doc = " described above."] - #[doc = ""] - #[doc = ""] - #[doc = "The weight of this call is invariant over the input parameters."] - #[doc = "Weight includes logic to validate unsigned `claim` call."] - #[doc = ""] - #[doc = "Total Complexity: O(1)"] - #[doc = ""] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::claim`]."] pub struct Claim { pub dest: claim::Dest, pub ethereum_signature: claim::EthereumSignature, } pub mod claim { use super::runtime_types; - pub type Dest = ::subxt::utils::AccountId32; + pub type Dest = ::subxt::ext::subxt_core::utils::AccountId32; pub type EthereumSignature = runtime_types::polkadot_runtime_common::claims::EcdsaSignature; } - impl ::subxt::blocks::StaticExtrinsic for Claim { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Claim { const PALLET: &'static str = "Claims"; const CALL: &'static str = "claim"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Mint a new claim to collect DOTs."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `who`: The Ethereum address allowed to collect this claim."] - #[doc = "- `value`: The number of DOTs that will be claimed."] - #[doc = "- `vesting_schedule`: An optional vesting schedule for these DOTs."] - #[doc = ""] - #[doc = ""] - #[doc = "The weight of this call is invariant over the input parameters."] - #[doc = "We assume worst case that both vesting and statement is being inserted."] - #[doc = ""] - #[doc = "Total Complexity: O(1)"] - #[doc = ""] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::mint_claim`]."] pub struct MintClaim { pub who: mint_claim::Who, pub value: mint_claim::Value, @@ -15696,47 +15900,25 @@ pub mod api { runtime_types::polkadot_runtime_common::claims::StatementKind, >; } - impl ::subxt::blocks::StaticExtrinsic for MintClaim { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for MintClaim { const PALLET: &'static str = "Claims"; const CALL: &'static str = "mint_claim"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Make a claim to collect your DOTs by signing a statement."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _None_."] - #[doc = ""] - #[doc = "Unsigned Validation:"] - #[doc = "A call to `claim_attest` is deemed valid if the signature provided matches"] - #[doc = "the expected signed message of:"] - #[doc = ""] - #[doc = "> Ethereum Signed Message:"] - #[doc = "> (configured prefix string)(address)(statement)"] - #[doc = ""] - #[doc = "and `address` matches the `dest` account; the `statement` must match that which is"] - #[doc = "expected according to your purchase arrangement."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `dest`: The destination account to payout the claim."] - #[doc = "- `ethereum_signature`: The signature of an ethereum signed message matching the format"] - #[doc = " described above."] - #[doc = "- `statement`: The identity of the statement which is being attested to in the"] - #[doc = " signature."] - #[doc = ""] - #[doc = ""] - #[doc = "The weight of this call is invariant over the input parameters."] - #[doc = "Weight includes logic to validate unsigned `claim_attest` call."] - #[doc = ""] - #[doc = "Total Complexity: O(1)"] - #[doc = ""] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::claim_attest`]."] pub struct ClaimAttest { pub dest: claim_attest::Dest, pub ethereum_signature: claim_attest::EthereumSignature, @@ -15744,65 +15926,58 @@ pub mod api { } pub mod claim_attest { use super::runtime_types; - pub type Dest = ::subxt::utils::AccountId32; + pub type Dest = ::subxt::ext::subxt_core::utils::AccountId32; pub type EthereumSignature = runtime_types::polkadot_runtime_common::claims::EcdsaSignature; - pub type Statement = ::std::vec::Vec<::core::primitive::u8>; + pub type Statement = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; } - impl ::subxt::blocks::StaticExtrinsic for ClaimAttest { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ClaimAttest { const PALLET: &'static str = "Claims"; const CALL: &'static str = "claim_attest"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Attest to a statement, needed to finalize the claims process."] - #[doc = ""] - #[doc = "WARNING: Insecure unless your chain includes `PrevalidateAttests` as a"] - #[doc = "`SignedExtension`."] - #[doc = ""] - #[doc = "Unsigned Validation:"] - #[doc = "A call to attest is deemed valid if the sender has a `Preclaim` registered"] - #[doc = "and provides a `statement` which is expected for the account."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `statement`: The identity of the statement which is being attested to in the"] - #[doc = " signature."] - #[doc = ""] - #[doc = ""] - #[doc = "The weight of this call is invariant over the input parameters."] - #[doc = "Weight includes logic to do pre-validation on `attest` call."] - #[doc = ""] - #[doc = "Total Complexity: O(1)"] - #[doc = ""] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::attest`]."] pub struct Attest { pub statement: attest::Statement, } pub mod attest { use super::runtime_types; - pub type Statement = ::std::vec::Vec<::core::primitive::u8>; + pub type Statement = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; } - impl ::subxt::blocks::StaticExtrinsic for Attest { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Attest { const PALLET: &'static str = "Claims"; const CALL: &'static str = "attest"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::move_claim`]."] pub struct MoveClaim { pub old: move_claim::Old, pub new: move_claim::New, @@ -15812,45 +15987,23 @@ pub mod api { use super::runtime_types; pub type Old = runtime_types::polkadot_runtime_common::claims::EthereumAddress; pub type New = runtime_types::polkadot_runtime_common::claims::EthereumAddress; - pub type MaybePreclaim = ::core::option::Option<::subxt::utils::AccountId32>; + pub type MaybePreclaim = + ::core::option::Option<::subxt::ext::subxt_core::utils::AccountId32>; } - impl ::subxt::blocks::StaticExtrinsic for MoveClaim { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for MoveClaim { const PALLET: &'static str = "Claims"; const CALL: &'static str = "move_claim"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Make a claim to collect your DOTs."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _None_."] - #[doc = ""] - #[doc = "Unsigned Validation:"] - #[doc = "A call to claim is deemed valid if the signature provided matches"] - #[doc = "the expected signed message of:"] - #[doc = ""] - #[doc = "> Ethereum Signed Message:"] - #[doc = "> (configured prefix string)(address)"] - #[doc = ""] - #[doc = "and `address` matches the `dest` account."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `dest`: The destination account to payout the claim."] - #[doc = "- `ethereum_signature`: The signature of an ethereum signed message matching the format"] - #[doc = " described above."] - #[doc = ""] - #[doc = ""] - #[doc = "The weight of this call is invariant over the input parameters."] - #[doc = "Weight includes logic to validate unsigned `claim` call."] - #[doc = ""] - #[doc = "Total Complexity: O(1)"] - #[doc = ""] + #[doc = "See [`Pallet::claim`]."] pub fn claim( &self, dest: types::claim::Dest, ethereum_signature: types::claim::EthereumSignature, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Claims", "claim", types::Claim { @@ -15865,29 +16018,15 @@ pub mod api { ], ) } - #[doc = "Mint a new claim to collect DOTs."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `who`: The Ethereum address allowed to collect this claim."] - #[doc = "- `value`: The number of DOTs that will be claimed."] - #[doc = "- `vesting_schedule`: An optional vesting schedule for these DOTs."] - #[doc = ""] - #[doc = ""] - #[doc = "The weight of this call is invariant over the input parameters."] - #[doc = "We assume worst case that both vesting and statement is being inserted."] - #[doc = ""] - #[doc = "Total Complexity: O(1)"] - #[doc = ""] + #[doc = "See [`Pallet::mint_claim`]."] pub fn mint_claim( &self, who: types::mint_claim::Who, value: types::mint_claim::Value, vesting_schedule: types::mint_claim::VestingSchedule, statement: types::mint_claim::Statement, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Claims", "mint_claim", types::MintClaim { @@ -15903,40 +16042,14 @@ pub mod api { ], ) } - #[doc = "Make a claim to collect your DOTs by signing a statement."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _None_."] - #[doc = ""] - #[doc = "Unsigned Validation:"] - #[doc = "A call to `claim_attest` is deemed valid if the signature provided matches"] - #[doc = "the expected signed message of:"] - #[doc = ""] - #[doc = "> Ethereum Signed Message:"] - #[doc = "> (configured prefix string)(address)(statement)"] - #[doc = ""] - #[doc = "and `address` matches the `dest` account; the `statement` must match that which is"] - #[doc = "expected according to your purchase arrangement."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `dest`: The destination account to payout the claim."] - #[doc = "- `ethereum_signature`: The signature of an ethereum signed message matching the format"] - #[doc = " described above."] - #[doc = "- `statement`: The identity of the statement which is being attested to in the"] - #[doc = " signature."] - #[doc = ""] - #[doc = ""] - #[doc = "The weight of this call is invariant over the input parameters."] - #[doc = "Weight includes logic to validate unsigned `claim_attest` call."] - #[doc = ""] - #[doc = "Total Complexity: O(1)"] - #[doc = ""] + #[doc = "See [`Pallet::claim_attest`]."] pub fn claim_attest( &self, dest: types::claim_attest::Dest, ethereum_signature: types::claim_attest::EthereumSignature, statement: types::claim_attest::Statement, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Claims", "claim_attest", types::ClaimAttest { @@ -15951,30 +16064,12 @@ pub mod api { ], ) } - #[doc = "Attest to a statement, needed to finalize the claims process."] - #[doc = ""] - #[doc = "WARNING: Insecure unless your chain includes `PrevalidateAttests` as a"] - #[doc = "`SignedExtension`."] - #[doc = ""] - #[doc = "Unsigned Validation:"] - #[doc = "A call to attest is deemed valid if the sender has a `Preclaim` registered"] - #[doc = "and provides a `statement` which is expected for the account."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `statement`: The identity of the statement which is being attested to in the"] - #[doc = " signature."] - #[doc = ""] - #[doc = ""] - #[doc = "The weight of this call is invariant over the input parameters."] - #[doc = "Weight includes logic to do pre-validation on `attest` call."] - #[doc = ""] - #[doc = "Total Complexity: O(1)"] - #[doc = ""] + #[doc = "See [`Pallet::attest`]."] pub fn attest( &self, statement: types::attest::Statement, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Claims", "attest", types::Attest { statement }, @@ -15986,13 +16081,14 @@ pub mod api { ], ) } + #[doc = "See [`Pallet::move_claim`]."] pub fn move_claim( &self, old: types::move_claim::Old, new: types::move_claim::New, maybe_preclaim: types::move_claim::MaybePreclaim, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Claims", "move_claim", types::MoveClaim { @@ -16015,15 +16111,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Someone claimed some DOTs."] pub struct Claimed { pub who: claimed::Who, @@ -16032,12 +16128,12 @@ pub mod api { } pub mod claimed { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type EthereumAddress = runtime_types::polkadot_runtime_common::claims::EthereumAddress; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Claimed { + impl ::subxt::ext::subxt_core::events::StaticEvent for Claimed { const PALLET: &'static str = "Claims"; const EVENT: &'static str = "Claimed"; } @@ -16077,21 +16173,21 @@ pub mod api { use super::runtime_types; pub type Preclaims = runtime_types::polkadot_runtime_common::claims::EthereumAddress; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } } pub struct StorageApi; impl StorageApi { pub fn claims_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::claims::Claims, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Claims", "Claims", (), @@ -16105,18 +16201,22 @@ pub mod api { } pub fn claims( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::claims::Param0, + >, types::claims::Claims, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Claims", "Claims", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 148u8, 115u8, 159u8, 169u8, 36u8, 116u8, 15u8, 108u8, 57u8, 195u8, 226u8, 180u8, 187u8, 112u8, 114u8, 63u8, 3u8, 205u8, 113u8, 141u8, @@ -16127,14 +16227,14 @@ pub mod api { } pub fn total( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::total::Total, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Claims", "Total", (), @@ -16152,14 +16252,14 @@ pub mod api { #[doc = " The block number is when the vesting should start."] pub fn vesting_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::vesting::Vesting, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Claims", "Vesting", (), @@ -16177,18 +16277,22 @@ pub mod api { #[doc = " The block number is when the vesting should start."] pub fn vesting( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::vesting::Param0, + >, types::vesting::Vesting, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Claims", "Vesting", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 206u8, 106u8, 195u8, 101u8, 55u8, 137u8, 50u8, 105u8, 137u8, 87u8, 230u8, 34u8, 255u8, 94u8, 210u8, 186u8, 179u8, 72u8, 24u8, 194u8, @@ -16200,14 +16304,14 @@ pub mod api { #[doc = " The statement kind that must be signed, if any."] pub fn signing_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::signing::Signing, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Claims", "Signing", (), @@ -16221,18 +16325,22 @@ pub mod api { #[doc = " The statement kind that must be signed, if any."] pub fn signing( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::signing::Param0, + >, types::signing::Signing, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Claims", "Signing", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 111u8, 90u8, 178u8, 121u8, 241u8, 28u8, 169u8, 231u8, 61u8, 189u8, 113u8, 207u8, 26u8, 153u8, 189u8, 15u8, 192u8, 25u8, 22u8, 22u8, 124u8, @@ -16243,14 +16351,14 @@ pub mod api { #[doc = " Pre-claimed Ethereum accounts, by the Account ID that they are claimed to."] pub fn preclaims_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::preclaims::Preclaims, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Claims", "Preclaims", (), @@ -16265,18 +16373,22 @@ pub mod api { #[doc = " Pre-claimed Ethereum accounts, by the Account ID that they are claimed to."] pub fn preclaims( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::preclaims::Param0, + >, types::preclaims::Preclaims, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Claims", "Preclaims", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 197u8, 114u8, 147u8, 235u8, 203u8, 255u8, 94u8, 113u8, 151u8, 119u8, 224u8, 147u8, 48u8, 246u8, 124u8, 38u8, 190u8, 237u8, 226u8, 65u8, @@ -16293,9 +16405,10 @@ pub mod api { impl ConstantsApi { pub fn prefix( &self, - ) -> ::subxt::constants::Address<::std::vec::Vec<::core::primitive::u8>> - { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address< + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + > { + ::subxt::ext::subxt_core::constants::Address::new_static( "Claims", "Prefix", [ @@ -16323,195 +16436,163 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Send a batch of dispatch calls."] - #[doc = ""] - #[doc = "May be called from any origin except `None`."] - #[doc = ""] - #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] - #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] - #[doc = ""] - #[doc = "If origin is root then the calls are dispatched without checking origin filter. (This"] - #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(C) where C is the number of calls to be batched."] - #[doc = ""] - #[doc = "This will return `Ok` in all circumstances. To determine the success of the batch, an"] - #[doc = "event is deposited. If a call failed and the batch was interrupted, then the"] - #[doc = "`BatchInterrupted` event is deposited, along with the number of successful calls made"] - #[doc = "and the error of the failed call. If all were successful, then the `BatchCompleted`"] - #[doc = "event is deposited."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::batch`]."] pub struct Batch { pub calls: batch::Calls, } pub mod batch { use super::runtime_types; - pub type Calls = ::std::vec::Vec; + pub type Calls = ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::rococo_runtime::RuntimeCall, + >; } - impl ::subxt::blocks::StaticExtrinsic for Batch { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Batch { const PALLET: &'static str = "Utility"; const CALL: &'static str = "batch"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Send a call through an indexed pseudonym of the sender."] - #[doc = ""] - #[doc = "Filter from origin are passed along. The call will be dispatched with an origin which"] - #[doc = "use the same filter as the origin of this call."] - #[doc = ""] - #[doc = "NOTE: If you need to ensure that any account-based filtering is not honored (i.e."] - #[doc = "because you expect `proxy` to have been used prior in the call stack and you do not want"] - #[doc = "the call restrictions to apply to any sub-accounts), then use `as_multi_threshold_1`"] - #[doc = "in the Multisig pallet instead."] - #[doc = ""] - #[doc = "NOTE: Prior to version *12, this was called `as_limited_sub`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::as_derivative`]."] pub struct AsDerivative { pub index: as_derivative::Index, - pub call: ::std::boxed::Box, + pub call: ::subxt::ext::subxt_core::alloc::boxed::Box, } pub mod as_derivative { use super::runtime_types; pub type Index = ::core::primitive::u16; pub type Call = runtime_types::rococo_runtime::RuntimeCall; } - impl ::subxt::blocks::StaticExtrinsic for AsDerivative { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for AsDerivative { const PALLET: &'static str = "Utility"; const CALL: &'static str = "as_derivative"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Send a batch of dispatch calls and atomically execute them."] - #[doc = "The whole transaction will rollback and fail if any of the calls failed."] - #[doc = ""] - #[doc = "May be called from any origin except `None`."] - #[doc = ""] - #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] - #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] - #[doc = ""] - #[doc = "If origin is root then the calls are dispatched without checking origin filter. (This"] - #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(C) where C is the number of calls to be batched."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::batch_all`]."] pub struct BatchAll { pub calls: batch_all::Calls, } pub mod batch_all { use super::runtime_types; - pub type Calls = ::std::vec::Vec; + pub type Calls = ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::rococo_runtime::RuntimeCall, + >; } - impl ::subxt::blocks::StaticExtrinsic for BatchAll { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for BatchAll { const PALLET: &'static str = "Utility"; const CALL: &'static str = "batch_all"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Dispatches a function call with a provided origin."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::dispatch_as`]."] pub struct DispatchAs { - pub as_origin: ::std::boxed::Box, - pub call: ::std::boxed::Box, + pub as_origin: + ::subxt::ext::subxt_core::alloc::boxed::Box, + pub call: ::subxt::ext::subxt_core::alloc::boxed::Box, } pub mod dispatch_as { use super::runtime_types; pub type AsOrigin = runtime_types::rococo_runtime::OriginCaller; pub type Call = runtime_types::rococo_runtime::RuntimeCall; } - impl ::subxt::blocks::StaticExtrinsic for DispatchAs { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for DispatchAs { const PALLET: &'static str = "Utility"; const CALL: &'static str = "dispatch_as"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Send a batch of dispatch calls."] - #[doc = "Unlike `batch`, it allows errors and won't interrupt."] - #[doc = ""] - #[doc = "May be called from any origin except `None`."] - #[doc = ""] - #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] - #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] - #[doc = ""] - #[doc = "If origin is root then the calls are dispatch without checking origin filter. (This"] - #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(C) where C is the number of calls to be batched."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_batch`]."] pub struct ForceBatch { pub calls: force_batch::Calls, } pub mod force_batch { use super::runtime_types; - pub type Calls = ::std::vec::Vec; + pub type Calls = ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::rococo_runtime::RuntimeCall, + >; } - impl ::subxt::blocks::StaticExtrinsic for ForceBatch { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceBatch { const PALLET: &'static str = "Utility"; const CALL: &'static str = "force_batch"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Dispatch a function call with a specified weight."] - #[doc = ""] - #[doc = "This function does not check the weight of the call, and instead allows the"] - #[doc = "Root origin to specify the weight of the call."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::with_weight`]."] pub struct WithWeight { - pub call: ::std::boxed::Box, + pub call: ::subxt::ext::subxt_core::alloc::boxed::Box, pub weight: with_weight::Weight, } pub mod with_weight { @@ -16519,183 +16600,123 @@ pub mod api { pub type Call = runtime_types::rococo_runtime::RuntimeCall; pub type Weight = runtime_types::sp_weights::weight_v2::Weight; } - impl ::subxt::blocks::StaticExtrinsic for WithWeight { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for WithWeight { const PALLET: &'static str = "Utility"; const CALL: &'static str = "with_weight"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Send a batch of dispatch calls."] - #[doc = ""] - #[doc = "May be called from any origin except `None`."] - #[doc = ""] - #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] - #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] - #[doc = ""] - #[doc = "If origin is root then the calls are dispatched without checking origin filter. (This"] - #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(C) where C is the number of calls to be batched."] - #[doc = ""] - #[doc = "This will return `Ok` in all circumstances. To determine the success of the batch, an"] - #[doc = "event is deposited. If a call failed and the batch was interrupted, then the"] - #[doc = "`BatchInterrupted` event is deposited, along with the number of successful calls made"] - #[doc = "and the error of the failed call. If all were successful, then the `BatchCompleted`"] - #[doc = "event is deposited."] + #[doc = "See [`Pallet::batch`]."] pub fn batch( &self, calls: types::batch::Calls, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Utility", "batch", types::Batch { calls }, [ - 181u8, 127u8, 72u8, 3u8, 201u8, 66u8, 147u8, 14u8, 125u8, 58u8, 181u8, - 213u8, 122u8, 17u8, 115u8, 25u8, 62u8, 173u8, 182u8, 189u8, 10u8, - 112u8, 100u8, 66u8, 223u8, 190u8, 42u8, 175u8, 130u8, 137u8, 91u8, 0u8, + 240u8, 229u8, 246u8, 172u8, 254u8, 190u8, 97u8, 110u8, 105u8, 221u8, + 115u8, 188u8, 52u8, 86u8, 113u8, 118u8, 146u8, 240u8, 235u8, 2u8, + 171u8, 219u8, 18u8, 212u8, 39u8, 217u8, 66u8, 80u8, 55u8, 148u8, 241u8, + 20u8, ], ) } - #[doc = "Send a call through an indexed pseudonym of the sender."] - #[doc = ""] - #[doc = "Filter from origin are passed along. The call will be dispatched with an origin which"] - #[doc = "use the same filter as the origin of this call."] - #[doc = ""] - #[doc = "NOTE: If you need to ensure that any account-based filtering is not honored (i.e."] - #[doc = "because you expect `proxy` to have been used prior in the call stack and you do not want"] - #[doc = "the call restrictions to apply to any sub-accounts), then use `as_multi_threshold_1`"] - #[doc = "in the Multisig pallet instead."] - #[doc = ""] - #[doc = "NOTE: Prior to version *12, this was called `as_limited_sub`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = "See [`Pallet::as_derivative`]."] pub fn as_derivative( &self, index: types::as_derivative::Index, call: types::as_derivative::Call, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Utility", "as_derivative", types::AsDerivative { index, - call: ::std::boxed::Box::new(call), + call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), }, [ - 42u8, 102u8, 244u8, 61u8, 176u8, 104u8, 53u8, 138u8, 130u8, 222u8, 2u8, - 120u8, 213u8, 145u8, 61u8, 190u8, 37u8, 201u8, 161u8, 231u8, 221u8, - 184u8, 164u8, 221u8, 246u8, 15u8, 180u8, 105u8, 174u8, 105u8, 202u8, - 204u8, + 98u8, 181u8, 74u8, 231u8, 95u8, 220u8, 13u8, 120u8, 161u8, 144u8, + 254u8, 82u8, 141u8, 143u8, 226u8, 62u8, 106u8, 112u8, 179u8, 127u8, + 54u8, 43u8, 161u8, 255u8, 235u8, 22u8, 192u8, 236u8, 153u8, 67u8, 80u8, + 210u8, ], ) } - #[doc = "Send a batch of dispatch calls and atomically execute them."] - #[doc = "The whole transaction will rollback and fail if any of the calls failed."] - #[doc = ""] - #[doc = "May be called from any origin except `None`."] - #[doc = ""] - #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] - #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] - #[doc = ""] - #[doc = "If origin is root then the calls are dispatched without checking origin filter. (This"] - #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(C) where C is the number of calls to be batched."] + #[doc = "See [`Pallet::batch_all`]."] pub fn batch_all( &self, calls: types::batch_all::Calls, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Utility", "batch_all", types::BatchAll { calls }, [ - 17u8, 73u8, 73u8, 197u8, 80u8, 151u8, 37u8, 8u8, 65u8, 201u8, 153u8, - 61u8, 81u8, 56u8, 220u8, 29u8, 176u8, 237u8, 55u8, 226u8, 209u8, 137u8, - 176u8, 146u8, 195u8, 175u8, 171u8, 69u8, 58u8, 189u8, 126u8, 120u8, + 61u8, 70u8, 75u8, 34u8, 128u8, 54u8, 146u8, 49u8, 207u8, 184u8, 143u8, + 45u8, 106u8, 74u8, 187u8, 49u8, 236u8, 184u8, 73u8, 134u8, 48u8, 157u8, + 214u8, 229u8, 131u8, 168u8, 86u8, 54u8, 193u8, 141u8, 99u8, 119u8, ], ) } - #[doc = "Dispatches a function call with a provided origin."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::dispatch_as`]."] pub fn dispatch_as( &self, as_origin: types::dispatch_as::AsOrigin, call: types::dispatch_as::Call, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Utility", "dispatch_as", types::DispatchAs { - as_origin: ::std::boxed::Box::new(as_origin), - call: ::std::boxed::Box::new(call), + as_origin: ::subxt::ext::subxt_core::alloc::boxed::Box::new(as_origin), + call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), }, [ - 26u8, 137u8, 228u8, 222u8, 250u8, 111u8, 29u8, 31u8, 210u8, 156u8, 9u8, - 151u8, 164u8, 71u8, 51u8, 228u8, 23u8, 121u8, 55u8, 27u8, 20u8, 41u8, - 198u8, 98u8, 174u8, 148u8, 124u8, 149u8, 141u8, 26u8, 17u8, 147u8, + 235u8, 229u8, 32u8, 93u8, 159u8, 163u8, 87u8, 10u8, 109u8, 88u8, 64u8, + 172u8, 102u8, 230u8, 117u8, 68u8, 177u8, 24u8, 48u8, 157u8, 77u8, + 110u8, 40u8, 186u8, 114u8, 14u8, 116u8, 208u8, 246u8, 14u8, 56u8, + 111u8, ], ) } - #[doc = "Send a batch of dispatch calls."] - #[doc = "Unlike `batch`, it allows errors and won't interrupt."] - #[doc = ""] - #[doc = "May be called from any origin except `None`."] - #[doc = ""] - #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] - #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] - #[doc = ""] - #[doc = "If origin is root then the calls are dispatch without checking origin filter. (This"] - #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(C) where C is the number of calls to be batched."] + #[doc = "See [`Pallet::force_batch`]."] pub fn force_batch( &self, calls: types::force_batch::Calls, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Utility", "force_batch", types::ForceBatch { calls }, [ - 78u8, 200u8, 135u8, 14u8, 33u8, 152u8, 237u8, 126u8, 69u8, 160u8, 60u8, - 167u8, 206u8, 212u8, 121u8, 164u8, 192u8, 236u8, 58u8, 174u8, 37u8, - 63u8, 254u8, 178u8, 210u8, 68u8, 207u8, 154u8, 127u8, 173u8, 79u8, - 30u8, + 214u8, 240u8, 219u8, 153u8, 214u8, 181u8, 142u8, 224u8, 190u8, 86u8, + 225u8, 221u8, 211u8, 162u8, 32u8, 224u8, 8u8, 130u8, 242u8, 167u8, + 190u8, 123u8, 230u8, 44u8, 222u8, 177u8, 73u8, 154u8, 177u8, 226u8, + 112u8, 157u8, ], ) } - #[doc = "Dispatch a function call with a specified weight."] - #[doc = ""] - #[doc = "This function does not check the weight of the call, and instead allows the"] - #[doc = "Root origin to specify the weight of the call."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = "See [`Pallet::with_weight`]."] pub fn with_weight( &self, call: types::with_weight::Call, weight: types::with_weight::Weight, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Utility", "with_weight", types::WithWeight { - call: ::std::boxed::Box::new(call), + call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), weight, }, [ - 204u8, 3u8, 114u8, 23u8, 35u8, 43u8, 87u8, 118u8, 150u8, 70u8, 167u8, - 234u8, 87u8, 65u8, 39u8, 146u8, 138u8, 69u8, 125u8, 77u8, 84u8, 131u8, - 103u8, 92u8, 130u8, 48u8, 53u8, 170u8, 194u8, 103u8, 54u8, 184u8, + 73u8, 59u8, 91u8, 218u8, 154u8, 105u8, 247u8, 29u8, 131u8, 199u8, + 149u8, 245u8, 124u8, 16u8, 104u8, 150u8, 160u8, 196u8, 10u8, 26u8, + 205u8, 150u8, 76u8, 102u8, 246u8, 83u8, 131u8, 66u8, 235u8, 215u8, + 203u8, 214u8, ], ) } @@ -16706,15 +16727,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Batch of dispatches did not complete fully. Index of first failing dispatch given, as"] #[doc = "well as the error."] pub struct BatchInterrupted { @@ -16726,68 +16747,68 @@ pub mod api { pub type Index = ::core::primitive::u32; pub type Error = runtime_types::sp_runtime::DispatchError; } - impl ::subxt::events::StaticEvent for BatchInterrupted { + impl ::subxt::ext::subxt_core::events::StaticEvent for BatchInterrupted { const PALLET: &'static str = "Utility"; const EVENT: &'static str = "BatchInterrupted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Batch of dispatches completed fully with no error."] pub struct BatchCompleted; - impl ::subxt::events::StaticEvent for BatchCompleted { + impl ::subxt::ext::subxt_core::events::StaticEvent for BatchCompleted { const PALLET: &'static str = "Utility"; const EVENT: &'static str = "BatchCompleted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Batch of dispatches completed but has errors."] pub struct BatchCompletedWithErrors; - impl ::subxt::events::StaticEvent for BatchCompletedWithErrors { + impl ::subxt::ext::subxt_core::events::StaticEvent for BatchCompletedWithErrors { const PALLET: &'static str = "Utility"; const EVENT: &'static str = "BatchCompletedWithErrors"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A single item within a Batch of dispatches has completed with no error."] pub struct ItemCompleted; - impl ::subxt::events::StaticEvent for ItemCompleted { + impl ::subxt::ext::subxt_core::events::StaticEvent for ItemCompleted { const PALLET: &'static str = "Utility"; const EVENT: &'static str = "ItemCompleted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A single item within a Batch of dispatches has completed with error."] pub struct ItemFailed { pub error: item_failed::Error, @@ -16796,20 +16817,20 @@ pub mod api { use super::runtime_types; pub type Error = runtime_types::sp_runtime::DispatchError; } - impl ::subxt::events::StaticEvent for ItemFailed { + impl ::subxt::ext::subxt_core::events::StaticEvent for ItemFailed { const PALLET: &'static str = "Utility"; const EVENT: &'static str = "ItemFailed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A call was dispatched."] pub struct DispatchedAs { pub result: dispatched_as::Result, @@ -16819,7 +16840,7 @@ pub mod api { pub type Result = ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>; } - impl ::subxt::events::StaticEvent for DispatchedAs { + impl ::subxt::ext::subxt_core::events::StaticEvent for DispatchedAs { const PALLET: &'static str = "Utility"; const EVENT: &'static str = "DispatchedAs"; } @@ -16831,8 +16852,9 @@ pub mod api { #[doc = " The limit on the number of batched calls."] pub fn batched_calls_limit( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Utility", "batched_calls_limit", [ @@ -16860,147 +16882,124 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Add a registrar to the system."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be `T::RegistrarOrigin`."] - #[doc = ""] - #[doc = "- `account`: the account of the registrar."] - #[doc = ""] - #[doc = "Emits `RegistrarAdded` if successful."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::add_registrar`]."] pub struct AddRegistrar { pub account: add_registrar::Account, } pub mod add_registrar { use super::runtime_types; - pub type Account = - ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Account = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; } - impl ::subxt::blocks::StaticExtrinsic for AddRegistrar { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for AddRegistrar { const PALLET: &'static str = "Identity"; const CALL: &'static str = "add_registrar"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set an account's identity information and reserve the appropriate deposit."] - #[doc = ""] - #[doc = "If the account already has identity information, the deposit is taken as part payment"] - #[doc = "for the new deposit."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `info`: The identity information."] - #[doc = ""] - #[doc = "Emits `IdentitySet` if successful."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_identity`]."] pub struct SetIdentity { - pub info: ::std::boxed::Box, + pub info: ::subxt::ext::subxt_core::alloc::boxed::Box, } pub mod set_identity { use super::runtime_types; - pub type Info = runtime_types::pallet_identity::legacy::IdentityInfo; + pub type Info = runtime_types::pallet_identity::types::IdentityInfo; } - impl ::subxt::blocks::StaticExtrinsic for SetIdentity { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetIdentity { const PALLET: &'static str = "Identity"; const CALL: &'static str = "set_identity"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the sub-accounts of the sender."] - #[doc = ""] - #[doc = "Payment: Any aggregate balance reserved by previous `set_subs` calls will be returned"] - #[doc = "and an amount `SubAccountDeposit` will be reserved for each item in `subs`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "identity."] - #[doc = ""] - #[doc = "- `subs`: The identity's (new) sub-accounts."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_subs`]."] pub struct SetSubs { pub subs: set_subs::Subs, } pub mod set_subs { use super::runtime_types; - pub type Subs = ::std::vec::Vec<( - ::subxt::utils::AccountId32, + pub type Subs = ::subxt::ext::subxt_core::alloc::vec::Vec<( + ::subxt::ext::subxt_core::utils::AccountId32, runtime_types::pallet_identity::types::Data, )>; } - impl ::subxt::blocks::StaticExtrinsic for SetSubs { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetSubs { const PALLET: &'static str = "Identity"; const CALL: &'static str = "set_subs"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Clear an account's identity info and all sub-accounts and return all deposits."] - #[doc = ""] - #[doc = "Payment: All reserved balances on the account are returned."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "identity."] - #[doc = ""] - #[doc = "Emits `IdentityCleared` if successful."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::clear_identity`]."] pub struct ClearIdentity; - impl ::subxt::blocks::StaticExtrinsic for ClearIdentity { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ClearIdentity { const PALLET: &'static str = "Identity"; const CALL: &'static str = "clear_identity"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Request a judgement from a registrar."] - #[doc = ""] - #[doc = "Payment: At most `max_fee` will be reserved for payment to the registrar if judgement"] - #[doc = "given."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a"] - #[doc = "registered identity."] - #[doc = ""] - #[doc = "- `reg_index`: The index of the registrar whose judgement is requested."] - #[doc = "- `max_fee`: The maximum fee that may be paid. This should just be auto-populated as:"] - #[doc = ""] - #[doc = "```nocompile"] - #[doc = "Self::registrars().get(reg_index).unwrap().fee"] - #[doc = "```"] - #[doc = ""] - #[doc = "Emits `JudgementRequested` if successful."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::request_judgement`]."] pub struct RequestJudgement { #[codec(compact)] pub reg_index: request_judgement::RegIndex, @@ -17012,30 +17011,25 @@ pub mod api { pub type RegIndex = ::core::primitive::u32; pub type MaxFee = ::core::primitive::u128; } - impl ::subxt::blocks::StaticExtrinsic for RequestJudgement { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RequestJudgement { const PALLET: &'static str = "Identity"; const CALL: &'static str = "request_judgement"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Cancel a previous request."] - #[doc = ""] - #[doc = "Payment: A previously reserved deposit is returned on success."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a"] - #[doc = "registered identity."] - #[doc = ""] - #[doc = "- `reg_index`: The index of the registrar whose judgement is no longer requested."] - #[doc = ""] - #[doc = "Emits `JudgementUnrequested` if successful."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::cancel_request`]."] pub struct CancelRequest { pub reg_index: cancel_request::RegIndex, } @@ -17043,27 +17037,25 @@ pub mod api { use super::runtime_types; pub type RegIndex = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for CancelRequest { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for CancelRequest { const PALLET: &'static str = "Identity"; const CALL: &'static str = "cancel_request"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the fee required for a judgement to be requested from a registrar."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] - #[doc = "of the registrar whose index is `index`."] - #[doc = ""] - #[doc = "- `index`: the index of the registrar whose fee is to be set."] - #[doc = "- `fee`: the new fee."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_fee`]."] pub struct SetFee { #[codec(compact)] pub index: set_fee::Index, @@ -17075,27 +17067,25 @@ pub mod api { pub type Index = ::core::primitive::u32; pub type Fee = ::core::primitive::u128; } - impl ::subxt::blocks::StaticExtrinsic for SetFee { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetFee { const PALLET: &'static str = "Identity"; const CALL: &'static str = "set_fee"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Change the account associated with a registrar."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] - #[doc = "of the registrar whose index is `index`."] - #[doc = ""] - #[doc = "- `index`: the index of the registrar whose fee is to be set."] - #[doc = "- `new`: the new account ID."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_account_id`]."] pub struct SetAccountId { #[codec(compact)] pub index: set_account_id::Index, @@ -17104,29 +17094,30 @@ pub mod api { pub mod set_account_id { use super::runtime_types; pub type Index = ::core::primitive::u32; - pub type New = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type New = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; } - impl ::subxt::blocks::StaticExtrinsic for SetAccountId { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetAccountId { const PALLET: &'static str = "Identity"; const CALL: &'static str = "set_account_id"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the field information for a registrar."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] - #[doc = "of the registrar whose index is `index`."] - #[doc = ""] - #[doc = "- `index`: the index of the registrar whose fee is to be set."] - #[doc = "- `fields`: the fields that the registrar concerns themselves with."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_fields`]."] pub struct SetFields { #[codec(compact)] pub index: set_fields::Index, @@ -17135,37 +17126,29 @@ pub mod api { pub mod set_fields { use super::runtime_types; pub type Index = ::core::primitive::u32; - pub type Fields = ::core::primitive::u64; + pub type Fields = runtime_types::pallet_identity::types::BitFlags< + runtime_types::pallet_identity::types::IdentityField, + >; } - impl ::subxt::blocks::StaticExtrinsic for SetFields { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetFields { const PALLET: &'static str = "Identity"; const CALL: &'static str = "set_fields"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Provide a judgement for an account's identity."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] - #[doc = "of the registrar whose index is `reg_index`."] - #[doc = ""] - #[doc = "- `reg_index`: the index of the registrar whose judgement is being made."] - #[doc = "- `target`: the account whose identity the judgement is upon. This must be an account"] - #[doc = " with a registered identity."] - #[doc = "- `judgement`: the judgement of the registrar of index `reg_index` about `target`."] - #[doc = "- `identity`: The hash of the [`IdentityInformationProvider`] for that the judgement is"] - #[doc = " provided."] - #[doc = ""] - #[doc = "Note: Judgements do not apply to a username."] - #[doc = ""] - #[doc = "Emits `JudgementGiven` if successful."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::provide_judgement`]."] pub struct ProvideJudgement { #[codec(compact)] pub reg_index: provide_judgement::RegIndex, @@ -17176,361 +17159,167 @@ pub mod api { pub mod provide_judgement { use super::runtime_types; pub type RegIndex = ::core::primitive::u32; - pub type Target = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Target = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type Judgement = runtime_types::pallet_identity::types::Judgement<::core::primitive::u128>; - pub type Identity = ::subxt::utils::H256; + pub type Identity = ::subxt::ext::subxt_core::utils::H256; } - impl ::subxt::blocks::StaticExtrinsic for ProvideJudgement { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ProvideJudgement { const PALLET: &'static str = "Identity"; const CALL: &'static str = "provide_judgement"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Remove an account's identity and sub-account information and slash the deposits."] - #[doc = ""] - #[doc = "Payment: Reserved balances from `set_subs` and `set_identity` are slashed and handled by"] - #[doc = "`Slash`. Verification request deposits are not returned; they should be cancelled"] - #[doc = "manually using `cancel_request`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] - #[doc = ""] - #[doc = "- `target`: the account whose identity the judgement is upon. This must be an account"] - #[doc = " with a registered identity."] - #[doc = ""] - #[doc = "Emits `IdentityKilled` if successful."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::kill_identity`]."] pub struct KillIdentity { pub target: kill_identity::Target, } pub mod kill_identity { use super::runtime_types; - pub type Target = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Target = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; } - impl ::subxt::blocks::StaticExtrinsic for KillIdentity { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for KillIdentity { const PALLET: &'static str = "Identity"; const CALL: &'static str = "kill_identity"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Add the given account to the sender's subs."] - #[doc = ""] - #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] - #[doc = "to the sender."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "sub identity of `sub`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::add_sub`]."] pub struct AddSub { pub sub: add_sub::Sub, pub data: add_sub::Data, } pub mod add_sub { use super::runtime_types; - pub type Sub = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Sub = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type Data = runtime_types::pallet_identity::types::Data; } - impl ::subxt::blocks::StaticExtrinsic for AddSub { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for AddSub { const PALLET: &'static str = "Identity"; const CALL: &'static str = "add_sub"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Alter the associated name of the given sub-account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "sub identity of `sub`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::rename_sub`]."] pub struct RenameSub { pub sub: rename_sub::Sub, pub data: rename_sub::Data, } pub mod rename_sub { use super::runtime_types; - pub type Sub = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Sub = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type Data = runtime_types::pallet_identity::types::Data; } - impl ::subxt::blocks::StaticExtrinsic for RenameSub { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RenameSub { const PALLET: &'static str = "Identity"; const CALL: &'static str = "rename_sub"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Remove the given account from the sender's subs."] - #[doc = ""] - #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] - #[doc = "to the sender."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "sub identity of `sub`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::remove_sub`]."] pub struct RemoveSub { pub sub: remove_sub::Sub, } pub mod remove_sub { use super::runtime_types; - pub type Sub = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Sub = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; } - impl ::subxt::blocks::StaticExtrinsic for RemoveSub { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RemoveSub { const PALLET: &'static str = "Identity"; const CALL: &'static str = "remove_sub"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Remove the sender as a sub-account."] - #[doc = ""] - #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] - #[doc = "to the sender (*not* the original depositor)."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "super-identity."] - #[doc = ""] - #[doc = "NOTE: This should not normally be used, but is provided in the case that the non-"] - #[doc = "controller of an account is maliciously registered as a sub-account."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::quit_sub`]."] pub struct QuitSub; - impl ::subxt::blocks::StaticExtrinsic for QuitSub { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for QuitSub { const PALLET: &'static str = "Identity"; const CALL: &'static str = "quit_sub"; } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Add an `AccountId` with permission to grant usernames with a given `suffix` appended."] - #[doc = ""] - #[doc = "The authority can grant up to `allocation` usernames. To top up their allocation, they"] - #[doc = "should just issue (or request via governance) a new `add_username_authority` call."] - pub struct AddUsernameAuthority { - pub authority: add_username_authority::Authority, - pub suffix: add_username_authority::Suffix, - pub allocation: add_username_authority::Allocation, - } - pub mod add_username_authority { - use super::runtime_types; - pub type Authority = - ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; - pub type Suffix = ::std::vec::Vec<::core::primitive::u8>; - pub type Allocation = ::core::primitive::u32; - } - impl ::subxt::blocks::StaticExtrinsic for AddUsernameAuthority { - const PALLET: &'static str = "Identity"; - const CALL: &'static str = "add_username_authority"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Remove `authority` from the username authorities."] - pub struct RemoveUsernameAuthority { - pub authority: remove_username_authority::Authority, - } - pub mod remove_username_authority { - use super::runtime_types; - pub type Authority = - ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; - } - impl ::subxt::blocks::StaticExtrinsic for RemoveUsernameAuthority { - const PALLET: &'static str = "Identity"; - const CALL: &'static str = "remove_username_authority"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the username for `who`. Must be called by a username authority."] - #[doc = ""] - #[doc = "The authority must have an `allocation`. Users can either pre-sign their usernames or"] - #[doc = "accept them later."] - #[doc = ""] - #[doc = "Usernames must:"] - #[doc = " - Only contain lowercase ASCII characters or digits."] - #[doc = " - When combined with the suffix of the issuing authority be _less than_ the"] - #[doc = " `MaxUsernameLength`."] - pub struct SetUsernameFor { - pub who: set_username_for::Who, - pub username: set_username_for::Username, - pub signature: set_username_for::Signature, - } - pub mod set_username_for { - use super::runtime_types; - pub type Who = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; - pub type Username = ::std::vec::Vec<::core::primitive::u8>; - pub type Signature = - ::core::option::Option; - } - impl ::subxt::blocks::StaticExtrinsic for SetUsernameFor { - const PALLET: &'static str = "Identity"; - const CALL: &'static str = "set_username_for"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Accept a given username that an `authority` granted. The call must include the full"] - #[doc = "username, as in `username.suffix`."] - pub struct AcceptUsername { - pub username: accept_username::Username, - } - pub mod accept_username { - use super::runtime_types; - pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::core::primitive::u8, - >; - } - impl ::subxt::blocks::StaticExtrinsic for AcceptUsername { - const PALLET: &'static str = "Identity"; - const CALL: &'static str = "accept_username"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Remove an expired username approval. The username was approved by an authority but never"] - #[doc = "accepted by the user and must now be beyond its expiration. The call must include the"] - #[doc = "full username, as in `username.suffix`."] - pub struct RemoveExpiredApproval { - pub username: remove_expired_approval::Username, - } - pub mod remove_expired_approval { - use super::runtime_types; - pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::core::primitive::u8, - >; - } - impl ::subxt::blocks::StaticExtrinsic for RemoveExpiredApproval { - const PALLET: &'static str = "Identity"; - const CALL: &'static str = "remove_expired_approval"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set a given username as the primary. The username should include the suffix."] - pub struct SetPrimaryUsername { - pub username: set_primary_username::Username, - } - pub mod set_primary_username { - use super::runtime_types; - pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::core::primitive::u8, - >; - } - impl ::subxt::blocks::StaticExtrinsic for SetPrimaryUsername { - const PALLET: &'static str = "Identity"; - const CALL: &'static str = "set_primary_username"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Remove a username that corresponds to an account with no identity. Exists when a user"] - #[doc = "gets a username but then calls `clear_identity`."] - pub struct RemoveDanglingUsername { - pub username: remove_dangling_username::Username, - } - pub mod remove_dangling_username { - use super::runtime_types; - pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::core::primitive::u8, - >; - } - impl ::subxt::blocks::StaticExtrinsic for RemoveDanglingUsername { - const PALLET: &'static str = "Identity"; - const CALL: &'static str = "remove_dangling_username"; - } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Add a registrar to the system."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be `T::RegistrarOrigin`."] - #[doc = ""] - #[doc = "- `account`: the account of the registrar."] - #[doc = ""] - #[doc = "Emits `RegistrarAdded` if successful."] + #[doc = "See [`Pallet::add_registrar`]."] pub fn add_registrar( &self, account: types::add_registrar::Account, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Identity", "add_registrar", types::AddRegistrar { account }, @@ -17541,25 +17330,16 @@ pub mod api { ], ) } - #[doc = "Set an account's identity information and reserve the appropriate deposit."] - #[doc = ""] - #[doc = "If the account already has identity information, the deposit is taken as part payment"] - #[doc = "for the new deposit."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `info`: The identity information."] - #[doc = ""] - #[doc = "Emits `IdentitySet` if successful."] + #[doc = "See [`Pallet::set_identity`]."] pub fn set_identity( &self, info: types::set_identity::Info, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Identity", "set_identity", types::SetIdentity { - info: ::std::boxed::Box::new(info), + info: ::subxt::ext::subxt_core::alloc::boxed::Box::new(info), }, [ 18u8, 86u8, 67u8, 10u8, 116u8, 254u8, 94u8, 95u8, 166u8, 30u8, 204u8, @@ -17569,20 +17349,12 @@ pub mod api { ], ) } - #[doc = "Set the sub-accounts of the sender."] - #[doc = ""] - #[doc = "Payment: Any aggregate balance reserved by previous `set_subs` calls will be returned"] - #[doc = "and an amount `SubAccountDeposit` will be reserved for each item in `subs`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "identity."] - #[doc = ""] - #[doc = "- `subs`: The identity's (new) sub-accounts."] + #[doc = "See [`Pallet::set_subs`]."] pub fn set_subs( &self, subs: types::set_subs::Subs, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Identity", "set_subs", types::SetSubs { subs }, @@ -17594,16 +17366,11 @@ pub mod api { ], ) } - #[doc = "Clear an account's identity info and all sub-accounts and return all deposits."] - #[doc = ""] - #[doc = "Payment: All reserved balances on the account are returned."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "identity."] - #[doc = ""] - #[doc = "Emits `IdentityCleared` if successful."] - pub fn clear_identity(&self) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + #[doc = "See [`Pallet::clear_identity`]."] + pub fn clear_identity( + &self, + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Identity", "clear_identity", types::ClearIdentity {}, @@ -17615,28 +17382,14 @@ pub mod api { ], ) } - #[doc = "Request a judgement from a registrar."] - #[doc = ""] - #[doc = "Payment: At most `max_fee` will be reserved for payment to the registrar if judgement"] - #[doc = "given."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a"] - #[doc = "registered identity."] - #[doc = ""] - #[doc = "- `reg_index`: The index of the registrar whose judgement is requested."] - #[doc = "- `max_fee`: The maximum fee that may be paid. This should just be auto-populated as:"] - #[doc = ""] - #[doc = "```nocompile"] - #[doc = "Self::registrars().get(reg_index).unwrap().fee"] - #[doc = "```"] - #[doc = ""] - #[doc = "Emits `JudgementRequested` if successful."] + #[doc = "See [`Pallet::request_judgement`]."] pub fn request_judgement( &self, reg_index: types::request_judgement::RegIndex, max_fee: types::request_judgement::MaxFee, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Identity", "request_judgement", types::RequestJudgement { reg_index, max_fee }, @@ -17647,21 +17400,12 @@ pub mod api { ], ) } - #[doc = "Cancel a previous request."] - #[doc = ""] - #[doc = "Payment: A previously reserved deposit is returned on success."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a"] - #[doc = "registered identity."] - #[doc = ""] - #[doc = "- `reg_index`: The index of the registrar whose judgement is no longer requested."] - #[doc = ""] - #[doc = "Emits `JudgementUnrequested` if successful."] + #[doc = "See [`Pallet::cancel_request`]."] pub fn cancel_request( &self, reg_index: types::cancel_request::RegIndex, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Identity", "cancel_request", types::CancelRequest { reg_index }, @@ -17673,19 +17417,13 @@ pub mod api { ], ) } - #[doc = "Set the fee required for a judgement to be requested from a registrar."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] - #[doc = "of the registrar whose index is `index`."] - #[doc = ""] - #[doc = "- `index`: the index of the registrar whose fee is to be set."] - #[doc = "- `fee`: the new fee."] + #[doc = "See [`Pallet::set_fee`]."] pub fn set_fee( &self, index: types::set_fee::Index, fee: types::set_fee::Fee, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Identity", "set_fee", types::SetFee { index, fee }, @@ -17697,19 +17435,13 @@ pub mod api { ], ) } - #[doc = "Change the account associated with a registrar."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] - #[doc = "of the registrar whose index is `index`."] - #[doc = ""] - #[doc = "- `index`: the index of the registrar whose fee is to be set."] - #[doc = "- `new`: the new account ID."] + #[doc = "See [`Pallet::set_account_id`]."] pub fn set_account_id( &self, index: types::set_account_id::Index, new: types::set_account_id::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Identity", "set_account_id", types::SetAccountId { index, new }, @@ -17721,53 +17453,33 @@ pub mod api { ], ) } - #[doc = "Set the field information for a registrar."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] - #[doc = "of the registrar whose index is `index`."] - #[doc = ""] - #[doc = "- `index`: the index of the registrar whose fee is to be set."] - #[doc = "- `fields`: the fields that the registrar concerns themselves with."] + #[doc = "See [`Pallet::set_fields`]."] pub fn set_fields( &self, index: types::set_fields::Index, fields: types::set_fields::Fields, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Identity", "set_fields", types::SetFields { index, fields }, [ - 75u8, 38u8, 58u8, 93u8, 92u8, 164u8, 146u8, 146u8, 183u8, 245u8, 135u8, - 235u8, 12u8, 148u8, 37u8, 193u8, 58u8, 66u8, 173u8, 223u8, 166u8, - 169u8, 54u8, 159u8, 141u8, 36u8, 25u8, 231u8, 190u8, 211u8, 254u8, - 38u8, + 25u8, 129u8, 119u8, 232u8, 18u8, 32u8, 77u8, 23u8, 185u8, 56u8, 32u8, + 199u8, 74u8, 174u8, 104u8, 203u8, 171u8, 253u8, 19u8, 225u8, 101u8, + 239u8, 14u8, 242u8, 157u8, 51u8, 203u8, 74u8, 1u8, 65u8, 165u8, 205u8, ], ) } - #[doc = "Provide a judgement for an account's identity."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] - #[doc = "of the registrar whose index is `reg_index`."] - #[doc = ""] - #[doc = "- `reg_index`: the index of the registrar whose judgement is being made."] - #[doc = "- `target`: the account whose identity the judgement is upon. This must be an account"] - #[doc = " with a registered identity."] - #[doc = "- `judgement`: the judgement of the registrar of index `reg_index` about `target`."] - #[doc = "- `identity`: The hash of the [`IdentityInformationProvider`] for that the judgement is"] - #[doc = " provided."] - #[doc = ""] - #[doc = "Note: Judgements do not apply to a username."] - #[doc = ""] - #[doc = "Emits `JudgementGiven` if successful."] + #[doc = "See [`Pallet::provide_judgement`]."] pub fn provide_judgement( &self, reg_index: types::provide_judgement::RegIndex, target: types::provide_judgement::Target, judgement: types::provide_judgement::Judgement, identity: types::provide_judgement::Identity, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Identity", "provide_judgement", types::ProvideJudgement { @@ -17784,23 +17496,12 @@ pub mod api { ], ) } - #[doc = "Remove an account's identity and sub-account information and slash the deposits."] - #[doc = ""] - #[doc = "Payment: Reserved balances from `set_subs` and `set_identity` are slashed and handled by"] - #[doc = "`Slash`. Verification request deposits are not returned; they should be cancelled"] - #[doc = "manually using `cancel_request`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] - #[doc = ""] - #[doc = "- `target`: the account whose identity the judgement is upon. This must be an account"] - #[doc = " with a registered identity."] - #[doc = ""] - #[doc = "Emits `IdentityKilled` if successful."] + #[doc = "See [`Pallet::kill_identity`]."] pub fn kill_identity( &self, target: types::kill_identity::Target, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Identity", "kill_identity", types::KillIdentity { target }, @@ -17812,19 +17513,13 @@ pub mod api { ], ) } - #[doc = "Add the given account to the sender's subs."] - #[doc = ""] - #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] - #[doc = "to the sender."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "sub identity of `sub`."] + #[doc = "See [`Pallet::add_sub`]."] pub fn add_sub( &self, sub: types::add_sub::Sub, data: types::add_sub::Data, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Identity", "add_sub", types::AddSub { sub, data }, @@ -17835,16 +17530,13 @@ pub mod api { ], ) } - #[doc = "Alter the associated name of the given sub-account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "sub identity of `sub`."] + #[doc = "See [`Pallet::rename_sub`]."] pub fn rename_sub( &self, sub: types::rename_sub::Sub, data: types::rename_sub::Data, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Identity", "rename_sub", types::RenameSub { sub, data }, @@ -17856,18 +17548,12 @@ pub mod api { ], ) } - #[doc = "Remove the given account from the sender's subs."] - #[doc = ""] - #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] - #[doc = "to the sender."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "sub identity of `sub`."] + #[doc = "See [`Pallet::remove_sub`]."] pub fn remove_sub( &self, sub: types::remove_sub::Sub, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Identity", "remove_sub", types::RemoveSub { sub }, @@ -17878,18 +17564,9 @@ pub mod api { ], ) } - #[doc = "Remove the sender as a sub-account."] - #[doc = ""] - #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] - #[doc = "to the sender (*not* the original depositor)."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "super-identity."] - #[doc = ""] - #[doc = "NOTE: This should not normally be used, but is provided in the case that the non-"] - #[doc = "controller of an account is maliciously registered as a sub-account."] - pub fn quit_sub(&self) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + #[doc = "See [`Pallet::quit_sub`]."] + pub fn quit_sub(&self) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Identity", "quit_sub", types::QuitSub {}, @@ -17901,147 +17578,6 @@ pub mod api { ], ) } - #[doc = "Add an `AccountId` with permission to grant usernames with a given `suffix` appended."] - #[doc = ""] - #[doc = "The authority can grant up to `allocation` usernames. To top up their allocation, they"] - #[doc = "should just issue (or request via governance) a new `add_username_authority` call."] - pub fn add_username_authority( - &self, - authority: types::add_username_authority::Authority, - suffix: types::add_username_authority::Suffix, - allocation: types::add_username_authority::Allocation, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Identity", - "add_username_authority", - types::AddUsernameAuthority { - authority, - suffix, - allocation, - }, - [ - 225u8, 197u8, 122u8, 209u8, 206u8, 241u8, 247u8, 232u8, 196u8, 110u8, - 75u8, 157u8, 44u8, 181u8, 35u8, 75u8, 182u8, 219u8, 100u8, 64u8, 208u8, - 112u8, 120u8, 229u8, 211u8, 69u8, 193u8, 214u8, 195u8, 98u8, 10u8, - 25u8, - ], - ) - } - #[doc = "Remove `authority` from the username authorities."] - pub fn remove_username_authority( - &self, - authority: types::remove_username_authority::Authority, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Identity", - "remove_username_authority", - types::RemoveUsernameAuthority { authority }, - [ - 4u8, 182u8, 89u8, 1u8, 183u8, 15u8, 215u8, 48u8, 165u8, 97u8, 252u8, - 54u8, 223u8, 18u8, 211u8, 227u8, 226u8, 230u8, 185u8, 71u8, 202u8, - 95u8, 191u8, 6u8, 118u8, 144u8, 92u8, 98u8, 64u8, 243u8, 2u8, 137u8, - ], - ) - } - #[doc = "Set the username for `who`. Must be called by a username authority."] - #[doc = ""] - #[doc = "The authority must have an `allocation`. Users can either pre-sign their usernames or"] - #[doc = "accept them later."] - #[doc = ""] - #[doc = "Usernames must:"] - #[doc = " - Only contain lowercase ASCII characters or digits."] - #[doc = " - When combined with the suffix of the issuing authority be _less than_ the"] - #[doc = " `MaxUsernameLength`."] - pub fn set_username_for( - &self, - who: types::set_username_for::Who, - username: types::set_username_for::Username, - signature: types::set_username_for::Signature, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Identity", - "set_username_for", - types::SetUsernameFor { - who, - username, - signature, - }, - [ - 109u8, 128u8, 201u8, 28u8, 164u8, 222u8, 234u8, 197u8, 202u8, 156u8, - 53u8, 83u8, 51u8, 211u8, 222u8, 126u8, 227u8, 105u8, 72u8, 29u8, 25u8, - 188u8, 134u8, 247u8, 210u8, 183u8, 69u8, 94u8, 238u8, 91u8, 176u8, - 158u8, - ], - ) - } - #[doc = "Accept a given username that an `authority` granted. The call must include the full"] - #[doc = "username, as in `username.suffix`."] - pub fn accept_username( - &self, - username: types::accept_username::Username, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Identity", - "accept_username", - types::AcceptUsername { username }, - [ - 247u8, 162u8, 83u8, 250u8, 214u8, 7u8, 12u8, 253u8, 227u8, 4u8, 95u8, - 71u8, 150u8, 218u8, 216u8, 86u8, 137u8, 37u8, 114u8, 188u8, 18u8, - 232u8, 229u8, 179u8, 172u8, 251u8, 70u8, 29u8, 18u8, 86u8, 33u8, 129u8, - ], - ) - } - #[doc = "Remove an expired username approval. The username was approved by an authority but never"] - #[doc = "accepted by the user and must now be beyond its expiration. The call must include the"] - #[doc = "full username, as in `username.suffix`."] - pub fn remove_expired_approval( - &self, - username: types::remove_expired_approval::Username, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Identity", - "remove_expired_approval", - types::RemoveExpiredApproval { username }, - [ - 159u8, 171u8, 27u8, 97u8, 224u8, 171u8, 14u8, 89u8, 65u8, 213u8, 208u8, - 67u8, 118u8, 146u8, 0u8, 131u8, 82u8, 186u8, 142u8, 52u8, 173u8, 90u8, - 104u8, 107u8, 114u8, 202u8, 123u8, 222u8, 49u8, 53u8, 59u8, 61u8, - ], - ) - } - #[doc = "Set a given username as the primary. The username should include the suffix."] - pub fn set_primary_username( - &self, - username: types::set_primary_username::Username, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Identity", - "set_primary_username", - types::SetPrimaryUsername { username }, - [ - 3u8, 25u8, 56u8, 26u8, 108u8, 165u8, 84u8, 231u8, 16u8, 4u8, 6u8, - 232u8, 141u8, 7u8, 254u8, 50u8, 26u8, 230u8, 66u8, 245u8, 255u8, 101u8, - 183u8, 234u8, 197u8, 186u8, 132u8, 197u8, 251u8, 84u8, 212u8, 162u8, - ], - ) - } - #[doc = "Remove a username that corresponds to an account with no identity. Exists when a user"] - #[doc = "gets a username but then calls `clear_identity`."] - pub fn remove_dangling_username( - &self, - username: types::remove_dangling_username::Username, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Identity", - "remove_dangling_username", - types::RemoveDanglingUsername { username }, - [ - 220u8, 67u8, 52u8, 223u8, 169u8, 81u8, 202u8, 74u8, 199u8, 169u8, 89u8, - 60u8, 57u8, 153u8, 240u8, 105u8, 188u8, 222u8, 250u8, 247u8, 91u8, - 137u8, 37u8, 212u8, 10u8, 51u8, 9u8, 202u8, 165u8, 155u8, 222u8, 29u8, - ], - ) - } } } #[doc = "The `Event` enum of this pallet"] @@ -18049,37 +17585,37 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A name was set or reset (which will remove all judgements)."] pub struct IdentitySet { pub who: identity_set::Who, } pub mod identity_set { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for IdentitySet { + impl ::subxt::ext::subxt_core::events::StaticEvent for IdentitySet { const PALLET: &'static str = "Identity"; const EVENT: &'static str = "IdentitySet"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A name was cleared, and the given balance returned."] pub struct IdentityCleared { pub who: identity_cleared::Who, @@ -18087,23 +17623,23 @@ pub mod api { } pub mod identity_cleared { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Deposit = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for IdentityCleared { + impl ::subxt::ext::subxt_core::events::StaticEvent for IdentityCleared { const PALLET: &'static str = "Identity"; const EVENT: &'static str = "IdentityCleared"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A name was removed and the given balance slashed."] pub struct IdentityKilled { pub who: identity_killed::Who, @@ -18111,23 +17647,23 @@ pub mod api { } pub mod identity_killed { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Deposit = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for IdentityKilled { + impl ::subxt::ext::subxt_core::events::StaticEvent for IdentityKilled { const PALLET: &'static str = "Identity"; const EVENT: &'static str = "IdentityKilled"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A judgement was asked from a registrar."] pub struct JudgementRequested { pub who: judgement_requested::Who, @@ -18135,23 +17671,23 @@ pub mod api { } pub mod judgement_requested { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type RegistrarIndex = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for JudgementRequested { + impl ::subxt::ext::subxt_core::events::StaticEvent for JudgementRequested { const PALLET: &'static str = "Identity"; const EVENT: &'static str = "JudgementRequested"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A judgement request was retracted."] pub struct JudgementUnrequested { pub who: judgement_unrequested::Who, @@ -18159,23 +17695,23 @@ pub mod api { } pub mod judgement_unrequested { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type RegistrarIndex = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for JudgementUnrequested { + impl ::subxt::ext::subxt_core::events::StaticEvent for JudgementUnrequested { const PALLET: &'static str = "Identity"; const EVENT: &'static str = "JudgementUnrequested"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A judgement was given by a registrar."] pub struct JudgementGiven { pub target: judgement_given::Target, @@ -18183,23 +17719,23 @@ pub mod api { } pub mod judgement_given { use super::runtime_types; - pub type Target = ::subxt::utils::AccountId32; + pub type Target = ::subxt::ext::subxt_core::utils::AccountId32; pub type RegistrarIndex = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for JudgementGiven { + impl ::subxt::ext::subxt_core::events::StaticEvent for JudgementGiven { const PALLET: &'static str = "Identity"; const EVENT: &'static str = "JudgementGiven"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A registrar was added."] pub struct RegistrarAdded { pub registrar_index: registrar_added::RegistrarIndex, @@ -18208,20 +17744,20 @@ pub mod api { use super::runtime_types; pub type RegistrarIndex = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for RegistrarAdded { + impl ::subxt::ext::subxt_core::events::StaticEvent for RegistrarAdded { const PALLET: &'static str = "Identity"; const EVENT: &'static str = "RegistrarAdded"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A sub-identity was added to an identity and the deposit paid."] pub struct SubIdentityAdded { pub sub: sub_identity_added::Sub, @@ -18230,24 +17766,24 @@ pub mod api { } pub mod sub_identity_added { use super::runtime_types; - pub type Sub = ::subxt::utils::AccountId32; - pub type Main = ::subxt::utils::AccountId32; + pub type Sub = ::subxt::ext::subxt_core::utils::AccountId32; + pub type Main = ::subxt::ext::subxt_core::utils::AccountId32; pub type Deposit = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for SubIdentityAdded { + impl ::subxt::ext::subxt_core::events::StaticEvent for SubIdentityAdded { const PALLET: &'static str = "Identity"; const EVENT: &'static str = "SubIdentityAdded"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A sub-identity was removed from an identity and the deposit freed."] pub struct SubIdentityRemoved { pub sub: sub_identity_removed::Sub, @@ -18256,24 +17792,24 @@ pub mod api { } pub mod sub_identity_removed { use super::runtime_types; - pub type Sub = ::subxt::utils::AccountId32; - pub type Main = ::subxt::utils::AccountId32; + pub type Sub = ::subxt::ext::subxt_core::utils::AccountId32; + pub type Main = ::subxt::ext::subxt_core::utils::AccountId32; pub type Deposit = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for SubIdentityRemoved { + impl ::subxt::ext::subxt_core::events::StaticEvent for SubIdentityRemoved { const PALLET: &'static str = "Identity"; const EVENT: &'static str = "SubIdentityRemoved"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A sub-identity was cleared, and the given deposit repatriated from the"] #[doc = "main identity account to the sub-identity account."] pub struct SubIdentityRevoked { @@ -18283,187 +17819,14 @@ pub mod api { } pub mod sub_identity_revoked { use super::runtime_types; - pub type Sub = ::subxt::utils::AccountId32; - pub type Main = ::subxt::utils::AccountId32; + pub type Sub = ::subxt::ext::subxt_core::utils::AccountId32; + pub type Main = ::subxt::ext::subxt_core::utils::AccountId32; pub type Deposit = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for SubIdentityRevoked { + impl ::subxt::ext::subxt_core::events::StaticEvent for SubIdentityRevoked { const PALLET: &'static str = "Identity"; const EVENT: &'static str = "SubIdentityRevoked"; } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A username authority was added."] - pub struct AuthorityAdded { - pub authority: authority_added::Authority, - } - pub mod authority_added { - use super::runtime_types; - pub type Authority = ::subxt::utils::AccountId32; - } - impl ::subxt::events::StaticEvent for AuthorityAdded { - const PALLET: &'static str = "Identity"; - const EVENT: &'static str = "AuthorityAdded"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A username authority was removed."] - pub struct AuthorityRemoved { - pub authority: authority_removed::Authority, - } - pub mod authority_removed { - use super::runtime_types; - pub type Authority = ::subxt::utils::AccountId32; - } - impl ::subxt::events::StaticEvent for AuthorityRemoved { - const PALLET: &'static str = "Identity"; - const EVENT: &'static str = "AuthorityRemoved"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A username was set for `who`."] - pub struct UsernameSet { - pub who: username_set::Who, - pub username: username_set::Username, - } - pub mod username_set { - use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; - pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::core::primitive::u8, - >; - } - impl ::subxt::events::StaticEvent for UsernameSet { - const PALLET: &'static str = "Identity"; - const EVENT: &'static str = "UsernameSet"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A username was queued, but `who` must accept it prior to `expiration`."] - pub struct UsernameQueued { - pub who: username_queued::Who, - pub username: username_queued::Username, - pub expiration: username_queued::Expiration, - } - pub mod username_queued { - use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; - pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::core::primitive::u8, - >; - pub type Expiration = ::core::primitive::u32; - } - impl ::subxt::events::StaticEvent for UsernameQueued { - const PALLET: &'static str = "Identity"; - const EVENT: &'static str = "UsernameQueued"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A queued username passed its expiration without being claimed and was removed."] - pub struct PreapprovalExpired { - pub whose: preapproval_expired::Whose, - } - pub mod preapproval_expired { - use super::runtime_types; - pub type Whose = ::subxt::utils::AccountId32; - } - impl ::subxt::events::StaticEvent for PreapprovalExpired { - const PALLET: &'static str = "Identity"; - const EVENT: &'static str = "PreapprovalExpired"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A username was set as a primary and can be looked up from `who`."] - pub struct PrimaryUsernameSet { - pub who: primary_username_set::Who, - pub username: primary_username_set::Username, - } - pub mod primary_username_set { - use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; - pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::core::primitive::u8, - >; - } - impl ::subxt::events::StaticEvent for PrimaryUsernameSet { - const PALLET: &'static str = "Identity"; - const EVENT: &'static str = "PrimaryUsernameSet"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A dangling username (as in, a username corresponding to an account that has removed its"] - #[doc = "identity) has been removed."] - pub struct DanglingUsernameRemoved { - pub who: dangling_username_removed::Who, - pub username: dangling_username_removed::Username, - } - pub mod dangling_username_removed { - use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; - pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::core::primitive::u8, - >; - } - impl ::subxt::events::StaticEvent for DanglingUsernameRemoved { - const PALLET: &'static str = "Identity"; - const EVENT: &'static str = "DanglingUsernameRemoved"; - } } pub mod storage { use super::runtime_types; @@ -18471,124 +17834,92 @@ pub mod api { use super::runtime_types; pub mod identity_of { use super::runtime_types; - pub type IdentityOf = ( - runtime_types::pallet_identity::types::Registration< - ::core::primitive::u128, - runtime_types::pallet_identity::legacy::IdentityInfo, - >, - ::core::option::Option< - runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::core::primitive::u8, - >, - >, - ); - pub type Param0 = ::subxt::utils::AccountId32; + pub type IdentityOf = runtime_types::pallet_identity::types::Registration< + ::core::primitive::u128, + >; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod super_of { use super::runtime_types; pub type SuperOf = ( - ::subxt::utils::AccountId32, + ::subxt::ext::subxt_core::utils::AccountId32, runtime_types::pallet_identity::types::Data, ); - pub type Param0 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod subs_of { use super::runtime_types; pub type SubsOf = ( ::core::primitive::u128, - runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::subxt::utils::AccountId32, + runtime_types::bounded_collections::bounded_vec::BoundedVec18< + ::subxt::ext::subxt_core::utils::AccountId32, >, ); - pub type Param0 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod registrars { use super::runtime_types; pub type Registrars = - runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::bounded_collections::bounded_vec::BoundedVec19< ::core::option::Option< runtime_types::pallet_identity::types::RegistrarInfo< ::core::primitive::u128, - ::subxt::utils::AccountId32, - ::core::primitive::u64, + ::subxt::ext::subxt_core::utils::AccountId32, >, >, >; } - pub mod username_authorities { - use super::runtime_types; - pub type UsernameAuthorities = - runtime_types::pallet_identity::types::AuthorityProperties< - runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::core::primitive::u8, - >, - >; - pub type Param0 = ::subxt::utils::AccountId32; - } - pub mod account_of_username { - use super::runtime_types; - pub type AccountOfUsername = ::subxt::utils::AccountId32; - pub type Param0 = runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::core::primitive::u8, - >; - } - pub mod pending_usernames { - use super::runtime_types; - pub type PendingUsernames = - (::subxt::utils::AccountId32, ::core::primitive::u32); - pub type Param0 = runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::core::primitive::u8, - >; - } } pub struct StorageApi; impl StorageApi { - #[doc = " Information that is pertinent to identify the entity behind an account. First item is the"] - #[doc = " registration, second is the account's primary username."] + #[doc = " Information that is pertinent to identify the entity behind an account."] #[doc = ""] #[doc = " TWOX-NOTE: OK ― `AccountId` is a secure hash."] pub fn identity_of_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::identity_of::IdentityOf, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Identity", "IdentityOf", (), [ - 0u8, 73u8, 213u8, 52u8, 49u8, 235u8, 238u8, 43u8, 119u8, 12u8, 35u8, - 162u8, 230u8, 24u8, 246u8, 200u8, 44u8, 254u8, 13u8, 84u8, 10u8, 27u8, - 159u8, 6u8, 176u8, 125u8, 24u8, 212u8, 250u8, 154u8, 181u8, 12u8, + 112u8, 2u8, 209u8, 123u8, 138u8, 171u8, 80u8, 243u8, 226u8, 88u8, 81u8, + 49u8, 59u8, 172u8, 88u8, 180u8, 255u8, 119u8, 57u8, 16u8, 169u8, 149u8, + 77u8, 239u8, 73u8, 182u8, 28u8, 112u8, 150u8, 110u8, 65u8, 139u8, ], ) } - #[doc = " Information that is pertinent to identify the entity behind an account. First item is the"] - #[doc = " registration, second is the account's primary username."] + #[doc = " Information that is pertinent to identify the entity behind an account."] #[doc = ""] #[doc = " TWOX-NOTE: OK ― `AccountId` is a secure hash."] pub fn identity_of( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::identity_of::Param0, + >, types::identity_of::IdentityOf, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Identity", "IdentityOf", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ - 0u8, 73u8, 213u8, 52u8, 49u8, 235u8, 238u8, 43u8, 119u8, 12u8, 35u8, - 162u8, 230u8, 24u8, 246u8, 200u8, 44u8, 254u8, 13u8, 84u8, 10u8, 27u8, - 159u8, 6u8, 176u8, 125u8, 24u8, 212u8, 250u8, 154u8, 181u8, 12u8, + 112u8, 2u8, 209u8, 123u8, 138u8, 171u8, 80u8, 243u8, 226u8, 88u8, 81u8, + 49u8, 59u8, 172u8, 88u8, 180u8, 255u8, 119u8, 57u8, 16u8, 169u8, 149u8, + 77u8, 239u8, 73u8, 182u8, 28u8, 112u8, 150u8, 110u8, 65u8, 139u8, ], ) } @@ -18596,14 +17927,14 @@ pub mod api { #[doc = " context. If the account is not some other account's sub-identity, then just `None`."] pub fn super_of_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::super_of::SuperOf, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Identity", "SuperOf", (), @@ -18618,18 +17949,22 @@ pub mod api { #[doc = " context. If the account is not some other account's sub-identity, then just `None`."] pub fn super_of( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::super_of::Param0, + >, types::super_of::SuperOf, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Identity", "SuperOf", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 84u8, 72u8, 64u8, 14u8, 56u8, 9u8, 143u8, 100u8, 141u8, 163u8, 36u8, 55u8, 38u8, 254u8, 164u8, 17u8, 3u8, 110u8, 88u8, 175u8, 161u8, 65u8, @@ -18644,14 +17979,14 @@ pub mod api { #[doc = " TWOX-NOTE: OK ― `AccountId` is a secure hash."] pub fn subs_of_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::subs_of::SubsOf, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Identity", "SubsOf", (), @@ -18670,18 +18005,22 @@ pub mod api { #[doc = " TWOX-NOTE: OK ― `AccountId` is a secure hash."] pub fn subs_of( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::subs_of::Param0, + >, types::subs_of::SubsOf, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Identity", "SubsOf", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 164u8, 140u8, 52u8, 123u8, 220u8, 118u8, 147u8, 3u8, 67u8, 22u8, 191u8, 18u8, 186u8, 21u8, 154u8, 8u8, 205u8, 224u8, 163u8, 173u8, 174u8, @@ -18696,175 +18035,22 @@ pub mod api { #[doc = " The index into this can be cast to `RegistrarIndex` to get a valid value."] pub fn registrars( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::registrars::Registrars, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Identity", "Registrars", (), [ - 167u8, 99u8, 159u8, 117u8, 103u8, 243u8, 208u8, 113u8, 57u8, 225u8, - 27u8, 25u8, 188u8, 120u8, 15u8, 40u8, 134u8, 169u8, 108u8, 134u8, 83u8, - 184u8, 223u8, 170u8, 194u8, 19u8, 168u8, 43u8, 119u8, 76u8, 94u8, - 154u8, - ], - ) - } - #[doc = " A map of the accounts who are authorized to grant usernames."] - pub fn username_authorities_iter( - &self, - ) -> ::subxt::storage::address::Address< - (), - types::username_authorities::UsernameAuthorities, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Identity", - "UsernameAuthorities", - (), - [ - 89u8, 102u8, 60u8, 184u8, 127u8, 244u8, 3u8, 61u8, 209u8, 78u8, 178u8, - 44u8, 159u8, 27u8, 7u8, 0u8, 22u8, 116u8, 42u8, 240u8, 130u8, 93u8, - 214u8, 182u8, 79u8, 222u8, 19u8, 20u8, 34u8, 198u8, 164u8, 146u8, - ], - ) - } - #[doc = " A map of the accounts who are authorized to grant usernames."] - pub fn username_authorities( - &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< - types::username_authorities::Param0, - >, - types::username_authorities::UsernameAuthorities, - ::subxt::storage::address::Yes, - (), - (), - > { - ::subxt::storage::address::Address::new_static( - "Identity", - "UsernameAuthorities", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - [ - 89u8, 102u8, 60u8, 184u8, 127u8, 244u8, 3u8, 61u8, 209u8, 78u8, 178u8, - 44u8, 159u8, 27u8, 7u8, 0u8, 22u8, 116u8, 42u8, 240u8, 130u8, 93u8, - 214u8, 182u8, 79u8, 222u8, 19u8, 20u8, 34u8, 198u8, 164u8, 146u8, - ], - ) - } - #[doc = " Reverse lookup from `username` to the `AccountId` that has registered it. The value should"] - #[doc = " be a key in the `IdentityOf` map, but it may not if the user has cleared their identity."] - #[doc = ""] - #[doc = " Multiple usernames may map to the same `AccountId`, but `IdentityOf` will only map to one"] - #[doc = " primary username."] - pub fn account_of_username_iter( - &self, - ) -> ::subxt::storage::address::Address< - (), - types::account_of_username::AccountOfUsername, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Identity", - "AccountOfUsername", - (), - [ - 131u8, 96u8, 207u8, 217u8, 223u8, 54u8, 51u8, 156u8, 8u8, 238u8, 134u8, - 57u8, 42u8, 110u8, 180u8, 107u8, 30u8, 109u8, 162u8, 110u8, 178u8, - 127u8, 151u8, 163u8, 89u8, 127u8, 181u8, 213u8, 74u8, 129u8, 207u8, - 15u8, - ], - ) - } - #[doc = " Reverse lookup from `username` to the `AccountId` that has registered it. The value should"] - #[doc = " be a key in the `IdentityOf` map, but it may not if the user has cleared their identity."] - #[doc = ""] - #[doc = " Multiple usernames may map to the same `AccountId`, but `IdentityOf` will only map to one"] - #[doc = " primary username."] - pub fn account_of_username( - &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, - types::account_of_username::AccountOfUsername, - ::subxt::storage::address::Yes, - (), - (), - > { - ::subxt::storage::address::Address::new_static( - "Identity", - "AccountOfUsername", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - [ - 131u8, 96u8, 207u8, 217u8, 223u8, 54u8, 51u8, 156u8, 8u8, 238u8, 134u8, - 57u8, 42u8, 110u8, 180u8, 107u8, 30u8, 109u8, 162u8, 110u8, 178u8, - 127u8, 151u8, 163u8, 89u8, 127u8, 181u8, 213u8, 74u8, 129u8, 207u8, - 15u8, - ], - ) - } - #[doc = " Usernames that an authority has granted, but that the account controller has not confirmed"] - #[doc = " that they want it. Used primarily in cases where the `AccountId` cannot provide a signature"] - #[doc = " because they are a pure proxy, multisig, etc. In order to confirm it, they should call"] - #[doc = " [`Call::accept_username`]."] - #[doc = ""] - #[doc = " First tuple item is the account and second is the acceptance deadline."] - pub fn pending_usernames_iter( - &self, - ) -> ::subxt::storage::address::Address< - (), - types::pending_usernames::PendingUsernames, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Identity", - "PendingUsernames", - (), - [ - 237u8, 213u8, 92u8, 249u8, 11u8, 169u8, 104u8, 7u8, 201u8, 133u8, - 164u8, 64u8, 191u8, 172u8, 169u8, 229u8, 206u8, 105u8, 190u8, 113u8, - 21u8, 13u8, 70u8, 74u8, 140u8, 125u8, 123u8, 48u8, 183u8, 181u8, 170u8, - 147u8, - ], - ) - } - #[doc = " Usernames that an authority has granted, but that the account controller has not confirmed"] - #[doc = " that they want it. Used primarily in cases where the `AccountId` cannot provide a signature"] - #[doc = " because they are a pure proxy, multisig, etc. In order to confirm it, they should call"] - #[doc = " [`Call::accept_username`]."] - #[doc = ""] - #[doc = " First tuple item is the account and second is the acceptance deadline."] - pub fn pending_usernames( - &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, - types::pending_usernames::PendingUsernames, - ::subxt::storage::address::Yes, - (), - (), - > { - ::subxt::storage::address::Address::new_static( - "Identity", - "PendingUsernames", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - [ - 237u8, 213u8, 92u8, 249u8, 11u8, 169u8, 104u8, 7u8, 201u8, 133u8, - 164u8, 64u8, 191u8, 172u8, 169u8, 229u8, 206u8, 105u8, 190u8, 113u8, - 21u8, 13u8, 70u8, 74u8, 140u8, 125u8, 123u8, 48u8, 183u8, 181u8, 170u8, - 147u8, + 207u8, 253u8, 229u8, 237u8, 228u8, 85u8, 173u8, 74u8, 164u8, 67u8, + 144u8, 144u8, 5u8, 242u8, 84u8, 187u8, 110u8, 181u8, 2u8, 162u8, 239u8, + 212u8, 72u8, 233u8, 160u8, 196u8, 121u8, 218u8, 100u8, 0u8, 219u8, + 181u8, ], ) } @@ -18874,11 +18060,12 @@ pub mod api { use super::runtime_types; pub struct ConstantsApi; impl ConstantsApi { - #[doc = " The amount held on deposit for a registered identity."] + #[doc = " The amount held on deposit for a registered identity"] pub fn basic_deposit( &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Identity", "BasicDeposit", [ @@ -18888,11 +18075,14 @@ pub mod api { ], ) } - #[doc = " The amount held on deposit per encoded byte for a registered identity."] - pub fn byte_deposit(&self) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + #[doc = " The amount held on deposit per additional field for a registered identity."] + pub fn field_deposit( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Identity", - "ByteDeposit", + "FieldDeposit", [ 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, @@ -18905,8 +18095,9 @@ pub mod api { #[doc = " be another trie item whose value is the size of an account ID plus 32 bytes."] pub fn sub_account_deposit( &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Identity", "SubAccountDeposit", [ @@ -18919,8 +18110,9 @@ pub mod api { #[doc = " The maximum number of sub-accounts allowed per identified account."] pub fn max_sub_accounts( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Identity", "MaxSubAccounts", [ @@ -18931,12 +18123,30 @@ pub mod api { ], ) } + #[doc = " Maximum number of additional fields that may be stored in an ID. Needed to bound the I/O"] + #[doc = " required to access an identity, but can be pretty high."] + pub fn max_additional_fields( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( + "Identity", + "MaxAdditionalFields", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } #[doc = " Maxmimum number of registrars allowed in the system. Needed to bound the complexity"] #[doc = " of, e.g., updating judgements."] pub fn max_registrars( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Identity", "MaxRegistrars", [ @@ -18947,51 +18157,6 @@ pub mod api { ], ) } - #[doc = " The number of blocks within which a username grant must be accepted."] - pub fn pending_username_expiration( - &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "Identity", - "PendingUsernameExpiration", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } - #[doc = " The maximum length of a suffix."] - pub fn max_suffix_length( - &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "Identity", - "MaxSuffixLength", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } - #[doc = " The maximum length of a username, including its suffix and any system-added delimiters."] - pub fn max_username_length( - &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "Identity", - "MaxUsernameLength", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } } } } @@ -19009,24 +18174,20 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A user outside of the society can make a bid for entry."] - #[doc = ""] - #[doc = "Payment: The group's Candidate Deposit will be reserved for making a bid. It is returned"] - #[doc = "when the bid becomes a member, or if the bid calls `unbid`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `value`: A one time payment the bid would like to receive when joining the society."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::bid`]."] pub struct Bid { pub value: bid::Value, } @@ -19034,59 +18195,45 @@ pub mod api { use super::runtime_types; pub type Value = ::core::primitive::u128; } - impl ::subxt::blocks::StaticExtrinsic for Bid { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Bid { const PALLET: &'static str = "Society"; const CALL: &'static str = "bid"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A bidder can remove their bid for entry into society."] - #[doc = "By doing so, they will have their candidate deposit returned or"] - #[doc = "they will unvouch their voucher."] - #[doc = ""] - #[doc = "Payment: The bid deposit is unreserved if the user made a bid."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and a bidder."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::unbid`]."] pub struct Unbid; - impl ::subxt::blocks::StaticExtrinsic for Unbid { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Unbid { const PALLET: &'static str = "Society"; const CALL: &'static str = "unbid"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "As a member, vouch for someone to join society by placing a bid on their behalf."] - #[doc = ""] - #[doc = "There is no deposit required to vouch for a new bid, but a member can only vouch for"] - #[doc = "one bid at a time. If the bid becomes a suspended candidate and ultimately rejected by"] - #[doc = "the suspension judgement origin, the member will be banned from vouching again."] - #[doc = ""] - #[doc = "As a vouching member, you can claim a tip if the candidate is accepted. This tip will"] - #[doc = "be paid as a portion of the reward the member will receive for joining the society."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and a member."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `who`: The user who you would like to vouch for."] - #[doc = "- `value`: The total reward to be paid between you and the candidate if they become"] - #[doc = "a member in the society."] - #[doc = "- `tip`: Your cut of the total `value` payout when the candidate is inducted into"] - #[doc = "the society. Tips larger than `value` will be saturated upon payout."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::vouch`]."] pub struct Vouch { pub who: vouch::Who, pub value: vouch::Value, @@ -19094,85 +18241,83 @@ pub mod api { } pub mod vouch { use super::runtime_types; - pub type Who = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Who = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type Value = ::core::primitive::u128; pub type Tip = ::core::primitive::u128; } - impl ::subxt::blocks::StaticExtrinsic for Vouch { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Vouch { const PALLET: &'static str = "Society"; const CALL: &'static str = "vouch"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "As a vouching member, unvouch a bid. This only works while vouched user is"] - #[doc = "only a bidder (and not a candidate)."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and a vouching member."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `pos`: Position in the `Bids` vector of the bid who should be unvouched."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::unvouch`]."] pub struct Unvouch; - impl ::subxt::blocks::StaticExtrinsic for Unvouch { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Unvouch { const PALLET: &'static str = "Society"; const CALL: &'static str = "unvouch"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "As a member, vote on a candidate."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and a member."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `candidate`: The candidate that the member would like to bid on."] - #[doc = "- `approve`: A boolean which says if the candidate should be approved (`true`) or"] - #[doc = " rejected (`false`)."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::vote`]."] pub struct Vote { pub candidate: vote::Candidate, pub approve: vote::Approve, } pub mod vote { use super::runtime_types; - pub type Candidate = - ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Candidate = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type Approve = ::core::primitive::bool; } - impl ::subxt::blocks::StaticExtrinsic for Vote { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Vote { const PALLET: &'static str = "Society"; const CALL: &'static str = "vote"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "As a member, vote on the defender."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and a member."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `approve`: A boolean which says if the candidate should be"] - #[doc = "approved (`true`) or rejected (`false`)."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::defender_vote`]."] pub struct DefenderVote { pub approve: defender_vote::Approve, } @@ -19180,47 +18325,45 @@ pub mod api { use super::runtime_types; pub type Approve = ::core::primitive::bool; } - impl ::subxt::blocks::StaticExtrinsic for DefenderVote { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for DefenderVote { const PALLET: &'static str = "Society"; const CALL: &'static str = "defender_vote"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Transfer the first matured payout for the sender and remove it from the records."] - #[doc = ""] - #[doc = "NOTE: This extrinsic needs to be called multiple times to claim multiple matured"] - #[doc = "payouts."] - #[doc = ""] - #[doc = "Payment: The member will receive a payment equal to their first matured"] - #[doc = "payout to their free balance."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and a member with"] - #[doc = "payouts remaining."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::payout`]."] pub struct Payout; - impl ::subxt::blocks::StaticExtrinsic for Payout { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Payout { const PALLET: &'static str = "Society"; const CALL: &'static str = "payout"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Repay the payment previously given to the member with the signed origin, remove any"] - #[doc = "pending payments, and elevate them from rank 0 to rank 1."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::waive_repay`]."] pub struct WaiveRepay { pub amount: waive_repay::Amount, } @@ -19228,37 +18371,25 @@ pub mod api { use super::runtime_types; pub type Amount = ::core::primitive::u128; } - impl ::subxt::blocks::StaticExtrinsic for WaiveRepay { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for WaiveRepay { const PALLET: &'static str = "Society"; const CALL: &'static str = "waive_repay"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Found the society."] - #[doc = ""] - #[doc = "This is done as a discrete action in order to allow for the"] - #[doc = "pallet to be included into a running chain and can only be done once."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be from the _FounderSetOrigin_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `founder` - The first member and head of the newly founded society."] - #[doc = "- `max_members` - The initial max number of members for the society."] - #[doc = "- `max_intake` - The maximum number of candidates per intake period."] - #[doc = "- `max_strikes`: The maximum number of strikes a member may get before they become"] - #[doc = " suspended and may only be reinstated by the founder."] - #[doc = "- `candidate_deposit`: The deposit required to make a bid for membership of the group."] - #[doc = "- `rules` - The rules of this society concerning membership."] - #[doc = ""] - #[doc = "Complexity: O(1)"] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::found_society`]."] pub struct FoundSociety { pub founder: found_society::Founder, pub max_members: found_society::MaxMembers, @@ -19269,97 +18400,87 @@ pub mod api { } pub mod found_society { use super::runtime_types; - pub type Founder = - ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Founder = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type MaxMembers = ::core::primitive::u32; pub type MaxIntake = ::core::primitive::u32; pub type MaxStrikes = ::core::primitive::u32; pub type CandidateDeposit = ::core::primitive::u128; - pub type Rules = ::std::vec::Vec<::core::primitive::u8>; + pub type Rules = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; } - impl ::subxt::blocks::StaticExtrinsic for FoundSociety { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for FoundSociety { const PALLET: &'static str = "Society"; const CALL: &'static str = "found_society"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Dissolve the society and remove all members."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be Signed, and the signing account must be both"] - #[doc = "the `Founder` and the `Head`. This implies that it may only be done when there is one"] - #[doc = "member."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::dissolve`]."] pub struct Dissolve; - impl ::subxt::blocks::StaticExtrinsic for Dissolve { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Dissolve { const PALLET: &'static str = "Society"; const CALL: &'static str = "dissolve"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Allow suspension judgement origin to make judgement on a suspended member."] - #[doc = ""] - #[doc = "If a suspended member is forgiven, we simply add them back as a member, not affecting"] - #[doc = "any of the existing storage items for that member."] - #[doc = ""] - #[doc = "If a suspended member is rejected, remove all associated storage items, including"] - #[doc = "their payouts, and remove any vouched bids they currently have."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be Signed from the Founder."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `who` - The suspended member to be judged."] - #[doc = "- `forgive` - A boolean representing whether the suspension judgement origin forgives"] - #[doc = " (`true`) or rejects (`false`) a suspended member."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::judge_suspended_member`]."] pub struct JudgeSuspendedMember { pub who: judge_suspended_member::Who, pub forgive: judge_suspended_member::Forgive, } pub mod judge_suspended_member { use super::runtime_types; - pub type Who = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Who = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type Forgive = ::core::primitive::bool; } - impl ::subxt::blocks::StaticExtrinsic for JudgeSuspendedMember { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for JudgeSuspendedMember { const PALLET: &'static str = "Society"; const CALL: &'static str = "judge_suspended_member"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Change the maximum number of members in society and the maximum number of new candidates"] - #[doc = "in a single intake period."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be Signed by the Founder."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `max_members` - The maximum number of members for the society. This must be no less"] - #[doc = " than the current number of members."] - #[doc = "- `max_intake` - The maximum number of candidates per intake period."] - #[doc = "- `max_strikes`: The maximum number of strikes a member may get before they become"] - #[doc = " suspended and may only be reinstated by the founder."] - #[doc = "- `candidate_deposit`: The deposit required to make a bid for membership of the group."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_parameters`]."] pub struct SetParameters { pub max_members: set_parameters::MaxMembers, pub max_intake: set_parameters::MaxIntake, @@ -19373,177 +18494,191 @@ pub mod api { pub type MaxStrikes = ::core::primitive::u32; pub type CandidateDeposit = ::core::primitive::u128; } - impl ::subxt::blocks::StaticExtrinsic for SetParameters { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetParameters { const PALLET: &'static str = "Society"; const CALL: &'static str = "set_parameters"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Punish the skeptic with a strike if they did not vote on a candidate. Callable by the"] - #[doc = "candidate."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::punish_skeptic`]."] pub struct PunishSkeptic; - impl ::subxt::blocks::StaticExtrinsic for PunishSkeptic { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for PunishSkeptic { const PALLET: &'static str = "Society"; const CALL: &'static str = "punish_skeptic"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Transform an approved candidate into a member. Callable only by the"] - #[doc = "the candidate, and only after the period for voting has ended."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::claim_membership`]."] pub struct ClaimMembership; - impl ::subxt::blocks::StaticExtrinsic for ClaimMembership { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ClaimMembership { const PALLET: &'static str = "Society"; const CALL: &'static str = "claim_membership"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Transform an approved candidate into a member. Callable only by the Signed origin of the"] - #[doc = "Founder, only after the period for voting has ended and only when the candidate is not"] - #[doc = "clearly rejected."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::bestow_membership`]."] pub struct BestowMembership { pub candidate: bestow_membership::Candidate, } pub mod bestow_membership { use super::runtime_types; - pub type Candidate = ::subxt::utils::AccountId32; + pub type Candidate = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::blocks::StaticExtrinsic for BestowMembership { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for BestowMembership { const PALLET: &'static str = "Society"; const CALL: &'static str = "bestow_membership"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Remove the candidate's application from the society. Callable only by the Signed origin"] - #[doc = "of the Founder, only after the period for voting has ended, and only when they do not"] - #[doc = "have a clear approval."] - #[doc = ""] - #[doc = "Any bid deposit is lost and voucher is banned."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::kick_candidate`]."] pub struct KickCandidate { pub candidate: kick_candidate::Candidate, } pub mod kick_candidate { use super::runtime_types; - pub type Candidate = ::subxt::utils::AccountId32; + pub type Candidate = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::blocks::StaticExtrinsic for KickCandidate { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for KickCandidate { const PALLET: &'static str = "Society"; const CALL: &'static str = "kick_candidate"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Remove the candidate's application from the society. Callable only by the candidate."] - #[doc = ""] - #[doc = "Any bid deposit is lost and voucher is banned."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::resign_candidacy`]."] pub struct ResignCandidacy; - impl ::subxt::blocks::StaticExtrinsic for ResignCandidacy { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ResignCandidacy { const PALLET: &'static str = "Society"; const CALL: &'static str = "resign_candidacy"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Remove a `candidate`'s failed application from the society. Callable by any"] - #[doc = "signed origin but only at the end of the subsequent round and only for"] - #[doc = "a candidate with more rejections than approvals."] - #[doc = ""] - #[doc = "The bid deposit is lost and the voucher is banned."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::drop_candidate`]."] pub struct DropCandidate { pub candidate: drop_candidate::Candidate, } pub mod drop_candidate { use super::runtime_types; - pub type Candidate = ::subxt::utils::AccountId32; + pub type Candidate = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::blocks::StaticExtrinsic for DropCandidate { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for DropCandidate { const PALLET: &'static str = "Society"; const CALL: &'static str = "drop_candidate"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Remove up to `max` stale votes for the given `candidate`."] - #[doc = ""] - #[doc = "May be called by any Signed origin, but only after the candidate's candidacy is ended."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::cleanup_candidacy`]."] pub struct CleanupCandidacy { pub candidate: cleanup_candidacy::Candidate, pub max: cleanup_candidacy::Max, } pub mod cleanup_candidacy { use super::runtime_types; - pub type Candidate = ::subxt::utils::AccountId32; + pub type Candidate = ::subxt::ext::subxt_core::utils::AccountId32; pub type Max = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for CleanupCandidacy { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for CleanupCandidacy { const PALLET: &'static str = "Society"; const CALL: &'static str = "cleanup_candidacy"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Remove up to `max` stale votes for the defender in the given `challenge_round`."] - #[doc = ""] - #[doc = "May be called by any Signed origin, but only after the challenge round is ended."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::cleanup_challenge`]."] pub struct CleanupChallenge { pub challenge_round: cleanup_challenge::ChallengeRound, pub max: cleanup_challenge::Max, @@ -19553,24 +18688,19 @@ pub mod api { pub type ChallengeRound = ::core::primitive::u32; pub type Max = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for CleanupChallenge { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for CleanupChallenge { const PALLET: &'static str = "Society"; const CALL: &'static str = "cleanup_challenge"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "A user outside of the society can make a bid for entry."] - #[doc = ""] - #[doc = "Payment: The group's Candidate Deposit will be reserved for making a bid. It is returned"] - #[doc = "when the bid becomes a member, or if the bid calls `unbid`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `value`: A one time payment the bid would like to receive when joining the society."] - pub fn bid(&self, value: types::bid::Value) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + #[doc = "See [`Pallet::bid`]."] + pub fn bid( + &self, + value: types::bid::Value, + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Society", "bid", types::Bid { value }, @@ -19581,15 +18711,9 @@ pub mod api { ], ) } - #[doc = "A bidder can remove their bid for entry into society."] - #[doc = "By doing so, they will have their candidate deposit returned or"] - #[doc = "they will unvouch their voucher."] - #[doc = ""] - #[doc = "Payment: The bid deposit is unreserved if the user made a bid."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and a bidder."] - pub fn unbid(&self) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + #[doc = "See [`Pallet::unbid`]."] + pub fn unbid(&self) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Society", "unbid", types::Unbid {}, @@ -19601,30 +18725,14 @@ pub mod api { ], ) } - #[doc = "As a member, vouch for someone to join society by placing a bid on their behalf."] - #[doc = ""] - #[doc = "There is no deposit required to vouch for a new bid, but a member can only vouch for"] - #[doc = "one bid at a time. If the bid becomes a suspended candidate and ultimately rejected by"] - #[doc = "the suspension judgement origin, the member will be banned from vouching again."] - #[doc = ""] - #[doc = "As a vouching member, you can claim a tip if the candidate is accepted. This tip will"] - #[doc = "be paid as a portion of the reward the member will receive for joining the society."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and a member."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `who`: The user who you would like to vouch for."] - #[doc = "- `value`: The total reward to be paid between you and the candidate if they become"] - #[doc = "a member in the society."] - #[doc = "- `tip`: Your cut of the total `value` payout when the candidate is inducted into"] - #[doc = "the society. Tips larger than `value` will be saturated upon payout."] + #[doc = "See [`Pallet::vouch`]."] pub fn vouch( &self, who: types::vouch::Who, value: types::vouch::Value, tip: types::vouch::Tip, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Society", "vouch", types::Vouch { who, value, tip }, @@ -19635,15 +18743,9 @@ pub mod api { ], ) } - #[doc = "As a vouching member, unvouch a bid. This only works while vouched user is"] - #[doc = "only a bidder (and not a candidate)."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and a vouching member."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `pos`: Position in the `Bids` vector of the bid who should be unvouched."] - pub fn unvouch(&self) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + #[doc = "See [`Pallet::unvouch`]."] + pub fn unvouch(&self) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Society", "unvouch", types::Unvouch {}, @@ -19655,20 +18757,13 @@ pub mod api { ], ) } - #[doc = "As a member, vote on a candidate."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and a member."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `candidate`: The candidate that the member would like to bid on."] - #[doc = "- `approve`: A boolean which says if the candidate should be approved (`true`) or"] - #[doc = " rejected (`false`)."] + #[doc = "See [`Pallet::vote`]."] pub fn vote( &self, candidate: types::vote::Candidate, approve: types::vote::Approve, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Society", "vote", types::Vote { candidate, approve }, @@ -19679,18 +18774,12 @@ pub mod api { ], ) } - #[doc = "As a member, vote on the defender."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and a member."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `approve`: A boolean which says if the candidate should be"] - #[doc = "approved (`true`) or rejected (`false`)."] + #[doc = "See [`Pallet::defender_vote`]."] pub fn defender_vote( &self, approve: types::defender_vote::Approve, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Society", "defender_vote", types::DefenderVote { approve }, @@ -19702,18 +18791,9 @@ pub mod api { ], ) } - #[doc = "Transfer the first matured payout for the sender and remove it from the records."] - #[doc = ""] - #[doc = "NOTE: This extrinsic needs to be called multiple times to claim multiple matured"] - #[doc = "payouts."] - #[doc = ""] - #[doc = "Payment: The member will receive a payment equal to their first matured"] - #[doc = "payout to their free balance."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and a member with"] - #[doc = "payouts remaining."] - pub fn payout(&self) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + #[doc = "See [`Pallet::payout`]."] + pub fn payout(&self) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Society", "payout", types::Payout {}, @@ -19724,13 +18804,12 @@ pub mod api { ], ) } - #[doc = "Repay the payment previously given to the member with the signed origin, remove any"] - #[doc = "pending payments, and elevate them from rank 0 to rank 1."] + #[doc = "See [`Pallet::waive_repay`]."] pub fn waive_repay( &self, amount: types::waive_repay::Amount, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Society", "waive_repay", types::WaiveRepay { amount }, @@ -19741,23 +18820,7 @@ pub mod api { ], ) } - #[doc = "Found the society."] - #[doc = ""] - #[doc = "This is done as a discrete action in order to allow for the"] - #[doc = "pallet to be included into a running chain and can only be done once."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be from the _FounderSetOrigin_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `founder` - The first member and head of the newly founded society."] - #[doc = "- `max_members` - The initial max number of members for the society."] - #[doc = "- `max_intake` - The maximum number of candidates per intake period."] - #[doc = "- `max_strikes`: The maximum number of strikes a member may get before they become"] - #[doc = " suspended and may only be reinstated by the founder."] - #[doc = "- `candidate_deposit`: The deposit required to make a bid for membership of the group."] - #[doc = "- `rules` - The rules of this society concerning membership."] - #[doc = ""] - #[doc = "Complexity: O(1)"] + #[doc = "See [`Pallet::found_society`]."] pub fn found_society( &self, founder: types::found_society::Founder, @@ -19766,8 +18829,8 @@ pub mod api { max_strikes: types::found_society::MaxStrikes, candidate_deposit: types::found_society::CandidateDeposit, rules: types::found_society::Rules, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Society", "found_society", types::FoundSociety { @@ -19786,13 +18849,9 @@ pub mod api { ], ) } - #[doc = "Dissolve the society and remove all members."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be Signed, and the signing account must be both"] - #[doc = "the `Founder` and the `Head`. This implies that it may only be done when there is one"] - #[doc = "member."] - pub fn dissolve(&self) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + #[doc = "See [`Pallet::dissolve`]."] + pub fn dissolve(&self) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Society", "dissolve", types::Dissolve {}, @@ -19804,26 +18863,14 @@ pub mod api { ], ) } - #[doc = "Allow suspension judgement origin to make judgement on a suspended member."] - #[doc = ""] - #[doc = "If a suspended member is forgiven, we simply add them back as a member, not affecting"] - #[doc = "any of the existing storage items for that member."] - #[doc = ""] - #[doc = "If a suspended member is rejected, remove all associated storage items, including"] - #[doc = "their payouts, and remove any vouched bids they currently have."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be Signed from the Founder."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `who` - The suspended member to be judged."] - #[doc = "- `forgive` - A boolean representing whether the suspension judgement origin forgives"] - #[doc = " (`true`) or rejects (`false`) a suspended member."] + #[doc = "See [`Pallet::judge_suspended_member`]."] pub fn judge_suspended_member( &self, who: types::judge_suspended_member::Who, forgive: types::judge_suspended_member::Forgive, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Society", "judge_suspended_member", types::JudgeSuspendedMember { who, forgive }, @@ -19834,26 +18881,15 @@ pub mod api { ], ) } - #[doc = "Change the maximum number of members in society and the maximum number of new candidates"] - #[doc = "in a single intake period."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be Signed by the Founder."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `max_members` - The maximum number of members for the society. This must be no less"] - #[doc = " than the current number of members."] - #[doc = "- `max_intake` - The maximum number of candidates per intake period."] - #[doc = "- `max_strikes`: The maximum number of strikes a member may get before they become"] - #[doc = " suspended and may only be reinstated by the founder."] - #[doc = "- `candidate_deposit`: The deposit required to make a bid for membership of the group."] + #[doc = "See [`Pallet::set_parameters`]."] pub fn set_parameters( &self, max_members: types::set_parameters::MaxMembers, max_intake: types::set_parameters::MaxIntake, max_strikes: types::set_parameters::MaxStrikes, candidate_deposit: types::set_parameters::CandidateDeposit, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Society", "set_parameters", types::SetParameters { @@ -19870,10 +18906,11 @@ pub mod api { ], ) } - #[doc = "Punish the skeptic with a strike if they did not vote on a candidate. Callable by the"] - #[doc = "candidate."] - pub fn punish_skeptic(&self) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + #[doc = "See [`Pallet::punish_skeptic`]."] + pub fn punish_skeptic( + &self, + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Society", "punish_skeptic", types::PunishSkeptic {}, @@ -19885,10 +18922,11 @@ pub mod api { ], ) } - #[doc = "Transform an approved candidate into a member. Callable only by the"] - #[doc = "the candidate, and only after the period for voting has ended."] - pub fn claim_membership(&self) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + #[doc = "See [`Pallet::claim_membership`]."] + pub fn claim_membership( + &self, + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Society", "claim_membership", types::ClaimMembership {}, @@ -19899,14 +18937,13 @@ pub mod api { ], ) } - #[doc = "Transform an approved candidate into a member. Callable only by the Signed origin of the"] - #[doc = "Founder, only after the period for voting has ended and only when the candidate is not"] - #[doc = "clearly rejected."] + #[doc = "See [`Pallet::bestow_membership`]."] pub fn bestow_membership( &self, candidate: types::bestow_membership::Candidate, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Society", "bestow_membership", types::BestowMembership { candidate }, @@ -19917,16 +18954,12 @@ pub mod api { ], ) } - #[doc = "Remove the candidate's application from the society. Callable only by the Signed origin"] - #[doc = "of the Founder, only after the period for voting has ended, and only when they do not"] - #[doc = "have a clear approval."] - #[doc = ""] - #[doc = "Any bid deposit is lost and voucher is banned."] + #[doc = "See [`Pallet::kick_candidate`]."] pub fn kick_candidate( &self, candidate: types::kick_candidate::Candidate, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Society", "kick_candidate", types::KickCandidate { candidate }, @@ -19937,11 +18970,11 @@ pub mod api { ], ) } - #[doc = "Remove the candidate's application from the society. Callable only by the candidate."] - #[doc = ""] - #[doc = "Any bid deposit is lost and voucher is banned."] - pub fn resign_candidacy(&self) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + #[doc = "See [`Pallet::resign_candidacy`]."] + pub fn resign_candidacy( + &self, + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Society", "resign_candidacy", types::ResignCandidacy {}, @@ -19953,16 +18986,12 @@ pub mod api { ], ) } - #[doc = "Remove a `candidate`'s failed application from the society. Callable by any"] - #[doc = "signed origin but only at the end of the subsequent round and only for"] - #[doc = "a candidate with more rejections than approvals."] - #[doc = ""] - #[doc = "The bid deposit is lost and the voucher is banned."] + #[doc = "See [`Pallet::drop_candidate`]."] pub fn drop_candidate( &self, candidate: types::drop_candidate::Candidate, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Society", "drop_candidate", types::DropCandidate { candidate }, @@ -19973,15 +19002,14 @@ pub mod api { ], ) } - #[doc = "Remove up to `max` stale votes for the given `candidate`."] - #[doc = ""] - #[doc = "May be called by any Signed origin, but only after the candidate's candidacy is ended."] + #[doc = "See [`Pallet::cleanup_candidacy`]."] pub fn cleanup_candidacy( &self, candidate: types::cleanup_candidacy::Candidate, max: types::cleanup_candidacy::Max, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Society", "cleanup_candidacy", types::CleanupCandidacy { candidate, max }, @@ -19993,15 +19021,14 @@ pub mod api { ], ) } - #[doc = "Remove up to `max` stale votes for the defender in the given `challenge_round`."] - #[doc = ""] - #[doc = "May be called by any Signed origin, but only after the challenge round is ended."] + #[doc = "See [`Pallet::cleanup_challenge`]."] pub fn cleanup_challenge( &self, challenge_round: types::cleanup_challenge::ChallengeRound, max: types::cleanup_challenge::Max, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Society", "cleanup_challenge", types::CleanupChallenge { @@ -20023,37 +19050,37 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The society is founded by the given identity."] pub struct Founded { pub founder: founded::Founder, } pub mod founded { use super::runtime_types; - pub type Founder = ::subxt::utils::AccountId32; + pub type Founder = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for Founded { + impl ::subxt::ext::subxt_core::events::StaticEvent for Founded { const PALLET: &'static str = "Society"; const EVENT: &'static str = "Founded"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A membership bid just happened. The given account is the candidate's ID and their offer"] #[doc = "is the second."] pub struct Bid { @@ -20062,23 +19089,23 @@ pub mod api { } pub mod bid { use super::runtime_types; - pub type CandidateId = ::subxt::utils::AccountId32; + pub type CandidateId = ::subxt::ext::subxt_core::utils::AccountId32; pub type Offer = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Bid { + impl ::subxt::ext::subxt_core::events::StaticEvent for Bid { const PALLET: &'static str = "Society"; const EVENT: &'static str = "Bid"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A membership bid just happened by vouching. The given account is the candidate's ID and"] #[doc = "their offer is the second. The vouching party is the third."] pub struct Vouch { @@ -20088,90 +19115,90 @@ pub mod api { } pub mod vouch { use super::runtime_types; - pub type CandidateId = ::subxt::utils::AccountId32; + pub type CandidateId = ::subxt::ext::subxt_core::utils::AccountId32; pub type Offer = ::core::primitive::u128; - pub type Vouching = ::subxt::utils::AccountId32; + pub type Vouching = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for Vouch { + impl ::subxt::ext::subxt_core::events::StaticEvent for Vouch { const PALLET: &'static str = "Society"; const EVENT: &'static str = "Vouch"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A candidate was dropped (due to an excess of bids in the system)."] pub struct AutoUnbid { pub candidate: auto_unbid::Candidate, } pub mod auto_unbid { use super::runtime_types; - pub type Candidate = ::subxt::utils::AccountId32; + pub type Candidate = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for AutoUnbid { + impl ::subxt::ext::subxt_core::events::StaticEvent for AutoUnbid { const PALLET: &'static str = "Society"; const EVENT: &'static str = "AutoUnbid"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A candidate was dropped (by their request)."] pub struct Unbid { pub candidate: unbid::Candidate, } pub mod unbid { use super::runtime_types; - pub type Candidate = ::subxt::utils::AccountId32; + pub type Candidate = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for Unbid { + impl ::subxt::ext::subxt_core::events::StaticEvent for Unbid { const PALLET: &'static str = "Society"; const EVENT: &'static str = "Unbid"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A candidate was dropped (by request of who vouched for them)."] pub struct Unvouch { pub candidate: unvouch::Candidate, } pub mod unvouch { use super::runtime_types; - pub type Candidate = ::subxt::utils::AccountId32; + pub type Candidate = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for Unvouch { + impl ::subxt::ext::subxt_core::events::StaticEvent for Unvouch { const PALLET: &'static str = "Society"; const EVENT: &'static str = "Unvouch"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A group of candidates have been inducted. The batch's primary is the first value, the"] #[doc = "batch in full is the second."] pub struct Inducted { @@ -20180,23 +19207,25 @@ pub mod api { } pub mod inducted { use super::runtime_types; - pub type Primary = ::subxt::utils::AccountId32; - pub type Candidates = ::std::vec::Vec<::subxt::utils::AccountId32>; + pub type Primary = ::subxt::ext::subxt_core::utils::AccountId32; + pub type Candidates = ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >; } - impl ::subxt::events::StaticEvent for Inducted { + impl ::subxt::ext::subxt_core::events::StaticEvent for Inducted { const PALLET: &'static str = "Society"; const EVENT: &'static str = "Inducted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A suspended member has been judged."] pub struct SuspendedMemberJudgement { pub who: suspended_member_judgement::Who, @@ -20204,89 +19233,89 @@ pub mod api { } pub mod suspended_member_judgement { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Judged = ::core::primitive::bool; } - impl ::subxt::events::StaticEvent for SuspendedMemberJudgement { + impl ::subxt::ext::subxt_core::events::StaticEvent for SuspendedMemberJudgement { const PALLET: &'static str = "Society"; const EVENT: &'static str = "SuspendedMemberJudgement"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A candidate has been suspended"] pub struct CandidateSuspended { pub candidate: candidate_suspended::Candidate, } pub mod candidate_suspended { use super::runtime_types; - pub type Candidate = ::subxt::utils::AccountId32; + pub type Candidate = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for CandidateSuspended { + impl ::subxt::ext::subxt_core::events::StaticEvent for CandidateSuspended { const PALLET: &'static str = "Society"; const EVENT: &'static str = "CandidateSuspended"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A member has been suspended"] pub struct MemberSuspended { pub member: member_suspended::Member, } pub mod member_suspended { use super::runtime_types; - pub type Member = ::subxt::utils::AccountId32; + pub type Member = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for MemberSuspended { + impl ::subxt::ext::subxt_core::events::StaticEvent for MemberSuspended { const PALLET: &'static str = "Society"; const EVENT: &'static str = "MemberSuspended"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A member has been challenged"] pub struct Challenged { pub member: challenged::Member, } pub mod challenged { use super::runtime_types; - pub type Member = ::subxt::utils::AccountId32; + pub type Member = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for Challenged { + impl ::subxt::ext::subxt_core::events::StaticEvent for Challenged { const PALLET: &'static str = "Society"; const EVENT: &'static str = "Challenged"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A vote has been placed"] pub struct Vote { pub candidate: vote::Candidate, @@ -20295,24 +19324,24 @@ pub mod api { } pub mod vote { use super::runtime_types; - pub type Candidate = ::subxt::utils::AccountId32; - pub type Voter = ::subxt::utils::AccountId32; + pub type Candidate = ::subxt::ext::subxt_core::utils::AccountId32; + pub type Voter = ::subxt::ext::subxt_core::utils::AccountId32; pub type Vote = ::core::primitive::bool; } - impl ::subxt::events::StaticEvent for Vote { + impl ::subxt::ext::subxt_core::events::StaticEvent for Vote { const PALLET: &'static str = "Society"; const EVENT: &'static str = "Vote"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A vote has been placed for a defending member"] pub struct DefenderVote { pub voter: defender_vote::Voter, @@ -20320,23 +19349,23 @@ pub mod api { } pub mod defender_vote { use super::runtime_types; - pub type Voter = ::subxt::utils::AccountId32; + pub type Voter = ::subxt::ext::subxt_core::utils::AccountId32; pub type Vote = ::core::primitive::bool; } - impl ::subxt::events::StaticEvent for DefenderVote { + impl ::subxt::ext::subxt_core::events::StaticEvent for DefenderVote { const PALLET: &'static str = "Society"; const EVENT: &'static str = "DefenderVote"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A new set of \\[params\\] has been set for the group."] pub struct NewParams { pub params: new_params::Params, @@ -20346,42 +19375,42 @@ pub mod api { pub type Params = runtime_types::pallet_society::GroupParams<::core::primitive::u128>; } - impl ::subxt::events::StaticEvent for NewParams { + impl ::subxt::ext::subxt_core::events::StaticEvent for NewParams { const PALLET: &'static str = "Society"; const EVENT: &'static str = "NewParams"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Society is unfounded."] pub struct Unfounded { pub founder: unfounded::Founder, } pub mod unfounded { use super::runtime_types; - pub type Founder = ::subxt::utils::AccountId32; + pub type Founder = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for Unfounded { + impl ::subxt::ext::subxt_core::events::StaticEvent for Unfounded { const PALLET: &'static str = "Society"; const EVENT: &'static str = "Unfounded"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some funds were deposited into the society account."] pub struct Deposit { pub value: deposit::Value, @@ -20390,20 +19419,20 @@ pub mod api { use super::runtime_types; pub type Value = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Deposit { + impl ::subxt::ext::subxt_core::events::StaticEvent for Deposit { const PALLET: &'static str = "Society"; const EVENT: &'static str = "Deposit"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A \\[member\\] got elevated to \\[rank\\]."] pub struct Elevated { pub member: elevated::Member, @@ -20411,10 +19440,10 @@ pub mod api { } pub mod elevated { use super::runtime_types; - pub type Member = ::subxt::utils::AccountId32; + pub type Member = ::subxt::ext::subxt_core::utils::AccountId32; pub type Rank = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for Elevated { + impl ::subxt::ext::subxt_core::events::StaticEvent for Elevated { const PALLET: &'static str = "Society"; const EVENT: &'static str = "Elevated"; } @@ -20434,31 +19463,31 @@ pub mod api { } pub mod founder { use super::runtime_types; - pub type Founder = ::subxt::utils::AccountId32; + pub type Founder = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod head { use super::runtime_types; - pub type Head = ::subxt::utils::AccountId32; + pub type Head = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod rules { use super::runtime_types; - pub type Rules = ::subxt::utils::H256; + pub type Rules = ::subxt::ext::subxt_core::utils::H256; } pub mod members { use super::runtime_types; pub type Members = runtime_types::pallet_society::MemberRecord; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod payouts { use super::runtime_types; pub type Payouts = runtime_types::pallet_society::PayoutRecord< ::core::primitive::u128, - runtime_types::bounded_collections::bounded_vec::BoundedVec<( + runtime_types::bounded_collections::bounded_vec::BoundedVec15<( ::core::primitive::u32, ::core::primitive::u128, )>, >; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod member_count { use super::runtime_types; @@ -20466,13 +19495,13 @@ pub mod api { } pub mod member_by_index { use super::runtime_types; - pub type MemberByIndex = ::subxt::utils::AccountId32; + pub type MemberByIndex = ::subxt::ext::subxt_core::utils::AccountId32; pub type Param0 = ::core::primitive::u32; } pub mod suspended_members { use super::runtime_types; pub type SuspendedMembers = runtime_types::pallet_society::MemberRecord; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod round_count { use super::runtime_types; @@ -20480,9 +19509,9 @@ pub mod api { } pub mod bids { use super::runtime_types; - pub type Bids = runtime_types::bounded_collections::bounded_vec::BoundedVec< + pub type Bids = runtime_types::bounded_collections::bounded_vec::BoundedVec20< runtime_types::pallet_society::Bid< - ::subxt::utils::AccountId32, + ::subxt::ext::subxt_core::utils::AccountId32, ::core::primitive::u128, >, >; @@ -20490,33 +19519,33 @@ pub mod api { pub mod candidates { use super::runtime_types; pub type Candidates = runtime_types::pallet_society::Candidacy< - ::subxt::utils::AccountId32, + ::subxt::ext::subxt_core::utils::AccountId32, ::core::primitive::u128, >; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod skeptic { use super::runtime_types; - pub type Skeptic = ::subxt::utils::AccountId32; + pub type Skeptic = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod votes { use super::runtime_types; pub type Votes = runtime_types::pallet_society::Vote; - pub type Param0 = ::subxt::utils::AccountId32; - pub type Param1 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; + pub type Param1 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod vote_clear_cursor { use super::runtime_types; pub type VoteClearCursor = - runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::bounded_collections::bounded_vec::BoundedVec5< ::core::primitive::u8, >; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod next_head { use super::runtime_types; pub type NextHead = runtime_types::pallet_society::IntakeRecord< - ::subxt::utils::AccountId32, + ::subxt::ext::subxt_core::utils::AccountId32, ::core::primitive::u128, >; } @@ -20527,8 +19556,8 @@ pub mod api { pub mod defending { use super::runtime_types; pub type Defending = ( - ::subxt::utils::AccountId32, - ::subxt::utils::AccountId32, + ::subxt::ext::subxt_core::utils::AccountId32, + ::subxt::ext::subxt_core::utils::AccountId32, runtime_types::pallet_society::Tally, ); } @@ -20536,7 +19565,7 @@ pub mod api { use super::runtime_types; pub type DefenderVotes = runtime_types::pallet_society::Vote; pub type Param0 = ::core::primitive::u32; - pub type Param1 = ::subxt::utils::AccountId32; + pub type Param1 = ::subxt::ext::subxt_core::utils::AccountId32; } } pub struct StorageApi; @@ -20544,14 +19573,14 @@ pub mod api { #[doc = " The max number of members for the society at one time."] pub fn parameters( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::parameters::Parameters, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "Parameters", (), @@ -20566,14 +19595,14 @@ pub mod api { #[doc = " Amount of our account balance that is specifically for the next round's bid(s)."] pub fn pot( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::pot::Pot, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "Pot", (), @@ -20587,14 +19616,14 @@ pub mod api { #[doc = " The first member."] pub fn founder( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::founder::Founder, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "Founder", (), @@ -20608,14 +19637,14 @@ pub mod api { #[doc = " The most primary from the most recently approved rank 0 members in the society."] pub fn head( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::head::Head, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "Head", (), @@ -20630,14 +19659,14 @@ pub mod api { #[doc = " only by the founder."] pub fn rules( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::rules::Rules, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "Rules", (), @@ -20652,14 +19681,14 @@ pub mod api { #[doc = " The current members and their rank. Doesn't include `SuspendedMembers`."] pub fn members_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::members::Members, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "Members", (), @@ -20673,18 +19702,22 @@ pub mod api { #[doc = " The current members and their rank. Doesn't include `SuspendedMembers`."] pub fn members( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::members::Param0, + >, types::members::Members, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "Members", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 207u8, 227u8, 130u8, 247u8, 29u8, 198u8, 129u8, 83u8, 3u8, 6u8, 19u8, 37u8, 163u8, 227u8, 0u8, 94u8, 8u8, 166u8, 111u8, 70u8, 101u8, 65u8, @@ -20695,14 +19728,14 @@ pub mod api { #[doc = " Information regarding rank-0 payouts, past and future."] pub fn payouts_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::payouts::Payouts, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "Payouts", (), @@ -20716,18 +19749,22 @@ pub mod api { #[doc = " Information regarding rank-0 payouts, past and future."] pub fn payouts( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::payouts::Param0, + >, types::payouts::Payouts, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "Payouts", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 251u8, 249u8, 170u8, 219u8, 131u8, 113u8, 178u8, 165u8, 173u8, 36u8, 175u8, 199u8, 57u8, 188u8, 59u8, 226u8, 4u8, 45u8, 36u8, 173u8, 113u8, @@ -20738,14 +19775,14 @@ pub mod api { #[doc = " The number of items in `Members` currently. (Doesn't include `SuspendedMembers`.)"] pub fn member_count( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::member_count::MemberCount, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "MemberCount", (), @@ -20761,14 +19798,14 @@ pub mod api { #[doc = " `0..MemberCount` (does not include `MemberCount`)."] pub fn member_by_index_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::member_by_index::MemberByIndex, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "MemberByIndex", (), @@ -20784,18 +19821,22 @@ pub mod api { #[doc = " `0..MemberCount` (does not include `MemberCount`)."] pub fn member_by_index( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::member_by_index::Param0, + >, types::member_by_index::MemberByIndex, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "MemberByIndex", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 13u8, 233u8, 212u8, 149u8, 220u8, 158u8, 17u8, 27u8, 201u8, 61u8, 202u8, 248u8, 192u8, 37u8, 199u8, 73u8, 32u8, 140u8, 204u8, 206u8, @@ -20807,14 +19848,14 @@ pub mod api { #[doc = " The set of suspended members, with their old membership record."] pub fn suspended_members_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::suspended_members::SuspendedMembers, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "SuspendedMembers", (), @@ -20829,18 +19870,22 @@ pub mod api { #[doc = " The set of suspended members, with their old membership record."] pub fn suspended_members( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::suspended_members::Param0, + >, types::suspended_members::SuspendedMembers, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "SuspendedMembers", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 156u8, 11u8, 75u8, 79u8, 74u8, 79u8, 98u8, 89u8, 63u8, 83u8, 84u8, 249u8, 177u8, 227u8, 113u8, 21u8, 26u8, 165u8, 129u8, 5u8, 129u8, @@ -20852,14 +19897,14 @@ pub mod api { #[doc = " The number of rounds which have passed."] pub fn round_count( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::round_count::RoundCount, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "RoundCount", (), @@ -20874,14 +19919,14 @@ pub mod api { #[doc = " The current bids, stored ordered by the value of the bid."] pub fn bids( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::bids::Bids, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "Bids", (), @@ -20894,14 +19939,14 @@ pub mod api { } pub fn candidates_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::candidates::Candidates, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "Candidates", (), @@ -20914,18 +19959,22 @@ pub mod api { } pub fn candidates( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::candidates::Param0, + >, types::candidates::Candidates, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "Candidates", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 52u8, 250u8, 201u8, 163u8, 0u8, 5u8, 156u8, 84u8, 96u8, 130u8, 228u8, 205u8, 34u8, 75u8, 121u8, 209u8, 82u8, 15u8, 247u8, 21u8, 54u8, 177u8, @@ -20936,14 +19985,14 @@ pub mod api { #[doc = " The current skeptic."] pub fn skeptic( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::skeptic::Skeptic, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "Skeptic", (), @@ -20958,14 +20007,14 @@ pub mod api { #[doc = " Double map from Candidate -> Voter -> (Maybe) Vote."] pub fn votes_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::votes::Votes, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "Votes", (), @@ -20980,18 +20029,22 @@ pub mod api { #[doc = " Double map from Candidate -> Voter -> (Maybe) Vote."] pub fn votes_iter1( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::votes::Param0, + >, types::votes::Votes, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "Votes", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 34u8, 201u8, 151u8, 130u8, 149u8, 159u8, 32u8, 201u8, 127u8, 178u8, 77u8, 214u8, 73u8, 158u8, 11u8, 247u8, 188u8, 156u8, 146u8, 59u8, @@ -21003,24 +20056,32 @@ pub mod api { #[doc = " Double map from Candidate -> Voter -> (Maybe) Vote."] pub fn votes( &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< ( - ::subxt::storage::address::StaticStorageKey, - ::subxt::storage::address::StaticStorageKey, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::votes::Param0, + >, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::votes::Param1, + >, ), types::votes::Votes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "Votes", ( - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), ), [ 34u8, 201u8, 151u8, 130u8, 149u8, 159u8, 32u8, 201u8, 127u8, 178u8, @@ -21033,14 +20094,14 @@ pub mod api { #[doc = " Clear-cursor for Vote, map from Candidate -> (Maybe) Cursor."] pub fn vote_clear_cursor_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::vote_clear_cursor::VoteClearCursor, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "VoteClearCursor", (), @@ -21055,18 +20116,22 @@ pub mod api { #[doc = " Clear-cursor for Vote, map from Candidate -> (Maybe) Cursor."] pub fn vote_clear_cursor( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::vote_clear_cursor::Param0, + >, types::vote_clear_cursor::VoteClearCursor, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "VoteClearCursor", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 157u8, 200u8, 216u8, 228u8, 235u8, 144u8, 13u8, 111u8, 252u8, 213u8, 209u8, 114u8, 157u8, 159u8, 47u8, 125u8, 45u8, 152u8, 27u8, 145u8, @@ -21080,14 +20145,14 @@ pub mod api { #[doc = " become the new `Head`."] pub fn next_head( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::next_head::NextHead, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "NextHead", (), @@ -21101,14 +20166,14 @@ pub mod api { #[doc = " The number of challenge rounds there have been. Used to identify stale DefenderVotes."] pub fn challenge_round_count( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::challenge_round_count::ChallengeRoundCount, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "ChallengeRoundCount", (), @@ -21122,14 +20187,14 @@ pub mod api { #[doc = " The defending member currently being challenged, along with a running tally of votes."] pub fn defending( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::defending::Defending, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "Defending", (), @@ -21143,14 +20208,14 @@ pub mod api { #[doc = " Votes for the defender, keyed by challenge round."] pub fn defender_votes_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::defender_votes::DefenderVotes, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "DefenderVotes", (), @@ -21165,18 +20230,22 @@ pub mod api { #[doc = " Votes for the defender, keyed by challenge round."] pub fn defender_votes_iter1( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::defender_votes::Param0, + >, types::defender_votes::DefenderVotes, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "DefenderVotes", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 208u8, 137u8, 138u8, 215u8, 215u8, 207u8, 236u8, 140u8, 175u8, 50u8, 110u8, 228u8, 48u8, 174u8, 16u8, 59u8, 72u8, 108u8, 7u8, 183u8, 119u8, @@ -21188,24 +20257,32 @@ pub mod api { #[doc = " Votes for the defender, keyed by challenge round."] pub fn defender_votes( &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< ( - ::subxt::storage::address::StaticStorageKey, - ::subxt::storage::address::StaticStorageKey, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::defender_votes::Param0, + >, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::defender_votes::Param1, + >, ), types::defender_votes::DefenderVotes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Society", "DefenderVotes", ( - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), ), [ 208u8, 137u8, 138u8, 215u8, 215u8, 207u8, 236u8, 140u8, 175u8, 50u8, @@ -21224,9 +20301,10 @@ pub mod api { #[doc = " The societies's pallet id"] pub fn pallet_id( &self, - ) -> ::subxt::constants::Address - { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address< + runtime_types::frame_support::PalletId, + > { + ::subxt::ext::subxt_core::constants::Address::new_static( "Society", "PalletId", [ @@ -21237,8 +20315,11 @@ pub mod api { ) } #[doc = " The maximum number of strikes before a member gets funds slashed."] - pub fn grace_strikes(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn grace_strikes( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Society", "GraceStrikes", [ @@ -21250,8 +20331,11 @@ pub mod api { ) } #[doc = " The amount of incentive paid within each period. Doesn't include VoterTip."] - pub fn period_spend(&self) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + pub fn period_spend( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Society", "PeriodSpend", [ @@ -21263,8 +20347,11 @@ pub mod api { } #[doc = " The number of blocks on which new candidates should be voted on. Together with"] #[doc = " `ClaimPeriod`, this sums to the number of blocks between candidate intake periods."] - pub fn voting_period(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn voting_period( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Society", "VotingPeriod", [ @@ -21277,8 +20364,11 @@ pub mod api { } #[doc = " The number of blocks on which new candidates can claim their membership and be the"] #[doc = " named head."] - pub fn claim_period(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn claim_period( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Society", "ClaimPeriod", [ @@ -21292,8 +20382,9 @@ pub mod api { #[doc = " The maximum duration of the payout lock."] pub fn max_lock_duration( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Society", "MaxLockDuration", [ @@ -21307,8 +20398,9 @@ pub mod api { #[doc = " The number of blocks between membership challenges."] pub fn challenge_period( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Society", "ChallengePeriod", [ @@ -21320,8 +20412,11 @@ pub mod api { ) } #[doc = " The maximum number of payouts a member may have waiting unclaimed."] - pub fn max_payouts(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn max_payouts( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Society", "MaxPayouts", [ @@ -21333,8 +20428,11 @@ pub mod api { ) } #[doc = " The maximum number of bids at once."] - pub fn max_bids(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn max_bids( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Society", "MaxBids", [ @@ -21362,95 +20460,85 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Send a call through a recovered account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and registered to"] - #[doc = "be able to make calls on behalf of the recovered account."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `account`: The recovered account you want to make a call on-behalf-of."] - #[doc = "- `call`: The call you want to make with the recovered account."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::as_recovered`]."] pub struct AsRecovered { pub account: as_recovered::Account, - pub call: ::std::boxed::Box, + pub call: ::subxt::ext::subxt_core::alloc::boxed::Box, } pub mod as_recovered { use super::runtime_types; - pub type Account = - ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Account = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type Call = runtime_types::rococo_runtime::RuntimeCall; } - impl ::subxt::blocks::StaticExtrinsic for AsRecovered { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for AsRecovered { const PALLET: &'static str = "Recovery"; const CALL: &'static str = "as_recovered"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Allow ROOT to bypass the recovery process and set an a rescuer account"] - #[doc = "for a lost account directly."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _ROOT_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `lost`: The \"lost account\" to be recovered."] - #[doc = "- `rescuer`: The \"rescuer account\" which can call as the lost account."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_recovered`]."] pub struct SetRecovered { pub lost: set_recovered::Lost, pub rescuer: set_recovered::Rescuer, } pub mod set_recovered { use super::runtime_types; - pub type Lost = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; - pub type Rescuer = - ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Lost = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; + pub type Rescuer = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; } - impl ::subxt::blocks::StaticExtrinsic for SetRecovered { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetRecovered { const PALLET: &'static str = "Recovery"; const CALL: &'static str = "set_recovered"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Create a recovery configuration for your account. This makes your account recoverable."] - #[doc = ""] - #[doc = "Payment: `ConfigDepositBase` + `FriendDepositFactor` * #_of_friends balance"] - #[doc = "will be reserved for storing the recovery configuration. This deposit is returned"] - #[doc = "in full when the user calls `remove_recovery`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `friends`: A list of friends you trust to vouch for recovery attempts. Should be"] - #[doc = " ordered and contain no duplicate values."] - #[doc = "- `threshold`: The number of friends that must vouch for a recovery attempt before the"] - #[doc = " account can be recovered. Should be less than or equal to the length of the list of"] - #[doc = " friends."] - #[doc = "- `delay_period`: The number of blocks after a recovery attempt is initialized that"] - #[doc = " needs to pass before the account can be recovered."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::create_recovery`]."] pub struct CreateRecovery { pub friends: create_recovery::Friends, pub threshold: create_recovery::Threshold, @@ -21458,247 +20546,217 @@ pub mod api { } pub mod create_recovery { use super::runtime_types; - pub type Friends = ::std::vec::Vec<::subxt::utils::AccountId32>; + pub type Friends = ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >; pub type Threshold = ::core::primitive::u16; pub type DelayPeriod = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for CreateRecovery { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for CreateRecovery { const PALLET: &'static str = "Recovery"; const CALL: &'static str = "create_recovery"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Initiate the process for recovering a recoverable account."] - #[doc = ""] - #[doc = "Payment: `RecoveryDeposit` balance will be reserved for initiating the"] - #[doc = "recovery process. This deposit will always be repatriated to the account"] - #[doc = "trying to be recovered. See `close_recovery`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `account`: The lost account that you want to recover. This account needs to be"] - #[doc = " recoverable (i.e. have a recovery configuration)."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::initiate_recovery`]."] pub struct InitiateRecovery { pub account: initiate_recovery::Account, } pub mod initiate_recovery { use super::runtime_types; - pub type Account = - ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Account = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; } - impl ::subxt::blocks::StaticExtrinsic for InitiateRecovery { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for InitiateRecovery { const PALLET: &'static str = "Recovery"; const CALL: &'static str = "initiate_recovery"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Allow a \"friend\" of a recoverable account to vouch for an active recovery"] - #[doc = "process for that account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and must be a \"friend\""] - #[doc = "for the recoverable account."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `lost`: The lost account that you want to recover."] - #[doc = "- `rescuer`: The account trying to rescue the lost account that you want to vouch for."] - #[doc = ""] - #[doc = "The combination of these two parameters must point to an active recovery"] - #[doc = "process."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::vouch_recovery`]."] pub struct VouchRecovery { pub lost: vouch_recovery::Lost, pub rescuer: vouch_recovery::Rescuer, } pub mod vouch_recovery { use super::runtime_types; - pub type Lost = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; - pub type Rescuer = - ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Lost = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; + pub type Rescuer = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; } - impl ::subxt::blocks::StaticExtrinsic for VouchRecovery { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for VouchRecovery { const PALLET: &'static str = "Recovery"; const CALL: &'static str = "vouch_recovery"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Allow a successful rescuer to claim their recovered account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and must be a \"rescuer\""] - #[doc = "who has successfully completed the account recovery process: collected"] - #[doc = "`threshold` or more vouches, waited `delay_period` blocks since initiation."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `account`: The lost account that you want to claim has been successfully recovered by"] - #[doc = " you."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::claim_recovery`]."] pub struct ClaimRecovery { pub account: claim_recovery::Account, } pub mod claim_recovery { use super::runtime_types; - pub type Account = - ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Account = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; } - impl ::subxt::blocks::StaticExtrinsic for ClaimRecovery { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ClaimRecovery { const PALLET: &'static str = "Recovery"; const CALL: &'static str = "claim_recovery"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "As the controller of a recoverable account, close an active recovery"] - #[doc = "process for your account."] - #[doc = ""] - #[doc = "Payment: By calling this function, the recoverable account will receive"] - #[doc = "the recovery deposit `RecoveryDeposit` placed by the rescuer."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and must be a"] - #[doc = "recoverable account with an active recovery process for it."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `rescuer`: The account trying to rescue this recoverable account."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::close_recovery`]."] pub struct CloseRecovery { pub rescuer: close_recovery::Rescuer, } pub mod close_recovery { use super::runtime_types; - pub type Rescuer = - ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Rescuer = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; } - impl ::subxt::blocks::StaticExtrinsic for CloseRecovery { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for CloseRecovery { const PALLET: &'static str = "Recovery"; const CALL: &'static str = "close_recovery"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Remove the recovery process for your account. Recovered accounts are still accessible."] - #[doc = ""] - #[doc = "NOTE: The user must make sure to call `close_recovery` on all active"] - #[doc = "recovery attempts before calling this function else it will fail."] - #[doc = ""] - #[doc = "Payment: By calling this function the recoverable account will unreserve"] - #[doc = "their recovery configuration deposit."] - #[doc = "(`ConfigDepositBase` + `FriendDepositFactor` * #_of_friends)"] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and must be a"] - #[doc = "recoverable account (i.e. has a recovery configuration)."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::remove_recovery`]."] pub struct RemoveRecovery; - impl ::subxt::blocks::StaticExtrinsic for RemoveRecovery { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RemoveRecovery { const PALLET: &'static str = "Recovery"; const CALL: &'static str = "remove_recovery"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Cancel the ability to use `as_recovered` for `account`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and registered to"] - #[doc = "be able to make calls on behalf of the recovered account."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `account`: The recovered account you are able to call on-behalf-of."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::cancel_recovered`]."] pub struct CancelRecovered { pub account: cancel_recovered::Account, } pub mod cancel_recovered { use super::runtime_types; - pub type Account = - ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Account = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; } - impl ::subxt::blocks::StaticExtrinsic for CancelRecovered { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for CancelRecovered { const PALLET: &'static str = "Recovery"; const CALL: &'static str = "cancel_recovered"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Send a call through a recovered account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and registered to"] - #[doc = "be able to make calls on behalf of the recovered account."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `account`: The recovered account you want to make a call on-behalf-of."] - #[doc = "- `call`: The call you want to make with the recovered account."] + #[doc = "See [`Pallet::as_recovered`]."] pub fn as_recovered( &self, account: types::as_recovered::Account, call: types::as_recovered::Call, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Recovery", "as_recovered", types::AsRecovered { account, - call: ::std::boxed::Box::new(call), + call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), }, [ - 135u8, 12u8, 48u8, 186u8, 171u8, 82u8, 254u8, 243u8, 245u8, 181u8, - 120u8, 28u8, 237u8, 197u8, 36u8, 204u8, 118u8, 98u8, 112u8, 129u8, - 95u8, 226u8, 68u8, 252u8, 55u8, 72u8, 164u8, 40u8, 121u8, 195u8, 128u8, - 12u8, + 132u8, 94u8, 18u8, 16u8, 239u8, 67u8, 148u8, 125u8, 211u8, 36u8, 235u8, + 248u8, 182u8, 156u8, 31u8, 86u8, 222u8, 157u8, 184u8, 224u8, 140u8, + 128u8, 168u8, 185u8, 169u8, 179u8, 67u8, 196u8, 157u8, 249u8, 228u8, + 33u8, ], ) } - #[doc = "Allow ROOT to bypass the recovery process and set an a rescuer account"] - #[doc = "for a lost account directly."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _ROOT_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `lost`: The \"lost account\" to be recovered."] - #[doc = "- `rescuer`: The \"rescuer account\" which can call as the lost account."] + #[doc = "See [`Pallet::set_recovered`]."] pub fn set_recovered( &self, lost: types::set_recovered::Lost, rescuer: types::set_recovered::Rescuer, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Recovery", "set_recovered", types::SetRecovered { lost, rescuer }, @@ -21709,29 +20767,14 @@ pub mod api { ], ) } - #[doc = "Create a recovery configuration for your account. This makes your account recoverable."] - #[doc = ""] - #[doc = "Payment: `ConfigDepositBase` + `FriendDepositFactor` * #_of_friends balance"] - #[doc = "will be reserved for storing the recovery configuration. This deposit is returned"] - #[doc = "in full when the user calls `remove_recovery`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `friends`: A list of friends you trust to vouch for recovery attempts. Should be"] - #[doc = " ordered and contain no duplicate values."] - #[doc = "- `threshold`: The number of friends that must vouch for a recovery attempt before the"] - #[doc = " account can be recovered. Should be less than or equal to the length of the list of"] - #[doc = " friends."] - #[doc = "- `delay_period`: The number of blocks after a recovery attempt is initialized that"] - #[doc = " needs to pass before the account can be recovered."] + #[doc = "See [`Pallet::create_recovery`]."] pub fn create_recovery( &self, friends: types::create_recovery::Friends, threshold: types::create_recovery::Threshold, delay_period: types::create_recovery::DelayPeriod, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Recovery", "create_recovery", types::CreateRecovery { @@ -21746,22 +20789,13 @@ pub mod api { ], ) } - #[doc = "Initiate the process for recovering a recoverable account."] - #[doc = ""] - #[doc = "Payment: `RecoveryDeposit` balance will be reserved for initiating the"] - #[doc = "recovery process. This deposit will always be repatriated to the account"] - #[doc = "trying to be recovered. See `close_recovery`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `account`: The lost account that you want to recover. This account needs to be"] - #[doc = " recoverable (i.e. have a recovery configuration)."] + #[doc = "See [`Pallet::initiate_recovery`]."] pub fn initiate_recovery( &self, account: types::initiate_recovery::Account, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Recovery", "initiate_recovery", types::InitiateRecovery { account }, @@ -21772,24 +20806,13 @@ pub mod api { ], ) } - #[doc = "Allow a \"friend\" of a recoverable account to vouch for an active recovery"] - #[doc = "process for that account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and must be a \"friend\""] - #[doc = "for the recoverable account."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `lost`: The lost account that you want to recover."] - #[doc = "- `rescuer`: The account trying to rescue the lost account that you want to vouch for."] - #[doc = ""] - #[doc = "The combination of these two parameters must point to an active recovery"] - #[doc = "process."] + #[doc = "See [`Pallet::vouch_recovery`]."] pub fn vouch_recovery( &self, lost: types::vouch_recovery::Lost, rescuer: types::vouch_recovery::Rescuer, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Recovery", "vouch_recovery", types::VouchRecovery { lost, rescuer }, @@ -21800,20 +20823,12 @@ pub mod api { ], ) } - #[doc = "Allow a successful rescuer to claim their recovered account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and must be a \"rescuer\""] - #[doc = "who has successfully completed the account recovery process: collected"] - #[doc = "`threshold` or more vouches, waited `delay_period` blocks since initiation."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `account`: The lost account that you want to claim has been successfully recovered by"] - #[doc = " you."] + #[doc = "See [`Pallet::claim_recovery`]."] pub fn claim_recovery( &self, account: types::claim_recovery::Account, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Recovery", "claim_recovery", types::ClaimRecovery { account }, @@ -21825,22 +20840,12 @@ pub mod api { ], ) } - #[doc = "As the controller of a recoverable account, close an active recovery"] - #[doc = "process for your account."] - #[doc = ""] - #[doc = "Payment: By calling this function, the recoverable account will receive"] - #[doc = "the recovery deposit `RecoveryDeposit` placed by the rescuer."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and must be a"] - #[doc = "recoverable account with an active recovery process for it."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `rescuer`: The account trying to rescue this recoverable account."] + #[doc = "See [`Pallet::close_recovery`]."] pub fn close_recovery( &self, rescuer: types::close_recovery::Rescuer, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Recovery", "close_recovery", types::CloseRecovery { rescuer }, @@ -21852,19 +20857,11 @@ pub mod api { ], ) } - #[doc = "Remove the recovery process for your account. Recovered accounts are still accessible."] - #[doc = ""] - #[doc = "NOTE: The user must make sure to call `close_recovery` on all active"] - #[doc = "recovery attempts before calling this function else it will fail."] - #[doc = ""] - #[doc = "Payment: By calling this function the recoverable account will unreserve"] - #[doc = "their recovery configuration deposit."] - #[doc = "(`ConfigDepositBase` + `FriendDepositFactor` * #_of_friends)"] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and must be a"] - #[doc = "recoverable account (i.e. has a recovery configuration)."] - pub fn remove_recovery(&self) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + #[doc = "See [`Pallet::remove_recovery`]."] + pub fn remove_recovery( + &self, + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Recovery", "remove_recovery", types::RemoveRecovery {}, @@ -21876,18 +20873,12 @@ pub mod api { ], ) } - #[doc = "Cancel the ability to use `as_recovered` for `account`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and registered to"] - #[doc = "be able to make calls on behalf of the recovered account."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `account`: The recovered account you are able to call on-behalf-of."] + #[doc = "See [`Pallet::cancel_recovered`]."] pub fn cancel_recovered( &self, account: types::cancel_recovered::Account, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Recovery", "cancel_recovered", types::CancelRecovered { account }, @@ -21906,37 +20897,37 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A recovery process has been set up for an account."] pub struct RecoveryCreated { pub account: recovery_created::Account, } pub mod recovery_created { use super::runtime_types; - pub type Account = ::subxt::utils::AccountId32; + pub type Account = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for RecoveryCreated { + impl ::subxt::ext::subxt_core::events::StaticEvent for RecoveryCreated { const PALLET: &'static str = "Recovery"; const EVENT: &'static str = "RecoveryCreated"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A recovery process has been initiated for lost account by rescuer account."] pub struct RecoveryInitiated { pub lost_account: recovery_initiated::LostAccount, @@ -21944,23 +20935,23 @@ pub mod api { } pub mod recovery_initiated { use super::runtime_types; - pub type LostAccount = ::subxt::utils::AccountId32; - pub type RescuerAccount = ::subxt::utils::AccountId32; + pub type LostAccount = ::subxt::ext::subxt_core::utils::AccountId32; + pub type RescuerAccount = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for RecoveryInitiated { + impl ::subxt::ext::subxt_core::events::StaticEvent for RecoveryInitiated { const PALLET: &'static str = "Recovery"; const EVENT: &'static str = "RecoveryInitiated"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A recovery process for lost account by rescuer account has been vouched for by sender."] pub struct RecoveryVouched { pub lost_account: recovery_vouched::LostAccount, @@ -21969,24 +20960,24 @@ pub mod api { } pub mod recovery_vouched { use super::runtime_types; - pub type LostAccount = ::subxt::utils::AccountId32; - pub type RescuerAccount = ::subxt::utils::AccountId32; - pub type Sender = ::subxt::utils::AccountId32; + pub type LostAccount = ::subxt::ext::subxt_core::utils::AccountId32; + pub type RescuerAccount = ::subxt::ext::subxt_core::utils::AccountId32; + pub type Sender = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for RecoveryVouched { + impl ::subxt::ext::subxt_core::events::StaticEvent for RecoveryVouched { const PALLET: &'static str = "Recovery"; const EVENT: &'static str = "RecoveryVouched"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A recovery process for lost account by rescuer account has been closed."] pub struct RecoveryClosed { pub lost_account: recovery_closed::LostAccount, @@ -21994,23 +20985,23 @@ pub mod api { } pub mod recovery_closed { use super::runtime_types; - pub type LostAccount = ::subxt::utils::AccountId32; - pub type RescuerAccount = ::subxt::utils::AccountId32; + pub type LostAccount = ::subxt::ext::subxt_core::utils::AccountId32; + pub type RescuerAccount = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for RecoveryClosed { + impl ::subxt::ext::subxt_core::events::StaticEvent for RecoveryClosed { const PALLET: &'static str = "Recovery"; const EVENT: &'static str = "RecoveryClosed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Lost account has been successfully recovered by rescuer account."] pub struct AccountRecovered { pub lost_account: account_recovered::LostAccount, @@ -22018,32 +21009,32 @@ pub mod api { } pub mod account_recovered { use super::runtime_types; - pub type LostAccount = ::subxt::utils::AccountId32; - pub type RescuerAccount = ::subxt::utils::AccountId32; + pub type LostAccount = ::subxt::ext::subxt_core::utils::AccountId32; + pub type RescuerAccount = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for AccountRecovered { + impl ::subxt::ext::subxt_core::events::StaticEvent for AccountRecovered { const PALLET: &'static str = "Recovery"; const EVENT: &'static str = "AccountRecovered"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A recovery process has been removed for an account."] pub struct RecoveryRemoved { pub lost_account: recovery_removed::LostAccount, } pub mod recovery_removed { use super::runtime_types; - pub type LostAccount = ::subxt::utils::AccountId32; + pub type LostAccount = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for RecoveryRemoved { + impl ::subxt::ext::subxt_core::events::StaticEvent for RecoveryRemoved { const PALLET: &'static str = "Recovery"; const EVENT: &'static str = "RecoveryRemoved"; } @@ -22057,28 +21048,28 @@ pub mod api { pub type Recoverable = runtime_types::pallet_recovery::RecoveryConfig< ::core::primitive::u32, ::core::primitive::u128, - runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::subxt::utils::AccountId32, + runtime_types::bounded_collections::bounded_vec::BoundedVec18< + ::subxt::ext::subxt_core::utils::AccountId32, >, >; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod active_recoveries { use super::runtime_types; pub type ActiveRecoveries = runtime_types::pallet_recovery::ActiveRecovery< ::core::primitive::u32, ::core::primitive::u128, - runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::subxt::utils::AccountId32, + runtime_types::bounded_collections::bounded_vec::BoundedVec18< + ::subxt::ext::subxt_core::utils::AccountId32, >, >; - pub type Param0 = ::subxt::utils::AccountId32; - pub type Param1 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; + pub type Param1 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod proxy { use super::runtime_types; - pub type Proxy = ::subxt::utils::AccountId32; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Proxy = ::subxt::ext::subxt_core::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } } pub struct StorageApi; @@ -22086,14 +21077,14 @@ pub mod api { #[doc = " The set of recoverable accounts and their recovery configuration."] pub fn recoverable_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::recoverable::Recoverable, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Recovery", "Recoverable", (), @@ -22107,18 +21098,22 @@ pub mod api { #[doc = " The set of recoverable accounts and their recovery configuration."] pub fn recoverable( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::recoverable::Param0, + >, types::recoverable::Recoverable, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Recovery", "Recoverable", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 112u8, 7u8, 56u8, 46u8, 138u8, 197u8, 63u8, 234u8, 140u8, 123u8, 145u8, 106u8, 189u8, 190u8, 247u8, 61u8, 250u8, 67u8, 107u8, 42u8, 170u8, @@ -22132,14 +21127,14 @@ pub mod api { #[doc = " is the user trying to recover the account."] pub fn active_recoveries_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::active_recoveries::ActiveRecoveries, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Recovery", "ActiveRecoveries", (), @@ -22157,18 +21152,22 @@ pub mod api { #[doc = " is the user trying to recover the account."] pub fn active_recoveries_iter1( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::active_recoveries::Param0, + >, types::active_recoveries::ActiveRecoveries, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Recovery", "ActiveRecoveries", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 104u8, 252u8, 28u8, 142u8, 48u8, 26u8, 91u8, 201u8, 184u8, 163u8, 180u8, 197u8, 189u8, 71u8, 144u8, 88u8, 225u8, 13u8, 183u8, 84u8, @@ -22183,28 +21182,32 @@ pub mod api { #[doc = " is the user trying to recover the account."] pub fn active_recoveries( &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< ( - ::subxt::storage::address::StaticStorageKey< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::active_recoveries::Param0, >, - ::subxt::storage::address::StaticStorageKey< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::active_recoveries::Param1, >, ), types::active_recoveries::ActiveRecoveries, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Recovery", "ActiveRecoveries", ( - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), ), [ 104u8, 252u8, 28u8, 142u8, 48u8, 26u8, 91u8, 201u8, 184u8, 163u8, @@ -22219,14 +21222,14 @@ pub mod api { #[doc = " Map from the user who can access it to the recovered account."] pub fn proxy_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::proxy::Proxy, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Recovery", "Proxy", (), @@ -22242,18 +21245,22 @@ pub mod api { #[doc = " Map from the user who can access it to the recovered account."] pub fn proxy( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::proxy::Param0, + >, types::proxy::Proxy, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Recovery", "Proxy", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 161u8, 242u8, 17u8, 183u8, 161u8, 47u8, 87u8, 110u8, 201u8, 177u8, 199u8, 157u8, 30u8, 131u8, 49u8, 89u8, 182u8, 86u8, 152u8, 19u8, 199u8, @@ -22273,8 +21280,9 @@ pub mod api { #[doc = " `2 + sizeof(BlockNumber, Balance)` bytes."] pub fn config_deposit_base( &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Recovery", "ConfigDepositBase", [ @@ -22291,8 +21299,9 @@ pub mod api { #[doc = " value."] pub fn friend_deposit_factor( &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Recovery", "FriendDepositFactor", [ @@ -22308,8 +21317,11 @@ pub mod api { #[doc = " not really make sense to have a limit here greater than u16::MAX."] #[doc = " But also, that is a lot more than you should probably set this value"] #[doc = " to anyway..."] - pub fn max_friends(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn max_friends( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Recovery", "MaxFriends", [ @@ -22329,8 +21341,9 @@ pub mod api { #[doc = " threshold."] pub fn recovery_deposit( &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Recovery", "RecoveryDeposit", [ @@ -22357,124 +21370,103 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Unlock any vested funds of the sender account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have funds still"] - #[doc = "locked under this pallet."] - #[doc = ""] - #[doc = "Emits either `VestingCompleted` or `VestingUpdated`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::vest`]."] pub struct Vest; - impl ::subxt::blocks::StaticExtrinsic for Vest { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Vest { const PALLET: &'static str = "Vesting"; const CALL: &'static str = "vest"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Unlock any vested funds of a `target` account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `target`: The account whose vested funds should be unlocked. Must have funds still"] - #[doc = "locked under this pallet."] - #[doc = ""] - #[doc = "Emits either `VestingCompleted` or `VestingUpdated`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::vest_other`]."] pub struct VestOther { pub target: vest_other::Target, } pub mod vest_other { use super::runtime_types; - pub type Target = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Target = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; } - impl ::subxt::blocks::StaticExtrinsic for VestOther { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for VestOther { const PALLET: &'static str = "Vesting"; const CALL: &'static str = "vest_other"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Create a vested transfer."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `target`: The account receiving the vested funds."] - #[doc = "- `schedule`: The vesting schedule attached to the transfer."] - #[doc = ""] - #[doc = "Emits `VestingCreated`."] - #[doc = ""] - #[doc = "NOTE: This will unlock all schedules through the current block."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::vested_transfer`]."] pub struct VestedTransfer { pub target: vested_transfer::Target, pub schedule: vested_transfer::Schedule, } pub mod vested_transfer { use super::runtime_types; - pub type Target = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Target = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type Schedule = runtime_types::pallet_vesting::vesting_info::VestingInfo< ::core::primitive::u128, ::core::primitive::u32, >; } - impl ::subxt::blocks::StaticExtrinsic for VestedTransfer { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for VestedTransfer { const PALLET: &'static str = "Vesting"; const CALL: &'static str = "vested_transfer"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Force a vested transfer."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] - #[doc = ""] - #[doc = "- `source`: The account whose funds should be transferred."] - #[doc = "- `target`: The account that should be transferred the vested funds."] - #[doc = "- `schedule`: The vesting schedule attached to the transfer."] - #[doc = ""] - #[doc = "Emits `VestingCreated`."] - #[doc = ""] - #[doc = "NOTE: This will unlock all schedules through the current block."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_vested_transfer`]."] pub struct ForceVestedTransfer { pub source: force_vested_transfer::Source, pub target: force_vested_transfer::Target, @@ -22482,48 +21474,38 @@ pub mod api { } pub mod force_vested_transfer { use super::runtime_types; - pub type Source = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; - pub type Target = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Source = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; + pub type Target = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type Schedule = runtime_types::pallet_vesting::vesting_info::VestingInfo< ::core::primitive::u128, ::core::primitive::u32, >; } - impl ::subxt::blocks::StaticExtrinsic for ForceVestedTransfer { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceVestedTransfer { const PALLET: &'static str = "Vesting"; const CALL: &'static str = "force_vested_transfer"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Merge two vesting schedules together, creating a new vesting schedule that unlocks over"] - #[doc = "the highest possible start and end blocks. If both schedules have already started the"] - #[doc = "current block will be used as the schedule start; with the caveat that if one schedule"] - #[doc = "is finished by the current block, the other will be treated as the new merged schedule,"] - #[doc = "unmodified."] - #[doc = ""] - #[doc = "NOTE: If `schedule1_index == schedule2_index` this is a no-op."] - #[doc = "NOTE: This will unlock all schedules through the current block prior to merging."] - #[doc = "NOTE: If both schedules have ended by the current block, no new schedule will be created"] - #[doc = "and both will be removed."] - #[doc = ""] - #[doc = "Merged schedule attributes:"] - #[doc = "- `starting_block`: `MAX(schedule1.starting_block, scheduled2.starting_block,"] - #[doc = " current_block)`."] - #[doc = "- `ending_block`: `MAX(schedule1.ending_block, schedule2.ending_block)`."] - #[doc = "- `locked`: `schedule1.locked_at(current_block) + schedule2.locked_at(current_block)`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `schedule1_index`: index of the first schedule to merge."] - #[doc = "- `schedule2_index`: index of the second schedule to merge."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::merge_schedules`]."] pub struct MergeSchedules { pub schedule1_index: merge_schedules::Schedule1Index, pub schedule2_index: merge_schedules::Schedule2Index, @@ -22533,53 +21515,16 @@ pub mod api { pub type Schedule1Index = ::core::primitive::u32; pub type Schedule2Index = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for MergeSchedules { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for MergeSchedules { const PALLET: &'static str = "Vesting"; const CALL: &'static str = "merge_schedules"; } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Force remove a vesting schedule"] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] - #[doc = ""] - #[doc = "- `target`: An account that has a vesting schedule"] - #[doc = "- `schedule_index`: The vesting schedule index that should be removed"] - pub struct ForceRemoveVestingSchedule { - pub target: force_remove_vesting_schedule::Target, - pub schedule_index: force_remove_vesting_schedule::ScheduleIndex, - } - pub mod force_remove_vesting_schedule { - use super::runtime_types; - pub type Target = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; - pub type ScheduleIndex = ::core::primitive::u32; - } - impl ::subxt::blocks::StaticExtrinsic for ForceRemoveVestingSchedule { - const PALLET: &'static str = "Vesting"; - const CALL: &'static str = "force_remove_vesting_schedule"; - } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Unlock any vested funds of the sender account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have funds still"] - #[doc = "locked under this pallet."] - #[doc = ""] - #[doc = "Emits either `VestingCompleted` or `VestingUpdated`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] - pub fn vest(&self) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + #[doc = "See [`Pallet::vest`]."] + pub fn vest(&self) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Vesting", "vest", types::Vest {}, @@ -22591,22 +21536,12 @@ pub mod api { ], ) } - #[doc = "Unlock any vested funds of a `target` account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `target`: The account whose vested funds should be unlocked. Must have funds still"] - #[doc = "locked under this pallet."] - #[doc = ""] - #[doc = "Emits either `VestingCompleted` or `VestingUpdated`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::vest_other`]."] pub fn vest_other( &self, target: types::vest_other::Target, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Vesting", "vest_other", types::VestOther { target }, @@ -22617,25 +21552,13 @@ pub mod api { ], ) } - #[doc = "Create a vested transfer."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `target`: The account receiving the vested funds."] - #[doc = "- `schedule`: The vesting schedule attached to the transfer."] - #[doc = ""] - #[doc = "Emits `VestingCreated`."] - #[doc = ""] - #[doc = "NOTE: This will unlock all schedules through the current block."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::vested_transfer`]."] pub fn vested_transfer( &self, target: types::vested_transfer::Target, schedule: types::vested_transfer::Schedule, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Vesting", "vested_transfer", types::VestedTransfer { target, schedule }, @@ -22646,27 +21569,15 @@ pub mod api { ], ) } - #[doc = "Force a vested transfer."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] - #[doc = ""] - #[doc = "- `source`: The account whose funds should be transferred."] - #[doc = "- `target`: The account that should be transferred the vested funds."] - #[doc = "- `schedule`: The vesting schedule attached to the transfer."] - #[doc = ""] - #[doc = "Emits `VestingCreated`."] - #[doc = ""] - #[doc = "NOTE: This will unlock all schedules through the current block."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::force_vested_transfer`]."] pub fn force_vested_transfer( &self, source: types::force_vested_transfer::Source, target: types::force_vested_transfer::Target, schedule: types::force_vested_transfer::Schedule, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Vesting", "force_vested_transfer", types::ForceVestedTransfer { @@ -22682,33 +21593,13 @@ pub mod api { ], ) } - #[doc = "Merge two vesting schedules together, creating a new vesting schedule that unlocks over"] - #[doc = "the highest possible start and end blocks. If both schedules have already started the"] - #[doc = "current block will be used as the schedule start; with the caveat that if one schedule"] - #[doc = "is finished by the current block, the other will be treated as the new merged schedule,"] - #[doc = "unmodified."] - #[doc = ""] - #[doc = "NOTE: If `schedule1_index == schedule2_index` this is a no-op."] - #[doc = "NOTE: This will unlock all schedules through the current block prior to merging."] - #[doc = "NOTE: If both schedules have ended by the current block, no new schedule will be created"] - #[doc = "and both will be removed."] - #[doc = ""] - #[doc = "Merged schedule attributes:"] - #[doc = "- `starting_block`: `MAX(schedule1.starting_block, scheduled2.starting_block,"] - #[doc = " current_block)`."] - #[doc = "- `ending_block`: `MAX(schedule1.ending_block, schedule2.ending_block)`."] - #[doc = "- `locked`: `schedule1.locked_at(current_block) + schedule2.locked_at(current_block)`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `schedule1_index`: index of the first schedule to merge."] - #[doc = "- `schedule2_index`: index of the second schedule to merge."] + #[doc = "See [`Pallet::merge_schedules`]."] pub fn merge_schedules( &self, schedule1_index: types::merge_schedules::Schedule1Index, schedule2_index: types::merge_schedules::Schedule2Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Vesting", "merge_schedules", types::MergeSchedules { @@ -22722,31 +21613,6 @@ pub mod api { ], ) } - #[doc = "Force remove a vesting schedule"] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] - #[doc = ""] - #[doc = "- `target`: An account that has a vesting schedule"] - #[doc = "- `schedule_index`: The vesting schedule index that should be removed"] - pub fn force_remove_vesting_schedule( - &self, - target: types::force_remove_vesting_schedule::Target, - schedule_index: types::force_remove_vesting_schedule::ScheduleIndex, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Vesting", - "force_remove_vesting_schedule", - types::ForceRemoveVestingSchedule { - target, - schedule_index, - }, - [ - 211u8, 253u8, 60u8, 15u8, 20u8, 53u8, 23u8, 13u8, 45u8, 223u8, 136u8, - 183u8, 162u8, 143u8, 196u8, 188u8, 35u8, 64u8, 174u8, 16u8, 47u8, 13u8, - 147u8, 173u8, 120u8, 143u8, 75u8, 89u8, 128u8, 187u8, 9u8, 18u8, - ], - ) - } } } #[doc = "The `Event` enum of this pallet"] @@ -22754,15 +21620,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The amount vested has been updated. This could indicate a change in funds available."] #[doc = "The balance given is the amount which is left unvested (and thus locked)."] pub struct VestingUpdated { @@ -22771,32 +21637,32 @@ pub mod api { } pub mod vesting_updated { use super::runtime_types; - pub type Account = ::subxt::utils::AccountId32; + pub type Account = ::subxt::ext::subxt_core::utils::AccountId32; pub type Unvested = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for VestingUpdated { + impl ::subxt::ext::subxt_core::events::StaticEvent for VestingUpdated { const PALLET: &'static str = "Vesting"; const EVENT: &'static str = "VestingUpdated"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "An \\[account\\] has become fully vested."] pub struct VestingCompleted { pub account: vesting_completed::Account, } pub mod vesting_completed { use super::runtime_types; - pub type Account = ::subxt::utils::AccountId32; + pub type Account = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for VestingCompleted { + impl ::subxt::ext::subxt_core::events::StaticEvent for VestingCompleted { const PALLET: &'static str = "Vesting"; const EVENT: &'static str = "VestingCompleted"; } @@ -22807,13 +21673,14 @@ pub mod api { use super::runtime_types; pub mod vesting { use super::runtime_types; - pub type Vesting = runtime_types::bounded_collections::bounded_vec::BoundedVec< - runtime_types::pallet_vesting::vesting_info::VestingInfo< - ::core::primitive::u128, - ::core::primitive::u32, - >, - >; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Vesting = + runtime_types::bounded_collections::bounded_vec::BoundedVec21< + runtime_types::pallet_vesting::vesting_info::VestingInfo< + ::core::primitive::u128, + ::core::primitive::u32, + >, + >; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod storage_version { use super::runtime_types; @@ -22825,14 +21692,14 @@ pub mod api { #[doc = " Information regarding the vesting of a given account."] pub fn vesting_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::vesting::Vesting, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Vesting", "Vesting", (), @@ -22847,18 +21714,22 @@ pub mod api { #[doc = " Information regarding the vesting of a given account."] pub fn vesting( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::vesting::Param0, + >, types::vesting::Vesting, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Vesting", "Vesting", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 95u8, 168u8, 217u8, 248u8, 149u8, 86u8, 195u8, 93u8, 73u8, 206u8, 105u8, 165u8, 33u8, 173u8, 232u8, 81u8, 147u8, 254u8, 50u8, 228u8, @@ -22872,14 +21743,14 @@ pub mod api { #[doc = " New networks start with latest version, as determined by the genesis build."] pub fn storage_version( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::storage_version::StorageVersion, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Vesting", "StorageVersion", (), @@ -22899,8 +21770,9 @@ pub mod api { #[doc = " The minimum amount transferred to call `vested_transfer`."] pub fn min_vested_transfer( &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Vesting", "MinVestedTransfer", [ @@ -22912,8 +21784,9 @@ pub mod api { } pub fn max_vesting_schedules( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Vesting", "MaxVestingSchedules", [ @@ -22941,21 +21814,25 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Anonymously schedule a task."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::schedule`]."] pub struct Schedule { pub when: schedule::When, pub maybe_periodic: schedule::MaybePeriodic, pub priority: schedule::Priority, - pub call: ::std::boxed::Box, + pub call: ::subxt::ext::subxt_core::alloc::boxed::Box, } pub mod schedule { use super::runtime_types; @@ -22965,21 +21842,25 @@ pub mod api { pub type Priority = ::core::primitive::u8; pub type Call = runtime_types::rococo_runtime::RuntimeCall; } - impl ::subxt::blocks::StaticExtrinsic for Schedule { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Schedule { const PALLET: &'static str = "Scheduler"; const CALL: &'static str = "schedule"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Cancel an anonymously scheduled task."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::cancel`]."] pub struct Cancel { pub when: cancel::When, pub index: cancel::Index, @@ -22989,27 +21870,31 @@ pub mod api { pub type When = ::core::primitive::u32; pub type Index = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for Cancel { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Cancel { const PALLET: &'static str = "Scheduler"; const CALL: &'static str = "cancel"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Schedule a named task."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::schedule_named`]."] pub struct ScheduleNamed { pub id: schedule_named::Id, pub when: schedule_named::When, pub maybe_periodic: schedule_named::MaybePeriodic, pub priority: schedule_named::Priority, - pub call: ::std::boxed::Box, + pub call: ::subxt::ext::subxt_core::alloc::boxed::Box, } pub mod schedule_named { use super::runtime_types; @@ -23020,21 +21905,25 @@ pub mod api { pub type Priority = ::core::primitive::u8; pub type Call = runtime_types::rococo_runtime::RuntimeCall; } - impl ::subxt::blocks::StaticExtrinsic for ScheduleNamed { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ScheduleNamed { const PALLET: &'static str = "Scheduler"; const CALL: &'static str = "schedule_named"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Cancel a named scheduled task."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::cancel_named`]."] pub struct CancelNamed { pub id: cancel_named::Id, } @@ -23042,26 +21931,30 @@ pub mod api { use super::runtime_types; pub type Id = [::core::primitive::u8; 32usize]; } - impl ::subxt::blocks::StaticExtrinsic for CancelNamed { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for CancelNamed { const PALLET: &'static str = "Scheduler"; const CALL: &'static str = "cancel_named"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Anonymously schedule a task after a delay."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::schedule_after`]."] pub struct ScheduleAfter { pub after: schedule_after::After, pub maybe_periodic: schedule_after::MaybePeriodic, pub priority: schedule_after::Priority, - pub call: ::std::boxed::Box, + pub call: ::subxt::ext::subxt_core::alloc::boxed::Box, } pub mod schedule_after { use super::runtime_types; @@ -23071,27 +21964,32 @@ pub mod api { pub type Priority = ::core::primitive::u8; pub type Call = runtime_types::rococo_runtime::RuntimeCall; } - impl ::subxt::blocks::StaticExtrinsic for ScheduleAfter { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ScheduleAfter { const PALLET: &'static str = "Scheduler"; const CALL: &'static str = "schedule_after"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Schedule a named task after a delay."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::schedule_named_after`]."] pub struct ScheduleNamedAfter { pub id: schedule_named_after::Id, pub after: schedule_named_after::After, pub maybe_periodic: schedule_named_after::MaybePeriodic, pub priority: schedule_named_after::Priority, - pub call: ::std::boxed::Box, + pub call: + ::subxt::ext::subxt_core::alloc::boxed::Box, } pub mod schedule_named_after { use super::runtime_types; @@ -23102,163 +22000,45 @@ pub mod api { pub type Priority = ::core::primitive::u8; pub type Call = runtime_types::rococo_runtime::RuntimeCall; } - impl ::subxt::blocks::StaticExtrinsic for ScheduleNamedAfter { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ScheduleNamedAfter { const PALLET: &'static str = "Scheduler"; const CALL: &'static str = "schedule_named_after"; } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set a retry configuration for a task so that, in case its scheduled run fails, it will"] - #[doc = "be retried after `period` blocks, for a total amount of `retries` retries or until it"] - #[doc = "succeeds."] - #[doc = ""] - #[doc = "Tasks which need to be scheduled for a retry are still subject to weight metering and"] - #[doc = "agenda space, same as a regular task. If a periodic task fails, it will be scheduled"] - #[doc = "normally while the task is retrying."] - #[doc = ""] - #[doc = "Tasks scheduled as a result of a retry for a periodic task are unnamed, non-periodic"] - #[doc = "clones of the original task. Their retry configuration will be derived from the"] - #[doc = "original task's configuration, but will have a lower value for `remaining` than the"] - #[doc = "original `total_retries`."] - pub struct SetRetry { - pub task: set_retry::Task, - pub retries: set_retry::Retries, - pub period: set_retry::Period, - } - pub mod set_retry { - use super::runtime_types; - pub type Task = (::core::primitive::u32, ::core::primitive::u32); - pub type Retries = ::core::primitive::u8; - pub type Period = ::core::primitive::u32; - } - impl ::subxt::blocks::StaticExtrinsic for SetRetry { - const PALLET: &'static str = "Scheduler"; - const CALL: &'static str = "set_retry"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set a retry configuration for a named task so that, in case its scheduled run fails, it"] - #[doc = "will be retried after `period` blocks, for a total amount of `retries` retries or until"] - #[doc = "it succeeds."] - #[doc = ""] - #[doc = "Tasks which need to be scheduled for a retry are still subject to weight metering and"] - #[doc = "agenda space, same as a regular task. If a periodic task fails, it will be scheduled"] - #[doc = "normally while the task is retrying."] - #[doc = ""] - #[doc = "Tasks scheduled as a result of a retry for a periodic task are unnamed, non-periodic"] - #[doc = "clones of the original task. Their retry configuration will be derived from the"] - #[doc = "original task's configuration, but will have a lower value for `remaining` than the"] - #[doc = "original `total_retries`."] - pub struct SetRetryNamed { - pub id: set_retry_named::Id, - pub retries: set_retry_named::Retries, - pub period: set_retry_named::Period, - } - pub mod set_retry_named { - use super::runtime_types; - pub type Id = [::core::primitive::u8; 32usize]; - pub type Retries = ::core::primitive::u8; - pub type Period = ::core::primitive::u32; - } - impl ::subxt::blocks::StaticExtrinsic for SetRetryNamed { - const PALLET: &'static str = "Scheduler"; - const CALL: &'static str = "set_retry_named"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Removes the retry configuration of a task."] - pub struct CancelRetry { - pub task: cancel_retry::Task, - } - pub mod cancel_retry { - use super::runtime_types; - pub type Task = (::core::primitive::u32, ::core::primitive::u32); - } - impl ::subxt::blocks::StaticExtrinsic for CancelRetry { - const PALLET: &'static str = "Scheduler"; - const CALL: &'static str = "cancel_retry"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Cancel the retry configuration of a named task."] - pub struct CancelRetryNamed { - pub id: cancel_retry_named::Id, - } - pub mod cancel_retry_named { - use super::runtime_types; - pub type Id = [::core::primitive::u8; 32usize]; - } - impl ::subxt::blocks::StaticExtrinsic for CancelRetryNamed { - const PALLET: &'static str = "Scheduler"; - const CALL: &'static str = "cancel_retry_named"; - } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Anonymously schedule a task."] + #[doc = "See [`Pallet::schedule`]."] pub fn schedule( &self, when: types::schedule::When, maybe_periodic: types::schedule::MaybePeriodic, priority: types::schedule::Priority, call: types::schedule::Call, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Scheduler", "schedule", types::Schedule { when, maybe_periodic, priority, - call: ::std::boxed::Box::new(call), + call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), }, [ - 177u8, 175u8, 49u8, 206u8, 0u8, 101u8, 223u8, 105u8, 237u8, 222u8, - 54u8, 201u8, 142u8, 85u8, 208u8, 239u8, 149u8, 209u8, 97u8, 72u8, - 126u8, 225u8, 10u8, 235u8, 26u8, 223u8, 197u8, 153u8, 19u8, 254u8, - 251u8, 181u8, + 252u8, 254u8, 42u8, 224u8, 241u8, 137u8, 180u8, 193u8, 26u8, 146u8, + 35u8, 137u8, 255u8, 216u8, 163u8, 49u8, 213u8, 110u8, 57u8, 170u8, + 216u8, 56u8, 196u8, 95u8, 74u8, 66u8, 15u8, 209u8, 137u8, 34u8, 175u8, + 238u8, ], ) } - #[doc = "Cancel an anonymously scheduled task."] + #[doc = "See [`Pallet::cancel`]."] pub fn cancel( &self, when: types::cancel::When, index: types::cancel::Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Scheduler", "cancel", types::Cancel { when, index }, @@ -23270,7 +22050,7 @@ pub mod api { ], ) } - #[doc = "Schedule a named task."] + #[doc = "See [`Pallet::schedule_named`]."] pub fn schedule_named( &self, id: types::schedule_named::Id, @@ -23278,8 +22058,8 @@ pub mod api { maybe_periodic: types::schedule_named::MaybePeriodic, priority: types::schedule_named::Priority, call: types::schedule_named::Call, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Scheduler", "schedule_named", types::ScheduleNamed { @@ -23287,21 +22067,22 @@ pub mod api { when, maybe_periodic, priority, - call: ::std::boxed::Box::new(call), + call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), }, [ - 164u8, 136u8, 103u8, 178u8, 45u8, 181u8, 133u8, 195u8, 92u8, 93u8, - 198u8, 193u8, 65u8, 15u8, 156u8, 206u8, 69u8, 50u8, 50u8, 34u8, 150u8, - 94u8, 181u8, 111u8, 219u8, 127u8, 86u8, 122u8, 36u8, 186u8, 21u8, 35u8, + 45u8, 36u8, 20u8, 248u8, 180u8, 54u8, 108u8, 243u8, 147u8, 74u8, 234u8, + 254u8, 138u8, 186u8, 88u8, 29u8, 195u8, 57u8, 197u8, 231u8, 174u8, + 141u8, 250u8, 76u8, 93u8, 53u8, 34u8, 247u8, 103u8, 138u8, 160u8, + 198u8, ], ) } - #[doc = "Cancel a named scheduled task."] + #[doc = "See [`Pallet::cancel_named`]."] pub fn cancel_named( &self, id: types::cancel_named::Id, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Scheduler", "cancel_named", types::CancelNamed { id }, @@ -23312,32 +22093,31 @@ pub mod api { ], ) } - #[doc = "Anonymously schedule a task after a delay."] + #[doc = "See [`Pallet::schedule_after`]."] pub fn schedule_after( &self, after: types::schedule_after::After, maybe_periodic: types::schedule_after::MaybePeriodic, priority: types::schedule_after::Priority, call: types::schedule_after::Call, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Scheduler", "schedule_after", types::ScheduleAfter { after, maybe_periodic, priority, - call: ::std::boxed::Box::new(call), + call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), }, [ - 236u8, 195u8, 150u8, 165u8, 194u8, 42u8, 187u8, 43u8, 80u8, 229u8, - 221u8, 146u8, 56u8, 125u8, 199u8, 212u8, 10u8, 2u8, 2u8, 207u8, 195u8, - 54u8, 38u8, 59u8, 193u8, 239u8, 195u8, 150u8, 161u8, 29u8, 113u8, - 225u8, + 161u8, 65u8, 247u8, 115u8, 13u8, 56u8, 115u8, 110u8, 92u8, 6u8, 119u8, + 247u8, 90u8, 174u8, 97u8, 217u8, 73u8, 49u8, 17u8, 2u8, 117u8, 225u8, + 251u8, 48u8, 148u8, 105u8, 136u8, 83u8, 65u8, 178u8, 65u8, 96u8, ], ) } - #[doc = "Schedule a named task after a delay."] + #[doc = "See [`Pallet::schedule_named_after`]."] pub fn schedule_named_after( &self, id: types::schedule_named_after::Id, @@ -23345,8 +22125,9 @@ pub mod api { maybe_periodic: types::schedule_named_after::MaybePeriodic, priority: types::schedule_named_after::Priority, call: types::schedule_named_after::Call, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Scheduler", "schedule_named_after", types::ScheduleNamedAfter { @@ -23354,113 +22135,12 @@ pub mod api { after, maybe_periodic, priority, - call: ::std::boxed::Box::new(call), + call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), }, [ - 28u8, 81u8, 177u8, 155u8, 39u8, 10u8, 188u8, 144u8, 52u8, 208u8, 6u8, - 205u8, 122u8, 255u8, 38u8, 105u8, 171u8, 234u8, 58u8, 224u8, 86u8, - 188u8, 53u8, 177u8, 113u8, 155u8, 54u8, 237u8, 214u8, 10u8, 140u8, - 245u8, - ], - ) - } - #[doc = "Set a retry configuration for a task so that, in case its scheduled run fails, it will"] - #[doc = "be retried after `period` blocks, for a total amount of `retries` retries or until it"] - #[doc = "succeeds."] - #[doc = ""] - #[doc = "Tasks which need to be scheduled for a retry are still subject to weight metering and"] - #[doc = "agenda space, same as a regular task. If a periodic task fails, it will be scheduled"] - #[doc = "normally while the task is retrying."] - #[doc = ""] - #[doc = "Tasks scheduled as a result of a retry for a periodic task are unnamed, non-periodic"] - #[doc = "clones of the original task. Their retry configuration will be derived from the"] - #[doc = "original task's configuration, but will have a lower value for `remaining` than the"] - #[doc = "original `total_retries`."] - pub fn set_retry( - &self, - task: types::set_retry::Task, - retries: types::set_retry::Retries, - period: types::set_retry::Period, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Scheduler", - "set_retry", - types::SetRetry { - task, - retries, - period, - }, - [ - 2u8, 242u8, 180u8, 69u8, 237u8, 168u8, 243u8, 93u8, 47u8, 222u8, 189u8, - 74u8, 233u8, 106u8, 54u8, 40u8, 160u8, 61u8, 78u8, 138u8, 232u8, 20u8, - 243u8, 17u8, 151u8, 194u8, 67u8, 200u8, 186u8, 192u8, 210u8, 214u8, - ], - ) - } - #[doc = "Set a retry configuration for a named task so that, in case its scheduled run fails, it"] - #[doc = "will be retried after `period` blocks, for a total amount of `retries` retries or until"] - #[doc = "it succeeds."] - #[doc = ""] - #[doc = "Tasks which need to be scheduled for a retry are still subject to weight metering and"] - #[doc = "agenda space, same as a regular task. If a periodic task fails, it will be scheduled"] - #[doc = "normally while the task is retrying."] - #[doc = ""] - #[doc = "Tasks scheduled as a result of a retry for a periodic task are unnamed, non-periodic"] - #[doc = "clones of the original task. Their retry configuration will be derived from the"] - #[doc = "original task's configuration, but will have a lower value for `remaining` than the"] - #[doc = "original `total_retries`."] - pub fn set_retry_named( - &self, - id: types::set_retry_named::Id, - retries: types::set_retry_named::Retries, - period: types::set_retry_named::Period, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Scheduler", - "set_retry_named", - types::SetRetryNamed { - id, - retries, - period, - }, - [ - 240u8, 102u8, 255u8, 253u8, 52u8, 81u8, 164u8, 170u8, 184u8, 178u8, - 254u8, 126u8, 41u8, 247u8, 121u8, 22u8, 254u8, 136u8, 237u8, 37u8, - 11u8, 42u8, 227u8, 234u8, 132u8, 83u8, 109u8, 168u8, 31u8, 44u8, 231u8, - 70u8, - ], - ) - } - #[doc = "Removes the retry configuration of a task."] - pub fn cancel_retry( - &self, - task: types::cancel_retry::Task, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Scheduler", - "cancel_retry", - types::CancelRetry { task }, - [ - 142u8, 126u8, 127u8, 216u8, 64u8, 189u8, 42u8, 126u8, 63u8, 249u8, - 211u8, 202u8, 224u8, 197u8, 199u8, 240u8, 58u8, 94u8, 219u8, 177u8, - 20u8, 210u8, 153u8, 0u8, 127u8, 255u8, 235u8, 238u8, 170u8, 240u8, - 44u8, 49u8, - ], - ) - } - #[doc = "Cancel the retry configuration of a named task."] - pub fn cancel_retry_named( - &self, - id: types::cancel_retry_named::Id, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Scheduler", - "cancel_retry_named", - types::CancelRetryNamed { id }, - [ - 76u8, 157u8, 253u8, 113u8, 162u8, 54u8, 98u8, 21u8, 62u8, 44u8, 155u8, - 202u8, 2u8, 28u8, 153u8, 219u8, 67u8, 166u8, 206u8, 79u8, 139u8, 3u8, - 119u8, 182u8, 254u8, 134u8, 143u8, 121u8, 155u8, 220u8, 192u8, 209u8, + 215u8, 126u8, 151u8, 2u8, 165u8, 35u8, 101u8, 79u8, 101u8, 79u8, 27u8, + 17u8, 244u8, 244u8, 166u8, 173u8, 2u8, 26u8, 222u8, 154u8, 106u8, + 232u8, 202u8, 86u8, 226u8, 222u8, 9u8, 17u8, 221u8, 85u8, 85u8, 140u8, ], ) } @@ -23471,15 +22151,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Scheduled some task."] pub struct Scheduled { pub when: scheduled::When, @@ -23490,20 +22170,20 @@ pub mod api { pub type When = ::core::primitive::u32; pub type Index = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for Scheduled { + impl ::subxt::ext::subxt_core::events::StaticEvent for Scheduled { const PALLET: &'static str = "Scheduler"; const EVENT: &'static str = "Scheduled"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Canceled some task."] pub struct Canceled { pub when: canceled::When, @@ -23514,20 +22194,20 @@ pub mod api { pub type When = ::core::primitive::u32; pub type Index = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for Canceled { + impl ::subxt::ext::subxt_core::events::StaticEvent for Canceled { const PALLET: &'static str = "Scheduler"; const EVENT: &'static str = "Canceled"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Dispatched some task."] pub struct Dispatched { pub task: dispatched::Task, @@ -23541,72 +22221,20 @@ pub mod api { pub type Result = ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>; } - impl ::subxt::events::StaticEvent for Dispatched { + impl ::subxt::ext::subxt_core::events::StaticEvent for Dispatched { const PALLET: &'static str = "Scheduler"; const EVENT: &'static str = "Dispatched"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set a retry configuration for some task."] - pub struct RetrySet { - pub task: retry_set::Task, - pub id: retry_set::Id, - pub period: retry_set::Period, - pub retries: retry_set::Retries, - } - pub mod retry_set { - use super::runtime_types; - pub type Task = (::core::primitive::u32, ::core::primitive::u32); - pub type Id = ::core::option::Option<[::core::primitive::u8; 32usize]>; - pub type Period = ::core::primitive::u32; - pub type Retries = ::core::primitive::u8; - } - impl ::subxt::events::StaticEvent for RetrySet { - const PALLET: &'static str = "Scheduler"; - const EVENT: &'static str = "RetrySet"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Cancel a retry configuration for some task."] - pub struct RetryCancelled { - pub task: retry_cancelled::Task, - pub id: retry_cancelled::Id, - } - pub mod retry_cancelled { - use super::runtime_types; - pub type Task = (::core::primitive::u32, ::core::primitive::u32); - pub type Id = ::core::option::Option<[::core::primitive::u8; 32usize]>; - } - impl ::subxt::events::StaticEvent for RetryCancelled { - const PALLET: &'static str = "Scheduler"; - const EVENT: &'static str = "RetryCancelled"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The call for the provided hash was not found so the task has been aborted."] pub struct CallUnavailable { pub task: call_unavailable::Task, @@ -23617,20 +22245,20 @@ pub mod api { pub type Task = (::core::primitive::u32, ::core::primitive::u32); pub type Id = ::core::option::Option<[::core::primitive::u8; 32usize]>; } - impl ::subxt::events::StaticEvent for CallUnavailable { + impl ::subxt::ext::subxt_core::events::StaticEvent for CallUnavailable { const PALLET: &'static str = "Scheduler"; const EVENT: &'static str = "CallUnavailable"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The given task was unable to be renewed since the agenda is full at that block."] pub struct PeriodicFailed { pub task: periodic_failed::Task, @@ -23641,45 +22269,20 @@ pub mod api { pub type Task = (::core::primitive::u32, ::core::primitive::u32); pub type Id = ::core::option::Option<[::core::primitive::u8; 32usize]>; } - impl ::subxt::events::StaticEvent for PeriodicFailed { + impl ::subxt::ext::subxt_core::events::StaticEvent for PeriodicFailed { const PALLET: &'static str = "Scheduler"; const EVENT: &'static str = "PeriodicFailed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The given task was unable to be retried since the agenda is full at that block or there"] - #[doc = "was not enough weight to reschedule it."] - pub struct RetryFailed { - pub task: retry_failed::Task, - pub id: retry_failed::Id, - } - pub mod retry_failed { - use super::runtime_types; - pub type Task = (::core::primitive::u32, ::core::primitive::u32); - pub type Id = ::core::option::Option<[::core::primitive::u8; 32usize]>; - } - impl ::subxt::events::StaticEvent for RetryFailed { - const PALLET: &'static str = "Scheduler"; - const EVENT: &'static str = "RetryFailed"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The given task can never be executed since it is overweight."] pub struct PermanentlyOverweight { pub task: permanently_overweight::Task, @@ -23690,7 +22293,7 @@ pub mod api { pub type Task = (::core::primitive::u32, ::core::primitive::u32); pub type Id = ::core::option::Option<[::core::primitive::u8; 32usize]>; } - impl ::subxt::events::StaticEvent for PermanentlyOverweight { + impl ::subxt::ext::subxt_core::events::StaticEvent for PermanentlyOverweight { const PALLET: &'static str = "Scheduler"; const EVENT: &'static str = "PermanentlyOverweight"; } @@ -23705,7 +22308,7 @@ pub mod api { } pub mod agenda { use super::runtime_types; - pub type Agenda = runtime_types::bounded_collections::bounded_vec::BoundedVec< + pub type Agenda = runtime_types::bounded_collections::bounded_vec::BoundedVec22< ::core::option::Option< runtime_types::pallet_scheduler::Scheduled< [::core::primitive::u8; 32usize], @@ -23715,19 +22318,12 @@ pub mod api { >, ::core::primitive::u32, runtime_types::rococo_runtime::OriginCaller, - ::subxt::utils::AccountId32, + ::subxt::ext::subxt_core::utils::AccountId32, >, >, >; pub type Param0 = ::core::primitive::u32; } - pub mod retries { - use super::runtime_types; - pub type Retries = - runtime_types::pallet_scheduler::RetryConfig<::core::primitive::u32>; - pub type Param0 = ::core::primitive::u32; - pub type Param1 = ::core::primitive::u32; - } pub mod lookup { use super::runtime_types; pub type Lookup = (::core::primitive::u32, ::core::primitive::u32); @@ -23738,14 +22334,14 @@ pub mod api { impl StorageApi { pub fn incomplete_since( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::incomplete_since::IncompleteSince, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Scheduler", "IncompleteSince", (), @@ -23759,118 +22355,47 @@ pub mod api { #[doc = " Items to be executed, indexed by the block number that they should be executed on."] pub fn agenda_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::agenda::Agenda, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Scheduler", "Agenda", (), [ - 10u8, 123u8, 252u8, 106u8, 154u8, 9u8, 245u8, 203u8, 188u8, 254u8, - 20u8, 41u8, 6u8, 226u8, 78u8, 188u8, 0u8, 173u8, 143u8, 44u8, 117u8, - 249u8, 180u8, 13u8, 236u8, 224u8, 170u8, 202u8, 24u8, 3u8, 163u8, 37u8, + 247u8, 226u8, 115u8, 70u8, 172u8, 69u8, 26u8, 24u8, 46u8, 202u8, 118u8, + 250u8, 111u8, 236u8, 77u8, 255u8, 26u8, 125u8, 18u8, 8u8, 24u8, 230u8, + 222u8, 140u8, 179u8, 235u8, 19u8, 161u8, 40u8, 78u8, 26u8, 173u8, ], ) } #[doc = " Items to be executed, indexed by the block number that they should be executed on."] pub fn agenda( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::agenda::Param0, + >, types::agenda::Agenda, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Scheduler", "Agenda", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - [ - 10u8, 123u8, 252u8, 106u8, 154u8, 9u8, 245u8, 203u8, 188u8, 254u8, - 20u8, 41u8, 6u8, 226u8, 78u8, 188u8, 0u8, 173u8, 143u8, 44u8, 117u8, - 249u8, 180u8, 13u8, 236u8, 224u8, 170u8, 202u8, 24u8, 3u8, 163u8, 37u8, - ], - ) - } - #[doc = " Retry configurations for items to be executed, indexed by task address."] - pub fn retries_iter( - &self, - ) -> ::subxt::storage::address::Address< - (), - types::retries::Retries, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Scheduler", - "Retries", - (), - [ - 164u8, 27u8, 208u8, 185u8, 19u8, 232u8, 190u8, 97u8, 137u8, 73u8, - 146u8, 10u8, 241u8, 176u8, 251u8, 140u8, 133u8, 65u8, 190u8, 162u8, - 59u8, 32u8, 77u8, 201u8, 27u8, 78u8, 183u8, 164u8, 74u8, 46u8, 139u8, - 145u8, - ], - ) - } - #[doc = " Retry configurations for items to be executed, indexed by task address."] - pub fn retries_iter1( - &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, - types::retries::Retries, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Scheduler", - "Retries", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - [ - 164u8, 27u8, 208u8, 185u8, 19u8, 232u8, 190u8, 97u8, 137u8, 73u8, - 146u8, 10u8, 241u8, 176u8, 251u8, 140u8, 133u8, 65u8, 190u8, 162u8, - 59u8, 32u8, 77u8, 201u8, 27u8, 78u8, 183u8, 164u8, 74u8, 46u8, 139u8, - 145u8, - ], - ) - } - #[doc = " Retry configurations for items to be executed, indexed by task address."] - pub fn retries( - &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ( - ::subxt::storage::address::StaticStorageKey, - ::subxt::storage::address::StaticStorageKey, - ), - types::retries::Retries, - ::subxt::storage::address::Yes, - (), - (), - > { - ::subxt::storage::address::Address::new_static( - "Scheduler", - "Retries", - ( - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), ), [ - 164u8, 27u8, 208u8, 185u8, 19u8, 232u8, 190u8, 97u8, 137u8, 73u8, - 146u8, 10u8, 241u8, 176u8, 251u8, 140u8, 133u8, 65u8, 190u8, 162u8, - 59u8, 32u8, 77u8, 201u8, 27u8, 78u8, 183u8, 164u8, 74u8, 46u8, 139u8, - 145u8, + 247u8, 226u8, 115u8, 70u8, 172u8, 69u8, 26u8, 24u8, 46u8, 202u8, 118u8, + 250u8, 111u8, 236u8, 77u8, 255u8, 26u8, 125u8, 18u8, 8u8, 24u8, 230u8, + 222u8, 140u8, 179u8, 235u8, 19u8, 161u8, 40u8, 78u8, 26u8, 173u8, ], ) } @@ -23880,14 +22405,14 @@ pub mod api { #[doc = " identities."] pub fn lookup_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::lookup::Lookup, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Scheduler", "Lookup", (), @@ -23904,18 +22429,22 @@ pub mod api { #[doc = " identities."] pub fn lookup( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::lookup::Param0, + >, types::lookup::Lookup, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Scheduler", "Lookup", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 24u8, 87u8, 96u8, 127u8, 136u8, 205u8, 238u8, 174u8, 71u8, 110u8, 65u8, 98u8, 228u8, 167u8, 99u8, 71u8, 171u8, 186u8, 12u8, 218u8, 137u8, 70u8, @@ -23932,9 +22461,10 @@ pub mod api { #[doc = " The maximum weight that may be scheduled per block for any dispatchables."] pub fn maximum_weight( &self, - ) -> ::subxt::constants::Address - { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address< + runtime_types::sp_weights::weight_v2::Weight, + > { + ::subxt::ext::subxt_core::constants::Address::new_static( "Scheduler", "MaximumWeight", [ @@ -23952,8 +22482,9 @@ pub mod api { #[doc = " higher limit under `runtime-benchmarks` feature."] pub fn max_scheduled_per_block( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Scheduler", "MaxScheduledPerBlock", [ @@ -23981,59 +22512,54 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Dispatch the given `call` from an account that the sender is authorised for through"] - #[doc = "`add_proxy`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `real`: The account that the proxy will make a call on behalf of."] - #[doc = "- `force_proxy_type`: Specify the exact proxy type to be used and checked for this call."] - #[doc = "- `call`: The call to be made by the `real` account."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::proxy`]."] pub struct Proxy { pub real: proxy::Real, pub force_proxy_type: proxy::ForceProxyType, - pub call: ::std::boxed::Box, + pub call: ::subxt::ext::subxt_core::alloc::boxed::Box, } pub mod proxy { use super::runtime_types; - pub type Real = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Real = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type ForceProxyType = ::core::option::Option; pub type Call = runtime_types::rococo_runtime::RuntimeCall; } - impl ::subxt::blocks::StaticExtrinsic for Proxy { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Proxy { const PALLET: &'static str = "Proxy"; const CALL: &'static str = "proxy"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Register a proxy account for the sender that is able to make calls on its behalf."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `proxy`: The account that the `caller` would like to make a proxy."] - #[doc = "- `proxy_type`: The permissions allowed for this proxy account."] - #[doc = "- `delay`: The announcement period required of the initial proxy. Will generally be"] - #[doc = "zero."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::add_proxy`]."] pub struct AddProxy { pub delegate: add_proxy::Delegate, pub proxy_type: add_proxy::ProxyType, @@ -24041,32 +22567,32 @@ pub mod api { } pub mod add_proxy { use super::runtime_types; - pub type Delegate = - ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Delegate = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type ProxyType = runtime_types::rococo_runtime::ProxyType; pub type Delay = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for AddProxy { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for AddProxy { const PALLET: &'static str = "Proxy"; const CALL: &'static str = "add_proxy"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Unregister a proxy account for the sender."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `proxy`: The account that the `caller` would like to remove as a proxy."] - #[doc = "- `proxy_type`: The permissions currently enabled for the removed proxy account."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::remove_proxy`]."] pub struct RemoveProxy { pub delegate: remove_proxy::Delegate, pub proxy_type: remove_proxy::ProxyType, @@ -24074,64 +22600,52 @@ pub mod api { } pub mod remove_proxy { use super::runtime_types; - pub type Delegate = - ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Delegate = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type ProxyType = runtime_types::rococo_runtime::ProxyType; pub type Delay = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for RemoveProxy { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RemoveProxy { const PALLET: &'static str = "Proxy"; const CALL: &'static str = "remove_proxy"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Unregister all proxy accounts for the sender."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "WARNING: This may be called on accounts created by `pure`, however if done, then"] - #[doc = "the unreserved fees will be inaccessible. **All access to this account will be lost.**"] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::remove_proxies`]."] pub struct RemoveProxies; - impl ::subxt::blocks::StaticExtrinsic for RemoveProxies { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RemoveProxies { const PALLET: &'static str = "Proxy"; const CALL: &'static str = "remove_proxies"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Spawn a fresh new account that is guaranteed to be otherwise inaccessible, and"] - #[doc = "initialize it with a proxy of `proxy_type` for `origin` sender."] - #[doc = ""] - #[doc = "Requires a `Signed` origin."] - #[doc = ""] - #[doc = "- `proxy_type`: The type of the proxy that the sender will be registered as over the"] - #[doc = "new account. This will almost always be the most permissive `ProxyType` possible to"] - #[doc = "allow for maximum flexibility."] - #[doc = "- `index`: A disambiguation index, in case this is called multiple times in the same"] - #[doc = "transaction (e.g. with `utility::batch`). Unless you're using `batch` you probably just"] - #[doc = "want to use `0`."] - #[doc = "- `delay`: The announcement period required of the initial proxy. Will generally be"] - #[doc = "zero."] - #[doc = ""] - #[doc = "Fails with `Duplicate` if this has already been called in this transaction, from the"] - #[doc = "same sender, with the same parameters."] - #[doc = ""] - #[doc = "Fails if there are insufficient funds to pay for deposit."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::create_pure`]."] pub struct CreatePure { pub proxy_type: create_pure::ProxyType, pub delay: create_pure::Delay, @@ -24143,36 +22657,25 @@ pub mod api { pub type Delay = ::core::primitive::u32; pub type Index = ::core::primitive::u16; } - impl ::subxt::blocks::StaticExtrinsic for CreatePure { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for CreatePure { const PALLET: &'static str = "Proxy"; const CALL: &'static str = "create_pure"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Removes a previously spawned pure proxy."] - #[doc = ""] - #[doc = "WARNING: **All access to this account will be lost.** Any funds held in it will be"] - #[doc = "inaccessible."] - #[doc = ""] - #[doc = "Requires a `Signed` origin, and the sender account must have been created by a call to"] - #[doc = "`pure` with corresponding parameters."] - #[doc = ""] - #[doc = "- `spawner`: The account that originally called `pure` to create this account."] - #[doc = "- `index`: The disambiguation index originally passed to `pure`. Probably `0`."] - #[doc = "- `proxy_type`: The proxy type originally passed to `pure`."] - #[doc = "- `height`: The height of the chain when the call to `pure` was processed."] - #[doc = "- `ext_index`: The extrinsic index in which the call to `pure` was processed."] - #[doc = ""] - #[doc = "Fails with `NoPermission` in case the caller is not a previously created pure"] - #[doc = "account whose `pure` call has corresponding parameters."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::kill_pure`]."] pub struct KillPure { pub spawner: kill_pure::Spawner, pub proxy_type: kill_pure::ProxyType, @@ -24184,212 +22687,184 @@ pub mod api { } pub mod kill_pure { use super::runtime_types; - pub type Spawner = - ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Spawner = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type ProxyType = runtime_types::rococo_runtime::ProxyType; pub type Index = ::core::primitive::u16; pub type Height = ::core::primitive::u32; pub type ExtIndex = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for KillPure { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for KillPure { const PALLET: &'static str = "Proxy"; const CALL: &'static str = "kill_pure"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Publish the hash of a proxy-call that will be made in the future."] - #[doc = ""] - #[doc = "This must be called some number of blocks before the corresponding `proxy` is attempted"] - #[doc = "if the delay associated with the proxy relationship is greater than zero."] - #[doc = ""] - #[doc = "No more than `MaxPending` announcements may be made at any one time."] - #[doc = ""] - #[doc = "This will take a deposit of `AnnouncementDepositFactor` as well as"] - #[doc = "`AnnouncementDepositBase` if there are no other pending announcements."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and a proxy of `real`."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `real`: The account that the proxy will make a call on behalf of."] - #[doc = "- `call_hash`: The hash of the call to be made by the `real` account."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::announce`]."] pub struct Announce { pub real: announce::Real, pub call_hash: announce::CallHash, } pub mod announce { use super::runtime_types; - pub type Real = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; - pub type CallHash = ::subxt::utils::H256; + pub type Real = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; + pub type CallHash = ::subxt::ext::subxt_core::utils::H256; } - impl ::subxt::blocks::StaticExtrinsic for Announce { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Announce { const PALLET: &'static str = "Proxy"; const CALL: &'static str = "announce"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Remove a given announcement."] - #[doc = ""] - #[doc = "May be called by a proxy account to remove a call they previously announced and return"] - #[doc = "the deposit."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `real`: The account that the proxy will make a call on behalf of."] - #[doc = "- `call_hash`: The hash of the call to be made by the `real` account."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::remove_announcement`]."] pub struct RemoveAnnouncement { pub real: remove_announcement::Real, pub call_hash: remove_announcement::CallHash, } pub mod remove_announcement { use super::runtime_types; - pub type Real = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; - pub type CallHash = ::subxt::utils::H256; + pub type Real = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; + pub type CallHash = ::subxt::ext::subxt_core::utils::H256; } - impl ::subxt::blocks::StaticExtrinsic for RemoveAnnouncement { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RemoveAnnouncement { const PALLET: &'static str = "Proxy"; const CALL: &'static str = "remove_announcement"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Remove the given announcement of a delegate."] - #[doc = ""] - #[doc = "May be called by a target (proxied) account to remove a call that one of their delegates"] - #[doc = "(`delegate`) has announced they want to execute. The deposit is returned."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `delegate`: The account that previously announced the call."] - #[doc = "- `call_hash`: The hash of the call to be made."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::reject_announcement`]."] pub struct RejectAnnouncement { pub delegate: reject_announcement::Delegate, pub call_hash: reject_announcement::CallHash, } pub mod reject_announcement { use super::runtime_types; - pub type Delegate = - ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; - pub type CallHash = ::subxt::utils::H256; + pub type Delegate = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; + pub type CallHash = ::subxt::ext::subxt_core::utils::H256; } - impl ::subxt::blocks::StaticExtrinsic for RejectAnnouncement { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RejectAnnouncement { const PALLET: &'static str = "Proxy"; const CALL: &'static str = "reject_announcement"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Dispatch the given `call` from an account that the sender is authorized for through"] - #[doc = "`add_proxy`."] - #[doc = ""] - #[doc = "Removes any corresponding announcement(s)."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `real`: The account that the proxy will make a call on behalf of."] - #[doc = "- `force_proxy_type`: Specify the exact proxy type to be used and checked for this call."] - #[doc = "- `call`: The call to be made by the `real` account."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::proxy_announced`]."] pub struct ProxyAnnounced { pub delegate: proxy_announced::Delegate, pub real: proxy_announced::Real, pub force_proxy_type: proxy_announced::ForceProxyType, - pub call: ::std::boxed::Box, + pub call: ::subxt::ext::subxt_core::alloc::boxed::Box, } pub mod proxy_announced { use super::runtime_types; - pub type Delegate = - ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; - pub type Real = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Delegate = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; + pub type Real = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type ForceProxyType = ::core::option::Option; pub type Call = runtime_types::rococo_runtime::RuntimeCall; } - impl ::subxt::blocks::StaticExtrinsic for ProxyAnnounced { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ProxyAnnounced { const PALLET: &'static str = "Proxy"; const CALL: &'static str = "proxy_announced"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Dispatch the given `call` from an account that the sender is authorised for through"] - #[doc = "`add_proxy`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `real`: The account that the proxy will make a call on behalf of."] - #[doc = "- `force_proxy_type`: Specify the exact proxy type to be used and checked for this call."] - #[doc = "- `call`: The call to be made by the `real` account."] + #[doc = "See [`Pallet::proxy`]."] pub fn proxy( &self, real: types::proxy::Real, force_proxy_type: types::proxy::ForceProxyType, call: types::proxy::Call, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Proxy", "proxy", types::Proxy { real, force_proxy_type, - call: ::std::boxed::Box::new(call), + call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), }, [ - 253u8, 236u8, 54u8, 144u8, 19u8, 103u8, 190u8, 174u8, 231u8, 154u8, - 133u8, 175u8, 56u8, 44u8, 172u8, 25u8, 73u8, 196u8, 76u8, 61u8, 12u8, - 48u8, 245u8, 85u8, 187u8, 15u8, 111u8, 121u8, 91u8, 157u8, 111u8, - 141u8, + 98u8, 141u8, 93u8, 220u8, 59u8, 37u8, 195u8, 192u8, 188u8, 135u8, + 200u8, 219u8, 164u8, 53u8, 109u8, 30u8, 116u8, 248u8, 13u8, 14u8, 99u8, + 128u8, 30u8, 33u8, 242u8, 89u8, 73u8, 25u8, 198u8, 19u8, 252u8, 157u8, ], ) } - #[doc = "Register a proxy account for the sender that is able to make calls on its behalf."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `proxy`: The account that the `caller` would like to make a proxy."] - #[doc = "- `proxy_type`: The permissions allowed for this proxy account."] - #[doc = "- `delay`: The announcement period required of the initial proxy. Will generally be"] - #[doc = "zero."] + #[doc = "See [`Pallet::add_proxy`]."] pub fn add_proxy( &self, delegate: types::add_proxy::Delegate, proxy_type: types::add_proxy::ProxyType, delay: types::add_proxy::Delay, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Proxy", "add_proxy", types::AddProxy { @@ -24405,20 +22880,14 @@ pub mod api { ], ) } - #[doc = "Unregister a proxy account for the sender."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `proxy`: The account that the `caller` would like to remove as a proxy."] - #[doc = "- `proxy_type`: The permissions currently enabled for the removed proxy account."] + #[doc = "See [`Pallet::remove_proxy`]."] pub fn remove_proxy( &self, delegate: types::remove_proxy::Delegate, proxy_type: types::remove_proxy::ProxyType, delay: types::remove_proxy::Delay, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Proxy", "remove_proxy", types::RemoveProxy { @@ -24433,14 +22902,11 @@ pub mod api { ], ) } - #[doc = "Unregister all proxy accounts for the sender."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "WARNING: This may be called on accounts created by `pure`, however if done, then"] - #[doc = "the unreserved fees will be inaccessible. **All access to this account will be lost.**"] - pub fn remove_proxies(&self) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + #[doc = "See [`Pallet::remove_proxies`]."] + pub fn remove_proxies( + &self, + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Proxy", "remove_proxies", types::RemoveProxies {}, @@ -24452,31 +22918,14 @@ pub mod api { ], ) } - #[doc = "Spawn a fresh new account that is guaranteed to be otherwise inaccessible, and"] - #[doc = "initialize it with a proxy of `proxy_type` for `origin` sender."] - #[doc = ""] - #[doc = "Requires a `Signed` origin."] - #[doc = ""] - #[doc = "- `proxy_type`: The type of the proxy that the sender will be registered as over the"] - #[doc = "new account. This will almost always be the most permissive `ProxyType` possible to"] - #[doc = "allow for maximum flexibility."] - #[doc = "- `index`: A disambiguation index, in case this is called multiple times in the same"] - #[doc = "transaction (e.g. with `utility::batch`). Unless you're using `batch` you probably just"] - #[doc = "want to use `0`."] - #[doc = "- `delay`: The announcement period required of the initial proxy. Will generally be"] - #[doc = "zero."] - #[doc = ""] - #[doc = "Fails with `Duplicate` if this has already been called in this transaction, from the"] - #[doc = "same sender, with the same parameters."] - #[doc = ""] - #[doc = "Fails if there are insufficient funds to pay for deposit."] + #[doc = "See [`Pallet::create_pure`]."] pub fn create_pure( &self, proxy_type: types::create_pure::ProxyType, delay: types::create_pure::Delay, index: types::create_pure::Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Proxy", "create_pure", types::CreatePure { @@ -24491,22 +22940,7 @@ pub mod api { ], ) } - #[doc = "Removes a previously spawned pure proxy."] - #[doc = ""] - #[doc = "WARNING: **All access to this account will be lost.** Any funds held in it will be"] - #[doc = "inaccessible."] - #[doc = ""] - #[doc = "Requires a `Signed` origin, and the sender account must have been created by a call to"] - #[doc = "`pure` with corresponding parameters."] - #[doc = ""] - #[doc = "- `spawner`: The account that originally called `pure` to create this account."] - #[doc = "- `index`: The disambiguation index originally passed to `pure`. Probably `0`."] - #[doc = "- `proxy_type`: The proxy type originally passed to `pure`."] - #[doc = "- `height`: The height of the chain when the call to `pure` was processed."] - #[doc = "- `ext_index`: The extrinsic index in which the call to `pure` was processed."] - #[doc = ""] - #[doc = "Fails with `NoPermission` in case the caller is not a previously created pure"] - #[doc = "account whose `pure` call has corresponding parameters."] + #[doc = "See [`Pallet::kill_pure`]."] pub fn kill_pure( &self, spawner: types::kill_pure::Spawner, @@ -24514,8 +22948,8 @@ pub mod api { index: types::kill_pure::Index, height: types::kill_pure::Height, ext_index: types::kill_pure::ExtIndex, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Proxy", "kill_pure", types::KillPure { @@ -24532,27 +22966,13 @@ pub mod api { ], ) } - #[doc = "Publish the hash of a proxy-call that will be made in the future."] - #[doc = ""] - #[doc = "This must be called some number of blocks before the corresponding `proxy` is attempted"] - #[doc = "if the delay associated with the proxy relationship is greater than zero."] - #[doc = ""] - #[doc = "No more than `MaxPending` announcements may be made at any one time."] - #[doc = ""] - #[doc = "This will take a deposit of `AnnouncementDepositFactor` as well as"] - #[doc = "`AnnouncementDepositBase` if there are no other pending announcements."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and a proxy of `real`."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `real`: The account that the proxy will make a call on behalf of."] - #[doc = "- `call_hash`: The hash of the call to be made by the `real` account."] + #[doc = "See [`Pallet::announce`]."] pub fn announce( &self, real: types::announce::Real, call_hash: types::announce::CallHash, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Proxy", "announce", types::Announce { real, call_hash }, @@ -24564,22 +22984,14 @@ pub mod api { ], ) } - #[doc = "Remove a given announcement."] - #[doc = ""] - #[doc = "May be called by a proxy account to remove a call they previously announced and return"] - #[doc = "the deposit."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `real`: The account that the proxy will make a call on behalf of."] - #[doc = "- `call_hash`: The hash of the call to be made by the `real` account."] + #[doc = "See [`Pallet::remove_announcement`]."] pub fn remove_announcement( &self, real: types::remove_announcement::Real, call_hash: types::remove_announcement::CallHash, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Proxy", "remove_announcement", types::RemoveAnnouncement { real, call_hash }, @@ -24590,22 +23002,14 @@ pub mod api { ], ) } - #[doc = "Remove the given announcement of a delegate."] - #[doc = ""] - #[doc = "May be called by a target (proxied) account to remove a call that one of their delegates"] - #[doc = "(`delegate`) has announced they want to execute. The deposit is returned."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `delegate`: The account that previously announced the call."] - #[doc = "- `call_hash`: The hash of the call to be made."] + #[doc = "See [`Pallet::reject_announcement`]."] pub fn reject_announcement( &self, delegate: types::reject_announcement::Delegate, call_hash: types::reject_announcement::CallHash, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Proxy", "reject_announcement", types::RejectAnnouncement { @@ -24619,37 +23023,27 @@ pub mod api { ], ) } - #[doc = "Dispatch the given `call` from an account that the sender is authorized for through"] - #[doc = "`add_proxy`."] - #[doc = ""] - #[doc = "Removes any corresponding announcement(s)."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `real`: The account that the proxy will make a call on behalf of."] - #[doc = "- `force_proxy_type`: Specify the exact proxy type to be used and checked for this call."] - #[doc = "- `call`: The call to be made by the `real` account."] + #[doc = "See [`Pallet::proxy_announced`]."] pub fn proxy_announced( &self, delegate: types::proxy_announced::Delegate, real: types::proxy_announced::Real, force_proxy_type: types::proxy_announced::ForceProxyType, call: types::proxy_announced::Call, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Proxy", "proxy_announced", types::ProxyAnnounced { delegate, real, force_proxy_type, - call: ::std::boxed::Box::new(call), + call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), }, [ - 5u8, 32u8, 80u8, 204u8, 70u8, 82u8, 22u8, 142u8, 13u8, 189u8, 204u8, - 167u8, 157u8, 48u8, 49u8, 23u8, 27u8, 143u8, 159u8, 19u8, 22u8, 218u8, - 37u8, 32u8, 67u8, 24u8, 132u8, 157u8, 10u8, 176u8, 94u8, 69u8, + 26u8, 255u8, 179u8, 183u8, 103u8, 89u8, 89u8, 142u8, 60u8, 152u8, 25u8, + 111u8, 125u8, 218u8, 47u8, 141u8, 211u8, 194u8, 193u8, 46u8, 34u8, + 134u8, 79u8, 218u8, 94u8, 45u8, 203u8, 17u8, 82u8, 3u8, 49u8, 217u8, ], ) } @@ -24660,15 +23054,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A proxy was executed correctly, with the given."] pub struct ProxyExecuted { pub result: proxy_executed::Result, @@ -24678,20 +23072,20 @@ pub mod api { pub type Result = ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>; } - impl ::subxt::events::StaticEvent for ProxyExecuted { + impl ::subxt::ext::subxt_core::events::StaticEvent for ProxyExecuted { const PALLET: &'static str = "Proxy"; const EVENT: &'static str = "ProxyExecuted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A pure account has been created by new proxy with given"] #[doc = "disambiguation index and proxy type."] pub struct PureCreated { @@ -24702,25 +23096,25 @@ pub mod api { } pub mod pure_created { use super::runtime_types; - pub type Pure = ::subxt::utils::AccountId32; - pub type Who = ::subxt::utils::AccountId32; + pub type Pure = ::subxt::ext::subxt_core::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type ProxyType = runtime_types::rococo_runtime::ProxyType; pub type DisambiguationIndex = ::core::primitive::u16; } - impl ::subxt::events::StaticEvent for PureCreated { + impl ::subxt::ext::subxt_core::events::StaticEvent for PureCreated { const PALLET: &'static str = "Proxy"; const EVENT: &'static str = "PureCreated"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "An announcement was placed to make a call in the future."] pub struct Announced { pub real: announced::Real, @@ -24729,24 +23123,24 @@ pub mod api { } pub mod announced { use super::runtime_types; - pub type Real = ::subxt::utils::AccountId32; - pub type Proxy = ::subxt::utils::AccountId32; - pub type CallHash = ::subxt::utils::H256; + pub type Real = ::subxt::ext::subxt_core::utils::AccountId32; + pub type Proxy = ::subxt::ext::subxt_core::utils::AccountId32; + pub type CallHash = ::subxt::ext::subxt_core::utils::H256; } - impl ::subxt::events::StaticEvent for Announced { + impl ::subxt::ext::subxt_core::events::StaticEvent for Announced { const PALLET: &'static str = "Proxy"; const EVENT: &'static str = "Announced"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A proxy was added."] pub struct ProxyAdded { pub delegator: proxy_added::Delegator, @@ -24756,25 +23150,25 @@ pub mod api { } pub mod proxy_added { use super::runtime_types; - pub type Delegator = ::subxt::utils::AccountId32; - pub type Delegatee = ::subxt::utils::AccountId32; + pub type Delegator = ::subxt::ext::subxt_core::utils::AccountId32; + pub type Delegatee = ::subxt::ext::subxt_core::utils::AccountId32; pub type ProxyType = runtime_types::rococo_runtime::ProxyType; pub type Delay = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for ProxyAdded { + impl ::subxt::ext::subxt_core::events::StaticEvent for ProxyAdded { const PALLET: &'static str = "Proxy"; const EVENT: &'static str = "ProxyAdded"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A proxy was removed."] pub struct ProxyRemoved { pub delegator: proxy_removed::Delegator, @@ -24784,12 +23178,12 @@ pub mod api { } pub mod proxy_removed { use super::runtime_types; - pub type Delegator = ::subxt::utils::AccountId32; - pub type Delegatee = ::subxt::utils::AccountId32; + pub type Delegator = ::subxt::ext::subxt_core::utils::AccountId32; + pub type Delegatee = ::subxt::ext::subxt_core::utils::AccountId32; pub type ProxyType = runtime_types::rococo_runtime::ProxyType; pub type Delay = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for ProxyRemoved { + impl ::subxt::ext::subxt_core::events::StaticEvent for ProxyRemoved { const PALLET: &'static str = "Proxy"; const EVENT: &'static str = "ProxyRemoved"; } @@ -24801,30 +23195,30 @@ pub mod api { pub mod proxies { use super::runtime_types; pub type Proxies = ( - runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::bounded_collections::bounded_vec::BoundedVec23< runtime_types::pallet_proxy::ProxyDefinition< - ::subxt::utils::AccountId32, + ::subxt::ext::subxt_core::utils::AccountId32, runtime_types::rococo_runtime::ProxyType, ::core::primitive::u32, >, >, ::core::primitive::u128, ); - pub type Param0 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod announcements { use super::runtime_types; pub type Announcements = ( - runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::bounded_collections::bounded_vec::BoundedVec24< runtime_types::pallet_proxy::Announcement< - ::subxt::utils::AccountId32, - ::subxt::utils::H256, + ::subxt::ext::subxt_core::utils::AccountId32, + ::subxt::ext::subxt_core::utils::H256, ::core::primitive::u32, >, >, ::core::primitive::u128, ); - pub type Param0 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } } pub struct StorageApi; @@ -24833,14 +23227,14 @@ pub mod api { #[doc = " which are being delegated to, together with the amount held on deposit."] pub fn proxies_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::proxies::Proxies, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Proxy", "Proxies", (), @@ -24855,18 +23249,22 @@ pub mod api { #[doc = " which are being delegated to, together with the amount held on deposit."] pub fn proxies( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::proxies::Param0, + >, types::proxies::Proxies, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Proxy", "Proxies", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 92u8, 131u8, 10u8, 14u8, 241u8, 148u8, 230u8, 81u8, 54u8, 152u8, 147u8, 180u8, 85u8, 28u8, 87u8, 215u8, 110u8, 13u8, 158u8, 207u8, 77u8, 102u8, @@ -24877,14 +23275,14 @@ pub mod api { #[doc = " The announcements made by the proxy (key)."] pub fn announcements_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::announcements::Announcements, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Proxy", "Announcements", (), @@ -24899,18 +23297,22 @@ pub mod api { #[doc = " The announcements made by the proxy (key)."] pub fn announcements( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::announcements::Param0, + >, types::announcements::Announcements, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Proxy", "Announcements", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 129u8, 228u8, 198u8, 210u8, 90u8, 69u8, 151u8, 198u8, 206u8, 174u8, 148u8, 58u8, 134u8, 14u8, 53u8, 56u8, 234u8, 71u8, 84u8, 247u8, 246u8, @@ -24931,8 +23333,9 @@ pub mod api { #[doc = " `sizeof(Balance)` bytes and whose key size is `sizeof(AccountId)` bytes."] pub fn proxy_deposit_base( &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Proxy", "ProxyDepositBase", [ @@ -24949,8 +23352,9 @@ pub mod api { #[doc = " into account `32 + proxy_type.encode().len()` bytes of data."] pub fn proxy_deposit_factor( &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Proxy", "ProxyDepositFactor", [ @@ -24961,8 +23365,11 @@ pub mod api { ) } #[doc = " The maximum amount of proxies allowed for a single account."] - pub fn max_proxies(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn max_proxies( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Proxy", "MaxProxies", [ @@ -24974,8 +23381,11 @@ pub mod api { ) } #[doc = " The maximum amount of time-delayed announcements that are allowed to be pending."] - pub fn max_pending(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn max_pending( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Proxy", "MaxPending", [ @@ -24992,8 +23402,9 @@ pub mod api { #[doc = " bytes)."] pub fn announcement_deposit_base( &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Proxy", "AnnouncementDepositBase", [ @@ -25009,8 +23420,9 @@ pub mod api { #[doc = " into a pre-existing storage value."] pub fn announcement_deposit_factor( &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Proxy", "AnnouncementDepositFactor", [ @@ -25037,150 +23449,89 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Immediately dispatch a multi-signature call using a single approval from the caller."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `other_signatories`: The accounts (other than the sender) who are part of the"] - #[doc = "multi-signature, but do not participate in the approval process."] - #[doc = "- `call`: The call to be executed."] - #[doc = ""] - #[doc = "Result is equivalent to the dispatched result."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "O(Z + C) where Z is the length of the call and C its execution weight."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::as_multi_threshold_1`]."] pub struct AsMultiThreshold1 { pub other_signatories: as_multi_threshold1::OtherSignatories, - pub call: ::std::boxed::Box, + pub call: + ::subxt::ext::subxt_core::alloc::boxed::Box, } pub mod as_multi_threshold1 { use super::runtime_types; - pub type OtherSignatories = ::std::vec::Vec<::subxt::utils::AccountId32>; + pub type OtherSignatories = ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >; pub type Call = runtime_types::rococo_runtime::RuntimeCall; } - impl ::subxt::blocks::StaticExtrinsic for AsMultiThreshold1 { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for AsMultiThreshold1 { const PALLET: &'static str = "Multisig"; const CALL: &'static str = "as_multi_threshold_1"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Register approval for a dispatch to be made from a deterministic composite account if"] - #[doc = "approved by a total of `threshold - 1` of `other_signatories`."] - #[doc = ""] - #[doc = "If there are enough, then dispatch the call."] - #[doc = ""] - #[doc = "Payment: `DepositBase` will be reserved if this is the first approval, plus"] - #[doc = "`threshold` times `DepositFactor`. It is returned once this dispatch happens or"] - #[doc = "is cancelled."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] - #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] - #[doc = "dispatch. May not be empty."] - #[doc = "- `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is"] - #[doc = "not the first approval, then it must be `Some`, with the timepoint (block number and"] - #[doc = "transaction index) of the first approval transaction."] - #[doc = "- `call`: The call to be executed."] - #[doc = ""] - #[doc = "NOTE: Unless this is the final approval, you will generally want to use"] - #[doc = "`approve_as_multi` instead, since it only requires a hash of the call."] - #[doc = ""] - #[doc = "Result is equivalent to the dispatched result if `threshold` is exactly `1`. Otherwise"] - #[doc = "on success, result is `Ok` and the result from the interior call, if it was executed,"] - #[doc = "may be found in the deposited `MultisigExecuted` event."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(S + Z + Call)`."] - #[doc = "- Up to one balance-reserve or unreserve operation."] - #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] - #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] - #[doc = "- One call encode & hash, both of complexity `O(Z)` where `Z` is tx-len."] - #[doc = "- One encode & hash, both of complexity `O(S)`."] - #[doc = "- Up to one binary search and insert (`O(logS + S)`)."] - #[doc = "- I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove."] - #[doc = "- One event."] - #[doc = "- The weight of the `call`."] - #[doc = "- Storage: inserts one item, value size bounded by `MaxSignatories`, with a deposit"] - #[doc = " taken for its lifetime of `DepositBase + threshold * DepositFactor`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::as_multi`]."] pub struct AsMulti { pub threshold: as_multi::Threshold, pub other_signatories: as_multi::OtherSignatories, pub maybe_timepoint: as_multi::MaybeTimepoint, - pub call: ::std::boxed::Box, + pub call: ::subxt::ext::subxt_core::alloc::boxed::Box, pub max_weight: as_multi::MaxWeight, } pub mod as_multi { use super::runtime_types; pub type Threshold = ::core::primitive::u16; - pub type OtherSignatories = ::std::vec::Vec<::subxt::utils::AccountId32>; + pub type OtherSignatories = ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >; pub type MaybeTimepoint = ::core::option::Option< runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>, >; pub type Call = runtime_types::rococo_runtime::RuntimeCall; pub type MaxWeight = runtime_types::sp_weights::weight_v2::Weight; } - impl ::subxt::blocks::StaticExtrinsic for AsMulti { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for AsMulti { const PALLET: &'static str = "Multisig"; const CALL: &'static str = "as_multi"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Register approval for a dispatch to be made from a deterministic composite account if"] - #[doc = "approved by a total of `threshold - 1` of `other_signatories`."] - #[doc = ""] - #[doc = "Payment: `DepositBase` will be reserved if this is the first approval, plus"] - #[doc = "`threshold` times `DepositFactor`. It is returned once this dispatch happens or"] - #[doc = "is cancelled."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] - #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] - #[doc = "dispatch. May not be empty."] - #[doc = "- `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is"] - #[doc = "not the first approval, then it must be `Some`, with the timepoint (block number and"] - #[doc = "transaction index) of the first approval transaction."] - #[doc = "- `call_hash`: The hash of the call to be executed."] - #[doc = ""] - #[doc = "NOTE: If this is the final approval, you will want to use `as_multi` instead."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(S)`."] - #[doc = "- Up to one balance-reserve or unreserve operation."] - #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] - #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] - #[doc = "- One encode & hash, both of complexity `O(S)`."] - #[doc = "- Up to one binary search and insert (`O(logS + S)`)."] - #[doc = "- I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove."] - #[doc = "- One event."] - #[doc = "- Storage: inserts one item, value size bounded by `MaxSignatories`, with a deposit"] - #[doc = " taken for its lifetime of `DepositBase + threshold * DepositFactor`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::approve_as_multi`]."] pub struct ApproveAsMulti { pub threshold: approve_as_multi::Threshold, pub other_signatories: approve_as_multi::OtherSignatories, @@ -25191,48 +23542,34 @@ pub mod api { pub mod approve_as_multi { use super::runtime_types; pub type Threshold = ::core::primitive::u16; - pub type OtherSignatories = ::std::vec::Vec<::subxt::utils::AccountId32>; + pub type OtherSignatories = ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >; pub type MaybeTimepoint = ::core::option::Option< runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>, >; pub type CallHash = [::core::primitive::u8; 32usize]; pub type MaxWeight = runtime_types::sp_weights::weight_v2::Weight; } - impl ::subxt::blocks::StaticExtrinsic for ApproveAsMulti { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ApproveAsMulti { const PALLET: &'static str = "Multisig"; const CALL: &'static str = "approve_as_multi"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Cancel a pre-existing, on-going multisig transaction. Any deposit reserved previously"] - #[doc = "for this operation will be unreserved on success."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] - #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] - #[doc = "dispatch. May not be empty."] - #[doc = "- `timepoint`: The timepoint (block number and transaction index) of the first approval"] - #[doc = "transaction for this dispatch."] - #[doc = "- `call_hash`: The hash of the call to be executed."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(S)`."] - #[doc = "- Up to one balance-reserve or unreserve operation."] - #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] - #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] - #[doc = "- One encode & hash, both of complexity `O(S)`."] - #[doc = "- One event."] - #[doc = "- I/O: 1 read `O(S)`, one remove."] - #[doc = "- Storage: removes one item."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::cancel_as_multi`]."] pub struct CancelAsMulti { pub threshold: cancel_as_multi::Threshold, pub other_signatories: cancel_as_multi::OtherSignatories, @@ -25242,89 +23579,43 @@ pub mod api { pub mod cancel_as_multi { use super::runtime_types; pub type Threshold = ::core::primitive::u16; - pub type OtherSignatories = ::std::vec::Vec<::subxt::utils::AccountId32>; + pub type OtherSignatories = ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >; pub type Timepoint = runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>; pub type CallHash = [::core::primitive::u8; 32usize]; } - impl ::subxt::blocks::StaticExtrinsic for CancelAsMulti { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for CancelAsMulti { const PALLET: &'static str = "Multisig"; const CALL: &'static str = "cancel_as_multi"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Immediately dispatch a multi-signature call using a single approval from the caller."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `other_signatories`: The accounts (other than the sender) who are part of the"] - #[doc = "multi-signature, but do not participate in the approval process."] - #[doc = "- `call`: The call to be executed."] - #[doc = ""] - #[doc = "Result is equivalent to the dispatched result."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "O(Z + C) where Z is the length of the call and C its execution weight."] + #[doc = "See [`Pallet::as_multi_threshold_1`]."] pub fn as_multi_threshold_1( &self, other_signatories: types::as_multi_threshold1::OtherSignatories, call: types::as_multi_threshold1::Call, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Multisig", "as_multi_threshold_1", types::AsMultiThreshold1 { other_signatories, - call: ::std::boxed::Box::new(call), + call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), }, [ - 223u8, 197u8, 77u8, 59u8, 210u8, 4u8, 228u8, 221u8, 213u8, 150u8, - 108u8, 151u8, 213u8, 147u8, 174u8, 207u8, 142u8, 149u8, 68u8, 126u8, - 75u8, 188u8, 206u8, 13u8, 103u8, 43u8, 249u8, 8u8, 172u8, 151u8, 212u8, - 57u8, + 193u8, 159u8, 235u8, 139u8, 215u8, 236u8, 234u8, 123u8, 30u8, 127u8, + 92u8, 58u8, 140u8, 165u8, 232u8, 42u8, 90u8, 11u8, 176u8, 101u8, 211u8, + 245u8, 255u8, 57u8, 203u8, 18u8, 250u8, 227u8, 188u8, 229u8, 241u8, + 230u8, ], ) } - #[doc = "Register approval for a dispatch to be made from a deterministic composite account if"] - #[doc = "approved by a total of `threshold - 1` of `other_signatories`."] - #[doc = ""] - #[doc = "If there are enough, then dispatch the call."] - #[doc = ""] - #[doc = "Payment: `DepositBase` will be reserved if this is the first approval, plus"] - #[doc = "`threshold` times `DepositFactor`. It is returned once this dispatch happens or"] - #[doc = "is cancelled."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] - #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] - #[doc = "dispatch. May not be empty."] - #[doc = "- `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is"] - #[doc = "not the first approval, then it must be `Some`, with the timepoint (block number and"] - #[doc = "transaction index) of the first approval transaction."] - #[doc = "- `call`: The call to be executed."] - #[doc = ""] - #[doc = "NOTE: Unless this is the final approval, you will generally want to use"] - #[doc = "`approve_as_multi` instead, since it only requires a hash of the call."] - #[doc = ""] - #[doc = "Result is equivalent to the dispatched result if `threshold` is exactly `1`. Otherwise"] - #[doc = "on success, result is `Ok` and the result from the interior call, if it was executed,"] - #[doc = "may be found in the deposited `MultisigExecuted` event."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(S + Z + Call)`."] - #[doc = "- Up to one balance-reserve or unreserve operation."] - #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] - #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] - #[doc = "- One call encode & hash, both of complexity `O(Z)` where `Z` is tx-len."] - #[doc = "- One encode & hash, both of complexity `O(S)`."] - #[doc = "- Up to one binary search and insert (`O(logS + S)`)."] - #[doc = "- I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove."] - #[doc = "- One event."] - #[doc = "- The weight of the `call`."] - #[doc = "- Storage: inserts one item, value size bounded by `MaxSignatories`, with a deposit"] - #[doc = " taken for its lifetime of `DepositBase + threshold * DepositFactor`."] + #[doc = "See [`Pallet::as_multi`]."] pub fn as_multi( &self, threshold: types::as_multi::Threshold, @@ -25332,55 +23623,26 @@ pub mod api { maybe_timepoint: types::as_multi::MaybeTimepoint, call: types::as_multi::Call, max_weight: types::as_multi::MaxWeight, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Multisig", "as_multi", types::AsMulti { threshold, other_signatories, maybe_timepoint, - call: ::std::boxed::Box::new(call), + call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), max_weight, }, [ - 185u8, 170u8, 191u8, 214u8, 209u8, 18u8, 122u8, 101u8, 51u8, 109u8, - 11u8, 192u8, 57u8, 170u8, 232u8, 162u8, 225u8, 99u8, 91u8, 218u8, 60u8, - 85u8, 159u8, 103u8, 150u8, 185u8, 158u8, 203u8, 228u8, 218u8, 164u8, - 63u8, + 101u8, 52u8, 26u8, 235u8, 226u8, 182u8, 13u8, 173u8, 150u8, 137u8, + 150u8, 147u8, 155u8, 127u8, 99u8, 254u8, 187u8, 27u8, 109u8, 227u8, + 158u8, 249u8, 19u8, 33u8, 216u8, 156u8, 223u8, 174u8, 89u8, 95u8, 91u8, + 208u8, ], ) } - #[doc = "Register approval for a dispatch to be made from a deterministic composite account if"] - #[doc = "approved by a total of `threshold - 1` of `other_signatories`."] - #[doc = ""] - #[doc = "Payment: `DepositBase` will be reserved if this is the first approval, plus"] - #[doc = "`threshold` times `DepositFactor`. It is returned once this dispatch happens or"] - #[doc = "is cancelled."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] - #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] - #[doc = "dispatch. May not be empty."] - #[doc = "- `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is"] - #[doc = "not the first approval, then it must be `Some`, with the timepoint (block number and"] - #[doc = "transaction index) of the first approval transaction."] - #[doc = "- `call_hash`: The hash of the call to be executed."] - #[doc = ""] - #[doc = "NOTE: If this is the final approval, you will want to use `as_multi` instead."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(S)`."] - #[doc = "- Up to one balance-reserve or unreserve operation."] - #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] - #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] - #[doc = "- One encode & hash, both of complexity `O(S)`."] - #[doc = "- Up to one binary search and insert (`O(logS + S)`)."] - #[doc = "- I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove."] - #[doc = "- One event."] - #[doc = "- Storage: inserts one item, value size bounded by `MaxSignatories`, with a deposit"] - #[doc = " taken for its lifetime of `DepositBase + threshold * DepositFactor`."] + #[doc = "See [`Pallet::approve_as_multi`]."] pub fn approve_as_multi( &self, threshold: types::approve_as_multi::Threshold, @@ -25388,8 +23650,8 @@ pub mod api { maybe_timepoint: types::approve_as_multi::MaybeTimepoint, call_hash: types::approve_as_multi::CallHash, max_weight: types::approve_as_multi::MaxWeight, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Multisig", "approve_as_multi", types::ApproveAsMulti { @@ -25406,35 +23668,15 @@ pub mod api { ], ) } - #[doc = "Cancel a pre-existing, on-going multisig transaction. Any deposit reserved previously"] - #[doc = "for this operation will be unreserved on success."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] - #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] - #[doc = "dispatch. May not be empty."] - #[doc = "- `timepoint`: The timepoint (block number and transaction index) of the first approval"] - #[doc = "transaction for this dispatch."] - #[doc = "- `call_hash`: The hash of the call to be executed."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(S)`."] - #[doc = "- Up to one balance-reserve or unreserve operation."] - #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] - #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] - #[doc = "- One encode & hash, both of complexity `O(S)`."] - #[doc = "- One event."] - #[doc = "- I/O: 1 read `O(S)`, one remove."] - #[doc = "- Storage: removes one item."] + #[doc = "See [`Pallet::cancel_as_multi`]."] pub fn cancel_as_multi( &self, threshold: types::cancel_as_multi::Threshold, other_signatories: types::cancel_as_multi::OtherSignatories, timepoint: types::cancel_as_multi::Timepoint, call_hash: types::cancel_as_multi::CallHash, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Multisig", "cancel_as_multi", types::CancelAsMulti { @@ -25457,15 +23699,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A new multisig operation has begun."] pub struct NewMultisig { pub approving: new_multisig::Approving, @@ -25474,24 +23716,24 @@ pub mod api { } pub mod new_multisig { use super::runtime_types; - pub type Approving = ::subxt::utils::AccountId32; - pub type Multisig = ::subxt::utils::AccountId32; + pub type Approving = ::subxt::ext::subxt_core::utils::AccountId32; + pub type Multisig = ::subxt::ext::subxt_core::utils::AccountId32; pub type CallHash = [::core::primitive::u8; 32usize]; } - impl ::subxt::events::StaticEvent for NewMultisig { + impl ::subxt::ext::subxt_core::events::StaticEvent for NewMultisig { const PALLET: &'static str = "Multisig"; const EVENT: &'static str = "NewMultisig"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A multisig operation has been approved by someone."] pub struct MultisigApproval { pub approving: multisig_approval::Approving, @@ -25501,26 +23743,26 @@ pub mod api { } pub mod multisig_approval { use super::runtime_types; - pub type Approving = ::subxt::utils::AccountId32; + pub type Approving = ::subxt::ext::subxt_core::utils::AccountId32; pub type Timepoint = runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>; - pub type Multisig = ::subxt::utils::AccountId32; + pub type Multisig = ::subxt::ext::subxt_core::utils::AccountId32; pub type CallHash = [::core::primitive::u8; 32usize]; } - impl ::subxt::events::StaticEvent for MultisigApproval { + impl ::subxt::ext::subxt_core::events::StaticEvent for MultisigApproval { const PALLET: &'static str = "Multisig"; const EVENT: &'static str = "MultisigApproval"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A multisig operation has been executed."] pub struct MultisigExecuted { pub approving: multisig_executed::Approving, @@ -25531,28 +23773,28 @@ pub mod api { } pub mod multisig_executed { use super::runtime_types; - pub type Approving = ::subxt::utils::AccountId32; + pub type Approving = ::subxt::ext::subxt_core::utils::AccountId32; pub type Timepoint = runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>; - pub type Multisig = ::subxt::utils::AccountId32; + pub type Multisig = ::subxt::ext::subxt_core::utils::AccountId32; pub type CallHash = [::core::primitive::u8; 32usize]; pub type Result = ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>; } - impl ::subxt::events::StaticEvent for MultisigExecuted { + impl ::subxt::ext::subxt_core::events::StaticEvent for MultisigExecuted { const PALLET: &'static str = "Multisig"; const EVENT: &'static str = "MultisigExecuted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A multisig operation has been cancelled."] pub struct MultisigCancelled { pub cancelling: multisig_cancelled::Cancelling, @@ -25562,13 +23804,13 @@ pub mod api { } pub mod multisig_cancelled { use super::runtime_types; - pub type Cancelling = ::subxt::utils::AccountId32; + pub type Cancelling = ::subxt::ext::subxt_core::utils::AccountId32; pub type Timepoint = runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>; - pub type Multisig = ::subxt::utils::AccountId32; + pub type Multisig = ::subxt::ext::subxt_core::utils::AccountId32; pub type CallHash = [::core::primitive::u8; 32usize]; } - impl ::subxt::events::StaticEvent for MultisigCancelled { + impl ::subxt::ext::subxt_core::events::StaticEvent for MultisigCancelled { const PALLET: &'static str = "Multisig"; const EVENT: &'static str = "MultisigCancelled"; } @@ -25582,9 +23824,9 @@ pub mod api { pub type Multisigs = runtime_types::pallet_multisig::Multisig< ::core::primitive::u32, ::core::primitive::u128, - ::subxt::utils::AccountId32, + ::subxt::ext::subxt_core::utils::AccountId32, >; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; pub type Param1 = [::core::primitive::u8; 32usize]; } } @@ -25593,14 +23835,14 @@ pub mod api { #[doc = " The set of open multisig operations."] pub fn multisigs_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::multisigs::Multisigs, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Multisig", "Multisigs", (), @@ -25614,18 +23856,22 @@ pub mod api { #[doc = " The set of open multisig operations."] pub fn multisigs_iter1( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::multisigs::Param0, + >, types::multisigs::Multisigs, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Multisig", "Multisigs", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 154u8, 109u8, 45u8, 18u8, 155u8, 151u8, 81u8, 28u8, 86u8, 127u8, 189u8, 151u8, 49u8, 61u8, 12u8, 149u8, 84u8, 61u8, 110u8, 197u8, 200u8, 140u8, @@ -25636,24 +23882,32 @@ pub mod api { #[doc = " The set of open multisig operations."] pub fn multisigs( &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< ( - ::subxt::storage::address::StaticStorageKey, - ::subxt::storage::address::StaticStorageKey, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::multisigs::Param0, + >, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::multisigs::Param1, + >, ), types::multisigs::Multisigs, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Multisig", "Multisigs", ( - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), ), [ 154u8, 109u8, 45u8, 18u8, 155u8, 151u8, 81u8, 28u8, 86u8, 127u8, 189u8, @@ -25674,8 +23928,11 @@ pub mod api { #[doc = " This is held for an additional storage item whose value size is"] #[doc = " `4 + sizeof((BlockNumber, Balance, AccountId))` bytes and whose key size is"] #[doc = " `32 + sizeof(AccountId)` bytes."] - pub fn deposit_base(&self) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + pub fn deposit_base( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Multisig", "DepositBase", [ @@ -25690,8 +23947,9 @@ pub mod api { #[doc = " This is held for adding 32 bytes more into a pre-existing storage value."] pub fn deposit_factor( &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Multisig", "DepositFactor", [ @@ -25704,8 +23962,9 @@ pub mod api { #[doc = " The maximum amount of signatories allowed in the multisig."] pub fn max_signatories( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Multisig", "MaxSignatories", [ @@ -25733,142 +23992,147 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Register a preimage on-chain."] - #[doc = ""] - #[doc = "If the preimage was previously requested, no fees or deposits are taken for providing"] - #[doc = "the preimage. Otherwise, a deposit is taken proportional to the size of the preimage."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::note_preimage`]."] pub struct NotePreimage { pub bytes: note_preimage::Bytes, } pub mod note_preimage { use super::runtime_types; - pub type Bytes = ::std::vec::Vec<::core::primitive::u8>; + pub type Bytes = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; } - impl ::subxt::blocks::StaticExtrinsic for NotePreimage { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for NotePreimage { const PALLET: &'static str = "Preimage"; const CALL: &'static str = "note_preimage"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Clear an unrequested preimage from the runtime storage."] - #[doc = ""] - #[doc = "If `len` is provided, then it will be a much cheaper operation."] - #[doc = ""] - #[doc = "- `hash`: The hash of the preimage to be removed from the store."] - #[doc = "- `len`: The length of the preimage of `hash`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::unnote_preimage`]."] pub struct UnnotePreimage { pub hash: unnote_preimage::Hash, } pub mod unnote_preimage { use super::runtime_types; - pub type Hash = ::subxt::utils::H256; + pub type Hash = ::subxt::ext::subxt_core::utils::H256; } - impl ::subxt::blocks::StaticExtrinsic for UnnotePreimage { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for UnnotePreimage { const PALLET: &'static str = "Preimage"; const CALL: &'static str = "unnote_preimage"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Request a preimage be uploaded to the chain without paying any fees or deposits."] - #[doc = ""] - #[doc = "If the preimage requests has already been provided on-chain, we unreserve any deposit"] - #[doc = "a user may have paid, and take the control of the preimage out of their hands."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::request_preimage`]."] pub struct RequestPreimage { pub hash: request_preimage::Hash, } pub mod request_preimage { use super::runtime_types; - pub type Hash = ::subxt::utils::H256; + pub type Hash = ::subxt::ext::subxt_core::utils::H256; } - impl ::subxt::blocks::StaticExtrinsic for RequestPreimage { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RequestPreimage { const PALLET: &'static str = "Preimage"; const CALL: &'static str = "request_preimage"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Clear a previously made request for a preimage."] - #[doc = ""] - #[doc = "NOTE: THIS MUST NOT BE CALLED ON `hash` MORE TIMES THAN `request_preimage`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::unrequest_preimage`]."] pub struct UnrequestPreimage { pub hash: unrequest_preimage::Hash, } pub mod unrequest_preimage { use super::runtime_types; - pub type Hash = ::subxt::utils::H256; + pub type Hash = ::subxt::ext::subxt_core::utils::H256; } - impl ::subxt::blocks::StaticExtrinsic for UnrequestPreimage { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for UnrequestPreimage { const PALLET: &'static str = "Preimage"; const CALL: &'static str = "unrequest_preimage"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Ensure that the a bulk of pre-images is upgraded."] - #[doc = ""] - #[doc = "The caller pays no fee if at least 90% of pre-images were successfully updated."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::ensure_updated`]."] pub struct EnsureUpdated { pub hashes: ensure_updated::Hashes, } pub mod ensure_updated { use super::runtime_types; - pub type Hashes = ::std::vec::Vec<::subxt::utils::H256>; + pub type Hashes = ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::H256, + >; } - impl ::subxt::blocks::StaticExtrinsic for EnsureUpdated { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for EnsureUpdated { const PALLET: &'static str = "Preimage"; const CALL: &'static str = "ensure_updated"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Register a preimage on-chain."] - #[doc = ""] - #[doc = "If the preimage was previously requested, no fees or deposits are taken for providing"] - #[doc = "the preimage. Otherwise, a deposit is taken proportional to the size of the preimage."] + #[doc = "See [`Pallet::note_preimage`]."] pub fn note_preimage( &self, bytes: types::note_preimage::Bytes, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Preimage", "note_preimage", types::NotePreimage { bytes }, @@ -25879,17 +24143,12 @@ pub mod api { ], ) } - #[doc = "Clear an unrequested preimage from the runtime storage."] - #[doc = ""] - #[doc = "If `len` is provided, then it will be a much cheaper operation."] - #[doc = ""] - #[doc = "- `hash`: The hash of the preimage to be removed from the store."] - #[doc = "- `len`: The length of the preimage of `hash`."] + #[doc = "See [`Pallet::unnote_preimage`]."] pub fn unnote_preimage( &self, hash: types::unnote_preimage::Hash, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Preimage", "unnote_preimage", types::UnnotePreimage { hash }, @@ -25901,15 +24160,12 @@ pub mod api { ], ) } - #[doc = "Request a preimage be uploaded to the chain without paying any fees or deposits."] - #[doc = ""] - #[doc = "If the preimage requests has already been provided on-chain, we unreserve any deposit"] - #[doc = "a user may have paid, and take the control of the preimage out of their hands."] + #[doc = "See [`Pallet::request_preimage`]."] pub fn request_preimage( &self, hash: types::request_preimage::Hash, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Preimage", "request_preimage", types::RequestPreimage { hash }, @@ -25920,14 +24176,13 @@ pub mod api { ], ) } - #[doc = "Clear a previously made request for a preimage."] - #[doc = ""] - #[doc = "NOTE: THIS MUST NOT BE CALLED ON `hash` MORE TIMES THAN `request_preimage`."] + #[doc = "See [`Pallet::unrequest_preimage`]."] pub fn unrequest_preimage( &self, hash: types::unrequest_preimage::Hash, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Preimage", "unrequest_preimage", types::UnrequestPreimage { hash }, @@ -25939,14 +24194,12 @@ pub mod api { ], ) } - #[doc = "Ensure that the a bulk of pre-images is upgraded."] - #[doc = ""] - #[doc = "The caller pays no fee if at least 90% of pre-images were successfully updated."] + #[doc = "See [`Pallet::ensure_updated`]."] pub fn ensure_updated( &self, hashes: types::ensure_updated::Hashes, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Preimage", "ensure_updated", types::EnsureUpdated { hashes }, @@ -25965,68 +24218,68 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A preimage has been noted."] pub struct Noted { pub hash: noted::Hash, } pub mod noted { use super::runtime_types; - pub type Hash = ::subxt::utils::H256; + pub type Hash = ::subxt::ext::subxt_core::utils::H256; } - impl ::subxt::events::StaticEvent for Noted { + impl ::subxt::ext::subxt_core::events::StaticEvent for Noted { const PALLET: &'static str = "Preimage"; const EVENT: &'static str = "Noted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A preimage has been requested."] pub struct Requested { pub hash: requested::Hash, } pub mod requested { use super::runtime_types; - pub type Hash = ::subxt::utils::H256; + pub type Hash = ::subxt::ext::subxt_core::utils::H256; } - impl ::subxt::events::StaticEvent for Requested { + impl ::subxt::ext::subxt_core::events::StaticEvent for Requested { const PALLET: &'static str = "Preimage"; const EVENT: &'static str = "Requested"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A preimage has ben cleared."] pub struct Cleared { pub hash: cleared::Hash, } pub mod cleared { use super::runtime_types; - pub type Hash = ::subxt::utils::H256; + pub type Hash = ::subxt::ext::subxt_core::utils::H256; } - impl ::subxt::events::StaticEvent for Cleared { + impl ::subxt::ext::subxt_core::events::StaticEvent for Cleared { const PALLET: &'static str = "Preimage"; const EVENT: &'static str = "Cleared"; } @@ -26038,26 +24291,26 @@ pub mod api { pub mod status_for { use super::runtime_types; pub type StatusFor = runtime_types::pallet_preimage::OldRequestStatus< - ::subxt::utils::AccountId32, + ::subxt::ext::subxt_core::utils::AccountId32, ::core::primitive::u128, >; - pub type Param0 = ::subxt::utils::H256; + pub type Param0 = ::subxt::ext::subxt_core::utils::H256; } pub mod request_status_for { use super::runtime_types; pub type RequestStatusFor = runtime_types::pallet_preimage::RequestStatus< - ::subxt::utils::AccountId32, + ::subxt::ext::subxt_core::utils::AccountId32, runtime_types::frame_support::traits::tokens::fungible::HoldConsideration, >; - pub type Param0 = ::subxt::utils::H256; + pub type Param0 = ::subxt::ext::subxt_core::utils::H256; } pub mod preimage_for { use super::runtime_types; pub type PreimageFor = - runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::bounded_collections::bounded_vec::BoundedVec5< ::core::primitive::u8, >; - pub type Param0 = ::subxt::utils::H256; + pub type Param0 = ::subxt::ext::subxt_core::utils::H256; pub type Param1 = ::core::primitive::u32; } } @@ -26066,14 +24319,14 @@ pub mod api { #[doc = " The request status of a given hash."] pub fn status_for_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::status_for::StatusFor, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Preimage", "StatusFor", (), @@ -26088,18 +24341,22 @@ pub mod api { #[doc = " The request status of a given hash."] pub fn status_for( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::status_for::Param0, + >, types::status_for::StatusFor, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Preimage", "StatusFor", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 187u8, 100u8, 54u8, 112u8, 96u8, 129u8, 36u8, 149u8, 127u8, 226u8, 126u8, 171u8, 72u8, 189u8, 59u8, 126u8, 204u8, 125u8, 67u8, 204u8, @@ -26111,14 +24368,14 @@ pub mod api { #[doc = " The request status of a given hash."] pub fn request_status_for_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::request_status_for::RequestStatusFor, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Preimage", "RequestStatusFor", (), @@ -26132,18 +24389,22 @@ pub mod api { #[doc = " The request status of a given hash."] pub fn request_status_for( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::request_status_for::Param0, + >, types::request_status_for::RequestStatusFor, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Preimage", "RequestStatusFor", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 72u8, 59u8, 254u8, 211u8, 96u8, 223u8, 10u8, 64u8, 6u8, 139u8, 213u8, 85u8, 14u8, 29u8, 166u8, 37u8, 140u8, 124u8, 186u8, 156u8, 172u8, @@ -26153,14 +24414,14 @@ pub mod api { } pub fn preimage_for_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::preimage_for::PreimageFor, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Preimage", "PreimageFor", (), @@ -26174,18 +24435,22 @@ pub mod api { } pub fn preimage_for_iter1( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::preimage_for::Param0, + >, types::preimage_for::PreimageFor, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Preimage", "PreimageFor", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 106u8, 5u8, 17u8, 46u8, 6u8, 184u8, 177u8, 113u8, 169u8, 34u8, 119u8, 141u8, 117u8, 40u8, 30u8, 94u8, 187u8, 35u8, 206u8, 216u8, 143u8, @@ -26196,24 +24461,32 @@ pub mod api { } pub fn preimage_for( &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< ( - ::subxt::storage::address::StaticStorageKey, - ::subxt::storage::address::StaticStorageKey, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::preimage_for::Param0, + >, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::preimage_for::Param1, + >, ), types::preimage_for::PreimageFor, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Preimage", "PreimageFor", ( - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), ), [ 106u8, 5u8, 17u8, 46u8, 6u8, 184u8, 177u8, 113u8, 169u8, 34u8, 119u8, @@ -26240,21 +24513,22 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Initialize a conversion rate to native balance for the given asset."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)"] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::create`]."] pub struct Create { - pub asset_kind: ::std::boxed::Box, + pub asset_kind: ::subxt::ext::subxt_core::alloc::boxed::Box, pub rate: create::Rate, } pub mod create { @@ -26263,26 +24537,27 @@ pub mod api { runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset; pub type Rate = runtime_types::sp_arithmetic::fixed_point::FixedU128; } - impl ::subxt::blocks::StaticExtrinsic for Create { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Create { const PALLET: &'static str = "AssetRate"; const CALL: &'static str = "create"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Update the conversion rate to native balance for the given asset."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)"] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::update`]."] pub struct Update { - pub asset_kind: ::std::boxed::Box, + pub asset_kind: ::subxt::ext::subxt_core::alloc::boxed::Box, pub rate: update::Rate, } pub mod update { @@ -26291,104 +24566,104 @@ pub mod api { runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset; pub type Rate = runtime_types::sp_arithmetic::fixed_point::FixedU128; } - impl ::subxt::blocks::StaticExtrinsic for Update { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Update { const PALLET: &'static str = "AssetRate"; const CALL: &'static str = "update"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Remove an existing conversion rate to native balance for the given asset."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)"] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::remove`]."] pub struct Remove { - pub asset_kind: ::std::boxed::Box, + pub asset_kind: ::subxt::ext::subxt_core::alloc::boxed::Box, } pub mod remove { use super::runtime_types; pub type AssetKind = runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset; } - impl ::subxt::blocks::StaticExtrinsic for Remove { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Remove { const PALLET: &'static str = "AssetRate"; const CALL: &'static str = "remove"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Initialize a conversion rate to native balance for the given asset."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)"] + #[doc = "See [`Pallet::create`]."] pub fn create( &self, asset_kind: types::create::AssetKind, rate: types::create::Rate, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "AssetRate", "create", types::Create { - asset_kind: ::std::boxed::Box::new(asset_kind), + asset_kind: ::subxt::ext::subxt_core::alloc::boxed::Box::new( + asset_kind, + ), rate, }, [ - 163u8, 173u8, 223u8, 197u8, 42u8, 251u8, 151u8, 159u8, 252u8, 132u8, - 225u8, 224u8, 207u8, 127u8, 38u8, 0u8, 101u8, 46u8, 29u8, 65u8, 2u8, - 241u8, 3u8, 79u8, 218u8, 10u8, 159u8, 122u8, 48u8, 7u8, 225u8, 103u8, + 154u8, 152u8, 38u8, 160u8, 110u8, 48u8, 11u8, 80u8, 92u8, 50u8, 177u8, + 170u8, 43u8, 6u8, 192u8, 234u8, 105u8, 114u8, 165u8, 178u8, 173u8, + 134u8, 92u8, 233u8, 123u8, 191u8, 176u8, 154u8, 222u8, 224u8, 32u8, + 183u8, ], ) } - #[doc = "Update the conversion rate to native balance for the given asset."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)"] + #[doc = "See [`Pallet::update`]."] pub fn update( &self, asset_kind: types::update::AssetKind, rate: types::update::Rate, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "AssetRate", "update", types::Update { - asset_kind: ::std::boxed::Box::new(asset_kind), + asset_kind: ::subxt::ext::subxt_core::alloc::boxed::Box::new( + asset_kind, + ), rate, }, [ - 21u8, 51u8, 198u8, 111u8, 185u8, 155u8, 215u8, 34u8, 5u8, 135u8, 138u8, - 77u8, 76u8, 158u8, 63u8, 240u8, 117u8, 39u8, 83u8, 146u8, 70u8, 136u8, - 61u8, 159u8, 30u8, 66u8, 85u8, 41u8, 122u8, 174u8, 25u8, 49u8, + 188u8, 71u8, 197u8, 156u8, 105u8, 63u8, 11u8, 90u8, 124u8, 227u8, + 146u8, 78u8, 93u8, 216u8, 100u8, 41u8, 128u8, 115u8, 66u8, 243u8, + 198u8, 61u8, 115u8, 30u8, 170u8, 218u8, 254u8, 203u8, 37u8, 141u8, + 67u8, 179u8, ], ) } - #[doc = "Remove an existing conversion rate to native balance for the given asset."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)"] + #[doc = "See [`Pallet::remove`]."] pub fn remove( &self, asset_kind: types::remove::AssetKind, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "AssetRate", "remove", types::Remove { - asset_kind: ::std::boxed::Box::new(asset_kind), + asset_kind: ::subxt::ext::subxt_core::alloc::boxed::Box::new( + asset_kind, + ), }, [ - 205u8, 34u8, 63u8, 131u8, 204u8, 76u8, 186u8, 233u8, 160u8, 45u8, - 231u8, 159u8, 186u8, 60u8, 97u8, 218u8, 174u8, 144u8, 106u8, 58u8, - 69u8, 23u8, 244u8, 129u8, 19u8, 250u8, 16u8, 99u8, 165u8, 165u8, 101u8, - 18u8, + 229u8, 203u8, 96u8, 158u8, 162u8, 236u8, 80u8, 239u8, 106u8, 193u8, + 85u8, 234u8, 99u8, 87u8, 214u8, 214u8, 157u8, 55u8, 70u8, 91u8, 9u8, + 187u8, 105u8, 99u8, 134u8, 181u8, 56u8, 212u8, 152u8, 136u8, 100u8, + 32u8, ], ) } @@ -26399,15 +24674,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct AssetRateCreated { pub asset_kind: asset_rate_created::AssetKind, pub rate: asset_rate_created::Rate, @@ -26418,20 +24693,20 @@ pub mod api { runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset; pub type Rate = runtime_types::sp_arithmetic::fixed_point::FixedU128; } - impl ::subxt::events::StaticEvent for AssetRateCreated { + impl ::subxt::ext::subxt_core::events::StaticEvent for AssetRateCreated { const PALLET: &'static str = "AssetRate"; const EVENT: &'static str = "AssetRateCreated"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct AssetRateRemoved { pub asset_kind: asset_rate_removed::AssetKind, } @@ -26440,20 +24715,20 @@ pub mod api { pub type AssetKind = runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset; } - impl ::subxt::events::StaticEvent for AssetRateRemoved { + impl ::subxt::ext::subxt_core::events::StaticEvent for AssetRateRemoved { const PALLET: &'static str = "AssetRate"; const EVENT: &'static str = "AssetRateRemoved"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct AssetRateUpdated { pub asset_kind: asset_rate_updated::AssetKind, pub old: asset_rate_updated::Old, @@ -26466,7 +24741,7 @@ pub mod api { pub type Old = runtime_types::sp_arithmetic::fixed_point::FixedU128; pub type New = runtime_types::sp_arithmetic::fixed_point::FixedU128; } - impl ::subxt::events::StaticEvent for AssetRateUpdated { + impl ::subxt::ext::subxt_core::events::StaticEvent for AssetRateUpdated { const PALLET: &'static str = "AssetRate"; const EVENT: &'static str = "AssetRateUpdated"; } @@ -26490,22 +24765,21 @@ pub mod api { #[doc = " E.g. `native_amount = asset_amount * ConversionRateToNative::::get(asset_kind)`"] pub fn conversion_rate_to_native_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::conversion_rate_to_native::ConversionRateToNative, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "AssetRate", "ConversionRateToNative", (), [ - 230u8, 127u8, 110u8, 126u8, 79u8, 168u8, 134u8, 97u8, 195u8, 105u8, - 16u8, 57u8, 197u8, 104u8, 87u8, 144u8, 83u8, 188u8, 85u8, 253u8, 230u8, - 194u8, 183u8, 235u8, 152u8, 222u8, 40u8, 20u8, 135u8, 98u8, 140u8, - 108u8, + 211u8, 210u8, 178u8, 27u8, 157u8, 1u8, 68u8, 252u8, 84u8, 174u8, 141u8, + 185u8, 177u8, 39u8, 49u8, 35u8, 65u8, 254u8, 204u8, 246u8, 132u8, 59u8, + 190u8, 228u8, 135u8, 237u8, 161u8, 35u8, 21u8, 114u8, 88u8, 174u8, ], ) } @@ -26514,25 +24788,26 @@ pub mod api { #[doc = " E.g. `native_amount = asset_amount * ConversionRateToNative::::get(asset_kind)`"] pub fn conversion_rate_to_native( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::conversion_rate_to_native::Param0, >, types::conversion_rate_to_native::ConversionRateToNative, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "AssetRate", "ConversionRateToNative", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ - 230u8, 127u8, 110u8, 126u8, 79u8, 168u8, 134u8, 97u8, 195u8, 105u8, - 16u8, 57u8, 197u8, 104u8, 87u8, 144u8, 83u8, 188u8, 85u8, 253u8, 230u8, - 194u8, 183u8, 235u8, 152u8, 222u8, 40u8, 20u8, 135u8, 98u8, 140u8, - 108u8, + 211u8, 210u8, 178u8, 27u8, 157u8, 1u8, 68u8, 252u8, 84u8, 174u8, 141u8, + 185u8, 177u8, 39u8, 49u8, 35u8, 65u8, 254u8, 204u8, 246u8, 132u8, 59u8, + 190u8, 228u8, 135u8, 237u8, 161u8, 35u8, 21u8, 114u8, 88u8, 174u8, ], ) } @@ -26553,27 +24828,20 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Propose a new bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Payment: `TipReportDepositBase` will be reserved from the origin account, as well as"] - #[doc = "`DataDepositPerByte` for each byte in `reason`. It will be unreserved upon approval,"] - #[doc = "or slashed when rejected."] - #[doc = ""] - #[doc = "- `curator`: The curator account whom will manage this bounty."] - #[doc = "- `fee`: The curator fee."] - #[doc = "- `value`: The total payment amount of this bounty, curator fee included."] - #[doc = "- `description`: The description of this bounty."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::propose_bounty`]."] pub struct ProposeBounty { #[codec(compact)] pub value: propose_bounty::Value, @@ -26582,29 +24850,28 @@ pub mod api { pub mod propose_bounty { use super::runtime_types; pub type Value = ::core::primitive::u128; - pub type Description = ::std::vec::Vec<::core::primitive::u8>; + pub type Description = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; } - impl ::subxt::blocks::StaticExtrinsic for ProposeBounty { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ProposeBounty { const PALLET: &'static str = "Bounties"; const CALL: &'static str = "propose_bounty"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Approve a bounty proposal. At a later time, the bounty will be funded and become active"] - #[doc = "and the original deposit will be returned."] - #[doc = ""] - #[doc = "May only be called from `T::SpendOrigin`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::approve_bounty`]."] pub struct ApproveBounty { #[codec(compact)] pub bounty_id: approve_bounty::BountyId, @@ -26613,26 +24880,25 @@ pub mod api { use super::runtime_types; pub type BountyId = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for ApproveBounty { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ApproveBounty { const PALLET: &'static str = "Bounties"; const CALL: &'static str = "approve_bounty"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Propose a curator to a funded bounty."] - #[doc = ""] - #[doc = "May only be called from `T::SpendOrigin`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::propose_curator`]."] pub struct ProposeCurator { #[codec(compact)] pub bounty_id: propose_curator::BountyId, @@ -26643,41 +24909,31 @@ pub mod api { pub mod propose_curator { use super::runtime_types; pub type BountyId = ::core::primitive::u32; - pub type Curator = - ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Curator = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type Fee = ::core::primitive::u128; } - impl ::subxt::blocks::StaticExtrinsic for ProposeCurator { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ProposeCurator { const PALLET: &'static str = "Bounties"; const CALL: &'static str = "propose_curator"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Unassign curator from a bounty."] - #[doc = ""] - #[doc = "This function can only be called by the `RejectOrigin` a signed origin."] - #[doc = ""] - #[doc = "If this function is called by the `RejectOrigin`, we assume that the curator is"] - #[doc = "malicious or inactive. As a result, we will slash the curator when possible."] - #[doc = ""] - #[doc = "If the origin is the curator, we take this as a sign they are unable to do their job and"] - #[doc = "they willingly give up. We could slash them, but for now we allow them to recover their"] - #[doc = "deposit and exit without issue. (We may want to change this if it is abused.)"] - #[doc = ""] - #[doc = "Finally, the origin can be anyone if and only if the curator is \"inactive\". This allows"] - #[doc = "anyone in the community to call out that a curator is not doing their due diligence, and"] - #[doc = "we should pick a new curator. In this case the curator should also be slashed."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::unassign_curator`]."] pub struct UnassignCurator { #[codec(compact)] pub bounty_id: unassign_curator::BountyId, @@ -26686,27 +24942,25 @@ pub mod api { use super::runtime_types; pub type BountyId = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for UnassignCurator { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for UnassignCurator { const PALLET: &'static str = "Bounties"; const CALL: &'static str = "unassign_curator"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Accept the curator role for a bounty."] - #[doc = "A deposit will be reserved from curator and refund upon successful payout."] - #[doc = ""] - #[doc = "May only be called from the curator."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::accept_curator`]."] pub struct AcceptCurator { #[codec(compact)] pub bounty_id: accept_curator::BountyId, @@ -26715,30 +24969,25 @@ pub mod api { use super::runtime_types; pub type BountyId = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for AcceptCurator { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for AcceptCurator { const PALLET: &'static str = "Bounties"; const CALL: &'static str = "accept_curator"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Award bounty to a beneficiary account. The beneficiary will be able to claim the funds"] - #[doc = "after a delay."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the curator of this bounty."] - #[doc = ""] - #[doc = "- `bounty_id`: Bounty ID to award."] - #[doc = "- `beneficiary`: The beneficiary account whom will receive the payout."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::award_bounty`]."] pub struct AwardBounty { #[codec(compact)] pub bounty_id: award_bounty::BountyId, @@ -26747,31 +24996,30 @@ pub mod api { pub mod award_bounty { use super::runtime_types; pub type BountyId = ::core::primitive::u32; - pub type Beneficiary = - ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Beneficiary = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; } - impl ::subxt::blocks::StaticExtrinsic for AwardBounty { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for AwardBounty { const PALLET: &'static str = "Bounties"; const CALL: &'static str = "award_bounty"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Claim the payout from an awarded bounty after payout delay."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the beneficiary of this bounty."] - #[doc = ""] - #[doc = "- `bounty_id`: Bounty ID to claim."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::claim_bounty`]."] pub struct ClaimBounty { #[codec(compact)] pub bounty_id: claim_bounty::BountyId, @@ -26780,29 +25028,25 @@ pub mod api { use super::runtime_types; pub type BountyId = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for ClaimBounty { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ClaimBounty { const PALLET: &'static str = "Bounties"; const CALL: &'static str = "claim_bounty"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Cancel a proposed or active bounty. All the funds will be sent to treasury and"] - #[doc = "the curator deposit will be unreserved if possible."] - #[doc = ""] - #[doc = "Only `T::RejectOrigin` is able to cancel a bounty."] - #[doc = ""] - #[doc = "- `bounty_id`: Bounty ID to cancel."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::close_bounty`]."] pub struct CloseBounty { #[codec(compact)] pub bounty_id: close_bounty::BountyId, @@ -26811,29 +25055,25 @@ pub mod api { use super::runtime_types; pub type BountyId = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for CloseBounty { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for CloseBounty { const PALLET: &'static str = "Bounties"; const CALL: &'static str = "close_bounty"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Extend the expiry time of an active bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the curator of this bounty."] - #[doc = ""] - #[doc = "- `bounty_id`: Bounty ID to extend."] - #[doc = "- `remark`: additional information."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::extend_bounty_expiry`]."] pub struct ExtendBountyExpiry { #[codec(compact)] pub bounty_id: extend_bounty_expiry::BountyId, @@ -26842,33 +25082,23 @@ pub mod api { pub mod extend_bounty_expiry { use super::runtime_types; pub type BountyId = ::core::primitive::u32; - pub type Remark = ::std::vec::Vec<::core::primitive::u8>; + pub type Remark = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; } - impl ::subxt::blocks::StaticExtrinsic for ExtendBountyExpiry { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ExtendBountyExpiry { const PALLET: &'static str = "Bounties"; const CALL: &'static str = "extend_bounty_expiry"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Propose a new bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Payment: `TipReportDepositBase` will be reserved from the origin account, as well as"] - #[doc = "`DataDepositPerByte` for each byte in `reason`. It will be unreserved upon approval,"] - #[doc = "or slashed when rejected."] - #[doc = ""] - #[doc = "- `curator`: The curator account whom will manage this bounty."] - #[doc = "- `fee`: The curator fee."] - #[doc = "- `value`: The total payment amount of this bounty, curator fee included."] - #[doc = "- `description`: The description of this bounty."] + #[doc = "See [`Pallet::propose_bounty`]."] pub fn propose_bounty( &self, value: types::propose_bounty::Value, description: types::propose_bounty::Description, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Bounties", "propose_bounty", types::ProposeBounty { value, description }, @@ -26879,18 +25109,12 @@ pub mod api { ], ) } - #[doc = "Approve a bounty proposal. At a later time, the bounty will be funded and become active"] - #[doc = "and the original deposit will be returned."] - #[doc = ""] - #[doc = "May only be called from `T::SpendOrigin`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::approve_bounty`]."] pub fn approve_bounty( &self, bounty_id: types::approve_bounty::BountyId, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Bounties", "approve_bounty", types::ApproveBounty { bounty_id }, @@ -26902,19 +25126,14 @@ pub mod api { ], ) } - #[doc = "Propose a curator to a funded bounty."] - #[doc = ""] - #[doc = "May only be called from `T::SpendOrigin`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::propose_curator`]."] pub fn propose_curator( &self, bounty_id: types::propose_curator::BountyId, curator: types::propose_curator::Curator, fee: types::propose_curator::Fee, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Bounties", "propose_curator", types::ProposeCurator { @@ -26929,28 +25148,12 @@ pub mod api { ], ) } - #[doc = "Unassign curator from a bounty."] - #[doc = ""] - #[doc = "This function can only be called by the `RejectOrigin` a signed origin."] - #[doc = ""] - #[doc = "If this function is called by the `RejectOrigin`, we assume that the curator is"] - #[doc = "malicious or inactive. As a result, we will slash the curator when possible."] - #[doc = ""] - #[doc = "If the origin is the curator, we take this as a sign they are unable to do their job and"] - #[doc = "they willingly give up. We could slash them, but for now we allow them to recover their"] - #[doc = "deposit and exit without issue. (We may want to change this if it is abused.)"] - #[doc = ""] - #[doc = "Finally, the origin can be anyone if and only if the curator is \"inactive\". This allows"] - #[doc = "anyone in the community to call out that a curator is not doing their due diligence, and"] - #[doc = "we should pick a new curator. In this case the curator should also be slashed."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::unassign_curator`]."] pub fn unassign_curator( &self, bounty_id: types::unassign_curator::BountyId, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Bounties", "unassign_curator", types::UnassignCurator { bounty_id }, @@ -26962,18 +25165,12 @@ pub mod api { ], ) } - #[doc = "Accept the curator role for a bounty."] - #[doc = "A deposit will be reserved from curator and refund upon successful payout."] - #[doc = ""] - #[doc = "May only be called from the curator."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::accept_curator`]."] pub fn accept_curator( &self, bounty_id: types::accept_curator::BountyId, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Bounties", "accept_curator", types::AcceptCurator { bounty_id }, @@ -26984,22 +25181,13 @@ pub mod api { ], ) } - #[doc = "Award bounty to a beneficiary account. The beneficiary will be able to claim the funds"] - #[doc = "after a delay."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the curator of this bounty."] - #[doc = ""] - #[doc = "- `bounty_id`: Bounty ID to award."] - #[doc = "- `beneficiary`: The beneficiary account whom will receive the payout."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::award_bounty`]."] pub fn award_bounty( &self, bounty_id: types::award_bounty::BountyId, beneficiary: types::award_bounty::Beneficiary, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Bounties", "award_bounty", types::AwardBounty { @@ -27013,19 +25201,12 @@ pub mod api { ], ) } - #[doc = "Claim the payout from an awarded bounty after payout delay."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the beneficiary of this bounty."] - #[doc = ""] - #[doc = "- `bounty_id`: Bounty ID to claim."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::claim_bounty`]."] pub fn claim_bounty( &self, bounty_id: types::claim_bounty::BountyId, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Bounties", "claim_bounty", types::ClaimBounty { bounty_id }, @@ -27037,20 +25218,12 @@ pub mod api { ], ) } - #[doc = "Cancel a proposed or active bounty. All the funds will be sent to treasury and"] - #[doc = "the curator deposit will be unreserved if possible."] - #[doc = ""] - #[doc = "Only `T::RejectOrigin` is able to cancel a bounty."] - #[doc = ""] - #[doc = "- `bounty_id`: Bounty ID to cancel."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::close_bounty`]."] pub fn close_bounty( &self, bounty_id: types::close_bounty::BountyId, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Bounties", "close_bounty", types::CloseBounty { bounty_id }, @@ -27062,21 +25235,14 @@ pub mod api { ], ) } - #[doc = "Extend the expiry time of an active bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the curator of this bounty."] - #[doc = ""] - #[doc = "- `bounty_id`: Bounty ID to extend."] - #[doc = "- `remark`: additional information."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::extend_bounty_expiry`]."] pub fn extend_bounty_expiry( &self, bounty_id: types::extend_bounty_expiry::BountyId, remark: types::extend_bounty_expiry::Remark, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Bounties", "extend_bounty_expiry", types::ExtendBountyExpiry { bounty_id, remark }, @@ -27095,15 +25261,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "New bounty proposal."] pub struct BountyProposed { pub index: bounty_proposed::Index, @@ -27112,20 +25278,20 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for BountyProposed { + impl ::subxt::ext::subxt_core::events::StaticEvent for BountyProposed { const PALLET: &'static str = "Bounties"; const EVENT: &'static str = "BountyProposed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A bounty proposal was rejected; funds were slashed."] pub struct BountyRejected { pub index: bounty_rejected::Index, @@ -27136,20 +25302,20 @@ pub mod api { pub type Index = ::core::primitive::u32; pub type Bond = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for BountyRejected { + impl ::subxt::ext::subxt_core::events::StaticEvent for BountyRejected { const PALLET: &'static str = "Bounties"; const EVENT: &'static str = "BountyRejected"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A bounty proposal is funded and became active."] pub struct BountyBecameActive { pub index: bounty_became_active::Index, @@ -27158,20 +25324,20 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for BountyBecameActive { + impl ::subxt::ext::subxt_core::events::StaticEvent for BountyBecameActive { const PALLET: &'static str = "Bounties"; const EVENT: &'static str = "BountyBecameActive"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A bounty is awarded to a beneficiary."] pub struct BountyAwarded { pub index: bounty_awarded::Index, @@ -27180,22 +25346,22 @@ pub mod api { pub mod bounty_awarded { use super::runtime_types; pub type Index = ::core::primitive::u32; - pub type Beneficiary = ::subxt::utils::AccountId32; + pub type Beneficiary = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for BountyAwarded { + impl ::subxt::ext::subxt_core::events::StaticEvent for BountyAwarded { const PALLET: &'static str = "Bounties"; const EVENT: &'static str = "BountyAwarded"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A bounty is claimed by beneficiary."] pub struct BountyClaimed { pub index: bounty_claimed::Index, @@ -27206,22 +25372,22 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; pub type Payout = ::core::primitive::u128; - pub type Beneficiary = ::subxt::utils::AccountId32; + pub type Beneficiary = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for BountyClaimed { + impl ::subxt::ext::subxt_core::events::StaticEvent for BountyClaimed { const PALLET: &'static str = "Bounties"; const EVENT: &'static str = "BountyClaimed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A bounty is cancelled."] pub struct BountyCanceled { pub index: bounty_canceled::Index, @@ -27230,20 +25396,20 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for BountyCanceled { + impl ::subxt::ext::subxt_core::events::StaticEvent for BountyCanceled { const PALLET: &'static str = "Bounties"; const EVENT: &'static str = "BountyCanceled"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A bounty expiry is extended."] pub struct BountyExtended { pub index: bounty_extended::Index, @@ -27252,20 +25418,20 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for BountyExtended { + impl ::subxt::ext::subxt_core::events::StaticEvent for BountyExtended { const PALLET: &'static str = "Bounties"; const EVENT: &'static str = "BountyExtended"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A bounty is approved."] pub struct BountyApproved { pub index: bounty_approved::Index, @@ -27274,20 +25440,20 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for BountyApproved { + impl ::subxt::ext::subxt_core::events::StaticEvent for BountyApproved { const PALLET: &'static str = "Bounties"; const EVENT: &'static str = "BountyApproved"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A bounty curator is proposed."] pub struct CuratorProposed { pub bounty_id: curator_proposed::BountyId, @@ -27296,22 +25462,22 @@ pub mod api { pub mod curator_proposed { use super::runtime_types; pub type BountyId = ::core::primitive::u32; - pub type Curator = ::subxt::utils::AccountId32; + pub type Curator = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for CuratorProposed { + impl ::subxt::ext::subxt_core::events::StaticEvent for CuratorProposed { const PALLET: &'static str = "Bounties"; const EVENT: &'static str = "CuratorProposed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A bounty curator is unassigned."] pub struct CuratorUnassigned { pub bounty_id: curator_unassigned::BountyId, @@ -27320,20 +25486,20 @@ pub mod api { use super::runtime_types; pub type BountyId = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for CuratorUnassigned { + impl ::subxt::ext::subxt_core::events::StaticEvent for CuratorUnassigned { const PALLET: &'static str = "Bounties"; const EVENT: &'static str = "CuratorUnassigned"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A bounty curator is accepted."] pub struct CuratorAccepted { pub bounty_id: curator_accepted::BountyId, @@ -27342,9 +25508,9 @@ pub mod api { pub mod curator_accepted { use super::runtime_types; pub type BountyId = ::core::primitive::u32; - pub type Curator = ::subxt::utils::AccountId32; + pub type Curator = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for CuratorAccepted { + impl ::subxt::ext::subxt_core::events::StaticEvent for CuratorAccepted { const PALLET: &'static str = "Bounties"; const EVENT: &'static str = "CuratorAccepted"; } @@ -27360,7 +25526,7 @@ pub mod api { pub mod bounties { use super::runtime_types; pub type Bounties = runtime_types::pallet_bounties::Bounty< - ::subxt::utils::AccountId32, + ::subxt::ext::subxt_core::utils::AccountId32, ::core::primitive::u128, ::core::primitive::u32, >; @@ -27369,7 +25535,7 @@ pub mod api { pub mod bounty_descriptions { use super::runtime_types; pub type BountyDescriptions = - runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::bounded_collections::bounded_vec::BoundedVec5< ::core::primitive::u8, >; pub type Param0 = ::core::primitive::u32; @@ -27377,7 +25543,7 @@ pub mod api { pub mod bounty_approvals { use super::runtime_types; pub type BountyApprovals = - runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::bounded_collections::bounded_vec::BoundedVec12< ::core::primitive::u32, >; } @@ -27387,14 +25553,14 @@ pub mod api { #[doc = " Number of bounty proposals that have been made."] pub fn bounty_count( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::bounty_count::BountyCount, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Bounties", "BountyCount", (), @@ -27409,14 +25575,14 @@ pub mod api { #[doc = " Bounties that have been made."] pub fn bounties_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::bounties::Bounties, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Bounties", "Bounties", (), @@ -27431,18 +25597,22 @@ pub mod api { #[doc = " Bounties that have been made."] pub fn bounties( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::bounties::Param0, + >, types::bounties::Bounties, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Bounties", "Bounties", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 183u8, 96u8, 172u8, 86u8, 167u8, 129u8, 51u8, 179u8, 238u8, 155u8, 196u8, 77u8, 158u8, 102u8, 188u8, 19u8, 79u8, 178u8, 145u8, 189u8, @@ -27454,14 +25624,14 @@ pub mod api { #[doc = " The description of each bounty."] pub fn bounty_descriptions_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::bounty_descriptions::BountyDescriptions, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Bounties", "BountyDescriptions", (), @@ -27475,18 +25645,22 @@ pub mod api { #[doc = " The description of each bounty."] pub fn bounty_descriptions( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::bounty_descriptions::Param0, + >, types::bounty_descriptions::BountyDescriptions, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Bounties", "BountyDescriptions", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 71u8, 40u8, 133u8, 84u8, 55u8, 207u8, 169u8, 189u8, 160u8, 51u8, 202u8, 144u8, 15u8, 226u8, 97u8, 114u8, 54u8, 247u8, 53u8, 26u8, 36u8, 54u8, @@ -27497,14 +25671,14 @@ pub mod api { #[doc = " Bounty indices that have been approved but not yet funded."] pub fn bounty_approvals( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::bounty_approvals::BountyApprovals, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Bounties", "BountyApprovals", (), @@ -27524,8 +25698,9 @@ pub mod api { #[doc = " The amount held on deposit for placing a bounty proposal."] pub fn bounty_deposit_base( &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Bounties", "BountyDepositBase", [ @@ -27538,8 +25713,9 @@ pub mod api { #[doc = " The delay period for which a bounty beneficiary need to wait before claim the payout."] pub fn bounty_deposit_payout_delay( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Bounties", "BountyDepositPayoutDelay", [ @@ -27553,8 +25729,9 @@ pub mod api { #[doc = " Bounty duration in blocks."] pub fn bounty_update_period( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Bounties", "BountyUpdatePeriod", [ @@ -27571,9 +25748,10 @@ pub mod api { #[doc = " `CuratorDepositMin`."] pub fn curator_deposit_multiplier( &self, - ) -> ::subxt::constants::Address - { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address< + runtime_types::sp_arithmetic::per_things::Permill, + > { + ::subxt::ext::subxt_core::constants::Address::new_static( "Bounties", "CuratorDepositMultiplier", [ @@ -27586,9 +25764,10 @@ pub mod api { #[doc = " Maximum amount of funds that should be placed in a deposit for making a proposal."] pub fn curator_deposit_max( &self, - ) -> ::subxt::constants::Address<::core::option::Option<::core::primitive::u128>> - { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address< + ::core::option::Option<::core::primitive::u128>, + > { + ::subxt::ext::subxt_core::constants::Address::new_static( "Bounties", "CuratorDepositMax", [ @@ -27602,9 +25781,10 @@ pub mod api { #[doc = " Minimum amount of funds that should be placed in a deposit for making a proposal."] pub fn curator_deposit_min( &self, - ) -> ::subxt::constants::Address<::core::option::Option<::core::primitive::u128>> - { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address< + ::core::option::Option<::core::primitive::u128>, + > { + ::subxt::ext::subxt_core::constants::Address::new_static( "Bounties", "CuratorDepositMin", [ @@ -27618,8 +25798,9 @@ pub mod api { #[doc = " Minimum value for a bounty."] pub fn bounty_value_minimum( &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Bounties", "BountyValueMinimum", [ @@ -27632,8 +25813,9 @@ pub mod api { #[doc = " The amount held on deposit per byte within the tip report reason or bounty description."] pub fn data_deposit_per_byte( &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Bounties", "DataDepositPerByte", [ @@ -27648,8 +25830,9 @@ pub mod api { #[doc = " Benchmarks depend on this value, be sure to update weights file when changing this value"] pub fn maximum_reason_length( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Bounties", "MaximumReasonLength", [ @@ -27677,34 +25860,20 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Add a new child-bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the curator of parent"] - #[doc = "bounty and the parent bounty must be in \"active\" state."] - #[doc = ""] - #[doc = "Child-bounty gets added successfully & fund gets transferred from"] - #[doc = "parent bounty to child-bounty account, if parent bounty has enough"] - #[doc = "funds, else the call fails."] - #[doc = ""] - #[doc = "Upper bound to maximum number of active child bounties that can be"] - #[doc = "added are managed via runtime trait config"] - #[doc = "[`Config::MaxActiveChildBountyCount`]."] - #[doc = ""] - #[doc = "If the call is success, the status of child-bounty is updated to"] - #[doc = "\"Added\"."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty for which child-bounty is being added."] - #[doc = "- `value`: Value for executing the proposal."] - #[doc = "- `description`: Text description for the child-bounty."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::add_child_bounty`]."] pub struct AddChildBounty { #[codec(compact)] pub parent_bounty_id: add_child_bounty::ParentBountyId, @@ -27716,37 +25885,28 @@ pub mod api { use super::runtime_types; pub type ParentBountyId = ::core::primitive::u32; pub type Value = ::core::primitive::u128; - pub type Description = ::std::vec::Vec<::core::primitive::u8>; + pub type Description = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; } - impl ::subxt::blocks::StaticExtrinsic for AddChildBounty { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for AddChildBounty { const PALLET: &'static str = "ChildBounties"; const CALL: &'static str = "add_child_bounty"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Propose curator for funded child-bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be curator of parent bounty."] - #[doc = ""] - #[doc = "Parent bounty must be in active state, for this child-bounty call to"] - #[doc = "work."] - #[doc = ""] - #[doc = "Child-bounty must be in \"Added\" state, for processing the call. And"] - #[doc = "state of child-bounty is moved to \"CuratorProposed\" on successful"] - #[doc = "call completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] - #[doc = "- `curator`: Address of child-bounty curator."] - #[doc = "- `fee`: payment fee to child-bounty curator for execution."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::propose_curator`]."] pub struct ProposeCurator { #[codec(compact)] pub parent_bounty_id: propose_curator::ParentBountyId, @@ -27760,43 +25920,31 @@ pub mod api { use super::runtime_types; pub type ParentBountyId = ::core::primitive::u32; pub type ChildBountyId = ::core::primitive::u32; - pub type Curator = - ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Curator = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type Fee = ::core::primitive::u128; } - impl ::subxt::blocks::StaticExtrinsic for ProposeCurator { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ProposeCurator { const PALLET: &'static str = "ChildBounties"; const CALL: &'static str = "propose_curator"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Accept the curator role for the child-bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the curator of this"] - #[doc = "child-bounty."] - #[doc = ""] - #[doc = "A deposit will be reserved from the curator and refund upon"] - #[doc = "successful payout or cancellation."] - #[doc = ""] - #[doc = "Fee for curator is deducted from curator fee of parent bounty."] - #[doc = ""] - #[doc = "Parent bounty must be in active state, for this child-bounty call to"] - #[doc = "work."] - #[doc = ""] - #[doc = "Child-bounty must be in \"CuratorProposed\" state, for processing the"] - #[doc = "call. And state of child-bounty is moved to \"Active\" on successful"] - #[doc = "call completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::accept_curator`]."] pub struct AcceptCurator { #[codec(compact)] pub parent_bounty_id: accept_curator::ParentBountyId, @@ -27808,54 +25956,25 @@ pub mod api { pub type ParentBountyId = ::core::primitive::u32; pub type ChildBountyId = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for AcceptCurator { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for AcceptCurator { const PALLET: &'static str = "ChildBounties"; const CALL: &'static str = "accept_curator"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Unassign curator from a child-bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call can be either `RejectOrigin`, or"] - #[doc = "the curator of the parent bounty, or any signed origin."] - #[doc = ""] - #[doc = "For the origin other than T::RejectOrigin and the child-bounty"] - #[doc = "curator, parent bounty must be in active state, for this call to"] - #[doc = "work. We allow child-bounty curator and T::RejectOrigin to execute"] - #[doc = "this call irrespective of the parent bounty state."] - #[doc = ""] - #[doc = "If this function is called by the `RejectOrigin` or the"] - #[doc = "parent bounty curator, we assume that the child-bounty curator is"] - #[doc = "malicious or inactive. As a result, child-bounty curator deposit is"] - #[doc = "slashed."] - #[doc = ""] - #[doc = "If the origin is the child-bounty curator, we take this as a sign"] - #[doc = "that they are unable to do their job, and are willingly giving up."] - #[doc = "We could slash the deposit, but for now we allow them to unreserve"] - #[doc = "their deposit and exit without issue. (We may want to change this if"] - #[doc = "it is abused.)"] - #[doc = ""] - #[doc = "Finally, the origin can be anyone iff the child-bounty curator is"] - #[doc = "\"inactive\". Expiry update due of parent bounty is used to estimate"] - #[doc = "inactive state of child-bounty curator."] - #[doc = ""] - #[doc = "This allows anyone in the community to call out that a child-bounty"] - #[doc = "curator is not doing their due diligence, and we should pick a new"] - #[doc = "one. In this case the child-bounty curator deposit is slashed."] - #[doc = ""] - #[doc = "State of child-bounty is moved to Added state on successful call"] - #[doc = "completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::unassign_curator`]."] pub struct UnassignCurator { #[codec(compact)] pub parent_bounty_id: unassign_curator::ParentBountyId, @@ -27867,37 +25986,25 @@ pub mod api { pub type ParentBountyId = ::core::primitive::u32; pub type ChildBountyId = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for UnassignCurator { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for UnassignCurator { const PALLET: &'static str = "ChildBounties"; const CALL: &'static str = "unassign_curator"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Award child-bounty to a beneficiary."] - #[doc = ""] - #[doc = "The beneficiary will be able to claim the funds after a delay."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the parent curator or"] - #[doc = "curator of this child-bounty."] - #[doc = ""] - #[doc = "Parent bounty must be in active state, for this child-bounty call to"] - #[doc = "work."] - #[doc = ""] - #[doc = "Child-bounty must be in active state, for processing the call. And"] - #[doc = "state of child-bounty is moved to \"PendingPayout\" on successful call"] - #[doc = "completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] - #[doc = "- `beneficiary`: Beneficiary account."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::award_child_bounty`]."] pub struct AwardChildBounty { #[codec(compact)] pub parent_bounty_id: award_child_bounty::ParentBountyId, @@ -27909,39 +26016,30 @@ pub mod api { use super::runtime_types; pub type ParentBountyId = ::core::primitive::u32; pub type ChildBountyId = ::core::primitive::u32; - pub type Beneficiary = - ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Beneficiary = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; } - impl ::subxt::blocks::StaticExtrinsic for AwardChildBounty { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for AwardChildBounty { const PALLET: &'static str = "ChildBounties"; const CALL: &'static str = "award_child_bounty"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Claim the payout from an awarded child-bounty after payout delay."] - #[doc = ""] - #[doc = "The dispatch origin for this call may be any signed origin."] - #[doc = ""] - #[doc = "Call works independent of parent bounty state, No need for parent"] - #[doc = "bounty to be in active state."] - #[doc = ""] - #[doc = "The Beneficiary is paid out with agreed bounty value. Curator fee is"] - #[doc = "paid & curator deposit is unreserved."] - #[doc = ""] - #[doc = "Child-bounty must be in \"PendingPayout\" state, for processing the"] - #[doc = "call. And instance of child-bounty is removed from the state on"] - #[doc = "successful call completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::claim_child_bounty`]."] pub struct ClaimChildBounty { #[codec(compact)] pub parent_bounty_id: claim_child_bounty::ParentBountyId, @@ -27953,42 +26051,25 @@ pub mod api { pub type ParentBountyId = ::core::primitive::u32; pub type ChildBountyId = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for ClaimChildBounty { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ClaimChildBounty { const PALLET: &'static str = "ChildBounties"; const CALL: &'static str = "claim_child_bounty"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Cancel a proposed or active child-bounty. Child-bounty account funds"] - #[doc = "are transferred to parent bounty account. The child-bounty curator"] - #[doc = "deposit may be unreserved if possible."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be either parent curator or"] - #[doc = "`T::RejectOrigin`."] - #[doc = ""] - #[doc = "If the state of child-bounty is `Active`, curator deposit is"] - #[doc = "unreserved."] - #[doc = ""] - #[doc = "If the state of child-bounty is `PendingPayout`, call fails &"] - #[doc = "returns `PendingPayout` error."] - #[doc = ""] - #[doc = "For the origin other than T::RejectOrigin, parent bounty must be in"] - #[doc = "active state, for this child-bounty call to work. For origin"] - #[doc = "T::RejectOrigin execution is forced."] - #[doc = ""] - #[doc = "Instance of child-bounty is removed from the state on successful"] - #[doc = "call completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::close_child_bounty`]."] pub struct CloseChildBounty { #[codec(compact)] pub parent_bounty_id: close_child_bounty::ParentBountyId, @@ -28000,39 +26081,21 @@ pub mod api { pub type ParentBountyId = ::core::primitive::u32; pub type ChildBountyId = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for CloseChildBounty { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for CloseChildBounty { const PALLET: &'static str = "ChildBounties"; const CALL: &'static str = "close_child_bounty"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Add a new child-bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the curator of parent"] - #[doc = "bounty and the parent bounty must be in \"active\" state."] - #[doc = ""] - #[doc = "Child-bounty gets added successfully & fund gets transferred from"] - #[doc = "parent bounty to child-bounty account, if parent bounty has enough"] - #[doc = "funds, else the call fails."] - #[doc = ""] - #[doc = "Upper bound to maximum number of active child bounties that can be"] - #[doc = "added are managed via runtime trait config"] - #[doc = "[`Config::MaxActiveChildBountyCount`]."] - #[doc = ""] - #[doc = "If the call is success, the status of child-bounty is updated to"] - #[doc = "\"Added\"."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty for which child-bounty is being added."] - #[doc = "- `value`: Value for executing the proposal."] - #[doc = "- `description`: Text description for the child-bounty."] + #[doc = "See [`Pallet::add_child_bounty`]."] pub fn add_child_bounty( &self, parent_bounty_id: types::add_child_bounty::ParentBountyId, value: types::add_child_bounty::Value, description: types::add_child_bounty::Description, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "ChildBounties", "add_child_bounty", types::AddChildBounty { @@ -28048,29 +26111,15 @@ pub mod api { ], ) } - #[doc = "Propose curator for funded child-bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be curator of parent bounty."] - #[doc = ""] - #[doc = "Parent bounty must be in active state, for this child-bounty call to"] - #[doc = "work."] - #[doc = ""] - #[doc = "Child-bounty must be in \"Added\" state, for processing the call. And"] - #[doc = "state of child-bounty is moved to \"CuratorProposed\" on successful"] - #[doc = "call completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] - #[doc = "- `curator`: Address of child-bounty curator."] - #[doc = "- `fee`: payment fee to child-bounty curator for execution."] + #[doc = "See [`Pallet::propose_curator`]."] pub fn propose_curator( &self, parent_bounty_id: types::propose_curator::ParentBountyId, child_bounty_id: types::propose_curator::ChildBountyId, curator: types::propose_curator::Curator, fee: types::propose_curator::Fee, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "ChildBounties", "propose_curator", types::ProposeCurator { @@ -28086,31 +26135,13 @@ pub mod api { ], ) } - #[doc = "Accept the curator role for the child-bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the curator of this"] - #[doc = "child-bounty."] - #[doc = ""] - #[doc = "A deposit will be reserved from the curator and refund upon"] - #[doc = "successful payout or cancellation."] - #[doc = ""] - #[doc = "Fee for curator is deducted from curator fee of parent bounty."] - #[doc = ""] - #[doc = "Parent bounty must be in active state, for this child-bounty call to"] - #[doc = "work."] - #[doc = ""] - #[doc = "Child-bounty must be in \"CuratorProposed\" state, for processing the"] - #[doc = "call. And state of child-bounty is moved to \"Active\" on successful"] - #[doc = "call completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "See [`Pallet::accept_curator`]."] pub fn accept_curator( &self, parent_bounty_id: types::accept_curator::ParentBountyId, child_bounty_id: types::accept_curator::ChildBountyId, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "ChildBounties", "accept_curator", types::AcceptCurator { @@ -28125,46 +26156,13 @@ pub mod api { ], ) } - #[doc = "Unassign curator from a child-bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call can be either `RejectOrigin`, or"] - #[doc = "the curator of the parent bounty, or any signed origin."] - #[doc = ""] - #[doc = "For the origin other than T::RejectOrigin and the child-bounty"] - #[doc = "curator, parent bounty must be in active state, for this call to"] - #[doc = "work. We allow child-bounty curator and T::RejectOrigin to execute"] - #[doc = "this call irrespective of the parent bounty state."] - #[doc = ""] - #[doc = "If this function is called by the `RejectOrigin` or the"] - #[doc = "parent bounty curator, we assume that the child-bounty curator is"] - #[doc = "malicious or inactive. As a result, child-bounty curator deposit is"] - #[doc = "slashed."] - #[doc = ""] - #[doc = "If the origin is the child-bounty curator, we take this as a sign"] - #[doc = "that they are unable to do their job, and are willingly giving up."] - #[doc = "We could slash the deposit, but for now we allow them to unreserve"] - #[doc = "their deposit and exit without issue. (We may want to change this if"] - #[doc = "it is abused.)"] - #[doc = ""] - #[doc = "Finally, the origin can be anyone iff the child-bounty curator is"] - #[doc = "\"inactive\". Expiry update due of parent bounty is used to estimate"] - #[doc = "inactive state of child-bounty curator."] - #[doc = ""] - #[doc = "This allows anyone in the community to call out that a child-bounty"] - #[doc = "curator is not doing their due diligence, and we should pick a new"] - #[doc = "one. In this case the child-bounty curator deposit is slashed."] - #[doc = ""] - #[doc = "State of child-bounty is moved to Added state on successful call"] - #[doc = "completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "See [`Pallet::unassign_curator`]."] pub fn unassign_curator( &self, parent_bounty_id: types::unassign_curator::ParentBountyId, child_bounty_id: types::unassign_curator::ChildBountyId, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "ChildBounties", "unassign_curator", types::UnassignCurator { @@ -28179,30 +26177,15 @@ pub mod api { ], ) } - #[doc = "Award child-bounty to a beneficiary."] - #[doc = ""] - #[doc = "The beneficiary will be able to claim the funds after a delay."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the parent curator or"] - #[doc = "curator of this child-bounty."] - #[doc = ""] - #[doc = "Parent bounty must be in active state, for this child-bounty call to"] - #[doc = "work."] - #[doc = ""] - #[doc = "Child-bounty must be in active state, for processing the call. And"] - #[doc = "state of child-bounty is moved to \"PendingPayout\" on successful call"] - #[doc = "completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] - #[doc = "- `beneficiary`: Beneficiary account."] + #[doc = "See [`Pallet::award_child_bounty`]."] pub fn award_child_bounty( &self, parent_bounty_id: types::award_child_bounty::ParentBountyId, child_bounty_id: types::award_child_bounty::ChildBountyId, beneficiary: types::award_child_bounty::Beneficiary, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "ChildBounties", "award_child_bounty", types::AwardChildBounty { @@ -28217,28 +26200,14 @@ pub mod api { ], ) } - #[doc = "Claim the payout from an awarded child-bounty after payout delay."] - #[doc = ""] - #[doc = "The dispatch origin for this call may be any signed origin."] - #[doc = ""] - #[doc = "Call works independent of parent bounty state, No need for parent"] - #[doc = "bounty to be in active state."] - #[doc = ""] - #[doc = "The Beneficiary is paid out with agreed bounty value. Curator fee is"] - #[doc = "paid & curator deposit is unreserved."] - #[doc = ""] - #[doc = "Child-bounty must be in \"PendingPayout\" state, for processing the"] - #[doc = "call. And instance of child-bounty is removed from the state on"] - #[doc = "successful call completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "See [`Pallet::claim_child_bounty`]."] pub fn claim_child_bounty( &self, parent_bounty_id: types::claim_child_bounty::ParentBountyId, child_bounty_id: types::claim_child_bounty::ChildBountyId, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "ChildBounties", "claim_child_bounty", types::ClaimChildBounty { @@ -28252,34 +26221,14 @@ pub mod api { ], ) } - #[doc = "Cancel a proposed or active child-bounty. Child-bounty account funds"] - #[doc = "are transferred to parent bounty account. The child-bounty curator"] - #[doc = "deposit may be unreserved if possible."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be either parent curator or"] - #[doc = "`T::RejectOrigin`."] - #[doc = ""] - #[doc = "If the state of child-bounty is `Active`, curator deposit is"] - #[doc = "unreserved."] - #[doc = ""] - #[doc = "If the state of child-bounty is `PendingPayout`, call fails &"] - #[doc = "returns `PendingPayout` error."] - #[doc = ""] - #[doc = "For the origin other than T::RejectOrigin, parent bounty must be in"] - #[doc = "active state, for this child-bounty call to work. For origin"] - #[doc = "T::RejectOrigin execution is forced."] - #[doc = ""] - #[doc = "Instance of child-bounty is removed from the state on successful"] - #[doc = "call completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "See [`Pallet::close_child_bounty`]."] pub fn close_child_bounty( &self, parent_bounty_id: types::close_child_bounty::ParentBountyId, child_bounty_id: types::close_child_bounty::ChildBountyId, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "ChildBounties", "close_child_bounty", types::CloseChildBounty { @@ -28300,15 +26249,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A child-bounty is added."] pub struct Added { pub index: added::Index, @@ -28319,20 +26268,20 @@ pub mod api { pub type Index = ::core::primitive::u32; pub type ChildIndex = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for Added { + impl ::subxt::ext::subxt_core::events::StaticEvent for Added { const PALLET: &'static str = "ChildBounties"; const EVENT: &'static str = "Added"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A child-bounty is awarded to a beneficiary."] pub struct Awarded { pub index: awarded::Index, @@ -28343,22 +26292,22 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; pub type ChildIndex = ::core::primitive::u32; - pub type Beneficiary = ::subxt::utils::AccountId32; + pub type Beneficiary = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for Awarded { + impl ::subxt::ext::subxt_core::events::StaticEvent for Awarded { const PALLET: &'static str = "ChildBounties"; const EVENT: &'static str = "Awarded"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A child-bounty is claimed by beneficiary."] pub struct Claimed { pub index: claimed::Index, @@ -28371,22 +26320,22 @@ pub mod api { pub type Index = ::core::primitive::u32; pub type ChildIndex = ::core::primitive::u32; pub type Payout = ::core::primitive::u128; - pub type Beneficiary = ::subxt::utils::AccountId32; + pub type Beneficiary = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for Claimed { + impl ::subxt::ext::subxt_core::events::StaticEvent for Claimed { const PALLET: &'static str = "ChildBounties"; const EVENT: &'static str = "Claimed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A child-bounty is cancelled."] pub struct Canceled { pub index: canceled::Index, @@ -28397,7 +26346,7 @@ pub mod api { pub type Index = ::core::primitive::u32; pub type ChildIndex = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for Canceled { + impl ::subxt::ext::subxt_core::events::StaticEvent for Canceled { const PALLET: &'static str = "ChildBounties"; const EVENT: &'static str = "Canceled"; } @@ -28418,7 +26367,7 @@ pub mod api { pub mod child_bounties { use super::runtime_types; pub type ChildBounties = runtime_types::pallet_child_bounties::ChildBounty< - ::subxt::utils::AccountId32, + ::subxt::ext::subxt_core::utils::AccountId32, ::core::primitive::u128, ::core::primitive::u32, >; @@ -28428,7 +26377,7 @@ pub mod api { pub mod child_bounty_descriptions { use super::runtime_types; pub type ChildBountyDescriptions = - runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::bounded_collections::bounded_vec::BoundedVec5< ::core::primitive::u8, >; pub type Param0 = ::core::primitive::u32; @@ -28444,14 +26393,14 @@ pub mod api { #[doc = " Number of total child bounties."] pub fn child_bounty_count( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::child_bounty_count::ChildBountyCount, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ChildBounties", "ChildBountyCount", (), @@ -28466,14 +26415,14 @@ pub mod api { #[doc = " Map of parent bounty index to number of child bounties."] pub fn parent_child_bounties_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::parent_child_bounties::ParentChildBounties, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ChildBounties", "ParentChildBounties", (), @@ -28488,20 +26437,22 @@ pub mod api { #[doc = " Map of parent bounty index to number of child bounties."] pub fn parent_child_bounties( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::parent_child_bounties::Param0, >, types::parent_child_bounties::ParentChildBounties, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ChildBounties", "ParentChildBounties", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 52u8, 179u8, 242u8, 212u8, 91u8, 185u8, 176u8, 52u8, 100u8, 200u8, 1u8, 41u8, 184u8, 234u8, 234u8, 8u8, 123u8, 252u8, 131u8, 55u8, 109u8, @@ -28512,14 +26463,14 @@ pub mod api { #[doc = " Child bounties that have been added."] pub fn child_bounties_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::child_bounties::ChildBounties, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ChildBounties", "ChildBounties", (), @@ -28534,18 +26485,22 @@ pub mod api { #[doc = " Child bounties that have been added."] pub fn child_bounties_iter1( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::child_bounties::Param0, + >, types::child_bounties::ChildBounties, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ChildBounties", "ChildBounties", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 165u8, 240u8, 158u8, 204u8, 183u8, 190u8, 129u8, 65u8, 226u8, 8u8, 182u8, 103u8, 46u8, 162u8, 35u8, 155u8, 131u8, 45u8, 163u8, 64u8, @@ -28557,24 +26512,32 @@ pub mod api { #[doc = " Child bounties that have been added."] pub fn child_bounties( &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< ( - ::subxt::storage::address::StaticStorageKey, - ::subxt::storage::address::StaticStorageKey, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::child_bounties::Param0, + >, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::child_bounties::Param1, + >, ), types::child_bounties::ChildBounties, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ChildBounties", "ChildBounties", ( - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), ), [ 165u8, 240u8, 158u8, 204u8, 183u8, 190u8, 129u8, 65u8, 226u8, 8u8, @@ -28587,14 +26550,14 @@ pub mod api { #[doc = " The description of each child-bounty."] pub fn child_bounty_descriptions_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::child_bounty_descriptions::ChildBountyDescriptions, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ChildBounties", "ChildBountyDescriptions", (), @@ -28608,20 +26571,22 @@ pub mod api { #[doc = " The description of each child-bounty."] pub fn child_bounty_descriptions( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::child_bounty_descriptions::Param0, >, types::child_bounty_descriptions::ChildBountyDescriptions, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ChildBounties", "ChildBountyDescriptions", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 192u8, 0u8, 220u8, 156u8, 109u8, 65u8, 113u8, 102u8, 119u8, 0u8, 109u8, 141u8, 211u8, 128u8, 237u8, 61u8, 28u8, 56u8, 206u8, 93u8, 183u8, 74u8, @@ -28632,14 +26597,14 @@ pub mod api { #[doc = " The cumulative child-bounty curator fee for each parent bounty."] pub fn children_curator_fees_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::children_curator_fees::ChildrenCuratorFees, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ChildBounties", "ChildrenCuratorFees", (), @@ -28653,20 +26618,22 @@ pub mod api { #[doc = " The cumulative child-bounty curator fee for each parent bounty."] pub fn children_curator_fees( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::children_curator_fees::Param0, >, types::children_curator_fees::ChildrenCuratorFees, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ChildBounties", "ChildrenCuratorFees", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 32u8, 16u8, 190u8, 193u8, 6u8, 80u8, 163u8, 16u8, 85u8, 111u8, 39u8, 141u8, 209u8, 70u8, 213u8, 167u8, 22u8, 12u8, 93u8, 17u8, 104u8, 94u8, @@ -28683,8 +26650,9 @@ pub mod api { #[doc = " Maximum number of child bounties that can be added to a parent bounty."] pub fn max_active_child_bounty_count( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "ChildBounties", "MaxActiveChildBountyCount", [ @@ -28698,8 +26666,9 @@ pub mod api { #[doc = " Minimum value for a child-bounty."] pub fn child_bounty_value_minimum( &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "ChildBounties", "ChildBountyValueMinimum", [ @@ -28726,26 +26695,20 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Place a bid."] - #[doc = ""] - #[doc = "Origin must be Signed, and account must have at least `amount` in free balance."] - #[doc = ""] - #[doc = "- `amount`: The amount of the bid; these funds will be reserved, and if/when"] - #[doc = " consolidated, removed. Must be at least `MinBid`."] - #[doc = "- `duration`: The number of periods before which the newly consolidated bid may be"] - #[doc = " thawed. Must be greater than 1 and no more than `QueueCount`."] - #[doc = ""] - #[doc = "Complexities:"] - #[doc = "- `Queues[duration].len()` (just take max)."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::place_bid`]."] pub struct PlaceBid { #[codec(compact)] pub amount: place_bid::Amount, @@ -28756,27 +26719,25 @@ pub mod api { pub type Amount = ::core::primitive::u128; pub type Duration = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for PlaceBid { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for PlaceBid { const PALLET: &'static str = "Nis"; const CALL: &'static str = "place_bid"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Retract a previously placed bid."] - #[doc = ""] - #[doc = "Origin must be Signed, and the account should have previously issued a still-active bid"] - #[doc = "of `amount` for `duration`."] - #[doc = ""] - #[doc = "- `amount`: The amount of the previous bid."] - #[doc = "- `duration`: The duration of the previous bid."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::retract_bid`]."] pub struct RetractBid { #[codec(compact)] pub amount: retract_bid::Amount, @@ -28787,46 +26748,45 @@ pub mod api { pub type Amount = ::core::primitive::u128; pub type Duration = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for RetractBid { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RetractBid { const PALLET: &'static str = "Nis"; const CALL: &'static str = "retract_bid"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Ensure we have sufficient funding for all potential payouts."] - #[doc = ""] - #[doc = "- `origin`: Must be accepted by `FundOrigin`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::fund_deficit`]."] pub struct FundDeficit; - impl ::subxt::blocks::StaticExtrinsic for FundDeficit { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for FundDeficit { const PALLET: &'static str = "Nis"; const CALL: &'static str = "fund_deficit"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Reduce or remove an outstanding receipt, placing the according proportion of funds into"] - #[doc = "the account of the owner."] - #[doc = ""] - #[doc = "- `origin`: Must be Signed and the account must be the owner of the receipt `index` as"] - #[doc = " well as any fungible counterpart."] - #[doc = "- `index`: The index of the receipt."] - #[doc = "- `portion`: If `Some`, then only the given portion of the receipt should be thawed. If"] - #[doc = " `None`, then all of it should be."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::thaw_private`]."] pub struct ThawPrivate { #[codec(compact)] pub index: thaw_private::Index, @@ -28839,26 +26799,25 @@ pub mod api { runtime_types::sp_arithmetic::per_things::Perquintill, >; } - impl ::subxt::blocks::StaticExtrinsic for ThawPrivate { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ThawPrivate { const PALLET: &'static str = "Nis"; const CALL: &'static str = "thaw_private"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Reduce or remove an outstanding receipt, placing the according proportion of funds into"] - #[doc = "the account of the owner."] - #[doc = ""] - #[doc = "- `origin`: Must be Signed and the account must be the owner of the fungible counterpart"] - #[doc = " for receipt `index`."] - #[doc = "- `index`: The index of the receipt."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::thaw_communal`]."] pub struct ThawCommunal { #[codec(compact)] pub index: thaw_communal::Index, @@ -28867,21 +26826,25 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for ThawCommunal { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ThawCommunal { const PALLET: &'static str = "Nis"; const CALL: &'static str = "thaw_communal"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Make a private receipt communal and create fungible counterparts for its owner."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::communify`]."] pub struct Communify { #[codec(compact)] pub index: communify::Index, @@ -28890,21 +26853,25 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for Communify { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Communify { const PALLET: &'static str = "Nis"; const CALL: &'static str = "communify"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Make a communal receipt private and burn fungible counterparts from its owner."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::privatize`]."] pub struct Privatize { #[codec(compact)] pub index: privatize::Index, @@ -28913,30 +26880,20 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for Privatize { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Privatize { const PALLET: &'static str = "Nis"; const CALL: &'static str = "privatize"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Place a bid."] - #[doc = ""] - #[doc = "Origin must be Signed, and account must have at least `amount` in free balance."] - #[doc = ""] - #[doc = "- `amount`: The amount of the bid; these funds will be reserved, and if/when"] - #[doc = " consolidated, removed. Must be at least `MinBid`."] - #[doc = "- `duration`: The number of periods before which the newly consolidated bid may be"] - #[doc = " thawed. Must be greater than 1 and no more than `QueueCount`."] - #[doc = ""] - #[doc = "Complexities:"] - #[doc = "- `Queues[duration].len()` (just take max)."] + #[doc = "See [`Pallet::place_bid`]."] pub fn place_bid( &self, amount: types::place_bid::Amount, duration: types::place_bid::Duration, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Nis", "place_bid", types::PlaceBid { amount, duration }, @@ -28948,19 +26905,13 @@ pub mod api { ], ) } - #[doc = "Retract a previously placed bid."] - #[doc = ""] - #[doc = "Origin must be Signed, and the account should have previously issued a still-active bid"] - #[doc = "of `amount` for `duration`."] - #[doc = ""] - #[doc = "- `amount`: The amount of the previous bid."] - #[doc = "- `duration`: The duration of the previous bid."] + #[doc = "See [`Pallet::retract_bid`]."] pub fn retract_bid( &self, amount: types::retract_bid::Amount, duration: types::retract_bid::Duration, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Nis", "retract_bid", types::RetractBid { amount, duration }, @@ -28971,11 +26922,11 @@ pub mod api { ], ) } - #[doc = "Ensure we have sufficient funding for all potential payouts."] - #[doc = ""] - #[doc = "- `origin`: Must be accepted by `FundOrigin`."] - pub fn fund_deficit(&self) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + #[doc = "See [`Pallet::fund_deficit`]."] + pub fn fund_deficit( + &self, + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Nis", "fund_deficit", types::FundDeficit {}, @@ -28987,20 +26938,13 @@ pub mod api { ], ) } - #[doc = "Reduce or remove an outstanding receipt, placing the according proportion of funds into"] - #[doc = "the account of the owner."] - #[doc = ""] - #[doc = "- `origin`: Must be Signed and the account must be the owner of the receipt `index` as"] - #[doc = " well as any fungible counterpart."] - #[doc = "- `index`: The index of the receipt."] - #[doc = "- `portion`: If `Some`, then only the given portion of the receipt should be thawed. If"] - #[doc = " `None`, then all of it should be."] + #[doc = "See [`Pallet::thaw_private`]."] pub fn thaw_private( &self, index: types::thaw_private::Index, maybe_proportion: types::thaw_private::MaybeProportion, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Nis", "thaw_private", types::ThawPrivate { @@ -29014,17 +26958,12 @@ pub mod api { ], ) } - #[doc = "Reduce or remove an outstanding receipt, placing the according proportion of funds into"] - #[doc = "the account of the owner."] - #[doc = ""] - #[doc = "- `origin`: Must be Signed and the account must be the owner of the fungible counterpart"] - #[doc = " for receipt `index`."] - #[doc = "- `index`: The index of the receipt."] + #[doc = "See [`Pallet::thaw_communal`]."] pub fn thaw_communal( &self, index: types::thaw_communal::Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Nis", "thaw_communal", types::ThawCommunal { index }, @@ -29036,12 +26975,12 @@ pub mod api { ], ) } - #[doc = "Make a private receipt communal and create fungible counterparts for its owner."] + #[doc = "See [`Pallet::communify`]."] pub fn communify( &self, index: types::communify::Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Nis", "communify", types::Communify { index }, @@ -29053,12 +26992,12 @@ pub mod api { ], ) } - #[doc = "Make a communal receipt private and burn fungible counterparts from its owner."] + #[doc = "See [`Pallet::privatize`]."] pub fn privatize( &self, index: types::privatize::Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Nis", "privatize", types::Privatize { index }, @@ -29077,15 +27016,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A bid was successfully placed."] pub struct BidPlaced { pub who: bid_placed::Who, @@ -29094,24 +27033,24 @@ pub mod api { } pub mod bid_placed { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; pub type Duration = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for BidPlaced { + impl ::subxt::ext::subxt_core::events::StaticEvent for BidPlaced { const PALLET: &'static str = "Nis"; const EVENT: &'static str = "BidPlaced"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A bid was successfully removed (before being accepted)."] pub struct BidRetracted { pub who: bid_retracted::Who, @@ -29120,24 +27059,24 @@ pub mod api { } pub mod bid_retracted { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; pub type Duration = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for BidRetracted { + impl ::subxt::ext::subxt_core::events::StaticEvent for BidRetracted { const PALLET: &'static str = "Nis"; const EVENT: &'static str = "BidRetracted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A bid was dropped from a queue because of another, more substantial, bid was present."] pub struct BidDropped { pub who: bid_dropped::Who, @@ -29146,24 +27085,24 @@ pub mod api { } pub mod bid_dropped { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; pub type Duration = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for BidDropped { + impl ::subxt::ext::subxt_core::events::StaticEvent for BidDropped { const PALLET: &'static str = "Nis"; const EVENT: &'static str = "BidDropped"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A bid was accepted. The balance may not be released until expiry."] pub struct Issued { pub index: issued::Index, @@ -29176,24 +27115,24 @@ pub mod api { use super::runtime_types; pub type Index = ::core::primitive::u32; pub type Expiry = ::core::primitive::u32; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Proportion = runtime_types::sp_arithmetic::per_things::Perquintill; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Issued { + impl ::subxt::ext::subxt_core::events::StaticEvent for Issued { const PALLET: &'static str = "Nis"; const EVENT: &'static str = "Issued"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "An receipt has been (at least partially) thawed."] pub struct Thawed { pub index: thawed::Index, @@ -29205,25 +27144,25 @@ pub mod api { pub mod thawed { use super::runtime_types; pub type Index = ::core::primitive::u32; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Proportion = runtime_types::sp_arithmetic::per_things::Perquintill; pub type Amount = ::core::primitive::u128; pub type Dropped = ::core::primitive::bool; } - impl ::subxt::events::StaticEvent for Thawed { + impl ::subxt::ext::subxt_core::events::StaticEvent for Thawed { const PALLET: &'static str = "Nis"; const EVENT: &'static str = "Thawed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "An automatic funding of the deficit was made."] pub struct Funded { pub deficit: funded::Deficit, @@ -29232,20 +27171,20 @@ pub mod api { use super::runtime_types; pub type Deficit = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Funded { + impl ::subxt::ext::subxt_core::events::StaticEvent for Funded { const PALLET: &'static str = "Nis"; const EVENT: &'static str = "Funded"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A receipt was transfered."] pub struct Transferred { pub from: transferred::From, @@ -29254,11 +27193,11 @@ pub mod api { } pub mod transferred { use super::runtime_types; - pub type From = ::subxt::utils::AccountId32; - pub type To = ::subxt::utils::AccountId32; + pub type From = ::subxt::ext::subxt_core::utils::AccountId32; + pub type To = ::subxt::ext::subxt_core::utils::AccountId32; pub type Index = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for Transferred { + impl ::subxt::ext::subxt_core::events::StaticEvent for Transferred { const PALLET: &'static str = "Nis"; const EVENT: &'static str = "Transferred"; } @@ -29270,17 +27209,17 @@ pub mod api { pub mod queue_totals { use super::runtime_types; pub type QueueTotals = - runtime_types::bounded_collections::bounded_vec::BoundedVec<( + runtime_types::bounded_collections::bounded_vec::BoundedVec15<( ::core::primitive::u32, ::core::primitive::u128, )>; } pub mod queues { use super::runtime_types; - pub type Queues = runtime_types::bounded_collections::bounded_vec::BoundedVec< + pub type Queues = runtime_types::bounded_collections::bounded_vec::BoundedVec25< runtime_types::pallet_nis::pallet::Bid< ::core::primitive::u128, - ::subxt::utils::AccountId32, + ::subxt::ext::subxt_core::utils::AccountId32, >, >; pub type Param0 = ::core::primitive::u32; @@ -29295,7 +27234,7 @@ pub mod api { pub mod receipts { use super::runtime_types; pub type Receipts = runtime_types::pallet_nis::pallet::ReceiptRecord< - ::subxt::utils::AccountId32, + ::subxt::ext::subxt_core::utils::AccountId32, ::core::primitive::u32, ::core::primitive::u128, >; @@ -29311,14 +27250,14 @@ pub mod api { #[doc = " whose duration is one `Period` would be storage `0`."] pub fn queue_totals( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::queue_totals::QueueTotals, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Nis", "QueueTotals", (), @@ -29332,14 +27271,14 @@ pub mod api { #[doc = " The queues of bids. Indexed by duration (in `Period`s)."] pub fn queues_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::queues::Queues, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Nis", "Queues", (), @@ -29354,18 +27293,22 @@ pub mod api { #[doc = " The queues of bids. Indexed by duration (in `Period`s)."] pub fn queues( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::queues::Param0, + >, types::queues::Queues, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Nis", "Queues", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 144u8, 181u8, 173u8, 134u8, 6u8, 165u8, 174u8, 91u8, 75u8, 241u8, 142u8, 192u8, 246u8, 71u8, 132u8, 146u8, 181u8, 158u8, 125u8, 34u8, @@ -29377,14 +27320,14 @@ pub mod api { #[doc = " Summary information over the general state."] pub fn summary( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::summary::Summary, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Nis", "Summary", (), @@ -29399,14 +27342,14 @@ pub mod api { #[doc = " The currently outstanding receipts, indexed according to the order of creation."] pub fn receipts_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::receipts::Receipts, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Nis", "Receipts", (), @@ -29420,18 +27363,22 @@ pub mod api { #[doc = " The currently outstanding receipts, indexed according to the order of creation."] pub fn receipts( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::receipts::Param0, + >, types::receipts::Receipts, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Nis", "Receipts", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 123u8, 179u8, 0u8, 14u8, 5u8, 132u8, 165u8, 192u8, 163u8, 22u8, 174u8, 22u8, 252u8, 44u8, 167u8, 22u8, 116u8, 170u8, 186u8, 118u8, 131u8, 5u8, @@ -29448,9 +27395,10 @@ pub mod api { #[doc = " The treasury's pallet id, used for deriving its sovereign account ID."] pub fn pallet_id( &self, - ) -> ::subxt::constants::Address - { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address< + runtime_types::frame_support::PalletId, + > { + ::subxt::ext::subxt_core::constants::Address::new_static( "Nis", "PalletId", [ @@ -29462,8 +27410,11 @@ pub mod api { } #[doc = " Number of duration queues in total. This sets the maximum duration supported, which is"] #[doc = " this value multiplied by `Period`."] - pub fn queue_count(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn queue_count( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Nis", "QueueCount", [ @@ -29477,8 +27428,11 @@ pub mod api { #[doc = " Maximum number of items that may be in each duration queue."] #[doc = ""] #[doc = " Must be larger than zero."] - pub fn max_queue_len(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn max_queue_len( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Nis", "MaxQueueLen", [ @@ -29494,8 +27448,9 @@ pub mod api { #[doc = " Must be no greater than `MaxQueueLen`."] pub fn fifo_queue_len( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Nis", "FifoQueueLen", [ @@ -29508,8 +27463,11 @@ pub mod api { } #[doc = " The base period for the duration queues. This is the common multiple across all"] #[doc = " supported freezing durations that can be bid upon."] - pub fn base_period(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn base_period( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Nis", "BasePeriod", [ @@ -29526,8 +27484,11 @@ pub mod api { #[doc = ""] #[doc = " It should be at least big enough to ensure that there is no possible storage spam attack"] #[doc = " or queue-filling attack."] - pub fn min_bid(&self) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + pub fn min_bid( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Nis", "MinBid", [ @@ -29541,10 +27502,10 @@ pub mod api { #[doc = " receipt."] pub fn min_receipt( &self, - ) -> ::subxt::constants::Address< + ) -> ::subxt::ext::subxt_core::constants::Address< runtime_types::sp_arithmetic::per_things::Perquintill, > { - ::subxt::constants::Address::new_static( + ::subxt::ext::subxt_core::constants::Address::new_static( "Nis", "MinReceipt", [ @@ -29559,8 +27520,11 @@ pub mod api { #[doc = ""] #[doc = " A larger value results in fewer storage hits each block, but a slower period to get to"] #[doc = " the target."] - pub fn intake_period(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn intake_period( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Nis", "IntakePeriod", [ @@ -29576,9 +27540,10 @@ pub mod api { #[doc = " glut of bids."] pub fn max_intake_weight( &self, - ) -> ::subxt::constants::Address - { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address< + runtime_types::sp_weights::weight_v2::Weight, + > { + ::subxt::ext::subxt_core::constants::Address::new_static( "Nis", "MaxIntakeWeight", [ @@ -29592,11 +27557,11 @@ pub mod api { #[doc = " The maximum proportion which may be thawed and the period over which it is reset."] pub fn thaw_throttle( &self, - ) -> ::subxt::constants::Address<( + ) -> ::subxt::ext::subxt_core::constants::Address<( runtime_types::sp_arithmetic::per_things::Perquintill, ::core::primitive::u32, )> { - ::subxt::constants::Address::new_static( + ::subxt::ext::subxt_core::constants::Address::new_static( "Nis", "ThawThrottle", [ @@ -29614,9 +27579,9 @@ pub mod api { use super::root_mod; use super::runtime_types; #[doc = "The `Error` enum of this pallet."] - pub type Error = runtime_types::pallet_balances::pallet::Error2; + pub type Error = runtime_types::pallet_balances::pallet::Error; #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub type Call = runtime_types::pallet_balances::pallet::Call2; + pub type Call = runtime_types::pallet_balances::pallet::Call; pub mod calls { use super::root_mod; use super::runtime_types; @@ -29624,22 +27589,20 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Transfer some liquid free balance to another account."] - #[doc = ""] - #[doc = "`transfer_allow_death` will set the `FreeBalance` of the sender and receiver."] - #[doc = "If the sender's account is below the existential deposit as a result"] - #[doc = "of the transfer, the account will be reaped."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be `Signed` by the transactor."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::transfer_allow_death`]."] pub struct TransferAllowDeath { pub dest: transfer_allow_death::Dest, #[codec(compact)] @@ -29647,25 +27610,31 @@ pub mod api { } pub mod transfer_allow_death { use super::runtime_types; - pub type Dest = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Dest = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type Value = ::core::primitive::u128; } - impl ::subxt::blocks::StaticExtrinsic for TransferAllowDeath { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for TransferAllowDeath { const PALLET: &'static str = "NisCounterpartBalances"; const CALL: &'static str = "transfer_allow_death"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Exactly as `transfer_allow_death`, except the origin must be root and the source account"] - #[doc = "may be specified."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_transfer`]."] pub struct ForceTransfer { pub source: force_transfer::Source, pub dest: force_transfer::Dest, @@ -29674,30 +27643,35 @@ pub mod api { } pub mod force_transfer { use super::runtime_types; - pub type Source = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; - pub type Dest = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Source = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; + pub type Dest = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type Value = ::core::primitive::u128; } - impl ::subxt::blocks::StaticExtrinsic for ForceTransfer { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceTransfer { const PALLET: &'static str = "NisCounterpartBalances"; const CALL: &'static str = "force_transfer"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Same as the [`transfer_allow_death`] call, but with a check that the transfer will not"] - #[doc = "kill the origin account."] - #[doc = ""] - #[doc = "99% of the time you want [`transfer_allow_death`] instead."] - #[doc = ""] - #[doc = "[`transfer_allow_death`]: struct.Pallet.html#method.transfer"] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::transfer_keep_alive`]."] pub struct TransferKeepAlive { pub dest: transfer_keep_alive::Dest, #[codec(compact)] @@ -29705,119 +27679,121 @@ pub mod api { } pub mod transfer_keep_alive { use super::runtime_types; - pub type Dest = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Dest = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type Value = ::core::primitive::u128; } - impl ::subxt::blocks::StaticExtrinsic for TransferKeepAlive { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for TransferKeepAlive { const PALLET: &'static str = "NisCounterpartBalances"; const CALL: &'static str = "transfer_keep_alive"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Transfer the entire transferable balance from the caller account."] - #[doc = ""] - #[doc = "NOTE: This function only attempts to transfer _transferable_ balances. This means that"] - #[doc = "any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be"] - #[doc = "transferred by this function. To ensure that this function results in a killed account,"] - #[doc = "you might need to prepare the account by removing any reference counters, storage"] - #[doc = "deposits, etc..."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be Signed."] - #[doc = ""] - #[doc = "- `dest`: The recipient of the transfer."] - #[doc = "- `keep_alive`: A boolean to determine if the `transfer_all` operation should send all"] - #[doc = " of the funds the account has, causing the sender account to be killed (false), or"] - #[doc = " transfer everything except at least the existential deposit, which will guarantee to"] - #[doc = " keep the sender account alive (true)."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::transfer_all`]."] pub struct TransferAll { pub dest: transfer_all::Dest, pub keep_alive: transfer_all::KeepAlive, } pub mod transfer_all { use super::runtime_types; - pub type Dest = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Dest = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type KeepAlive = ::core::primitive::bool; } - impl ::subxt::blocks::StaticExtrinsic for TransferAll { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for TransferAll { const PALLET: &'static str = "NisCounterpartBalances"; const CALL: &'static str = "transfer_all"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Unreserve some balance from a user by force."] - #[doc = ""] - #[doc = "Can only be called by ROOT."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_unreserve`]."] pub struct ForceUnreserve { pub who: force_unreserve::Who, pub amount: force_unreserve::Amount, } pub mod force_unreserve { use super::runtime_types; - pub type Who = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Who = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type Amount = ::core::primitive::u128; } - impl ::subxt::blocks::StaticExtrinsic for ForceUnreserve { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceUnreserve { const PALLET: &'static str = "NisCounterpartBalances"; const CALL: &'static str = "force_unreserve"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Upgrade a specified account."] - #[doc = ""] - #[doc = "- `origin`: Must be `Signed`."] - #[doc = "- `who`: The account to be upgraded."] - #[doc = ""] - #[doc = "This will waive the transaction fee if at least all but 10% of the accounts needed to"] - #[doc = "be upgraded. (We let some not have to be upgraded just in order to allow for the"] - #[doc = "possibililty of churn)."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::upgrade_accounts`]."] pub struct UpgradeAccounts { pub who: upgrade_accounts::Who, } pub mod upgrade_accounts { use super::runtime_types; - pub type Who = ::std::vec::Vec<::subxt::utils::AccountId32>; + pub type Who = ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >; } - impl ::subxt::blocks::StaticExtrinsic for UpgradeAccounts { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for UpgradeAccounts { const PALLET: &'static str = "NisCounterpartBalances"; const CALL: &'static str = "upgrade_accounts"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the regular balance of a given account."] - #[doc = ""] - #[doc = "The dispatch origin for this call is `root`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_set_balance`]."] pub struct ForceSetBalance { pub who: force_set_balance::Who, #[codec(compact)] @@ -29825,58 +27801,27 @@ pub mod api { } pub mod force_set_balance { use super::runtime_types; - pub type Who = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Who = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type NewFree = ::core::primitive::u128; } - impl ::subxt::blocks::StaticExtrinsic for ForceSetBalance { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceSetBalance { const PALLET: &'static str = "NisCounterpartBalances"; const CALL: &'static str = "force_set_balance"; } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Adjust the total issuance in a saturating way."] - #[doc = ""] - #[doc = "Can only be called by root and always needs a positive `delta`."] - #[doc = ""] - #[doc = "# Example"] - pub struct ForceAdjustTotalIssuance { - pub direction: force_adjust_total_issuance::Direction, - #[codec(compact)] - pub delta: force_adjust_total_issuance::Delta, - } - pub mod force_adjust_total_issuance { - use super::runtime_types; - pub type Direction = runtime_types::pallet_balances::types::AdjustmentDirection; - pub type Delta = ::core::primitive::u128; - } - impl ::subxt::blocks::StaticExtrinsic for ForceAdjustTotalIssuance { - const PALLET: &'static str = "NisCounterpartBalances"; - const CALL: &'static str = "force_adjust_total_issuance"; - } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Transfer some liquid free balance to another account."] - #[doc = ""] - #[doc = "`transfer_allow_death` will set the `FreeBalance` of the sender and receiver."] - #[doc = "If the sender's account is below the existential deposit as a result"] - #[doc = "of the transfer, the account will be reaped."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be `Signed` by the transactor."] + #[doc = "See [`Pallet::transfer_allow_death`]."] pub fn transfer_allow_death( &self, dest: types::transfer_allow_death::Dest, value: types::transfer_allow_death::Value, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "NisCounterpartBalances", "transfer_allow_death", types::TransferAllowDeath { dest, value }, @@ -29888,15 +27833,14 @@ pub mod api { ], ) } - #[doc = "Exactly as `transfer_allow_death`, except the origin must be root and the source account"] - #[doc = "may be specified."] + #[doc = "See [`Pallet::force_transfer`]."] pub fn force_transfer( &self, source: types::force_transfer::Source, dest: types::force_transfer::Dest, value: types::force_transfer::Value, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "NisCounterpartBalances", "force_transfer", types::ForceTransfer { @@ -29911,18 +27855,14 @@ pub mod api { ], ) } - #[doc = "Same as the [`transfer_allow_death`] call, but with a check that the transfer will not"] - #[doc = "kill the origin account."] - #[doc = ""] - #[doc = "99% of the time you want [`transfer_allow_death`] instead."] - #[doc = ""] - #[doc = "[`transfer_allow_death`]: struct.Pallet.html#method.transfer"] + #[doc = "See [`Pallet::transfer_keep_alive`]."] pub fn transfer_keep_alive( &self, dest: types::transfer_keep_alive::Dest, value: types::transfer_keep_alive::Value, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "NisCounterpartBalances", "transfer_keep_alive", types::TransferKeepAlive { dest, value }, @@ -29933,27 +27873,13 @@ pub mod api { ], ) } - #[doc = "Transfer the entire transferable balance from the caller account."] - #[doc = ""] - #[doc = "NOTE: This function only attempts to transfer _transferable_ balances. This means that"] - #[doc = "any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be"] - #[doc = "transferred by this function. To ensure that this function results in a killed account,"] - #[doc = "you might need to prepare the account by removing any reference counters, storage"] - #[doc = "deposits, etc..."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be Signed."] - #[doc = ""] - #[doc = "- `dest`: The recipient of the transfer."] - #[doc = "- `keep_alive`: A boolean to determine if the `transfer_all` operation should send all"] - #[doc = " of the funds the account has, causing the sender account to be killed (false), or"] - #[doc = " transfer everything except at least the existential deposit, which will guarantee to"] - #[doc = " keep the sender account alive (true)."] + #[doc = "See [`Pallet::transfer_all`]."] pub fn transfer_all( &self, dest: types::transfer_all::Dest, keep_alive: types::transfer_all::KeepAlive, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "NisCounterpartBalances", "transfer_all", types::TransferAll { dest, keep_alive }, @@ -29964,15 +27890,13 @@ pub mod api { ], ) } - #[doc = "Unreserve some balance from a user by force."] - #[doc = ""] - #[doc = "Can only be called by ROOT."] + #[doc = "See [`Pallet::force_unreserve`]."] pub fn force_unreserve( &self, who: types::force_unreserve::Who, amount: types::force_unreserve::Amount, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "NisCounterpartBalances", "force_unreserve", types::ForceUnreserve { who, amount }, @@ -29984,19 +27908,12 @@ pub mod api { ], ) } - #[doc = "Upgrade a specified account."] - #[doc = ""] - #[doc = "- `origin`: Must be `Signed`."] - #[doc = "- `who`: The account to be upgraded."] - #[doc = ""] - #[doc = "This will waive the transaction fee if at least all but 10% of the accounts needed to"] - #[doc = "be upgraded. (We let some not have to be upgraded just in order to allow for the"] - #[doc = "possibililty of churn)."] + #[doc = "See [`Pallet::upgrade_accounts`]."] pub fn upgrade_accounts( &self, who: types::upgrade_accounts::Who, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "NisCounterpartBalances", "upgrade_accounts", types::UpgradeAccounts { who }, @@ -30007,15 +27924,13 @@ pub mod api { ], ) } - #[doc = "Set the regular balance of a given account."] - #[doc = ""] - #[doc = "The dispatch origin for this call is `root`."] + #[doc = "See [`Pallet::force_set_balance`]."] pub fn force_set_balance( &self, who: types::force_set_balance::Who, new_free: types::force_set_balance::NewFree, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "NisCounterpartBalances", "force_set_balance", types::ForceSetBalance { who, new_free }, @@ -30026,44 +27941,22 @@ pub mod api { ], ) } - #[doc = "Adjust the total issuance in a saturating way."] - #[doc = ""] - #[doc = "Can only be called by root and always needs a positive `delta`."] - #[doc = ""] - #[doc = "# Example"] - pub fn force_adjust_total_issuance( - &self, - direction: types::force_adjust_total_issuance::Direction, - delta: types::force_adjust_total_issuance::Delta, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "NisCounterpartBalances", - "force_adjust_total_issuance", - types::ForceAdjustTotalIssuance { direction, delta }, - [ - 208u8, 134u8, 56u8, 133u8, 232u8, 164u8, 10u8, 213u8, 53u8, 193u8, - 190u8, 63u8, 236u8, 186u8, 96u8, 122u8, 104u8, 87u8, 173u8, 38u8, 58u8, - 176u8, 21u8, 78u8, 42u8, 106u8, 46u8, 248u8, 251u8, 190u8, 150u8, - 202u8, - ], - ) - } } } #[doc = "The `Event` enum of this pallet"] - pub type Event = runtime_types::pallet_balances::pallet::Event2; + pub type Event = runtime_types::pallet_balances::pallet::Event; pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "An account was created with some free balance."] pub struct Endowed { pub account: endowed::Account, @@ -30071,23 +27964,23 @@ pub mod api { } pub mod endowed { use super::runtime_types; - pub type Account = ::subxt::utils::AccountId32; + pub type Account = ::subxt::ext::subxt_core::utils::AccountId32; pub type FreeBalance = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Endowed { + impl ::subxt::ext::subxt_core::events::StaticEvent for Endowed { const PALLET: &'static str = "NisCounterpartBalances"; const EVENT: &'static str = "Endowed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "An account was removed whose balance was non-zero but below ExistentialDeposit,"] #[doc = "resulting in an outright loss."] pub struct DustLost { @@ -30096,23 +27989,23 @@ pub mod api { } pub mod dust_lost { use super::runtime_types; - pub type Account = ::subxt::utils::AccountId32; + pub type Account = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for DustLost { + impl ::subxt::ext::subxt_core::events::StaticEvent for DustLost { const PALLET: &'static str = "NisCounterpartBalances"; const EVENT: &'static str = "DustLost"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Transfer succeeded."] pub struct Transfer { pub from: transfer::From, @@ -30121,24 +28014,24 @@ pub mod api { } pub mod transfer { use super::runtime_types; - pub type From = ::subxt::utils::AccountId32; - pub type To = ::subxt::utils::AccountId32; + pub type From = ::subxt::ext::subxt_core::utils::AccountId32; + pub type To = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Transfer { + impl ::subxt::ext::subxt_core::events::StaticEvent for Transfer { const PALLET: &'static str = "NisCounterpartBalances"; const EVENT: &'static str = "Transfer"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A balance was set by root."] pub struct BalanceSet { pub who: balance_set::Who, @@ -30146,23 +28039,23 @@ pub mod api { } pub mod balance_set { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Free = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for BalanceSet { + impl ::subxt::ext::subxt_core::events::StaticEvent for BalanceSet { const PALLET: &'static str = "NisCounterpartBalances"; const EVENT: &'static str = "BalanceSet"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some balance was reserved (moved from free to reserved)."] pub struct Reserved { pub who: reserved::Who, @@ -30170,23 +28063,23 @@ pub mod api { } pub mod reserved { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Reserved { + impl ::subxt::ext::subxt_core::events::StaticEvent for Reserved { const PALLET: &'static str = "NisCounterpartBalances"; const EVENT: &'static str = "Reserved"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some balance was unreserved (moved from reserved to free)."] pub struct Unreserved { pub who: unreserved::Who, @@ -30194,23 +28087,23 @@ pub mod api { } pub mod unreserved { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Unreserved { + impl ::subxt::ext::subxt_core::events::StaticEvent for Unreserved { const PALLET: &'static str = "NisCounterpartBalances"; const EVENT: &'static str = "Unreserved"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some balance was moved from the reserve of the first account to the second account."] #[doc = "Final argument indicates the destination balance type."] pub struct ReserveRepatriated { @@ -30221,26 +28114,26 @@ pub mod api { } pub mod reserve_repatriated { use super::runtime_types; - pub type From = ::subxt::utils::AccountId32; - pub type To = ::subxt::utils::AccountId32; + pub type From = ::subxt::ext::subxt_core::utils::AccountId32; + pub type To = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; pub type DestinationStatus = runtime_types::frame_support::traits::tokens::misc::BalanceStatus; } - impl ::subxt::events::StaticEvent for ReserveRepatriated { + impl ::subxt::ext::subxt_core::events::StaticEvent for ReserveRepatriated { const PALLET: &'static str = "NisCounterpartBalances"; const EVENT: &'static str = "ReserveRepatriated"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some amount was deposited (e.g. for transaction fees)."] pub struct Deposit { pub who: deposit::Who, @@ -30248,23 +28141,23 @@ pub mod api { } pub mod deposit { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Deposit { + impl ::subxt::ext::subxt_core::events::StaticEvent for Deposit { const PALLET: &'static str = "NisCounterpartBalances"; const EVENT: &'static str = "Deposit"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some amount was withdrawn from the account (e.g. for transaction fees)."] pub struct Withdraw { pub who: withdraw::Who, @@ -30272,23 +28165,23 @@ pub mod api { } pub mod withdraw { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Withdraw { + impl ::subxt::ext::subxt_core::events::StaticEvent for Withdraw { const PALLET: &'static str = "NisCounterpartBalances"; const EVENT: &'static str = "Withdraw"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some amount was removed from the account (e.g. for misbehavior)."] pub struct Slashed { pub who: slashed::Who, @@ -30296,23 +28189,23 @@ pub mod api { } pub mod slashed { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Slashed { + impl ::subxt::ext::subxt_core::events::StaticEvent for Slashed { const PALLET: &'static str = "NisCounterpartBalances"; const EVENT: &'static str = "Slashed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some amount was minted into an account."] pub struct Minted { pub who: minted::Who, @@ -30320,23 +28213,23 @@ pub mod api { } pub mod minted { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Minted { + impl ::subxt::ext::subxt_core::events::StaticEvent for Minted { const PALLET: &'static str = "NisCounterpartBalances"; const EVENT: &'static str = "Minted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some amount was burned from an account."] pub struct Burned { pub who: burned::Who, @@ -30344,23 +28237,23 @@ pub mod api { } pub mod burned { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Burned { + impl ::subxt::ext::subxt_core::events::StaticEvent for Burned { const PALLET: &'static str = "NisCounterpartBalances"; const EVENT: &'static str = "Burned"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some amount was suspended from an account (it can be restored later)."] pub struct Suspended { pub who: suspended::Who, @@ -30368,23 +28261,23 @@ pub mod api { } pub mod suspended { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Suspended { + impl ::subxt::ext::subxt_core::events::StaticEvent for Suspended { const PALLET: &'static str = "NisCounterpartBalances"; const EVENT: &'static str = "Suspended"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some amount was restored into an account."] pub struct Restored { pub who: restored::Who, @@ -30392,45 +28285,45 @@ pub mod api { } pub mod restored { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Restored { + impl ::subxt::ext::subxt_core::events::StaticEvent for Restored { const PALLET: &'static str = "NisCounterpartBalances"; const EVENT: &'static str = "Restored"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "An account was upgraded."] pub struct Upgraded { pub who: upgraded::Who, } pub mod upgraded { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for Upgraded { + impl ::subxt::ext::subxt_core::events::StaticEvent for Upgraded { const PALLET: &'static str = "NisCounterpartBalances"; const EVENT: &'static str = "Upgraded"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Total issuance was increased by `amount`, creating a credit to be balanced."] pub struct Issued { pub amount: issued::Amount, @@ -30439,20 +28332,20 @@ pub mod api { use super::runtime_types; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Issued { + impl ::subxt::ext::subxt_core::events::StaticEvent for Issued { const PALLET: &'static str = "NisCounterpartBalances"; const EVENT: &'static str = "Issued"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Total issuance was decreased by `amount`, creating a debt to be balanced."] pub struct Rescinded { pub amount: rescinded::Amount, @@ -30461,20 +28354,20 @@ pub mod api { use super::runtime_types; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Rescinded { + impl ::subxt::ext::subxt_core::events::StaticEvent for Rescinded { const PALLET: &'static str = "NisCounterpartBalances"; const EVENT: &'static str = "Rescinded"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some balance was locked."] pub struct Locked { pub who: locked::Who, @@ -30482,23 +28375,23 @@ pub mod api { } pub mod locked { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Locked { + impl ::subxt::ext::subxt_core::events::StaticEvent for Locked { const PALLET: &'static str = "NisCounterpartBalances"; const EVENT: &'static str = "Locked"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some balance was unlocked."] pub struct Unlocked { pub who: unlocked::Who, @@ -30506,23 +28399,23 @@ pub mod api { } pub mod unlocked { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Unlocked { + impl ::subxt::ext::subxt_core::events::StaticEvent for Unlocked { const PALLET: &'static str = "NisCounterpartBalances"; const EVENT: &'static str = "Unlocked"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some balance was frozen."] pub struct Frozen { pub who: frozen::Who, @@ -30530,23 +28423,23 @@ pub mod api { } pub mod frozen { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Frozen { + impl ::subxt::ext::subxt_core::events::StaticEvent for Frozen { const PALLET: &'static str = "NisCounterpartBalances"; const EVENT: &'static str = "Frozen"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some balance was thawed."] pub struct Thawed { pub who: thawed::Who, @@ -30554,37 +28447,13 @@ pub mod api { } pub mod thawed { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Thawed { + impl ::subxt::ext::subxt_core::events::StaticEvent for Thawed { const PALLET: &'static str = "NisCounterpartBalances"; const EVENT: &'static str = "Thawed"; } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The `TotalIssuance` was forcefully changed."] - pub struct TotalIssuanceForced { - pub old: total_issuance_forced::Old, - pub new: total_issuance_forced::New, - } - pub mod total_issuance_forced { - use super::runtime_types; - pub type Old = ::core::primitive::u128; - pub type New = ::core::primitive::u128; - } - impl ::subxt::events::StaticEvent for TotalIssuanceForced { - const PALLET: &'static str = "NisCounterpartBalances"; - const EVENT: &'static str = "TotalIssuanceForced"; - } } pub mod storage { use super::runtime_types; @@ -30602,47 +28471,49 @@ pub mod api { use super::runtime_types; pub type Account = runtime_types::pallet_balances::types::AccountData<::core::primitive::u128>; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod locks { use super::runtime_types; pub type Locks = - runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec3< runtime_types::pallet_balances::types::BalanceLock< ::core::primitive::u128, >, >; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod reserves { use super::runtime_types; - pub type Reserves = runtime_types::bounded_collections::bounded_vec::BoundedVec< - runtime_types::pallet_balances::types::ReserveData< - [::core::primitive::u8; 8usize], - ::core::primitive::u128, - >, - >; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Reserves = + runtime_types::bounded_collections::bounded_vec::BoundedVec8< + runtime_types::pallet_balances::types::ReserveData< + [::core::primitive::u8; 8usize], + ::core::primitive::u128, + >, + >; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod holds { use super::runtime_types; - pub type Holds = runtime_types::bounded_collections::bounded_vec::BoundedVec< + pub type Holds = runtime_types::bounded_collections::bounded_vec::BoundedVec9< runtime_types::pallet_balances::types::IdAmount< runtime_types::rococo_runtime::RuntimeHoldReason, ::core::primitive::u128, >, >; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod freezes { use super::runtime_types; - pub type Freezes = runtime_types::bounded_collections::bounded_vec::BoundedVec< - runtime_types::pallet_balances::types::IdAmount< - (), - ::core::primitive::u128, - >, - >; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Freezes = + runtime_types::bounded_collections::bounded_vec::BoundedVec10< + runtime_types::pallet_balances::types::IdAmount< + (), + ::core::primitive::u128, + >, + >; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } } pub struct StorageApi; @@ -30650,14 +28521,14 @@ pub mod api { #[doc = " The total units issued in the system."] pub fn total_issuance( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::total_issuance::TotalIssuance, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "NisCounterpartBalances", "TotalIssuance", (), @@ -30672,14 +28543,14 @@ pub mod api { #[doc = " The total units of outstanding deactivated balance in the system."] pub fn inactive_issuance( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::inactive_issuance::InactiveIssuance, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "NisCounterpartBalances", "InactiveIssuance", (), @@ -30716,14 +28587,14 @@ pub mod api { #[doc = " NOTE: This is only used in the case that this pallet is used to store balances."] pub fn account_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::account::Account, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "NisCounterpartBalances", "Account", (), @@ -30760,18 +28631,22 @@ pub mod api { #[doc = " NOTE: This is only used in the case that this pallet is used to store balances."] pub fn account( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::account::Param0, + >, types::account::Account, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "NisCounterpartBalances", "Account", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 213u8, 38u8, 200u8, 69u8, 218u8, 0u8, 112u8, 181u8, 160u8, 23u8, 96u8, 90u8, 3u8, 88u8, 126u8, 22u8, 103u8, 74u8, 64u8, 69u8, 29u8, 247u8, @@ -30783,14 +28658,14 @@ pub mod api { #[doc = " NOTE: Should only be accessed when setting, changing and freeing a lock."] pub fn locks_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::locks::Locks, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "NisCounterpartBalances", "Locks", (), @@ -30805,18 +28680,22 @@ pub mod api { #[doc = " NOTE: Should only be accessed when setting, changing and freeing a lock."] pub fn locks( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::locks::Param0, + >, types::locks::Locks, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "NisCounterpartBalances", "Locks", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 10u8, 223u8, 55u8, 0u8, 249u8, 69u8, 168u8, 41u8, 75u8, 35u8, 120u8, 167u8, 18u8, 132u8, 9u8, 20u8, 91u8, 51u8, 27u8, 69u8, 136u8, 187u8, @@ -30827,14 +28706,14 @@ pub mod api { #[doc = " Named reserves on some account balances."] pub fn reserves_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::reserves::Reserves, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "NisCounterpartBalances", "Reserves", (), @@ -30848,18 +28727,22 @@ pub mod api { #[doc = " Named reserves on some account balances."] pub fn reserves( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::reserves::Param0, + >, types::reserves::Reserves, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "NisCounterpartBalances", "Reserves", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 112u8, 10u8, 241u8, 77u8, 64u8, 187u8, 106u8, 159u8, 13u8, 153u8, 140u8, 178u8, 182u8, 50u8, 1u8, 55u8, 149u8, 92u8, 196u8, 229u8, 170u8, @@ -30870,59 +28753,63 @@ pub mod api { #[doc = " Holds on account balances."] pub fn holds_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::holds::Holds, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "NisCounterpartBalances", "Holds", (), [ - 181u8, 39u8, 29u8, 45u8, 45u8, 198u8, 129u8, 210u8, 189u8, 183u8, - 121u8, 125u8, 57u8, 90u8, 95u8, 107u8, 51u8, 13u8, 22u8, 105u8, 191u8, - 61u8, 54u8, 182u8, 50u8, 200u8, 137u8, 247u8, 180u8, 158u8, 16u8, - 193u8, + 72u8, 161u8, 107u8, 123u8, 240u8, 3u8, 198u8, 75u8, 46u8, 131u8, 122u8, + 141u8, 253u8, 141u8, 232u8, 192u8, 146u8, 54u8, 174u8, 162u8, 48u8, + 165u8, 226u8, 233u8, 12u8, 227u8, 23u8, 17u8, 237u8, 179u8, 193u8, + 166u8, ], ) } #[doc = " Holds on account balances."] pub fn holds( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::holds::Param0, + >, types::holds::Holds, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "NisCounterpartBalances", "Holds", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ - 181u8, 39u8, 29u8, 45u8, 45u8, 198u8, 129u8, 210u8, 189u8, 183u8, - 121u8, 125u8, 57u8, 90u8, 95u8, 107u8, 51u8, 13u8, 22u8, 105u8, 191u8, - 61u8, 54u8, 182u8, 50u8, 200u8, 137u8, 247u8, 180u8, 158u8, 16u8, - 193u8, + 72u8, 161u8, 107u8, 123u8, 240u8, 3u8, 198u8, 75u8, 46u8, 131u8, 122u8, + 141u8, 253u8, 141u8, 232u8, 192u8, 146u8, 54u8, 174u8, 162u8, 48u8, + 165u8, 226u8, 233u8, 12u8, 227u8, 23u8, 17u8, 237u8, 179u8, 193u8, + 166u8, ], ) } #[doc = " Freeze locks on account balances."] pub fn freezes_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::freezes::Freezes, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "NisCounterpartBalances", "Freezes", (), @@ -30936,18 +28823,22 @@ pub mod api { #[doc = " Freeze locks on account balances."] pub fn freezes( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::freezes::Param0, + >, types::freezes::Freezes, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "NisCounterpartBalances", "Freezes", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 69u8, 49u8, 165u8, 76u8, 135u8, 142u8, 179u8, 118u8, 50u8, 109u8, 53u8, 112u8, 110u8, 94u8, 30u8, 93u8, 173u8, 38u8, 27u8, 142u8, 19u8, 5u8, @@ -30971,8 +28862,9 @@ pub mod api { #[doc = " Bottom line: Do yourself a favour and make it at least one!"] pub fn existential_deposit( &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "NisCounterpartBalances", "ExistentialDeposit", [ @@ -30984,8 +28876,11 @@ pub mod api { } #[doc = " The maximum number of locks that should exist on an account."] #[doc = " Not strictly enforced, but used for weight estimation."] - pub fn max_locks(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn max_locks( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "NisCounterpartBalances", "MaxLocks", [ @@ -30997,8 +28892,11 @@ pub mod api { ) } #[doc = " The maximum number of named reserves that can exist on an account."] - pub fn max_reserves(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn max_reserves( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "NisCounterpartBalances", "MaxReserves", [ @@ -31009,9 +28907,28 @@ pub mod api { ], ) } + #[doc = " The maximum number of holds that can exist on an account at any time."] + pub fn max_holds( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( + "NisCounterpartBalances", + "MaxHolds", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } #[doc = " The maximum number of individual freeze locks that can exist on an account at any time."] - pub fn max_freezes(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn max_freezes( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "NisCounterpartBalances", "MaxFreezes", [ @@ -31043,16 +28960,20 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the validation upgrade cooldown."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_validation_upgrade_cooldown`]."] pub struct SetValidationUpgradeCooldown { pub new: set_validation_upgrade_cooldown::New, } @@ -31060,21 +28981,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetValidationUpgradeCooldown { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetValidationUpgradeCooldown { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_validation_upgrade_cooldown"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the validation upgrade delay."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_validation_upgrade_delay`]."] pub struct SetValidationUpgradeDelay { pub new: set_validation_upgrade_delay::New, } @@ -31082,21 +29007,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetValidationUpgradeDelay { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetValidationUpgradeDelay { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_validation_upgrade_delay"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the acceptance period for an included candidate."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_code_retention_period`]."] pub struct SetCodeRetentionPeriod { pub new: set_code_retention_period::New, } @@ -31104,21 +29033,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetCodeRetentionPeriod { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetCodeRetentionPeriod { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_code_retention_period"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the max validation code size for incoming upgrades."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_max_code_size`]."] pub struct SetMaxCodeSize { pub new: set_max_code_size::New, } @@ -31126,21 +29059,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetMaxCodeSize { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetMaxCodeSize { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_max_code_size"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the max POV block size for incoming upgrades."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_max_pov_size`]."] pub struct SetMaxPovSize { pub new: set_max_pov_size::New, } @@ -31148,21 +29085,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetMaxPovSize { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetMaxPovSize { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_max_pov_size"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the max head data size for paras."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_max_head_data_size`]."] pub struct SetMaxHeadDataSize { pub new: set_max_head_data_size::New, } @@ -31170,68 +29111,77 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetMaxHeadDataSize { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetMaxHeadDataSize { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_max_head_data_size"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the number of coretime execution cores."] - #[doc = ""] - #[doc = "Note that this configuration is managed by the coretime chain. Only manually change"] - #[doc = "this, if you really know what you are doing!"] - pub struct SetCoretimeCores { - pub new: set_coretime_cores::New, + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_on_demand_cores`]."] + pub struct SetOnDemandCores { + pub new: set_on_demand_cores::New, } - pub mod set_coretime_cores { + pub mod set_on_demand_cores { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetCoretimeCores { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetOnDemandCores { const PALLET: &'static str = "Configuration"; - const CALL: &'static str = "set_coretime_cores"; + const CALL: &'static str = "set_on_demand_cores"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the max number of times a claim may timeout on a core before it is abandoned"] - pub struct SetMaxAvailabilityTimeouts { - pub new: set_max_availability_timeouts::New, + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_on_demand_retries`]."] + pub struct SetOnDemandRetries { + pub new: set_on_demand_retries::New, } - pub mod set_max_availability_timeouts { + pub mod set_on_demand_retries { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetMaxAvailabilityTimeouts { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetOnDemandRetries { const PALLET: &'static str = "Configuration"; - const CALL: &'static str = "set_max_availability_timeouts"; + const CALL: &'static str = "set_on_demand_retries"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the parachain validator-group rotation frequency"] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_group_rotation_frequency`]."] pub struct SetGroupRotationFrequency { pub new: set_group_rotation_frequency::New, } @@ -31239,21 +29189,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetGroupRotationFrequency { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetGroupRotationFrequency { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_group_rotation_frequency"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the availability period for paras."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_paras_availability_period`]."] pub struct SetParasAvailabilityPeriod { pub new: set_paras_availability_period::New, } @@ -31261,21 +29215,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetParasAvailabilityPeriod { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetParasAvailabilityPeriod { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_paras_availability_period"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the scheduling lookahead, in expected number of blocks at peak throughput."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_scheduling_lookahead`]."] pub struct SetSchedulingLookahead { pub new: set_scheduling_lookahead::New, } @@ -31283,21 +29241,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetSchedulingLookahead { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetSchedulingLookahead { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_scheduling_lookahead"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the maximum number of validators to assign to any core."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_max_validators_per_core`]."] pub struct SetMaxValidatorsPerCore { pub new: set_max_validators_per_core::New, } @@ -31305,21 +29267,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::option::Option<::core::primitive::u32>; } - impl ::subxt::blocks::StaticExtrinsic for SetMaxValidatorsPerCore { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetMaxValidatorsPerCore { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_max_validators_per_core"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the maximum number of validators to use in parachain consensus."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_max_validators`]."] pub struct SetMaxValidators { pub new: set_max_validators::New, } @@ -31327,21 +29293,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::option::Option<::core::primitive::u32>; } - impl ::subxt::blocks::StaticExtrinsic for SetMaxValidators { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetMaxValidators { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_max_validators"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the dispute period, in number of sessions to keep for disputes."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_dispute_period`]."] pub struct SetDisputePeriod { pub new: set_dispute_period::New, } @@ -31349,21 +29319,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetDisputePeriod { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetDisputePeriod { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_dispute_period"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the dispute post conclusion acceptance period."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_dispute_post_conclusion_acceptance_period`]."] pub struct SetDisputePostConclusionAcceptancePeriod { pub new: set_dispute_post_conclusion_acceptance_period::New, } @@ -31371,22 +29345,27 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetDisputePostConclusionAcceptancePeriod { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic + for SetDisputePostConclusionAcceptancePeriod + { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_dispute_post_conclusion_acceptance_period"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the no show slots, in number of number of consensus slots."] - #[doc = "Must be at least 1."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_no_show_slots`]."] pub struct SetNoShowSlots { pub new: set_no_show_slots::New, } @@ -31394,21 +29373,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetNoShowSlots { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetNoShowSlots { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_no_show_slots"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the total number of delay tranches."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_n_delay_tranches`]."] pub struct SetNDelayTranches { pub new: set_n_delay_tranches::New, } @@ -31416,21 +29399,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetNDelayTranches { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetNDelayTranches { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_n_delay_tranches"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the zeroth delay tranche width."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_zeroth_delay_tranche_width`]."] pub struct SetZerothDelayTrancheWidth { pub new: set_zeroth_delay_tranche_width::New, } @@ -31438,21 +29425,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetZerothDelayTrancheWidth { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetZerothDelayTrancheWidth { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_zeroth_delay_tranche_width"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the number of validators needed to approve a block."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_needed_approvals`]."] pub struct SetNeededApprovals { pub new: set_needed_approvals::New, } @@ -31460,21 +29451,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetNeededApprovals { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetNeededApprovals { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_needed_approvals"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the number of samples to do of the `RelayVRFModulo` approval assignment criterion."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_relay_vrf_modulo_samples`]."] pub struct SetRelayVrfModuloSamples { pub new: set_relay_vrf_modulo_samples::New, } @@ -31482,21 +29477,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetRelayVrfModuloSamples { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetRelayVrfModuloSamples { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_relay_vrf_modulo_samples"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Sets the maximum items that can present in a upward dispatch queue at once."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_max_upward_queue_count`]."] pub struct SetMaxUpwardQueueCount { pub new: set_max_upward_queue_count::New, } @@ -31504,22 +29503,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetMaxUpwardQueueCount { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetMaxUpwardQueueCount { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_max_upward_queue_count"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Sets the maximum total size of items that can present in a upward dispatch queue at"] - #[doc = "once."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_max_upward_queue_size`]."] pub struct SetMaxUpwardQueueSize { pub new: set_max_upward_queue_size::New, } @@ -31527,21 +29529,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetMaxUpwardQueueSize { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetMaxUpwardQueueSize { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_max_upward_queue_size"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the critical downward message size."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_max_downward_message_size`]."] pub struct SetMaxDownwardMessageSize { pub new: set_max_downward_message_size::New, } @@ -31549,21 +29555,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetMaxDownwardMessageSize { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetMaxDownwardMessageSize { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_max_downward_message_size"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Sets the maximum size of an upward message that can be sent by a candidate."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_max_upward_message_size`]."] pub struct SetMaxUpwardMessageSize { pub new: set_max_upward_message_size::New, } @@ -31571,21 +29581,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetMaxUpwardMessageSize { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetMaxUpwardMessageSize { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_max_upward_message_size"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Sets the maximum number of messages that a candidate can contain."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_max_upward_message_num_per_candidate`]."] pub struct SetMaxUpwardMessageNumPerCandidate { pub new: set_max_upward_message_num_per_candidate::New, } @@ -31593,21 +29607,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetMaxUpwardMessageNumPerCandidate { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetMaxUpwardMessageNumPerCandidate { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_max_upward_message_num_per_candidate"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Sets the number of sessions after which an HRMP open channel request expires."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_hrmp_open_request_ttl`]."] pub struct SetHrmpOpenRequestTtl { pub new: set_hrmp_open_request_ttl::New, } @@ -31615,21 +29633,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetHrmpOpenRequestTtl { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetHrmpOpenRequestTtl { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_hrmp_open_request_ttl"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Sets the amount of funds that the sender should provide for opening an HRMP channel."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_hrmp_sender_deposit`]."] pub struct SetHrmpSenderDeposit { pub new: set_hrmp_sender_deposit::New, } @@ -31637,22 +29659,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u128; } - impl ::subxt::blocks::StaticExtrinsic for SetHrmpSenderDeposit { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetHrmpSenderDeposit { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_hrmp_sender_deposit"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Sets the amount of funds that the recipient should provide for accepting opening an HRMP"] - #[doc = "channel."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_hrmp_recipient_deposit`]."] pub struct SetHrmpRecipientDeposit { pub new: set_hrmp_recipient_deposit::New, } @@ -31660,21 +29685,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u128; } - impl ::subxt::blocks::StaticExtrinsic for SetHrmpRecipientDeposit { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetHrmpRecipientDeposit { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_hrmp_recipient_deposit"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Sets the maximum number of messages allowed in an HRMP channel at once."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_hrmp_channel_max_capacity`]."] pub struct SetHrmpChannelMaxCapacity { pub new: set_hrmp_channel_max_capacity::New, } @@ -31682,21 +29711,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetHrmpChannelMaxCapacity { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetHrmpChannelMaxCapacity { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_hrmp_channel_max_capacity"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Sets the maximum total size of messages in bytes allowed in an HRMP channel at once."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_hrmp_channel_max_total_size`]."] pub struct SetHrmpChannelMaxTotalSize { pub new: set_hrmp_channel_max_total_size::New, } @@ -31704,21 +29737,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetHrmpChannelMaxTotalSize { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetHrmpChannelMaxTotalSize { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_hrmp_channel_max_total_size"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Sets the maximum number of inbound HRMP channels a parachain is allowed to accept."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_hrmp_max_parachain_inbound_channels`]."] pub struct SetHrmpMaxParachainInboundChannels { pub new: set_hrmp_max_parachain_inbound_channels::New, } @@ -31726,21 +29763,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetHrmpMaxParachainInboundChannels { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetHrmpMaxParachainInboundChannels { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_hrmp_max_parachain_inbound_channels"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Sets the maximum size of a message that could ever be put into an HRMP channel."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_hrmp_channel_max_message_size`]."] pub struct SetHrmpChannelMaxMessageSize { pub new: set_hrmp_channel_max_message_size::New, } @@ -31748,21 +29789,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetHrmpChannelMaxMessageSize { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetHrmpChannelMaxMessageSize { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_hrmp_channel_max_message_size"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Sets the maximum number of outbound HRMP channels a parachain is allowed to open."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_hrmp_max_parachain_outbound_channels`]."] pub struct SetHrmpMaxParachainOutboundChannels { pub new: set_hrmp_max_parachain_outbound_channels::New, } @@ -31770,21 +29815,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetHrmpMaxParachainOutboundChannels { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetHrmpMaxParachainOutboundChannels { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_hrmp_max_parachain_outbound_channels"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Sets the maximum number of outbound HRMP messages can be sent by a candidate."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_hrmp_max_message_num_per_candidate`]."] pub struct SetHrmpMaxMessageNumPerCandidate { pub new: set_hrmp_max_message_num_per_candidate::New, } @@ -31792,21 +29841,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetHrmpMaxMessageNumPerCandidate { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetHrmpMaxMessageNumPerCandidate { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_hrmp_max_message_num_per_candidate"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the number of session changes after which a PVF pre-checking voting is rejected."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_pvf_voting_ttl`]."] pub struct SetPvfVotingTtl { pub new: set_pvf_voting_ttl::New, } @@ -31814,24 +29867,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetPvfVotingTtl { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetPvfVotingTtl { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_pvf_voting_ttl"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Sets the minimum delay between announcing the upgrade block for a parachain until the"] - #[doc = "upgrade taking place."] - #[doc = ""] - #[doc = "See the field documentation for information and constraints for the new value."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_minimum_validation_upgrade_delay`]."] pub struct SetMinimumValidationUpgradeDelay { pub new: set_minimum_validation_upgrade_delay::New, } @@ -31839,22 +29893,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetMinimumValidationUpgradeDelay { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetMinimumValidationUpgradeDelay { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_minimum_validation_upgrade_delay"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Setting this to true will disable consistency checks for the configuration setters."] - #[doc = "Use with caution."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_bypass_consistency_check`]."] pub struct SetBypassConsistencyCheck { pub new: set_bypass_consistency_check::New, } @@ -31862,21 +29919,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::bool; } - impl ::subxt::blocks::StaticExtrinsic for SetBypassConsistencyCheck { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetBypassConsistencyCheck { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_bypass_consistency_check"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the asynchronous backing parameters."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_async_backing_params`]."] pub struct SetAsyncBackingParams { pub new: set_async_backing_params::New, } @@ -31885,21 +29946,25 @@ pub mod api { pub type New = runtime_types::polkadot_primitives::v6::async_backing::AsyncBackingParams; } - impl ::subxt::blocks::StaticExtrinsic for SetAsyncBackingParams { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetAsyncBackingParams { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_async_backing_params"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set PVF executor parameters."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_executor_params`]."] pub struct SetExecutorParams { pub new: set_executor_params::New, } @@ -31908,21 +29973,25 @@ pub mod api { pub type New = runtime_types::polkadot_primitives::v6::executor_params::ExecutorParams; } - impl ::subxt::blocks::StaticExtrinsic for SetExecutorParams { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetExecutorParams { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_executor_params"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the on demand (parathreads) base fee."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_on_demand_base_fee`]."] pub struct SetOnDemandBaseFee { pub new: set_on_demand_base_fee::New, } @@ -31930,21 +29999,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u128; } - impl ::subxt::blocks::StaticExtrinsic for SetOnDemandBaseFee { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetOnDemandBaseFee { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_on_demand_base_fee"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the on demand (parathreads) fee variability."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_on_demand_fee_variability`]."] pub struct SetOnDemandFeeVariability { pub new: set_on_demand_fee_variability::New, } @@ -31952,21 +30025,25 @@ pub mod api { use super::runtime_types; pub type New = runtime_types::sp_arithmetic::per_things::Perbill; } - impl ::subxt::blocks::StaticExtrinsic for SetOnDemandFeeVariability { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetOnDemandFeeVariability { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_on_demand_fee_variability"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the on demand (parathreads) queue max size."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_on_demand_queue_max_size`]."] pub struct SetOnDemandQueueMaxSize { pub new: set_on_demand_queue_max_size::New, } @@ -31974,21 +30051,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetOnDemandQueueMaxSize { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetOnDemandQueueMaxSize { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_on_demand_queue_max_size"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the on demand (parathreads) fee variability."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_on_demand_target_queue_utilization`]."] pub struct SetOnDemandTargetQueueUtilization { pub new: set_on_demand_target_queue_utilization::New, } @@ -31996,21 +30077,25 @@ pub mod api { use super::runtime_types; pub type New = runtime_types::sp_arithmetic::per_things::Perbill; } - impl ::subxt::blocks::StaticExtrinsic for SetOnDemandTargetQueueUtilization { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetOnDemandTargetQueueUtilization { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_on_demand_target_queue_utilization"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the on demand (parathreads) ttl in the claimqueue."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_on_demand_ttl`]."] pub struct SetOnDemandTtl { pub new: set_on_demand_ttl::New, } @@ -32018,21 +30103,25 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetOnDemandTtl { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetOnDemandTtl { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_on_demand_ttl"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the minimum backing votes threshold."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_minimum_backing_votes`]."] pub struct SetMinimumBackingVotes { pub new: set_minimum_backing_votes::New, } @@ -32040,90 +30129,20 @@ pub mod api { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetMinimumBackingVotes { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetMinimumBackingVotes { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_minimum_backing_votes"; } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set/Unset a node feature."] - pub struct SetNodeFeature { - pub index: set_node_feature::Index, - pub value: set_node_feature::Value, - } - pub mod set_node_feature { - use super::runtime_types; - pub type Index = ::core::primitive::u8; - pub type Value = ::core::primitive::bool; - } - impl ::subxt::blocks::StaticExtrinsic for SetNodeFeature { - const PALLET: &'static str = "Configuration"; - const CALL: &'static str = "set_node_feature"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set approval-voting-params."] - pub struct SetApprovalVotingParams { - pub new: set_approval_voting_params::New, - } - pub mod set_approval_voting_params { - use super::runtime_types; - pub type New = - runtime_types::polkadot_primitives::vstaging::ApprovalVotingParams; - } - impl ::subxt::blocks::StaticExtrinsic for SetApprovalVotingParams { - const PALLET: &'static str = "Configuration"; - const CALL: &'static str = "set_approval_voting_params"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set scheduler-params."] - pub struct SetSchedulerParams { - pub new: set_scheduler_params::New, - } - pub mod set_scheduler_params { - use super::runtime_types; - pub type New = runtime_types::polkadot_primitives::vstaging::SchedulerParams< - ::core::primitive::u32, - >; - } - impl ::subxt::blocks::StaticExtrinsic for SetSchedulerParams { - const PALLET: &'static str = "Configuration"; - const CALL: &'static str = "set_scheduler_params"; - } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Set the validation upgrade cooldown."] + #[doc = "See [`Pallet::set_validation_upgrade_cooldown`]."] pub fn set_validation_upgrade_cooldown( &self, new: types::set_validation_upgrade_cooldown::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_validation_upgrade_cooldown", types::SetValidationUpgradeCooldown { new }, @@ -32135,12 +30154,13 @@ pub mod api { ], ) } - #[doc = "Set the validation upgrade delay."] + #[doc = "See [`Pallet::set_validation_upgrade_delay`]."] pub fn set_validation_upgrade_delay( &self, new: types::set_validation_upgrade_delay::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_validation_upgrade_delay", types::SetValidationUpgradeDelay { new }, @@ -32151,12 +30171,13 @@ pub mod api { ], ) } - #[doc = "Set the acceptance period for an included candidate."] + #[doc = "See [`Pallet::set_code_retention_period`]."] pub fn set_code_retention_period( &self, new: types::set_code_retention_period::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_code_retention_period", types::SetCodeRetentionPeriod { new }, @@ -32168,12 +30189,12 @@ pub mod api { ], ) } - #[doc = "Set the max validation code size for incoming upgrades."] + #[doc = "See [`Pallet::set_max_code_size`]."] pub fn set_max_code_size( &self, new: types::set_max_code_size::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_max_code_size", types::SetMaxCodeSize { new }, @@ -32185,12 +30206,12 @@ pub mod api { ], ) } - #[doc = "Set the max POV block size for incoming upgrades."] + #[doc = "See [`Pallet::set_max_pov_size`]."] pub fn set_max_pov_size( &self, new: types::set_max_pov_size::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_max_pov_size", types::SetMaxPovSize { new }, @@ -32201,12 +30222,13 @@ pub mod api { ], ) } - #[doc = "Set the max head data size for paras."] + #[doc = "See [`Pallet::set_max_head_data_size`]."] pub fn set_max_head_data_size( &self, new: types::set_max_head_data_size::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_max_head_data_size", types::SetMaxHeadDataSize { new }, @@ -32218,47 +30240,49 @@ pub mod api { ], ) } - #[doc = "Set the number of coretime execution cores."] - #[doc = ""] - #[doc = "Note that this configuration is managed by the coretime chain. Only manually change"] - #[doc = "this, if you really know what you are doing!"] - pub fn set_coretime_cores( + #[doc = "See [`Pallet::set_on_demand_cores`]."] + pub fn set_on_demand_cores( &self, - new: types::set_coretime_cores::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + new: types::set_on_demand_cores::New, + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", - "set_coretime_cores", - types::SetCoretimeCores { new }, + "set_on_demand_cores", + types::SetOnDemandCores { new }, [ - 179u8, 131u8, 211u8, 152u8, 167u8, 6u8, 108u8, 94u8, 179u8, 97u8, 87u8, - 227u8, 57u8, 120u8, 133u8, 130u8, 59u8, 243u8, 224u8, 2u8, 11u8, 86u8, - 251u8, 77u8, 159u8, 177u8, 145u8, 34u8, 117u8, 93u8, 28u8, 52u8, + 157u8, 26u8, 82u8, 103u8, 83u8, 214u8, 92u8, 176u8, 93u8, 70u8, 32u8, + 217u8, 139u8, 30u8, 145u8, 237u8, 34u8, 121u8, 190u8, 17u8, 128u8, + 243u8, 241u8, 181u8, 85u8, 141u8, 107u8, 70u8, 121u8, 119u8, 20u8, + 104u8, ], ) } - #[doc = "Set the max number of times a claim may timeout on a core before it is abandoned"] - pub fn set_max_availability_timeouts( + #[doc = "See [`Pallet::set_on_demand_retries`]."] + pub fn set_on_demand_retries( &self, - new: types::set_max_availability_timeouts::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + new: types::set_on_demand_retries::New, + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", - "set_max_availability_timeouts", - types::SetMaxAvailabilityTimeouts { new }, + "set_on_demand_retries", + types::SetOnDemandRetries { new }, [ - 53u8, 141u8, 53u8, 9u8, 149u8, 145u8, 48u8, 165u8, 157u8, 2u8, 45u8, - 23u8, 128u8, 233u8, 27u8, 132u8, 189u8, 212u8, 45u8, 187u8, 2u8, 112u8, - 26u8, 88u8, 233u8, 84u8, 148u8, 73u8, 222u8, 208u8, 195u8, 153u8, + 228u8, 78u8, 216u8, 66u8, 17u8, 51u8, 84u8, 14u8, 80u8, 67u8, 24u8, + 138u8, 177u8, 108u8, 203u8, 87u8, 240u8, 125u8, 111u8, 223u8, 216u8, + 212u8, 69u8, 236u8, 216u8, 178u8, 166u8, 145u8, 115u8, 47u8, 147u8, + 235u8, ], ) } - #[doc = "Set the parachain validator-group rotation frequency"] + #[doc = "See [`Pallet::set_group_rotation_frequency`]."] pub fn set_group_rotation_frequency( &self, new: types::set_group_rotation_frequency::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_group_rotation_frequency", types::SetGroupRotationFrequency { new }, @@ -32269,12 +30293,13 @@ pub mod api { ], ) } - #[doc = "Set the availability period for paras."] + #[doc = "See [`Pallet::set_paras_availability_period`]."] pub fn set_paras_availability_period( &self, new: types::set_paras_availability_period::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_paras_availability_period", types::SetParasAvailabilityPeriod { new }, @@ -32285,12 +30310,13 @@ pub mod api { ], ) } - #[doc = "Set the scheduling lookahead, in expected number of blocks at peak throughput."] + #[doc = "See [`Pallet::set_scheduling_lookahead`]."] pub fn set_scheduling_lookahead( &self, new: types::set_scheduling_lookahead::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_scheduling_lookahead", types::SetSchedulingLookahead { new }, @@ -32302,12 +30328,13 @@ pub mod api { ], ) } - #[doc = "Set the maximum number of validators to assign to any core."] + #[doc = "See [`Pallet::set_max_validators_per_core`]."] pub fn set_max_validators_per_core( &self, new: types::set_max_validators_per_core::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_max_validators_per_core", types::SetMaxValidatorsPerCore { new }, @@ -32319,12 +30346,13 @@ pub mod api { ], ) } - #[doc = "Set the maximum number of validators to use in parachain consensus."] + #[doc = "See [`Pallet::set_max_validators`]."] pub fn set_max_validators( &self, new: types::set_max_validators::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_max_validators", types::SetMaxValidators { new }, @@ -32336,12 +30364,13 @@ pub mod api { ], ) } - #[doc = "Set the dispute period, in number of sessions to keep for disputes."] + #[doc = "See [`Pallet::set_dispute_period`]."] pub fn set_dispute_period( &self, new: types::set_dispute_period::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_dispute_period", types::SetDisputePeriod { new }, @@ -32353,13 +30382,14 @@ pub mod api { ], ) } - #[doc = "Set the dispute post conclusion acceptance period."] + #[doc = "See [`Pallet::set_dispute_post_conclusion_acceptance_period`]."] pub fn set_dispute_post_conclusion_acceptance_period( &self, new: types::set_dispute_post_conclusion_acceptance_period::New, - ) -> ::subxt::tx::Payload - { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload< + types::SetDisputePostConclusionAcceptancePeriod, + > { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_dispute_post_conclusion_acceptance_period", types::SetDisputePostConclusionAcceptancePeriod { new }, @@ -32371,13 +30401,12 @@ pub mod api { ], ) } - #[doc = "Set the no show slots, in number of number of consensus slots."] - #[doc = "Must be at least 1."] + #[doc = "See [`Pallet::set_no_show_slots`]."] pub fn set_no_show_slots( &self, new: types::set_no_show_slots::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_no_show_slots", types::SetNoShowSlots { new }, @@ -32388,12 +30417,13 @@ pub mod api { ], ) } - #[doc = "Set the total number of delay tranches."] + #[doc = "See [`Pallet::set_n_delay_tranches`]."] pub fn set_n_delay_tranches( &self, new: types::set_n_delay_tranches::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_n_delay_tranches", types::SetNDelayTranches { new }, @@ -32405,12 +30435,13 @@ pub mod api { ], ) } - #[doc = "Set the zeroth delay tranche width."] + #[doc = "See [`Pallet::set_zeroth_delay_tranche_width`]."] pub fn set_zeroth_delay_tranche_width( &self, new: types::set_zeroth_delay_tranche_width::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_zeroth_delay_tranche_width", types::SetZerothDelayTrancheWidth { new }, @@ -32421,12 +30452,13 @@ pub mod api { ], ) } - #[doc = "Set the number of validators needed to approve a block."] + #[doc = "See [`Pallet::set_needed_approvals`]."] pub fn set_needed_approvals( &self, new: types::set_needed_approvals::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_needed_approvals", types::SetNeededApprovals { new }, @@ -32437,12 +30469,13 @@ pub mod api { ], ) } - #[doc = "Set the number of samples to do of the `RelayVRFModulo` approval assignment criterion."] + #[doc = "See [`Pallet::set_relay_vrf_modulo_samples`]."] pub fn set_relay_vrf_modulo_samples( &self, new: types::set_relay_vrf_modulo_samples::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_relay_vrf_modulo_samples", types::SetRelayVrfModuloSamples { new }, @@ -32454,12 +30487,13 @@ pub mod api { ], ) } - #[doc = "Sets the maximum items that can present in a upward dispatch queue at once."] + #[doc = "See [`Pallet::set_max_upward_queue_count`]."] pub fn set_max_upward_queue_count( &self, new: types::set_max_upward_queue_count::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_max_upward_queue_count", types::SetMaxUpwardQueueCount { new }, @@ -32471,13 +30505,13 @@ pub mod api { ], ) } - #[doc = "Sets the maximum total size of items that can present in a upward dispatch queue at"] - #[doc = "once."] + #[doc = "See [`Pallet::set_max_upward_queue_size`]."] pub fn set_max_upward_queue_size( &self, new: types::set_max_upward_queue_size::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_max_upward_queue_size", types::SetMaxUpwardQueueSize { new }, @@ -32489,12 +30523,13 @@ pub mod api { ], ) } - #[doc = "Set the critical downward message size."] + #[doc = "See [`Pallet::set_max_downward_message_size`]."] pub fn set_max_downward_message_size( &self, new: types::set_max_downward_message_size::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_max_downward_message_size", types::SetMaxDownwardMessageSize { new }, @@ -32505,12 +30540,13 @@ pub mod api { ], ) } - #[doc = "Sets the maximum size of an upward message that can be sent by a candidate."] + #[doc = "See [`Pallet::set_max_upward_message_size`]."] pub fn set_max_upward_message_size( &self, new: types::set_max_upward_message_size::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_max_upward_message_size", types::SetMaxUpwardMessageSize { new }, @@ -32522,13 +30558,13 @@ pub mod api { ], ) } - #[doc = "Sets the maximum number of messages that a candidate can contain."] + #[doc = "See [`Pallet::set_max_upward_message_num_per_candidate`]."] pub fn set_max_upward_message_num_per_candidate( &self, new: types::set_max_upward_message_num_per_candidate::New, - ) -> ::subxt::tx::Payload + ) -> ::subxt::ext::subxt_core::tx::Payload { - ::subxt::tx::Payload::new_static( + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_max_upward_message_num_per_candidate", types::SetMaxUpwardMessageNumPerCandidate { new }, @@ -32539,12 +30575,13 @@ pub mod api { ], ) } - #[doc = "Sets the number of sessions after which an HRMP open channel request expires."] + #[doc = "See [`Pallet::set_hrmp_open_request_ttl`]."] pub fn set_hrmp_open_request_ttl( &self, new: types::set_hrmp_open_request_ttl::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_hrmp_open_request_ttl", types::SetHrmpOpenRequestTtl { new }, @@ -32555,12 +30592,13 @@ pub mod api { ], ) } - #[doc = "Sets the amount of funds that the sender should provide for opening an HRMP channel."] + #[doc = "See [`Pallet::set_hrmp_sender_deposit`]."] pub fn set_hrmp_sender_deposit( &self, new: types::set_hrmp_sender_deposit::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_hrmp_sender_deposit", types::SetHrmpSenderDeposit { new }, @@ -32571,13 +30609,13 @@ pub mod api { ], ) } - #[doc = "Sets the amount of funds that the recipient should provide for accepting opening an HRMP"] - #[doc = "channel."] + #[doc = "See [`Pallet::set_hrmp_recipient_deposit`]."] pub fn set_hrmp_recipient_deposit( &self, new: types::set_hrmp_recipient_deposit::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_hrmp_recipient_deposit", types::SetHrmpRecipientDeposit { new }, @@ -32589,12 +30627,13 @@ pub mod api { ], ) } - #[doc = "Sets the maximum number of messages allowed in an HRMP channel at once."] + #[doc = "See [`Pallet::set_hrmp_channel_max_capacity`]."] pub fn set_hrmp_channel_max_capacity( &self, new: types::set_hrmp_channel_max_capacity::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_hrmp_channel_max_capacity", types::SetHrmpChannelMaxCapacity { new }, @@ -32606,12 +30645,13 @@ pub mod api { ], ) } - #[doc = "Sets the maximum total size of messages in bytes allowed in an HRMP channel at once."] + #[doc = "See [`Pallet::set_hrmp_channel_max_total_size`]."] pub fn set_hrmp_channel_max_total_size( &self, new: types::set_hrmp_channel_max_total_size::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_hrmp_channel_max_total_size", types::SetHrmpChannelMaxTotalSize { new }, @@ -32622,13 +30662,13 @@ pub mod api { ], ) } - #[doc = "Sets the maximum number of inbound HRMP channels a parachain is allowed to accept."] + #[doc = "See [`Pallet::set_hrmp_max_parachain_inbound_channels`]."] pub fn set_hrmp_max_parachain_inbound_channels( &self, new: types::set_hrmp_max_parachain_inbound_channels::New, - ) -> ::subxt::tx::Payload + ) -> ::subxt::ext::subxt_core::tx::Payload { - ::subxt::tx::Payload::new_static( + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_hrmp_max_parachain_inbound_channels", types::SetHrmpMaxParachainInboundChannels { new }, @@ -32639,12 +30679,13 @@ pub mod api { ], ) } - #[doc = "Sets the maximum size of a message that could ever be put into an HRMP channel."] + #[doc = "See [`Pallet::set_hrmp_channel_max_message_size`]."] pub fn set_hrmp_channel_max_message_size( &self, new: types::set_hrmp_channel_max_message_size::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_hrmp_channel_max_message_size", types::SetHrmpChannelMaxMessageSize { new }, @@ -32656,13 +30697,13 @@ pub mod api { ], ) } - #[doc = "Sets the maximum number of outbound HRMP channels a parachain is allowed to open."] + #[doc = "See [`Pallet::set_hrmp_max_parachain_outbound_channels`]."] pub fn set_hrmp_max_parachain_outbound_channels( &self, new: types::set_hrmp_max_parachain_outbound_channels::New, - ) -> ::subxt::tx::Payload + ) -> ::subxt::ext::subxt_core::tx::Payload { - ::subxt::tx::Payload::new_static( + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_hrmp_max_parachain_outbound_channels", types::SetHrmpMaxParachainOutboundChannels { new }, @@ -32673,12 +30714,13 @@ pub mod api { ], ) } - #[doc = "Sets the maximum number of outbound HRMP messages can be sent by a candidate."] + #[doc = "See [`Pallet::set_hrmp_max_message_num_per_candidate`]."] pub fn set_hrmp_max_message_num_per_candidate( &self, new: types::set_hrmp_max_message_num_per_candidate::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_hrmp_max_message_num_per_candidate", types::SetHrmpMaxMessageNumPerCandidate { new }, @@ -32689,12 +30731,12 @@ pub mod api { ], ) } - #[doc = "Set the number of session changes after which a PVF pre-checking voting is rejected."] + #[doc = "See [`Pallet::set_pvf_voting_ttl`]."] pub fn set_pvf_voting_ttl( &self, new: types::set_pvf_voting_ttl::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_pvf_voting_ttl", types::SetPvfVotingTtl { new }, @@ -32706,15 +30748,13 @@ pub mod api { ], ) } - #[doc = "Sets the minimum delay between announcing the upgrade block for a parachain until the"] - #[doc = "upgrade taking place."] - #[doc = ""] - #[doc = "See the field documentation for information and constraints for the new value."] + #[doc = "See [`Pallet::set_minimum_validation_upgrade_delay`]."] pub fn set_minimum_validation_upgrade_delay( &self, new: types::set_minimum_validation_upgrade_delay::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_minimum_validation_upgrade_delay", types::SetMinimumValidationUpgradeDelay { new }, @@ -32726,13 +30766,13 @@ pub mod api { ], ) } - #[doc = "Setting this to true will disable consistency checks for the configuration setters."] - #[doc = "Use with caution."] + #[doc = "See [`Pallet::set_bypass_consistency_check`]."] pub fn set_bypass_consistency_check( &self, new: types::set_bypass_consistency_check::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_bypass_consistency_check", types::SetBypassConsistencyCheck { new }, @@ -32744,12 +30784,13 @@ pub mod api { ], ) } - #[doc = "Set the asynchronous backing parameters."] + #[doc = "See [`Pallet::set_async_backing_params`]."] pub fn set_async_backing_params( &self, new: types::set_async_backing_params::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_async_backing_params", types::SetAsyncBackingParams { new }, @@ -32761,28 +30802,30 @@ pub mod api { ], ) } - #[doc = "Set PVF executor parameters."] + #[doc = "See [`Pallet::set_executor_params`]."] pub fn set_executor_params( &self, new: types::set_executor_params::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_executor_params", types::SetExecutorParams { new }, [ - 79u8, 167u8, 242u8, 14u8, 22u8, 177u8, 240u8, 134u8, 154u8, 77u8, - 233u8, 188u8, 110u8, 223u8, 25u8, 52u8, 58u8, 241u8, 226u8, 255u8, 2u8, - 26u8, 8u8, 241u8, 125u8, 33u8, 63u8, 204u8, 93u8, 31u8, 229u8, 0u8, + 219u8, 27u8, 25u8, 162u8, 61u8, 189u8, 61u8, 32u8, 101u8, 139u8, 89u8, + 51u8, 191u8, 223u8, 94u8, 145u8, 109u8, 247u8, 22u8, 64u8, 178u8, 97u8, + 239u8, 0u8, 125u8, 20u8, 62u8, 210u8, 110u8, 79u8, 225u8, 43u8, ], ) } - #[doc = "Set the on demand (parathreads) base fee."] + #[doc = "See [`Pallet::set_on_demand_base_fee`]."] pub fn set_on_demand_base_fee( &self, new: types::set_on_demand_base_fee::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_on_demand_base_fee", types::SetOnDemandBaseFee { new }, @@ -32793,12 +30836,13 @@ pub mod api { ], ) } - #[doc = "Set the on demand (parathreads) fee variability."] + #[doc = "See [`Pallet::set_on_demand_fee_variability`]."] pub fn set_on_demand_fee_variability( &self, new: types::set_on_demand_fee_variability::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_on_demand_fee_variability", types::SetOnDemandFeeVariability { new }, @@ -32810,12 +30854,13 @@ pub mod api { ], ) } - #[doc = "Set the on demand (parathreads) queue max size."] + #[doc = "See [`Pallet::set_on_demand_queue_max_size`]."] pub fn set_on_demand_queue_max_size( &self, new: types::set_on_demand_queue_max_size::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_on_demand_queue_max_size", types::SetOnDemandQueueMaxSize { new }, @@ -32826,13 +30871,13 @@ pub mod api { ], ) } - #[doc = "Set the on demand (parathreads) fee variability."] + #[doc = "See [`Pallet::set_on_demand_target_queue_utilization`]."] pub fn set_on_demand_target_queue_utilization( &self, new: types::set_on_demand_target_queue_utilization::New, - ) -> ::subxt::tx::Payload + ) -> ::subxt::ext::subxt_core::tx::Payload { - ::subxt::tx::Payload::new_static( + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_on_demand_target_queue_utilization", types::SetOnDemandTargetQueueUtilization { new }, @@ -32844,12 +30889,12 @@ pub mod api { ], ) } - #[doc = "Set the on demand (parathreads) ttl in the claimqueue."] + #[doc = "See [`Pallet::set_on_demand_ttl`]."] pub fn set_on_demand_ttl( &self, new: types::set_on_demand_ttl::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_on_demand_ttl", types::SetOnDemandTtl { new }, @@ -32861,12 +30906,13 @@ pub mod api { ], ) } - #[doc = "Set the minimum backing votes threshold."] + #[doc = "See [`Pallet::set_minimum_backing_votes`]."] pub fn set_minimum_backing_votes( &self, new: types::set_minimum_backing_votes::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Configuration", "set_minimum_backing_votes", types::SetMinimumBackingVotes { new }, @@ -32877,56 +30923,6 @@ pub mod api { ], ) } - #[doc = "Set/Unset a node feature."] - pub fn set_node_feature( - &self, - index: types::set_node_feature::Index, - value: types::set_node_feature::Value, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Configuration", - "set_node_feature", - types::SetNodeFeature { index, value }, - [ - 255u8, 19u8, 208u8, 76u8, 122u8, 6u8, 42u8, 182u8, 118u8, 151u8, 245u8, - 80u8, 162u8, 243u8, 45u8, 57u8, 122u8, 148u8, 98u8, 170u8, 157u8, 40u8, - 92u8, 234u8, 12u8, 141u8, 54u8, 80u8, 97u8, 249u8, 115u8, 27u8, - ], - ) - } - #[doc = "Set approval-voting-params."] - pub fn set_approval_voting_params( - &self, - new: types::set_approval_voting_params::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Configuration", - "set_approval_voting_params", - types::SetApprovalVotingParams { new }, - [ - 248u8, 81u8, 74u8, 103u8, 28u8, 108u8, 190u8, 177u8, 201u8, 252u8, - 87u8, 236u8, 20u8, 189u8, 192u8, 173u8, 40u8, 160u8, 170u8, 187u8, - 42u8, 108u8, 184u8, 131u8, 120u8, 237u8, 229u8, 240u8, 128u8, 49u8, - 163u8, 11u8, - ], - ) - } - #[doc = "Set scheduler-params."] - pub fn set_scheduler_params( - &self, - new: types::set_scheduler_params::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Configuration", - "set_scheduler_params", - types::SetSchedulerParams { new }, - [ - 191u8, 87u8, 235u8, 71u8, 143u8, 46u8, 2u8, 88u8, 111u8, 15u8, 251u8, - 230u8, 241u8, 172u8, 183u8, 110u8, 33u8, 26u8, 43u8, 119u8, 74u8, 62u8, - 200u8, 226u8, 83u8, 180u8, 123u8, 132u8, 171u8, 65u8, 30u8, 13u8, - ], - ) - } } } pub mod storage { @@ -32939,7 +30935,7 @@ pub mod api { } pub mod pending_configs { use super::runtime_types; - pub type PendingConfigs = :: std :: vec :: Vec < (:: core :: primitive :: u32 , runtime_types :: polkadot_runtime_parachains :: configuration :: HostConfiguration < :: core :: primitive :: u32 > ,) > ; + pub type PendingConfigs = :: subxt :: ext :: subxt_core :: alloc :: vec :: Vec < (:: core :: primitive :: u32 , runtime_types :: polkadot_runtime_parachains :: configuration :: HostConfiguration < :: core :: primitive :: u32 > ,) > ; } pub mod bypass_consistency_check { use super::runtime_types; @@ -32951,22 +30947,22 @@ pub mod api { #[doc = " The active configuration for the current session."] pub fn active_config( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::active_config::ActiveConfig, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Configuration", "ActiveConfig", (), [ - 139u8, 211u8, 123u8, 64u8, 213u8, 119u8, 27u8, 145u8, 140u8, 101u8, - 90u8, 64u8, 218u8, 130u8, 96u8, 66u8, 107u8, 131u8, 85u8, 4u8, 136u8, - 199u8, 248u8, 106u8, 206u8, 16u8, 205u8, 244u8, 67u8, 105u8, 20u8, - 22u8, + 126u8, 223u8, 107u8, 199u8, 21u8, 114u8, 19u8, 172u8, 27u8, 108u8, + 189u8, 165u8, 33u8, 220u8, 57u8, 81u8, 137u8, 242u8, 204u8, 148u8, + 61u8, 161u8, 156u8, 36u8, 20u8, 172u8, 117u8, 30u8, 152u8, 210u8, + 207u8, 161u8, ], ) } @@ -32979,21 +30975,22 @@ pub mod api { #[doc = " 2 items: for the next session and for the `scheduled_session`."] pub fn pending_configs( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::pending_configs::PendingConfigs, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Configuration", "PendingConfigs", (), [ - 7u8, 170u8, 38u8, 177u8, 76u8, 75u8, 198u8, 192u8, 247u8, 137u8, 85u8, - 17u8, 74u8, 93u8, 170u8, 177u8, 198u8, 208u8, 183u8, 28u8, 178u8, 5u8, - 39u8, 246u8, 175u8, 78u8, 145u8, 37u8, 212u8, 20u8, 52u8, 110u8, + 105u8, 89u8, 53u8, 156u8, 60u8, 53u8, 196u8, 187u8, 5u8, 122u8, 186u8, + 196u8, 162u8, 133u8, 254u8, 178u8, 130u8, 143u8, 90u8, 23u8, 234u8, + 105u8, 9u8, 121u8, 142u8, 123u8, 136u8, 166u8, 95u8, 215u8, 176u8, + 46u8, ], ) } @@ -33001,14 +30998,14 @@ pub mod api { #[doc = " is meant to be used only as the last resort."] pub fn bypass_consistency_check( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::bypass_consistency_check::BypassConsistencyCheck, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Configuration", "BypassConsistencyCheck", (), @@ -33048,18 +31045,19 @@ pub mod api { } pub mod active_validator_indices { use super::runtime_types; - pub type ActiveValidatorIndices = - ::std::vec::Vec; + pub type ActiveValidatorIndices = ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::polkadot_primitives::v6::ValidatorIndex, + >; } pub mod active_validator_keys { use super::runtime_types; - pub type ActiveValidatorKeys = ::std::vec::Vec< + pub type ActiveValidatorKeys = ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_primitives::v6::validator_app::Public, >; } pub mod allowed_relay_parents { use super::runtime_types; - pub type AllowedRelayParents = runtime_types :: polkadot_runtime_parachains :: shared :: AllowedRelayParentsTracker < :: subxt :: utils :: H256 , :: core :: primitive :: u32 > ; + pub type AllowedRelayParents = runtime_types :: polkadot_runtime_parachains :: shared :: AllowedRelayParentsTracker < :: subxt :: ext :: subxt_core :: utils :: H256 , :: core :: primitive :: u32 > ; } } pub struct StorageApi; @@ -33067,14 +31065,14 @@ pub mod api { #[doc = " The current session index."] pub fn current_session_index( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::current_session_index::CurrentSessionIndex, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParasShared", "CurrentSessionIndex", (), @@ -33090,14 +31088,14 @@ pub mod api { #[doc = " Indices are into the broader validator set."] pub fn active_validator_indices( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::active_validator_indices::ActiveValidatorIndices, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParasShared", "ActiveValidatorIndices", (), @@ -33112,14 +31110,14 @@ pub mod api { #[doc = " consensus. This should be the same length as `ActiveValidatorIndices`."] pub fn active_validator_keys( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::active_validator_keys::ActiveValidatorKeys, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParasShared", "ActiveValidatorKeys", (), @@ -33134,14 +31132,14 @@ pub mod api { #[doc = " All allowed relay-parents."] pub fn allowed_relay_parents( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::allowed_relay_parents::AllowedRelayParents, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParasShared", "AllowedRelayParents", (), @@ -33178,15 +31176,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A candidate was backed. `[candidate, head_data]`"] pub struct CandidateBacked( pub candidate_backed::Field0, @@ -33196,27 +31194,28 @@ pub mod api { ); pub mod candidate_backed { use super::runtime_types; - pub type Field0 = - runtime_types::polkadot_primitives::v6::CandidateReceipt<::subxt::utils::H256>; + pub type Field0 = runtime_types::polkadot_primitives::v6::CandidateReceipt< + ::subxt::ext::subxt_core::utils::H256, + >; pub type Field1 = runtime_types::polkadot_parachain_primitives::primitives::HeadData; pub type Field2 = runtime_types::polkadot_primitives::v6::CoreIndex; pub type Field3 = runtime_types::polkadot_primitives::v6::GroupIndex; } - impl ::subxt::events::StaticEvent for CandidateBacked { + impl ::subxt::ext::subxt_core::events::StaticEvent for CandidateBacked { const PALLET: &'static str = "ParaInclusion"; const EVENT: &'static str = "CandidateBacked"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A candidate was included. `[candidate, head_data]`"] pub struct CandidateIncluded( pub candidate_included::Field0, @@ -33226,27 +31225,28 @@ pub mod api { ); pub mod candidate_included { use super::runtime_types; - pub type Field0 = - runtime_types::polkadot_primitives::v6::CandidateReceipt<::subxt::utils::H256>; + pub type Field0 = runtime_types::polkadot_primitives::v6::CandidateReceipt< + ::subxt::ext::subxt_core::utils::H256, + >; pub type Field1 = runtime_types::polkadot_parachain_primitives::primitives::HeadData; pub type Field2 = runtime_types::polkadot_primitives::v6::CoreIndex; pub type Field3 = runtime_types::polkadot_primitives::v6::GroupIndex; } - impl ::subxt::events::StaticEvent for CandidateIncluded { + impl ::subxt::ext::subxt_core::events::StaticEvent for CandidateIncluded { const PALLET: &'static str = "ParaInclusion"; const EVENT: &'static str = "CandidateIncluded"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A candidate timed out. `[candidate, head_data]`"] pub struct CandidateTimedOut( pub candidate_timed_out::Field0, @@ -33255,26 +31255,27 @@ pub mod api { ); pub mod candidate_timed_out { use super::runtime_types; - pub type Field0 = - runtime_types::polkadot_primitives::v6::CandidateReceipt<::subxt::utils::H256>; + pub type Field0 = runtime_types::polkadot_primitives::v6::CandidateReceipt< + ::subxt::ext::subxt_core::utils::H256, + >; pub type Field1 = runtime_types::polkadot_parachain_primitives::primitives::HeadData; pub type Field2 = runtime_types::polkadot_primitives::v6::CoreIndex; } - impl ::subxt::events::StaticEvent for CandidateTimedOut { + impl ::subxt::ext::subxt_core::events::StaticEvent for CandidateTimedOut { const PALLET: &'static str = "ParaInclusion"; const EVENT: &'static str = "CandidateTimedOut"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some upward messages have been received and will be processed."] pub struct UpwardMessagesReceived { pub from: upward_messages_received::From, @@ -33285,7 +31286,7 @@ pub mod api { pub type From = runtime_types::polkadot_parachain_primitives::primitives::Id; pub type Count = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for UpwardMessagesReceived { + impl ::subxt::ext::subxt_core::events::StaticEvent for UpwardMessagesReceived { const PALLET: &'static str = "ParaInclusion"; const EVENT: &'static str = "UpwardMessagesReceived"; } @@ -33301,7 +31302,7 @@ pub mod api { } pub mod pending_availability { use super::runtime_types; - pub type PendingAvailability = runtime_types :: polkadot_runtime_parachains :: inclusion :: CandidatePendingAvailability < :: subxt :: utils :: H256 , :: core :: primitive :: u32 > ; + pub type PendingAvailability = runtime_types :: polkadot_runtime_parachains :: inclusion :: CandidatePendingAvailability < :: subxt :: ext :: subxt_core :: utils :: H256 , :: core :: primitive :: u32 > ; pub type Param0 = runtime_types::polkadot_parachain_primitives::primitives::Id; } pub mod pending_availability_commitments { @@ -33318,14 +31319,14 @@ pub mod api { #[doc = " The latest bitfield for each validator, referred to by their index in the validator set."] pub fn availability_bitfields_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::availability_bitfields::AvailabilityBitfields, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParaInclusion", "AvailabilityBitfields", (), @@ -33339,20 +31340,22 @@ pub mod api { #[doc = " The latest bitfield for each validator, referred to by their index in the validator set."] pub fn availability_bitfields( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::availability_bitfields::Param0, >, types::availability_bitfields::AvailabilityBitfields, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParaInclusion", "AvailabilityBitfields", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 163u8, 169u8, 217u8, 160u8, 147u8, 165u8, 186u8, 21u8, 171u8, 177u8, 74u8, 69u8, 55u8, 205u8, 46u8, 13u8, 253u8, 83u8, 55u8, 190u8, 22u8, @@ -33363,14 +31366,14 @@ pub mod api { #[doc = " Candidates pending availability by `ParaId`."] pub fn pending_availability_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::pending_availability::PendingAvailability, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParaInclusion", "PendingAvailability", (), @@ -33384,20 +31387,22 @@ pub mod api { #[doc = " Candidates pending availability by `ParaId`."] pub fn pending_availability( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::pending_availability::Param0, >, types::pending_availability::PendingAvailability, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParaInclusion", "PendingAvailability", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 164u8, 175u8, 34u8, 182u8, 190u8, 147u8, 42u8, 185u8, 162u8, 130u8, 33u8, 159u8, 234u8, 242u8, 90u8, 119u8, 2u8, 195u8, 48u8, 150u8, 135u8, @@ -33408,14 +31413,14 @@ pub mod api { #[doc = " The commitments of candidates pending availability, by `ParaId`."] pub fn pending_availability_commitments_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::pending_availability_commitments::PendingAvailabilityCommitments, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParaInclusion", "PendingAvailabilityCommitments", (), @@ -33429,20 +31434,22 @@ pub mod api { #[doc = " The commitments of candidates pending availability, by `ParaId`."] pub fn pending_availability_commitments( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::pending_availability_commitments::Param0, >, types::pending_availability_commitments::PendingAvailabilityCommitments, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParaInclusion", "PendingAvailabilityCommitments", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 196u8, 210u8, 210u8, 16u8, 246u8, 105u8, 121u8, 178u8, 5u8, 48u8, 40u8, 183u8, 63u8, 147u8, 48u8, 74u8, 20u8, 83u8, 76u8, 84u8, 41u8, 30u8, @@ -33467,16 +31474,20 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Enter the paras inherent. This will process bitfields and backed candidates."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::enter`]."] pub struct Enter { pub data: enter::Data, } @@ -33486,27 +31497,26 @@ pub mod api { runtime_types::sp_runtime::generic::header::Header<::core::primitive::u32>, >; } - impl ::subxt::blocks::StaticExtrinsic for Enter { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Enter { const PALLET: &'static str = "ParaInherent"; const CALL: &'static str = "enter"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Enter the paras inherent. This will process bitfields and backed candidates."] + #[doc = "See [`Pallet::enter`]."] pub fn enter( &self, data: types::enter::Data, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "ParaInherent", "enter", types::Enter { data }, [ - 43u8, 145u8, 39u8, 208u8, 205u8, 120u8, 57u8, 196u8, 192u8, 128u8, - 144u8, 83u8, 121u8, 232u8, 191u8, 82u8, 200u8, 129u8, 139u8, 27u8, - 126u8, 177u8, 240u8, 158u8, 232u8, 180u8, 26u8, 180u8, 116u8, 148u8, - 168u8, 41u8, + 145u8, 120u8, 158u8, 39u8, 139u8, 223u8, 236u8, 209u8, 253u8, 108u8, + 188u8, 21u8, 23u8, 61u8, 25u8, 171u8, 30u8, 203u8, 161u8, 117u8, 90u8, + 55u8, 50u8, 107u8, 26u8, 52u8, 26u8, 158u8, 56u8, 218u8, 186u8, 142u8, ], ) } @@ -33524,7 +31534,7 @@ pub mod api { use super::runtime_types; pub type OnChainVotes = runtime_types::polkadot_primitives::v6::ScrapedOnChainVotes< - ::subxt::utils::H256, + ::subxt::ext::subxt_core::utils::H256, >; } } @@ -33538,14 +31548,14 @@ pub mod api { #[doc = " If this is `None` at the end of the block, we panic and render the block invalid."] pub fn included( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::included::Included, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParaInherent", "Included", (), @@ -33559,22 +31569,22 @@ pub mod api { #[doc = " Scraped on chain data for extracting resolved disputes as well as backing votes."] pub fn on_chain_votes( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::on_chain_votes::OnChainVotes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParaInherent", "OnChainVotes", (), [ - 65u8, 20u8, 36u8, 37u8, 239u8, 150u8, 32u8, 78u8, 226u8, 88u8, 80u8, - 240u8, 12u8, 156u8, 176u8, 75u8, 231u8, 204u8, 37u8, 24u8, 204u8, - 228u8, 75u8, 235u8, 43u8, 163u8, 174u8, 152u8, 166u8, 17u8, 232u8, - 33u8, + 200u8, 210u8, 42u8, 153u8, 85u8, 71u8, 171u8, 108u8, 148u8, 212u8, + 108u8, 61u8, 178u8, 77u8, 129u8, 90u8, 120u8, 218u8, 228u8, 152u8, + 120u8, 226u8, 29u8, 82u8, 239u8, 146u8, 41u8, 164u8, 193u8, 207u8, + 246u8, 115u8, ], ) } @@ -33590,13 +31600,15 @@ pub mod api { use super::runtime_types; pub mod validator_groups { use super::runtime_types; - pub type ValidatorGroups = ::std::vec::Vec< - ::std::vec::Vec, + pub type ValidatorGroups = ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::polkadot_primitives::v6::ValidatorIndex, + >, >; } pub mod availability_cores { use super::runtime_types; - pub type AvailabilityCores = ::std::vec::Vec< + pub type AvailabilityCores = ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_runtime_parachains::scheduler::pallet::CoreOccupied< ::core::primitive::u32, >, @@ -33608,7 +31620,7 @@ pub mod api { } pub mod claim_queue { use super::runtime_types; - pub type ClaimQueue = :: subxt :: utils :: KeyedVec < runtime_types :: polkadot_primitives :: v6 :: CoreIndex , :: std :: vec :: Vec < runtime_types :: polkadot_runtime_parachains :: scheduler :: pallet :: ParasEntry < :: core :: primitive :: u32 > > > ; + pub type ClaimQueue = :: subxt :: ext :: subxt_core :: utils :: KeyedVec < runtime_types :: polkadot_primitives :: v6 :: CoreIndex , :: subxt :: ext :: subxt_core :: alloc :: vec :: Vec < :: core :: option :: Option < runtime_types :: polkadot_runtime_parachains :: scheduler :: pallet :: ParasEntry < :: core :: primitive :: u32 > > > > ; } } pub struct StorageApi; @@ -33622,14 +31634,14 @@ pub mod api { #[doc = " upper bound at 10k."] pub fn validator_groups( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::validator_groups::ValidatorGroups, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParaScheduler", "ValidatorGroups", (), @@ -33640,30 +31652,31 @@ pub mod api { ], ) } - #[doc = " One entry for each availability core. The i'th parachain belongs to the i'th core, with the"] - #[doc = " remaining cores all being on demand parachain multiplexers."] + #[doc = " One entry for each availability core. Entries are `None` if the core is not currently"] + #[doc = " occupied. Can be temporarily `Some` if scheduled but not occupied."] + #[doc = " The i'th parachain belongs to the i'th core, with the remaining cores all being"] + #[doc = " parathread-multiplexers."] #[doc = ""] #[doc = " Bounded by the maximum of either of these two values:"] #[doc = " * The number of parachains and parathread multiplexers"] #[doc = " * The number of validators divided by `configuration.max_validators_per_core`."] pub fn availability_cores( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::availability_cores::AvailabilityCores, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParaScheduler", "AvailabilityCores", (), [ - 250u8, 177u8, 44u8, 237u8, 5u8, 116u8, 135u8, 99u8, 136u8, 209u8, - 181u8, 145u8, 254u8, 57u8, 42u8, 92u8, 236u8, 67u8, 128u8, 171u8, - 200u8, 88u8, 40u8, 31u8, 163u8, 128u8, 15u8, 96u8, 181u8, 224u8, 162u8, - 188u8, + 134u8, 59u8, 206u8, 4u8, 69u8, 72u8, 73u8, 25u8, 139u8, 152u8, 202u8, + 43u8, 224u8, 77u8, 64u8, 57u8, 218u8, 245u8, 254u8, 222u8, 227u8, 95u8, + 119u8, 134u8, 218u8, 47u8, 154u8, 233u8, 229u8, 172u8, 100u8, 86u8, ], ) } @@ -33676,14 +31689,14 @@ pub mod api { #[doc = " block following the session change, block number of which we save in this storage value."] pub fn session_start_block( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::session_start_block::SessionStartBlock, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParaScheduler", "SessionStartBlock", (), @@ -33695,26 +31708,27 @@ pub mod api { ) } #[doc = " One entry for each availability core. The `VecDeque` represents the assignments to be"] - #[doc = " scheduled on that core. The value contained here will not be valid after the end of"] - #[doc = " a block. Runtime APIs should be used to determine scheduled cores for the upcoming block."] + #[doc = " scheduled on that core. `None` is used to signal to not schedule the next para of the core"] + #[doc = " as there is one currently being scheduled. Not using `None` here would overwrite the"] + #[doc = " `CoreState` in the runtime API. The value contained here will not be valid after the end of"] + #[doc = " a block. Runtime APIs should be used to determine scheduled cores/ for the upcoming block."] pub fn claim_queue( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::claim_queue::ClaimQueue, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParaScheduler", "ClaimQueue", (), [ - 192u8, 65u8, 227u8, 114u8, 125u8, 169u8, 134u8, 70u8, 201u8, 99u8, - 246u8, 23u8, 0u8, 143u8, 163u8, 87u8, 216u8, 1u8, 184u8, 124u8, 23u8, - 180u8, 132u8, 143u8, 202u8, 81u8, 144u8, 242u8, 15u8, 141u8, 124u8, - 126u8, + 132u8, 78u8, 109u8, 225u8, 170u8, 78u8, 17u8, 53u8, 56u8, 218u8, 14u8, + 17u8, 230u8, 247u8, 11u8, 223u8, 18u8, 98u8, 92u8, 164u8, 223u8, 143u8, + 241u8, 64u8, 185u8, 108u8, 228u8, 137u8, 122u8, 100u8, 29u8, 239u8, ], ) } @@ -33735,16 +31749,20 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the storage for the parachain validation code immediately."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_set_current_code`]."] pub struct ForceSetCurrentCode { pub para: force_set_current_code::Para, pub new_code: force_set_current_code::NewCode, @@ -33755,21 +31773,25 @@ pub mod api { pub type NewCode = runtime_types::polkadot_parachain_primitives::primitives::ValidationCode; } - impl ::subxt::blocks::StaticExtrinsic for ForceSetCurrentCode { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceSetCurrentCode { const PALLET: &'static str = "Paras"; const CALL: &'static str = "force_set_current_code"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the storage for the current parachain head data immediately."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_set_current_head`]."] pub struct ForceSetCurrentHead { pub para: force_set_current_head::Para, pub new_head: force_set_current_head::NewHead, @@ -33780,21 +31802,25 @@ pub mod api { pub type NewHead = runtime_types::polkadot_parachain_primitives::primitives::HeadData; } - impl ::subxt::blocks::StaticExtrinsic for ForceSetCurrentHead { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceSetCurrentHead { const PALLET: &'static str = "Paras"; const CALL: &'static str = "force_set_current_head"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Schedule an upgrade as if it was scheduled in the given relay parent block."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_schedule_code_upgrade`]."] pub struct ForceScheduleCodeUpgrade { pub para: force_schedule_code_upgrade::Para, pub new_code: force_schedule_code_upgrade::NewCode, @@ -33807,21 +31833,25 @@ pub mod api { runtime_types::polkadot_parachain_primitives::primitives::ValidationCode; pub type RelayParentNumber = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for ForceScheduleCodeUpgrade { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceScheduleCodeUpgrade { const PALLET: &'static str = "Paras"; const CALL: &'static str = "force_schedule_code_upgrade"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Note a new block head for para within the context of the current block."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_note_new_head`]."] pub struct ForceNoteNewHead { pub para: force_note_new_head::Para, pub new_head: force_note_new_head::NewHead, @@ -33832,23 +31862,25 @@ pub mod api { pub type NewHead = runtime_types::polkadot_parachain_primitives::primitives::HeadData; } - impl ::subxt::blocks::StaticExtrinsic for ForceNoteNewHead { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceNoteNewHead { const PALLET: &'static str = "Paras"; const CALL: &'static str = "force_note_new_head"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Put a parachain directly into the next session's action queue."] - #[doc = "We can't queue it any sooner than this without going into the"] - #[doc = "initializer..."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_queue_action`]."] pub struct ForceQueueAction { pub para: force_queue_action::Para, } @@ -33856,34 +31888,25 @@ pub mod api { use super::runtime_types; pub type Para = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::blocks::StaticExtrinsic for ForceQueueAction { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceQueueAction { const PALLET: &'static str = "Paras"; const CALL: &'static str = "force_queue_action"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Adds the validation code to the storage."] - #[doc = ""] - #[doc = "The code will not be added if it is already present. Additionally, if PVF pre-checking"] - #[doc = "is running for that code, it will be instantly accepted."] - #[doc = ""] - #[doc = "Otherwise, the code will be added into the storage. Note that the code will be added"] - #[doc = "into storage with reference count 0. This is to account the fact that there are no users"] - #[doc = "for this code yet. The caller will have to make sure that this code eventually gets"] - #[doc = "used by some parachain or removed from the storage to avoid storage leaks. For the"] - #[doc = "latter prefer to use the `poke_unused_validation_code` dispatchable to raw storage"] - #[doc = "manipulation."] - #[doc = ""] - #[doc = "This function is mainly meant to be used for upgrading parachains that do not follow"] - #[doc = "the go-ahead signal while the PVF pre-checking feature is enabled."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::add_trusted_validation_code`]."] pub struct AddTrustedValidationCode { pub validation_code: add_trusted_validation_code::ValidationCode, } @@ -33892,25 +31915,25 @@ pub mod api { pub type ValidationCode = runtime_types::polkadot_parachain_primitives::primitives::ValidationCode; } - impl ::subxt::blocks::StaticExtrinsic for AddTrustedValidationCode { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for AddTrustedValidationCode { const PALLET: &'static str = "Paras"; const CALL: &'static str = "add_trusted_validation_code"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Remove the validation code from the storage iff the reference count is 0."] - #[doc = ""] - #[doc = "This is better than removing the storage directly, because it will not remove the code"] - #[doc = "that was suddenly got used by some parachain while this dispatchable was pending"] - #[doc = "dispatching."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::poke_unused_validation_code`]."] pub struct PokeUnusedValidationCode { pub validation_code_hash: poke_unused_validation_code::ValidationCodeHash, } @@ -33918,22 +31941,25 @@ pub mod api { use super::runtime_types; pub type ValidationCodeHash = runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash ; } - impl ::subxt::blocks::StaticExtrinsic for PokeUnusedValidationCode { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for PokeUnusedValidationCode { const PALLET: &'static str = "Paras"; const CALL: &'static str = "poke_unused_validation_code"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Includes a statement for a PVF pre-checking vote. Potentially, finalizes the vote and"] - #[doc = "enacts the results if that was the last vote before achieving the supermajority."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::include_pvf_check_statement`]."] pub struct IncludePvfCheckStatement { pub stmt: include_pvf_check_statement::Stmt, pub signature: include_pvf_check_statement::Signature, @@ -33944,21 +31970,25 @@ pub mod api { pub type Signature = runtime_types::polkadot_primitives::v6::validator_app::Signature; } - impl ::subxt::blocks::StaticExtrinsic for IncludePvfCheckStatement { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for IncludePvfCheckStatement { const PALLET: &'static str = "Paras"; const CALL: &'static str = "include_pvf_check_statement"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the storage for the current parachain head data immediately."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_set_most_recent_context`]."] pub struct ForceSetMostRecentContext { pub para: force_set_most_recent_context::Para, pub context: force_set_most_recent_context::Context, @@ -33968,20 +31998,21 @@ pub mod api { pub type Para = runtime_types::polkadot_parachain_primitives::primitives::Id; pub type Context = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for ForceSetMostRecentContext { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceSetMostRecentContext { const PALLET: &'static str = "Paras"; const CALL: &'static str = "force_set_most_recent_context"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Set the storage for the parachain validation code immediately."] + #[doc = "See [`Pallet::force_set_current_code`]."] pub fn force_set_current_code( &self, para: types::force_set_current_code::Para, new_code: types::force_set_current_code::NewCode, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Paras", "force_set_current_code", types::ForceSetCurrentCode { para, new_code }, @@ -33993,13 +32024,14 @@ pub mod api { ], ) } - #[doc = "Set the storage for the current parachain head data immediately."] + #[doc = "See [`Pallet::force_set_current_head`]."] pub fn force_set_current_head( &self, para: types::force_set_current_head::Para, new_head: types::force_set_current_head::NewHead, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Paras", "force_set_current_head", types::ForceSetCurrentHead { para, new_head }, @@ -34011,14 +32043,15 @@ pub mod api { ], ) } - #[doc = "Schedule an upgrade as if it was scheduled in the given relay parent block."] + #[doc = "See [`Pallet::force_schedule_code_upgrade`]."] pub fn force_schedule_code_upgrade( &self, para: types::force_schedule_code_upgrade::Para, new_code: types::force_schedule_code_upgrade::NewCode, relay_parent_number: types::force_schedule_code_upgrade::RelayParentNumber, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Paras", "force_schedule_code_upgrade", types::ForceScheduleCodeUpgrade { @@ -34034,13 +32067,14 @@ pub mod api { ], ) } - #[doc = "Note a new block head for para within the context of the current block."] + #[doc = "See [`Pallet::force_note_new_head`]."] pub fn force_note_new_head( &self, para: types::force_note_new_head::Para, new_head: types::force_note_new_head::NewHead, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Paras", "force_note_new_head", types::ForceNoteNewHead { para, new_head }, @@ -34051,14 +32085,13 @@ pub mod api { ], ) } - #[doc = "Put a parachain directly into the next session's action queue."] - #[doc = "We can't queue it any sooner than this without going into the"] - #[doc = "initializer..."] + #[doc = "See [`Pallet::force_queue_action`]."] pub fn force_queue_action( &self, para: types::force_queue_action::Para, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Paras", "force_queue_action", types::ForceQueueAction { para }, @@ -34070,25 +32103,13 @@ pub mod api { ], ) } - #[doc = "Adds the validation code to the storage."] - #[doc = ""] - #[doc = "The code will not be added if it is already present. Additionally, if PVF pre-checking"] - #[doc = "is running for that code, it will be instantly accepted."] - #[doc = ""] - #[doc = "Otherwise, the code will be added into the storage. Note that the code will be added"] - #[doc = "into storage with reference count 0. This is to account the fact that there are no users"] - #[doc = "for this code yet. The caller will have to make sure that this code eventually gets"] - #[doc = "used by some parachain or removed from the storage to avoid storage leaks. For the"] - #[doc = "latter prefer to use the `poke_unused_validation_code` dispatchable to raw storage"] - #[doc = "manipulation."] - #[doc = ""] - #[doc = "This function is mainly meant to be used for upgrading parachains that do not follow"] - #[doc = "the go-ahead signal while the PVF pre-checking feature is enabled."] + #[doc = "See [`Pallet::add_trusted_validation_code`]."] pub fn add_trusted_validation_code( &self, validation_code: types::add_trusted_validation_code::ValidationCode, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Paras", "add_trusted_validation_code", types::AddTrustedValidationCode { validation_code }, @@ -34100,16 +32121,13 @@ pub mod api { ], ) } - #[doc = "Remove the validation code from the storage iff the reference count is 0."] - #[doc = ""] - #[doc = "This is better than removing the storage directly, because it will not remove the code"] - #[doc = "that was suddenly got used by some parachain while this dispatchable was pending"] - #[doc = "dispatching."] + #[doc = "See [`Pallet::poke_unused_validation_code`]."] pub fn poke_unused_validation_code( &self, validation_code_hash: types::poke_unused_validation_code::ValidationCodeHash, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Paras", "poke_unused_validation_code", types::PokeUnusedValidationCode { @@ -34122,14 +32140,14 @@ pub mod api { ], ) } - #[doc = "Includes a statement for a PVF pre-checking vote. Potentially, finalizes the vote and"] - #[doc = "enacts the results if that was the last vote before achieving the supermajority."] + #[doc = "See [`Pallet::include_pvf_check_statement`]."] pub fn include_pvf_check_statement( &self, stmt: types::include_pvf_check_statement::Stmt, signature: types::include_pvf_check_statement::Signature, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Paras", "include_pvf_check_statement", types::IncludePvfCheckStatement { stmt, signature }, @@ -34141,13 +32159,14 @@ pub mod api { ], ) } - #[doc = "Set the storage for the current parachain head data immediately."] + #[doc = "See [`Pallet::force_set_most_recent_context`]."] pub fn force_set_most_recent_context( &self, para: types::force_set_most_recent_context::Para, context: types::force_set_most_recent_context::Context, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Paras", "force_set_most_recent_context", types::ForceSetMostRecentContext { para, context }, @@ -34165,95 +32184,95 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Current code has been updated for a Para. `para_id`"] pub struct CurrentCodeUpdated(pub current_code_updated::Field0); pub mod current_code_updated { use super::runtime_types; pub type Field0 = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::events::StaticEvent for CurrentCodeUpdated { + impl ::subxt::ext::subxt_core::events::StaticEvent for CurrentCodeUpdated { const PALLET: &'static str = "Paras"; const EVENT: &'static str = "CurrentCodeUpdated"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Current head has been updated for a Para. `para_id`"] pub struct CurrentHeadUpdated(pub current_head_updated::Field0); pub mod current_head_updated { use super::runtime_types; pub type Field0 = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::events::StaticEvent for CurrentHeadUpdated { + impl ::subxt::ext::subxt_core::events::StaticEvent for CurrentHeadUpdated { const PALLET: &'static str = "Paras"; const EVENT: &'static str = "CurrentHeadUpdated"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A code upgrade has been scheduled for a Para. `para_id`"] pub struct CodeUpgradeScheduled(pub code_upgrade_scheduled::Field0); pub mod code_upgrade_scheduled { use super::runtime_types; pub type Field0 = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::events::StaticEvent for CodeUpgradeScheduled { + impl ::subxt::ext::subxt_core::events::StaticEvent for CodeUpgradeScheduled { const PALLET: &'static str = "Paras"; const EVENT: &'static str = "CodeUpgradeScheduled"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A new head has been noted for a Para. `para_id`"] pub struct NewHeadNoted(pub new_head_noted::Field0); pub mod new_head_noted { use super::runtime_types; pub type Field0 = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::events::StaticEvent for NewHeadNoted { + impl ::subxt::ext::subxt_core::events::StaticEvent for NewHeadNoted { const PALLET: &'static str = "Paras"; const EVENT: &'static str = "NewHeadNoted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A para has been queued to execute pending actions. `para_id`"] pub struct ActionQueued(pub action_queued::Field0, pub action_queued::Field1); pub mod action_queued { @@ -34261,20 +32280,20 @@ pub mod api { pub type Field0 = runtime_types::polkadot_parachain_primitives::primitives::Id; pub type Field1 = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for ActionQueued { + impl ::subxt::ext::subxt_core::events::StaticEvent for ActionQueued { const PALLET: &'static str = "Paras"; const EVENT: &'static str = "ActionQueued"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The given para either initiated or subscribed to a PVF check for the given validation"] #[doc = "code. `code_hash` `para_id`"] pub struct PvfCheckStarted( @@ -34287,20 +32306,20 @@ pub mod api { runtime_types::polkadot_parachain_primitives::primitives::ValidationCodeHash; pub type Field1 = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::events::StaticEvent for PvfCheckStarted { + impl ::subxt::ext::subxt_core::events::StaticEvent for PvfCheckStarted { const PALLET: &'static str = "Paras"; const EVENT: &'static str = "PvfCheckStarted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The given validation code was accepted by the PVF pre-checking vote."] #[doc = "`code_hash` `para_id`"] pub struct PvfCheckAccepted( @@ -34313,20 +32332,20 @@ pub mod api { runtime_types::polkadot_parachain_primitives::primitives::ValidationCodeHash; pub type Field1 = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::events::StaticEvent for PvfCheckAccepted { + impl ::subxt::ext::subxt_core::events::StaticEvent for PvfCheckAccepted { const PALLET: &'static str = "Paras"; const EVENT: &'static str = "PvfCheckAccepted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The given validation code was rejected by the PVF pre-checking vote."] #[doc = "`code_hash` `para_id`"] pub struct PvfCheckRejected( @@ -34339,7 +32358,7 @@ pub mod api { runtime_types::polkadot_parachain_primitives::primitives::ValidationCodeHash; pub type Field1 = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::events::StaticEvent for PvfCheckRejected { + impl ::subxt::ext::subxt_core::events::StaticEvent for PvfCheckRejected { const PALLET: &'static str = "Paras"; const EVENT: &'static str = "PvfCheckRejected"; } @@ -34358,11 +32377,11 @@ pub mod api { } pub mod pvf_active_vote_list { use super::runtime_types; - pub type PvfActiveVoteList = :: std :: vec :: Vec < runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash > ; + pub type PvfActiveVoteList = :: subxt :: ext :: subxt_core :: alloc :: vec :: Vec < runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash > ; } pub mod parachains { use super::runtime_types; - pub type Parachains = ::std::vec::Vec< + pub type Parachains = ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_parachain_primitives::primitives::Id, >; } @@ -34404,7 +32423,7 @@ pub mod api { } pub mod past_code_pruning { use super::runtime_types; - pub type PastCodePruning = ::std::vec::Vec<( + pub type PastCodePruning = ::subxt::ext::subxt_core::alloc::vec::Vec<( runtime_types::polkadot_parachain_primitives::primitives::Id, ::core::primitive::u32, )>; @@ -34433,21 +32452,21 @@ pub mod api { } pub mod upgrade_cooldowns { use super::runtime_types; - pub type UpgradeCooldowns = ::std::vec::Vec<( + pub type UpgradeCooldowns = ::subxt::ext::subxt_core::alloc::vec::Vec<( runtime_types::polkadot_parachain_primitives::primitives::Id, ::core::primitive::u32, )>; } pub mod upcoming_upgrades { use super::runtime_types; - pub type UpcomingUpgrades = ::std::vec::Vec<( + pub type UpcomingUpgrades = ::subxt::ext::subxt_core::alloc::vec::Vec<( runtime_types::polkadot_parachain_primitives::primitives::Id, ::core::primitive::u32, )>; } pub mod actions_queue { use super::runtime_types; - pub type ActionsQueue = ::std::vec::Vec< + pub type ActionsQueue = ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_parachain_primitives::primitives::Id, >; pub type Param0 = ::core::primitive::u32; @@ -34478,14 +32497,14 @@ pub mod api { #[doc = " - There are no PVF pre-checking votes that exists in list but not in the set and vice versa."] pub fn pvf_active_vote_map_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::pvf_active_vote_map::PvfActiveVoteMap, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "PvfActiveVoteMap", (), @@ -34502,18 +32521,22 @@ pub mod api { #[doc = " - There are no PVF pre-checking votes that exists in list but not in the set and vice versa."] pub fn pvf_active_vote_map( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::pvf_active_vote_map::Param0, + >, types::pvf_active_vote_map::PvfActiveVoteMap, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "PvfActiveVoteMap", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 72u8, 55u8, 139u8, 104u8, 161u8, 63u8, 114u8, 153u8, 16u8, 221u8, 60u8, 88u8, 52u8, 207u8, 123u8, 193u8, 11u8, 30u8, 19u8, 39u8, 231u8, 39u8, @@ -34524,14 +32547,14 @@ pub mod api { #[doc = " The list of all currently active PVF votes. Auxiliary to `PvfActiveVoteMap`."] pub fn pvf_active_vote_list( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::pvf_active_vote_list::PvfActiveVoteList, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "PvfActiveVoteList", (), @@ -34548,14 +32571,14 @@ pub mod api { #[doc = " Consider using the [`ParachainsCache`] type of modifying."] pub fn parachains( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::parachains::Parachains, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "Parachains", (), @@ -34570,14 +32593,14 @@ pub mod api { #[doc = " The current lifecycle of a all known Para IDs."] pub fn para_lifecycles_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::para_lifecycles::ParaLifecycles, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "ParaLifecycles", (), @@ -34592,18 +32615,22 @@ pub mod api { #[doc = " The current lifecycle of a all known Para IDs."] pub fn para_lifecycles( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::para_lifecycles::Param0, + >, types::para_lifecycles::ParaLifecycles, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "ParaLifecycles", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 2u8, 203u8, 32u8, 194u8, 76u8, 227u8, 250u8, 9u8, 168u8, 201u8, 171u8, 180u8, 18u8, 169u8, 206u8, 183u8, 48u8, 189u8, 204u8, 192u8, 237u8, @@ -34615,14 +32642,14 @@ pub mod api { #[doc = " The head-data of every registered para."] pub fn heads_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::heads::Heads, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "Heads", (), @@ -34636,18 +32663,22 @@ pub mod api { #[doc = " The head-data of every registered para."] pub fn heads( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::heads::Param0, + >, types::heads::Heads, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "Heads", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 222u8, 116u8, 180u8, 190u8, 172u8, 192u8, 174u8, 132u8, 225u8, 180u8, 119u8, 90u8, 5u8, 39u8, 92u8, 230u8, 116u8, 202u8, 92u8, 99u8, 135u8, @@ -34658,14 +32689,14 @@ pub mod api { #[doc = " The context (relay-chain block number) of the most recent parachain head."] pub fn most_recent_context_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::most_recent_context::MostRecentContext, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "MostRecentContext", (), @@ -34679,18 +32710,22 @@ pub mod api { #[doc = " The context (relay-chain block number) of the most recent parachain head."] pub fn most_recent_context( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::most_recent_context::Param0, + >, types::most_recent_context::MostRecentContext, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "MostRecentContext", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 196u8, 150u8, 125u8, 121u8, 196u8, 182u8, 2u8, 5u8, 244u8, 170u8, 75u8, 57u8, 162u8, 8u8, 104u8, 94u8, 114u8, 32u8, 192u8, 236u8, 120u8, 91u8, @@ -34703,14 +32738,14 @@ pub mod api { #[doc = " Corresponding code can be retrieved with [`CodeByHash`]."] pub fn current_code_hash_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::current_code_hash::CurrentCodeHash, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "CurrentCodeHash", (), @@ -34727,18 +32762,22 @@ pub mod api { #[doc = " Corresponding code can be retrieved with [`CodeByHash`]."] pub fn current_code_hash( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::current_code_hash::Param0, + >, types::current_code_hash::CurrentCodeHash, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "CurrentCodeHash", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 251u8, 100u8, 30u8, 46u8, 191u8, 60u8, 45u8, 221u8, 218u8, 20u8, 154u8, 233u8, 211u8, 198u8, 151u8, 195u8, 99u8, 210u8, 126u8, 165u8, 240u8, @@ -34753,14 +32792,14 @@ pub mod api { #[doc = " Corresponding code can be retrieved with [`CodeByHash`]."] pub fn past_code_hash_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::past_code_hash::PastCodeHash, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "PastCodeHash", (), @@ -34777,18 +32816,22 @@ pub mod api { #[doc = " Corresponding code can be retrieved with [`CodeByHash`]."] pub fn past_code_hash_iter1( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::past_code_hash::Param0, + >, types::past_code_hash::PastCodeHash, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "PastCodeHash", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 73u8, 209u8, 188u8, 36u8, 127u8, 42u8, 171u8, 136u8, 29u8, 126u8, 220u8, 209u8, 230u8, 22u8, 12u8, 63u8, 8u8, 102u8, 45u8, 158u8, 178u8, @@ -34802,24 +32845,32 @@ pub mod api { #[doc = " Corresponding code can be retrieved with [`CodeByHash`]."] pub fn past_code_hash( &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< ( - ::subxt::storage::address::StaticStorageKey, - ::subxt::storage::address::StaticStorageKey, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::past_code_hash::Param0, + >, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::past_code_hash::Param1, + >, ), types::past_code_hash::PastCodeHash, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "PastCodeHash", ( - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), ), [ 73u8, 209u8, 188u8, 36u8, 127u8, 42u8, 171u8, 136u8, 29u8, 126u8, @@ -34833,14 +32884,14 @@ pub mod api { #[doc = " to keep it available for approval checkers."] pub fn past_code_meta_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::past_code_meta::PastCodeMeta, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "PastCodeMeta", (), @@ -34856,18 +32907,22 @@ pub mod api { #[doc = " to keep it available for approval checkers."] pub fn past_code_meta( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::past_code_meta::Param0, + >, types::past_code_meta::PastCodeMeta, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "PastCodeMeta", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 233u8, 47u8, 137u8, 174u8, 98u8, 64u8, 11u8, 75u8, 93u8, 222u8, 78u8, 58u8, 66u8, 245u8, 151u8, 39u8, 144u8, 36u8, 84u8, 176u8, 239u8, 183u8, @@ -34883,14 +32938,14 @@ pub mod api { #[doc = " Multiple entries for a single para are permitted. Ordered ascending by block number."] pub fn past_code_pruning( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::past_code_pruning::PastCodePruning, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "PastCodePruning", (), @@ -34906,14 +32961,14 @@ pub mod api { #[doc = " in the context of a relay chain block with a number >= `expected_at`."] pub fn future_code_upgrades_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::future_code_upgrades::FutureCodeUpgrades, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "FutureCodeUpgrades", (), @@ -34929,20 +32984,22 @@ pub mod api { #[doc = " in the context of a relay chain block with a number >= `expected_at`."] pub fn future_code_upgrades( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::future_code_upgrades::Param0, >, types::future_code_upgrades::FutureCodeUpgrades, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "FutureCodeUpgrades", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 163u8, 168u8, 23u8, 138u8, 198u8, 70u8, 135u8, 221u8, 167u8, 187u8, 15u8, 144u8, 228u8, 8u8, 138u8, 125u8, 101u8, 154u8, 11u8, 74u8, 173u8, @@ -34955,14 +33012,14 @@ pub mod api { #[doc = " Corresponding code can be retrieved with [`CodeByHash`]."] pub fn future_code_hash_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::future_code_hash::FutureCodeHash, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "FutureCodeHash", (), @@ -34978,18 +33035,22 @@ pub mod api { #[doc = " Corresponding code can be retrieved with [`CodeByHash`]."] pub fn future_code_hash( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::future_code_hash::Param0, + >, types::future_code_hash::FutureCodeHash, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "FutureCodeHash", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 62u8, 238u8, 183u8, 12u8, 197u8, 119u8, 163u8, 239u8, 192u8, 228u8, 110u8, 58u8, 128u8, 223u8, 32u8, 137u8, 109u8, 127u8, 41u8, 83u8, 91u8, @@ -35009,14 +33070,14 @@ pub mod api { #[doc = " the format will require migration of parachains."] pub fn upgrade_go_ahead_signal_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::upgrade_go_ahead_signal::UpgradeGoAheadSignal, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "UpgradeGoAheadSignal", (), @@ -35040,20 +33101,22 @@ pub mod api { #[doc = " the format will require migration of parachains."] pub fn upgrade_go_ahead_signal( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::upgrade_go_ahead_signal::Param0, >, types::upgrade_go_ahead_signal::UpgradeGoAheadSignal, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "UpgradeGoAheadSignal", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 41u8, 80u8, 120u8, 6u8, 98u8, 85u8, 36u8, 37u8, 170u8, 189u8, 56u8, 127u8, 155u8, 180u8, 112u8, 195u8, 135u8, 214u8, 235u8, 87u8, 197u8, @@ -35073,14 +33136,14 @@ pub mod api { #[doc = " the format will require migration of parachains."] pub fn upgrade_restriction_signal_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::upgrade_restriction_signal::UpgradeRestrictionSignal, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "UpgradeRestrictionSignal", (), @@ -35103,20 +33166,22 @@ pub mod api { #[doc = " the format will require migration of parachains."] pub fn upgrade_restriction_signal( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::upgrade_restriction_signal::Param0, >, types::upgrade_restriction_signal::UpgradeRestrictionSignal, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "UpgradeRestrictionSignal", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 158u8, 105u8, 62u8, 252u8, 149u8, 145u8, 34u8, 92u8, 119u8, 204u8, 46u8, 96u8, 117u8, 183u8, 134u8, 20u8, 172u8, 243u8, 145u8, 113u8, @@ -35130,14 +33195,14 @@ pub mod api { #[doc = " Ordered ascending by block number."] pub fn upgrade_cooldowns( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::upgrade_cooldowns::UpgradeCooldowns, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "UpgradeCooldowns", (), @@ -35155,14 +33220,14 @@ pub mod api { #[doc = " Ordered ascending by block number."] pub fn upcoming_upgrades( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::upcoming_upgrades::UpcomingUpgrades, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "UpcomingUpgrades", (), @@ -35176,14 +33241,14 @@ pub mod api { #[doc = " The actions to perform during the start of a specific session index."] pub fn actions_queue_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::actions_queue::ActionsQueue, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "ActionsQueue", (), @@ -35197,18 +33262,22 @@ pub mod api { #[doc = " The actions to perform during the start of a specific session index."] pub fn actions_queue( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::actions_queue::Param0, + >, types::actions_queue::ActionsQueue, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "ActionsQueue", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 13u8, 25u8, 129u8, 203u8, 95u8, 206u8, 254u8, 240u8, 170u8, 209u8, 55u8, 117u8, 70u8, 220u8, 139u8, 102u8, 9u8, 229u8, 139u8, 120u8, 67u8, @@ -35222,14 +33291,14 @@ pub mod api { #[doc = " to empty. Instead, the code will be saved into the storage right away via `CodeByHash`."] pub fn upcoming_paras_genesis_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::upcoming_paras_genesis::UpcomingParasGenesis, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "UpcomingParasGenesis", (), @@ -35247,20 +33316,22 @@ pub mod api { #[doc = " to empty. Instead, the code will be saved into the storage right away via `CodeByHash`."] pub fn upcoming_paras_genesis( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::upcoming_paras_genesis::Param0, >, types::upcoming_paras_genesis::UpcomingParasGenesis, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "UpcomingParasGenesis", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 215u8, 121u8, 106u8, 13u8, 102u8, 47u8, 129u8, 221u8, 153u8, 91u8, 23u8, 94u8, 11u8, 39u8, 19u8, 180u8, 136u8, 136u8, 254u8, 152u8, 250u8, @@ -35272,14 +33343,14 @@ pub mod api { #[doc = " The number of reference on the validation code in [`CodeByHash`] storage."] pub fn code_by_hash_refs_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::code_by_hash_refs::CodeByHashRefs, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "CodeByHashRefs", (), @@ -35294,18 +33365,22 @@ pub mod api { #[doc = " The number of reference on the validation code in [`CodeByHash`] storage."] pub fn code_by_hash_refs( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::code_by_hash_refs::Param0, + >, types::code_by_hash_refs::CodeByHashRefs, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "CodeByHashRefs", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 47u8, 50u8, 103u8, 161u8, 130u8, 252u8, 157u8, 35u8, 174u8, 37u8, 102u8, 60u8, 195u8, 30u8, 164u8, 203u8, 67u8, 129u8, 107u8, 181u8, @@ -35320,14 +33395,14 @@ pub mod api { #[doc = " [`PastCodeHash`]."] pub fn code_by_hash_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::code_by_hash::CodeByHash, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "CodeByHash", (), @@ -35344,18 +33419,22 @@ pub mod api { #[doc = " [`PastCodeHash`]."] pub fn code_by_hash( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::code_by_hash::Param0, + >, types::code_by_hash::CodeByHash, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Paras", "CodeByHash", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 155u8, 102u8, 73u8, 180u8, 127u8, 211u8, 181u8, 44u8, 56u8, 235u8, 49u8, 4u8, 25u8, 213u8, 116u8, 200u8, 232u8, 203u8, 190u8, 90u8, 93u8, @@ -35371,8 +33450,9 @@ pub mod api { impl ConstantsApi { pub fn unsigned_priority( &self, - ) -> ::subxt::constants::Address<::core::primitive::u64> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u64> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Paras", "UnsignedPriority", [ @@ -35398,18 +33478,20 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Issue a signal to the consensus engine to forcibly act as though all parachain"] - #[doc = "blocks in all relay chain blocks up to and including the given number in the current"] - #[doc = "chain are valid and should be finalized."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_approve`]."] pub struct ForceApprove { pub up_to: force_approve::UpTo, } @@ -35417,21 +33499,19 @@ pub mod api { use super::runtime_types; pub type UpTo = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for ForceApprove { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceApprove { const PALLET: &'static str = "Initializer"; const CALL: &'static str = "force_approve"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Issue a signal to the consensus engine to forcibly act as though all parachain"] - #[doc = "blocks in all relay chain blocks up to and including the given number in the current"] - #[doc = "chain are valid and should be finalized."] + #[doc = "See [`Pallet::force_approve`]."] pub fn force_approve( &self, up_to: types::force_approve::UpTo, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Initializer", "force_approve", types::ForceApprove { up_to }, @@ -35455,7 +33535,7 @@ pub mod api { } pub mod buffered_session_changes { use super::runtime_types; - pub type BufferedSessionChanges = :: std :: vec :: Vec < runtime_types :: polkadot_runtime_parachains :: initializer :: BufferedSessionChange > ; + pub type BufferedSessionChanges = :: subxt :: ext :: subxt_core :: alloc :: vec :: Vec < runtime_types :: polkadot_runtime_parachains :: initializer :: BufferedSessionChange > ; } } pub struct StorageApi; @@ -35470,14 +33550,14 @@ pub mod api { #[doc = " for the semantics of this variable."] pub fn has_initialized( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::has_initialized::HasInitialized, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Initializer", "HasInitialized", (), @@ -35497,14 +33577,14 @@ pub mod api { #[doc = " upgrade boundaries or if governance intervenes."] pub fn buffered_session_changes( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::buffered_session_changes::BufferedSessionChanges, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Initializer", "BufferedSessionChanges", (), @@ -35527,7 +33607,7 @@ pub mod api { use super::runtime_types; pub mod downward_message_queues { use super::runtime_types; - pub type DownwardMessageQueues = ::std::vec::Vec< + pub type DownwardMessageQueues = ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_core_primitives::InboundDownwardMessage< ::core::primitive::u32, >, @@ -35536,7 +33616,7 @@ pub mod api { } pub mod downward_message_queue_heads { use super::runtime_types; - pub type DownwardMessageQueueHeads = ::subxt::utils::H256; + pub type DownwardMessageQueueHeads = ::subxt::ext::subxt_core::utils::H256; pub type Param0 = runtime_types::polkadot_parachain_primitives::primitives::Id; } pub mod delivery_fee_factor { @@ -35551,14 +33631,14 @@ pub mod api { #[doc = " The downward messages addressed for a certain para."] pub fn downward_message_queues_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::downward_message_queues::DownwardMessageQueues, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Dmp", "DownwardMessageQueues", (), @@ -35573,20 +33653,22 @@ pub mod api { #[doc = " The downward messages addressed for a certain para."] pub fn downward_message_queues( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::downward_message_queues::Param0, >, types::downward_message_queues::DownwardMessageQueues, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Dmp", "DownwardMessageQueues", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 38u8, 183u8, 133u8, 200u8, 199u8, 135u8, 68u8, 232u8, 189u8, 168u8, 3u8, 219u8, 201u8, 180u8, 156u8, 79u8, 134u8, 164u8, 94u8, 114u8, @@ -35604,14 +33686,14 @@ pub mod api { #[doc = " - `H(M)`: is the hash of the message being appended."] pub fn downward_message_queue_heads_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::downward_message_queue_heads::DownwardMessageQueueHeads, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Dmp", "DownwardMessageQueueHeads", (), @@ -35631,20 +33713,22 @@ pub mod api { #[doc = " - `H(M)`: is the hash of the message being appended."] pub fn downward_message_queue_heads( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::downward_message_queue_heads::Param0, >, types::downward_message_queue_heads::DownwardMessageQueueHeads, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Dmp", "DownwardMessageQueueHeads", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 135u8, 165u8, 240u8, 0u8, 25u8, 110u8, 9u8, 108u8, 251u8, 225u8, 109u8, 184u8, 90u8, 132u8, 9u8, 151u8, 12u8, 118u8, 153u8, 212u8, 140u8, @@ -35655,14 +33739,14 @@ pub mod api { #[doc = " The factor to multiply the base delivery fee by."] pub fn delivery_fee_factor_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::delivery_fee_factor::DeliveryFeeFactor, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Dmp", "DeliveryFeeFactor", (), @@ -35676,18 +33760,22 @@ pub mod api { #[doc = " The factor to multiply the base delivery fee by."] pub fn delivery_fee_factor( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::delivery_fee_factor::Param0, + >, types::delivery_fee_factor::DeliveryFeeFactor, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Dmp", "DeliveryFeeFactor", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 43u8, 5u8, 63u8, 235u8, 115u8, 155u8, 130u8, 27u8, 75u8, 216u8, 177u8, 135u8, 203u8, 147u8, 167u8, 95u8, 208u8, 188u8, 25u8, 14u8, 84u8, 63u8, @@ -35712,25 +33800,20 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Initiate opening a channel from a parachain to a given recipient with given channel"] - #[doc = "parameters."] - #[doc = ""] - #[doc = "- `proposed_max_capacity` - specifies how many messages can be in the channel at once."] - #[doc = "- `proposed_max_message_size` - specifies the maximum size of the messages."] - #[doc = ""] - #[doc = "These numbers are a subject to the relay-chain configuration limits."] - #[doc = ""] - #[doc = "The channel can be opened only after the recipient confirms it and only on a session"] - #[doc = "change."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::hrmp_init_open_channel`]."] pub struct HrmpInitOpenChannel { pub recipient: hrmp_init_open_channel::Recipient, pub proposed_max_capacity: hrmp_init_open_channel::ProposedMaxCapacity, @@ -35743,23 +33826,25 @@ pub mod api { pub type ProposedMaxCapacity = ::core::primitive::u32; pub type ProposedMaxMessageSize = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for HrmpInitOpenChannel { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for HrmpInitOpenChannel { const PALLET: &'static str = "Hrmp"; const CALL: &'static str = "hrmp_init_open_channel"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Accept a pending open channel request from the given sender."] - #[doc = ""] - #[doc = "The channel will be opened only on the next session boundary."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::hrmp_accept_open_channel`]."] pub struct HrmpAcceptOpenChannel { pub sender: hrmp_accept_open_channel::Sender, } @@ -35767,24 +33852,25 @@ pub mod api { use super::runtime_types; pub type Sender = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::blocks::StaticExtrinsic for HrmpAcceptOpenChannel { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for HrmpAcceptOpenChannel { const PALLET: &'static str = "Hrmp"; const CALL: &'static str = "hrmp_accept_open_channel"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Initiate unilateral closing of a channel. The origin must be either the sender or the"] - #[doc = "recipient in the channel being closed."] - #[doc = ""] - #[doc = "The closure can only happen on a session change."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::hrmp_close_channel`]."] pub struct HrmpCloseChannel { pub channel_id: hrmp_close_channel::ChannelId, } @@ -35793,27 +33879,25 @@ pub mod api { pub type ChannelId = runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId; } - impl ::subxt::blocks::StaticExtrinsic for HrmpCloseChannel { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for HrmpCloseChannel { const PALLET: &'static str = "Hrmp"; const CALL: &'static str = "hrmp_close_channel"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "This extrinsic triggers the cleanup of all the HRMP storage items that a para may have."] - #[doc = "Normally this happens once per session, but this allows you to trigger the cleanup"] - #[doc = "immediately for a specific parachain."] - #[doc = ""] - #[doc = "Number of inbound and outbound channels for `para` must be provided as witness data."] - #[doc = ""] - #[doc = "Origin must be the `ChannelManager`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_clean_hrmp`]."] pub struct ForceCleanHrmp { pub para: force_clean_hrmp::Para, pub num_inbound: force_clean_hrmp::NumInbound, @@ -35825,28 +33909,25 @@ pub mod api { pub type NumInbound = ::core::primitive::u32; pub type NumOutbound = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for ForceCleanHrmp { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceCleanHrmp { const PALLET: &'static str = "Hrmp"; const CALL: &'static str = "force_clean_hrmp"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Force process HRMP open channel requests."] - #[doc = ""] - #[doc = "If there are pending HRMP open channel requests, you can use this function to process"] - #[doc = "all of those requests immediately."] - #[doc = ""] - #[doc = "Total number of opening channels must be provided as witness data."] - #[doc = ""] - #[doc = "Origin must be the `ChannelManager`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_process_hrmp_open`]."] pub struct ForceProcessHrmpOpen { pub channels: force_process_hrmp_open::Channels, } @@ -35854,28 +33935,25 @@ pub mod api { use super::runtime_types; pub type Channels = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for ForceProcessHrmpOpen { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceProcessHrmpOpen { const PALLET: &'static str = "Hrmp"; const CALL: &'static str = "force_process_hrmp_open"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Force process HRMP close channel requests."] - #[doc = ""] - #[doc = "If there are pending HRMP close channel requests, you can use this function to process"] - #[doc = "all of those requests immediately."] - #[doc = ""] - #[doc = "Total number of closing channels must be provided as witness data."] - #[doc = ""] - #[doc = "Origin must be the `ChannelManager`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_process_hrmp_close`]."] pub struct ForceProcessHrmpClose { pub channels: force_process_hrmp_close::Channels, } @@ -35883,28 +33961,25 @@ pub mod api { use super::runtime_types; pub type Channels = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for ForceProcessHrmpClose { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceProcessHrmpClose { const PALLET: &'static str = "Hrmp"; const CALL: &'static str = "force_process_hrmp_close"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "This cancels a pending open channel request. It can be canceled by either of the sender"] - #[doc = "or the recipient for that request. The origin must be either of those."] - #[doc = ""] - #[doc = "The cancellation happens immediately. It is not possible to cancel the request if it is"] - #[doc = "already accepted."] - #[doc = ""] - #[doc = "Total number of open requests (i.e. `HrmpOpenChannelRequestsList`) must be provided as"] - #[doc = "witness data."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::hrmp_cancel_open_request`]."] pub struct HrmpCancelOpenRequest { pub channel_id: hrmp_cancel_open_request::ChannelId, pub open_requests: hrmp_cancel_open_request::OpenRequests, @@ -35915,28 +33990,25 @@ pub mod api { runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId; pub type OpenRequests = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for HrmpCancelOpenRequest { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for HrmpCancelOpenRequest { const PALLET: &'static str = "Hrmp"; const CALL: &'static str = "hrmp_cancel_open_request"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Open a channel from a `sender` to a `recipient` `ParaId`. Although opened by governance,"] - #[doc = "the `max_capacity` and `max_message_size` are still subject to the Relay Chain's"] - #[doc = "configured limits."] - #[doc = ""] - #[doc = "Expected use is when one (and only one) of the `ParaId`s involved in the channel is"] - #[doc = "governed by the system, e.g. a system parachain."] - #[doc = ""] - #[doc = "Origin must be the `ChannelManager`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_open_hrmp_channel`]."] pub struct ForceOpenHrmpChannel { pub sender: force_open_hrmp_channel::Sender, pub recipient: force_open_hrmp_channel::Recipient, @@ -35951,32 +34023,25 @@ pub mod api { pub type MaxCapacity = ::core::primitive::u32; pub type MaxMessageSize = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for ForceOpenHrmpChannel { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceOpenHrmpChannel { const PALLET: &'static str = "Hrmp"; const CALL: &'static str = "force_open_hrmp_channel"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Establish an HRMP channel between two system chains. If the channel does not already"] - #[doc = "exist, the transaction fees will be refunded to the caller. The system does not take"] - #[doc = "deposits for channels between system chains, and automatically sets the message number"] - #[doc = "and size limits to the maximum allowed by the network's configuration."] - #[doc = ""] - #[doc = "Arguments:"] - #[doc = ""] - #[doc = "- `sender`: A system chain, `ParaId`."] - #[doc = "- `recipient`: A system chain, `ParaId`."] - #[doc = ""] - #[doc = "Any signed origin can call this function, but _both_ inputs MUST be system chains. If"] - #[doc = "the channel does not exist yet, there is no fee."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::establish_system_channel`]."] pub struct EstablishSystemChannel { pub sender: establish_system_channel::Sender, pub recipient: establish_system_channel::Recipient, @@ -35987,29 +34052,25 @@ pub mod api { pub type Recipient = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::blocks::StaticExtrinsic for EstablishSystemChannel { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for EstablishSystemChannel { const PALLET: &'static str = "Hrmp"; const CALL: &'static str = "establish_system_channel"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Update the deposits held for an HRMP channel to the latest `Configuration`. Channels"] - #[doc = "with system chains do not require a deposit."] - #[doc = ""] - #[doc = "Arguments:"] - #[doc = ""] - #[doc = "- `sender`: A chain, `ParaId`."] - #[doc = "- `recipient`: A chain, `ParaId`."] - #[doc = ""] - #[doc = "Any signed origin can call this function."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::poke_channel_deposits`]."] pub struct PokeChannelDeposits { pub sender: poke_channel_deposits::Sender, pub recipient: poke_channel_deposits::Recipient, @@ -36020,30 +34081,22 @@ pub mod api { pub type Recipient = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::blocks::StaticExtrinsic for PokeChannelDeposits { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for PokeChannelDeposits { const PALLET: &'static str = "Hrmp"; const CALL: &'static str = "poke_channel_deposits"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Initiate opening a channel from a parachain to a given recipient with given channel"] - #[doc = "parameters."] - #[doc = ""] - #[doc = "- `proposed_max_capacity` - specifies how many messages can be in the channel at once."] - #[doc = "- `proposed_max_message_size` - specifies the maximum size of the messages."] - #[doc = ""] - #[doc = "These numbers are a subject to the relay-chain configuration limits."] - #[doc = ""] - #[doc = "The channel can be opened only after the recipient confirms it and only on a session"] - #[doc = "change."] + #[doc = "See [`Pallet::hrmp_init_open_channel`]."] pub fn hrmp_init_open_channel( &self, recipient: types::hrmp_init_open_channel::Recipient, proposed_max_capacity: types::hrmp_init_open_channel::ProposedMaxCapacity, proposed_max_message_size : types :: hrmp_init_open_channel :: ProposedMaxMessageSize, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Hrmp", "hrmp_init_open_channel", types::HrmpInitOpenChannel { @@ -36059,14 +34112,13 @@ pub mod api { ], ) } - #[doc = "Accept a pending open channel request from the given sender."] - #[doc = ""] - #[doc = "The channel will be opened only on the next session boundary."] + #[doc = "See [`Pallet::hrmp_accept_open_channel`]."] pub fn hrmp_accept_open_channel( &self, sender: types::hrmp_accept_open_channel::Sender, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Hrmp", "hrmp_accept_open_channel", types::HrmpAcceptOpenChannel { sender }, @@ -36077,15 +34129,13 @@ pub mod api { ], ) } - #[doc = "Initiate unilateral closing of a channel. The origin must be either the sender or the"] - #[doc = "recipient in the channel being closed."] - #[doc = ""] - #[doc = "The closure can only happen on a session change."] + #[doc = "See [`Pallet::hrmp_close_channel`]."] pub fn hrmp_close_channel( &self, channel_id: types::hrmp_close_channel::ChannelId, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Hrmp", "hrmp_close_channel", types::HrmpCloseChannel { channel_id }, @@ -36097,20 +34147,14 @@ pub mod api { ], ) } - #[doc = "This extrinsic triggers the cleanup of all the HRMP storage items that a para may have."] - #[doc = "Normally this happens once per session, but this allows you to trigger the cleanup"] - #[doc = "immediately for a specific parachain."] - #[doc = ""] - #[doc = "Number of inbound and outbound channels for `para` must be provided as witness data."] - #[doc = ""] - #[doc = "Origin must be the `ChannelManager`."] + #[doc = "See [`Pallet::force_clean_hrmp`]."] pub fn force_clean_hrmp( &self, para: types::force_clean_hrmp::Para, num_inbound: types::force_clean_hrmp::NumInbound, num_outbound: types::force_clean_hrmp::NumOutbound, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Hrmp", "force_clean_hrmp", types::ForceCleanHrmp { @@ -36125,19 +34169,13 @@ pub mod api { ], ) } - #[doc = "Force process HRMP open channel requests."] - #[doc = ""] - #[doc = "If there are pending HRMP open channel requests, you can use this function to process"] - #[doc = "all of those requests immediately."] - #[doc = ""] - #[doc = "Total number of opening channels must be provided as witness data."] - #[doc = ""] - #[doc = "Origin must be the `ChannelManager`."] + #[doc = "See [`Pallet::force_process_hrmp_open`]."] pub fn force_process_hrmp_open( &self, channels: types::force_process_hrmp_open::Channels, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Hrmp", "force_process_hrmp_open", types::ForceProcessHrmpOpen { channels }, @@ -36149,19 +34187,13 @@ pub mod api { ], ) } - #[doc = "Force process HRMP close channel requests."] - #[doc = ""] - #[doc = "If there are pending HRMP close channel requests, you can use this function to process"] - #[doc = "all of those requests immediately."] - #[doc = ""] - #[doc = "Total number of closing channels must be provided as witness data."] - #[doc = ""] - #[doc = "Origin must be the `ChannelManager`."] + #[doc = "See [`Pallet::force_process_hrmp_close`]."] pub fn force_process_hrmp_close( &self, channels: types::force_process_hrmp_close::Channels, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Hrmp", "force_process_hrmp_close", types::ForceProcessHrmpClose { channels }, @@ -36173,20 +34205,14 @@ pub mod api { ], ) } - #[doc = "This cancels a pending open channel request. It can be canceled by either of the sender"] - #[doc = "or the recipient for that request. The origin must be either of those."] - #[doc = ""] - #[doc = "The cancellation happens immediately. It is not possible to cancel the request if it is"] - #[doc = "already accepted."] - #[doc = ""] - #[doc = "Total number of open requests (i.e. `HrmpOpenChannelRequestsList`) must be provided as"] - #[doc = "witness data."] + #[doc = "See [`Pallet::hrmp_cancel_open_request`]."] pub fn hrmp_cancel_open_request( &self, channel_id: types::hrmp_cancel_open_request::ChannelId, open_requests: types::hrmp_cancel_open_request::OpenRequests, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Hrmp", "hrmp_cancel_open_request", types::HrmpCancelOpenRequest { @@ -36200,22 +34226,16 @@ pub mod api { ], ) } - #[doc = "Open a channel from a `sender` to a `recipient` `ParaId`. Although opened by governance,"] - #[doc = "the `max_capacity` and `max_message_size` are still subject to the Relay Chain's"] - #[doc = "configured limits."] - #[doc = ""] - #[doc = "Expected use is when one (and only one) of the `ParaId`s involved in the channel is"] - #[doc = "governed by the system, e.g. a system parachain."] - #[doc = ""] - #[doc = "Origin must be the `ChannelManager`."] + #[doc = "See [`Pallet::force_open_hrmp_channel`]."] pub fn force_open_hrmp_channel( &self, sender: types::force_open_hrmp_channel::Sender, recipient: types::force_open_hrmp_channel::Recipient, max_capacity: types::force_open_hrmp_channel::MaxCapacity, max_message_size: types::force_open_hrmp_channel::MaxMessageSize, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Hrmp", "force_open_hrmp_channel", types::ForceOpenHrmpChannel { @@ -36231,24 +34251,14 @@ pub mod api { ], ) } - #[doc = "Establish an HRMP channel between two system chains. If the channel does not already"] - #[doc = "exist, the transaction fees will be refunded to the caller. The system does not take"] - #[doc = "deposits for channels between system chains, and automatically sets the message number"] - #[doc = "and size limits to the maximum allowed by the network's configuration."] - #[doc = ""] - #[doc = "Arguments:"] - #[doc = ""] - #[doc = "- `sender`: A system chain, `ParaId`."] - #[doc = "- `recipient`: A system chain, `ParaId`."] - #[doc = ""] - #[doc = "Any signed origin can call this function, but _both_ inputs MUST be system chains. If"] - #[doc = "the channel does not exist yet, there is no fee."] + #[doc = "See [`Pallet::establish_system_channel`]."] pub fn establish_system_channel( &self, sender: types::establish_system_channel::Sender, recipient: types::establish_system_channel::Recipient, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Hrmp", "establish_system_channel", types::EstablishSystemChannel { sender, recipient }, @@ -36259,21 +34269,14 @@ pub mod api { ], ) } - #[doc = "Update the deposits held for an HRMP channel to the latest `Configuration`. Channels"] - #[doc = "with system chains do not require a deposit."] - #[doc = ""] - #[doc = "Arguments:"] - #[doc = ""] - #[doc = "- `sender`: A chain, `ParaId`."] - #[doc = "- `recipient`: A chain, `ParaId`."] - #[doc = ""] - #[doc = "Any signed origin can call this function."] + #[doc = "See [`Pallet::poke_channel_deposits`]."] pub fn poke_channel_deposits( &self, sender: types::poke_channel_deposits::Sender, recipient: types::poke_channel_deposits::Recipient, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Hrmp", "poke_channel_deposits", types::PokeChannelDeposits { sender, recipient }, @@ -36291,15 +34294,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Open HRMP channel requested."] pub struct OpenChannelRequested { pub sender: open_channel_requested::Sender, @@ -36314,20 +34317,20 @@ pub mod api { pub type ProposedMaxCapacity = ::core::primitive::u32; pub type ProposedMaxMessageSize = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for OpenChannelRequested { + impl ::subxt::ext::subxt_core::events::StaticEvent for OpenChannelRequested { const PALLET: &'static str = "Hrmp"; const EVENT: &'static str = "OpenChannelRequested"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "An HRMP channel request sent by the receiver was canceled by either party."] pub struct OpenChannelCanceled { pub by_parachain: open_channel_canceled::ByParachain, @@ -36339,20 +34342,20 @@ pub mod api { pub type ChannelId = runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId; } - impl ::subxt::events::StaticEvent for OpenChannelCanceled { + impl ::subxt::ext::subxt_core::events::StaticEvent for OpenChannelCanceled { const PALLET: &'static str = "Hrmp"; const EVENT: &'static str = "OpenChannelCanceled"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Open HRMP channel accepted."] pub struct OpenChannelAccepted { pub sender: open_channel_accepted::Sender, @@ -36363,20 +34366,20 @@ pub mod api { pub type Sender = runtime_types::polkadot_parachain_primitives::primitives::Id; pub type Recipient = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::events::StaticEvent for OpenChannelAccepted { + impl ::subxt::ext::subxt_core::events::StaticEvent for OpenChannelAccepted { const PALLET: &'static str = "Hrmp"; const EVENT: &'static str = "OpenChannelAccepted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "HRMP channel closed."] pub struct ChannelClosed { pub by_parachain: channel_closed::ByParachain, @@ -36388,20 +34391,20 @@ pub mod api { pub type ChannelId = runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId; } - impl ::subxt::events::StaticEvent for ChannelClosed { + impl ::subxt::ext::subxt_core::events::StaticEvent for ChannelClosed { const PALLET: &'static str = "Hrmp"; const EVENT: &'static str = "ChannelClosed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "An HRMP channel was opened via Root origin."] pub struct HrmpChannelForceOpened { pub sender: hrmp_channel_force_opened::Sender, @@ -36416,20 +34419,20 @@ pub mod api { pub type ProposedMaxCapacity = ::core::primitive::u32; pub type ProposedMaxMessageSize = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for HrmpChannelForceOpened { + impl ::subxt::ext::subxt_core::events::StaticEvent for HrmpChannelForceOpened { const PALLET: &'static str = "Hrmp"; const EVENT: &'static str = "HrmpChannelForceOpened"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "An HRMP channel was opened between two system chains."] pub struct HrmpSystemChannelOpened { pub sender: hrmp_system_channel_opened::Sender, @@ -36444,20 +34447,20 @@ pub mod api { pub type ProposedMaxCapacity = ::core::primitive::u32; pub type ProposedMaxMessageSize = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for HrmpSystemChannelOpened { + impl ::subxt::ext::subxt_core::events::StaticEvent for HrmpSystemChannelOpened { const PALLET: &'static str = "Hrmp"; const EVENT: &'static str = "HrmpSystemChannelOpened"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "An HRMP channel's deposits were updated."] pub struct OpenChannelDepositsUpdated { pub sender: open_channel_deposits_updated::Sender, @@ -36468,7 +34471,7 @@ pub mod api { pub type Sender = runtime_types::polkadot_parachain_primitives::primitives::Id; pub type Recipient = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::events::StaticEvent for OpenChannelDepositsUpdated { + impl ::subxt::ext::subxt_core::events::StaticEvent for OpenChannelDepositsUpdated { const PALLET: &'static str = "Hrmp"; const EVENT: &'static str = "OpenChannelDepositsUpdated"; } @@ -36486,9 +34489,10 @@ pub mod api { } pub mod hrmp_open_channel_requests_list { use super::runtime_types; - pub type HrmpOpenChannelRequestsList = ::std::vec::Vec< - runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, - >; + pub type HrmpOpenChannelRequestsList = + ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, + >; } pub mod hrmp_open_channel_request_count { use super::runtime_types; @@ -36508,9 +34512,10 @@ pub mod api { } pub mod hrmp_close_channel_requests_list { use super::runtime_types; - pub type HrmpCloseChannelRequestsList = ::std::vec::Vec< - runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, - >; + pub type HrmpCloseChannelRequestsList = + ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, + >; } pub mod hrmp_watermarks { use super::runtime_types; @@ -36526,21 +34531,21 @@ pub mod api { } pub mod hrmp_ingress_channels_index { use super::runtime_types; - pub type HrmpIngressChannelsIndex = ::std::vec::Vec< + pub type HrmpIngressChannelsIndex = ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_parachain_primitives::primitives::Id, >; pub type Param0 = runtime_types::polkadot_parachain_primitives::primitives::Id; } pub mod hrmp_egress_channels_index { use super::runtime_types; - pub type HrmpEgressChannelsIndex = ::std::vec::Vec< + pub type HrmpEgressChannelsIndex = ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_parachain_primitives::primitives::Id, >; pub type Param0 = runtime_types::polkadot_parachain_primitives::primitives::Id; } pub mod hrmp_channel_contents { use super::runtime_types; - pub type HrmpChannelContents = ::std::vec::Vec< + pub type HrmpChannelContents = ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_core_primitives::InboundHrmpMessage< ::core::primitive::u32, >, @@ -36550,9 +34555,9 @@ pub mod api { } pub mod hrmp_channel_digests { use super::runtime_types; - pub type HrmpChannelDigests = ::std::vec::Vec<( + pub type HrmpChannelDigests = ::subxt::ext::subxt_core::alloc::vec::Vec<( ::core::primitive::u32, - ::std::vec::Vec< + ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_parachain_primitives::primitives::Id, >, )>; @@ -36569,14 +34574,14 @@ pub mod api { #[doc = " - There are no channels that exists in list but not in the set and vice versa."] pub fn hrmp_open_channel_requests_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::hrmp_open_channel_requests::HrmpOpenChannelRequests, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Hrmp", "HrmpOpenChannelRequests", (), @@ -36596,20 +34601,22 @@ pub mod api { #[doc = " - There are no channels that exists in list but not in the set and vice versa."] pub fn hrmp_open_channel_requests( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::hrmp_open_channel_requests::Param0, >, types::hrmp_open_channel_requests::HrmpOpenChannelRequests, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Hrmp", "HrmpOpenChannelRequests", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 164u8, 97u8, 52u8, 242u8, 255u8, 67u8, 248u8, 170u8, 204u8, 92u8, 81u8, 144u8, 11u8, 63u8, 145u8, 167u8, 8u8, 174u8, 221u8, 147u8, 125u8, @@ -36620,14 +34627,14 @@ pub mod api { } pub fn hrmp_open_channel_requests_list( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::hrmp_open_channel_requests_list::HrmpOpenChannelRequestsList, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Hrmp", "HrmpOpenChannelRequestsList", (), @@ -36644,14 +34651,14 @@ pub mod api { #[doc = " `(X, _)` as the number of `HrmpOpenChannelRequestCount` for `X`."] pub fn hrmp_open_channel_request_count_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::hrmp_open_channel_request_count::HrmpOpenChannelRequestCount, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Hrmp", "HrmpOpenChannelRequestCount", (), @@ -36668,20 +34675,22 @@ pub mod api { #[doc = " `(X, _)` as the number of `HrmpOpenChannelRequestCount` for `X`."] pub fn hrmp_open_channel_request_count( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::hrmp_open_channel_request_count::Param0, >, types::hrmp_open_channel_request_count::HrmpOpenChannelRequestCount, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Hrmp", "HrmpOpenChannelRequestCount", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 136u8, 72u8, 56u8, 31u8, 229u8, 99u8, 241u8, 14u8, 159u8, 243u8, 179u8, 222u8, 252u8, 56u8, 63u8, 24u8, 204u8, 130u8, 47u8, 161u8, 133u8, @@ -36695,14 +34704,14 @@ pub mod api { #[doc = " `confirmed` set to true, as the number of `HrmpAcceptedChannelRequestCount` for `X`."] pub fn hrmp_accepted_channel_request_count_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::hrmp_accepted_channel_request_count::HrmpAcceptedChannelRequestCount, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Hrmp", "HrmpAcceptedChannelRequestCount", (), @@ -36719,20 +34728,22 @@ pub mod api { #[doc = " `confirmed` set to true, as the number of `HrmpAcceptedChannelRequestCount` for `X`."] pub fn hrmp_accepted_channel_request_count( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::hrmp_accepted_channel_request_count::Param0, >, types::hrmp_accepted_channel_request_count::HrmpAcceptedChannelRequestCount, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Hrmp", "HrmpAcceptedChannelRequestCount", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 29u8, 100u8, 52u8, 28u8, 180u8, 84u8, 132u8, 120u8, 117u8, 172u8, 169u8, 40u8, 237u8, 92u8, 89u8, 87u8, 230u8, 148u8, 140u8, 226u8, 60u8, @@ -36750,14 +34761,14 @@ pub mod api { #[doc = " - There are no channels that exists in list but not in the set and vice versa."] pub fn hrmp_close_channel_requests_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::hrmp_close_channel_requests::HrmpCloseChannelRequests, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Hrmp", "HrmpCloseChannelRequests", (), @@ -36778,20 +34789,22 @@ pub mod api { #[doc = " - There are no channels that exists in list but not in the set and vice versa."] pub fn hrmp_close_channel_requests( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::hrmp_close_channel_requests::Param0, >, types::hrmp_close_channel_requests::HrmpCloseChannelRequests, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Hrmp", "HrmpCloseChannelRequests", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 155u8, 13u8, 73u8, 166u8, 58u8, 67u8, 138u8, 58u8, 215u8, 172u8, 241u8, 168u8, 57u8, 4u8, 230u8, 248u8, 31u8, 183u8, 227u8, 224u8, 139u8, @@ -36802,14 +34815,14 @@ pub mod api { } pub fn hrmp_close_channel_requests_list( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::hrmp_close_channel_requests_list::HrmpCloseChannelRequestsList, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Hrmp", "HrmpCloseChannelRequestsList", (), @@ -36826,14 +34839,14 @@ pub mod api { #[doc = " session."] pub fn hrmp_watermarks_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::hrmp_watermarks::HrmpWatermarks, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Hrmp", "HrmpWatermarks", (), @@ -36850,18 +34863,22 @@ pub mod api { #[doc = " session."] pub fn hrmp_watermarks( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::hrmp_watermarks::Param0, + >, types::hrmp_watermarks::HrmpWatermarks, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Hrmp", "HrmpWatermarks", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 245u8, 104u8, 137u8, 120u8, 131u8, 7u8, 178u8, 85u8, 96u8, 124u8, 241u8, 2u8, 86u8, 63u8, 116u8, 77u8, 217u8, 235u8, 162u8, 38u8, 104u8, @@ -36874,14 +34891,14 @@ pub mod api { #[doc = " - each participant in the channel should satisfy `Paras::is_valid_para(P)` within a session."] pub fn hrmp_channels_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::hrmp_channels::HrmpChannels, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Hrmp", "HrmpChannels", (), @@ -36898,18 +34915,22 @@ pub mod api { #[doc = " - each participant in the channel should satisfy `Paras::is_valid_para(P)` within a session."] pub fn hrmp_channels( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::hrmp_channels::Param0, + >, types::hrmp_channels::HrmpChannels, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Hrmp", "HrmpChannels", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 174u8, 90u8, 72u8, 93u8, 43u8, 140u8, 181u8, 170u8, 138u8, 171u8, 179u8, 156u8, 33u8, 87u8, 63u8, 1u8, 131u8, 59u8, 230u8, 14u8, 40u8, @@ -36933,14 +34954,14 @@ pub mod api { #[doc = " - the vectors are sorted."] pub fn hrmp_ingress_channels_index_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::hrmp_ingress_channels_index::HrmpIngressChannelsIndex, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Hrmp", "HrmpIngressChannelsIndex", (), @@ -36967,20 +34988,22 @@ pub mod api { #[doc = " - the vectors are sorted."] pub fn hrmp_ingress_channels_index( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::hrmp_ingress_channels_index::Param0, >, types::hrmp_ingress_channels_index::HrmpIngressChannelsIndex, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Hrmp", "HrmpIngressChannelsIndex", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 125u8, 229u8, 102u8, 230u8, 74u8, 109u8, 173u8, 67u8, 176u8, 169u8, 57u8, 24u8, 75u8, 129u8, 246u8, 198u8, 63u8, 49u8, 56u8, 102u8, 149u8, @@ -36991,14 +35014,14 @@ pub mod api { } pub fn hrmp_egress_channels_index_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::hrmp_egress_channels_index::HrmpEgressChannelsIndex, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Hrmp", "HrmpEgressChannelsIndex", (), @@ -37011,20 +35034,22 @@ pub mod api { } pub fn hrmp_egress_channels_index( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::hrmp_egress_channels_index::Param0, >, types::hrmp_egress_channels_index::HrmpEgressChannelsIndex, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Hrmp", "HrmpEgressChannelsIndex", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 237u8, 183u8, 188u8, 57u8, 20u8, 238u8, 166u8, 7u8, 94u8, 155u8, 22u8, 9u8, 173u8, 209u8, 210u8, 17u8, 160u8, 79u8, 243u8, 4u8, 245u8, 240u8, @@ -37036,14 +35061,14 @@ pub mod api { #[doc = " Invariant: cannot be non-empty if the corresponding channel in `HrmpChannels` is `None`."] pub fn hrmp_channel_contents_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::hrmp_channel_contents::HrmpChannelContents, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Hrmp", "HrmpChannelContents", (), @@ -37059,20 +35084,22 @@ pub mod api { #[doc = " Invariant: cannot be non-empty if the corresponding channel in `HrmpChannels` is `None`."] pub fn hrmp_channel_contents( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::hrmp_channel_contents::Param0, >, types::hrmp_channel_contents::HrmpChannelContents, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Hrmp", "HrmpChannelContents", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 55u8, 16u8, 135u8, 69u8, 54u8, 180u8, 246u8, 124u8, 104u8, 92u8, 45u8, 18u8, 223u8, 145u8, 43u8, 190u8, 121u8, 59u8, 35u8, 195u8, 234u8, @@ -37089,14 +35116,14 @@ pub mod api { #[doc = " same block number."] pub fn hrmp_channel_digests_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::hrmp_channel_digests::HrmpChannelDigests, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Hrmp", "HrmpChannelDigests", (), @@ -37115,20 +35142,22 @@ pub mod api { #[doc = " same block number."] pub fn hrmp_channel_digests( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::hrmp_channel_digests::Param0, >, types::hrmp_channel_digests::HrmpChannelDigests, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Hrmp", "HrmpChannelDigests", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 90u8, 90u8, 139u8, 78u8, 47u8, 2u8, 104u8, 211u8, 42u8, 246u8, 193u8, 210u8, 142u8, 223u8, 17u8, 136u8, 3u8, 182u8, 25u8, 56u8, 72u8, 72u8, @@ -37148,7 +35177,7 @@ pub mod api { use super::runtime_types; pub mod assignment_keys_unsafe { use super::runtime_types; - pub type AssignmentKeysUnsafe = ::std::vec::Vec< + pub type AssignmentKeysUnsafe = ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_primitives::v6::assignment_app::Public, >; } @@ -37163,7 +35192,9 @@ pub mod api { } pub mod account_keys { use super::runtime_types; - pub type AccountKeys = ::std::vec::Vec<::subxt::utils::AccountId32>; + pub type AccountKeys = ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >; pub type Param0 = ::core::primitive::u32; } pub mod session_executor_params { @@ -37180,14 +35211,14 @@ pub mod api { #[doc = " When in doubt, use `Sessions` API instead."] pub fn assignment_keys_unsafe( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::assignment_keys_unsafe::AssignmentKeysUnsafe, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParaSessionInfo", "AssignmentKeysUnsafe", (), @@ -37201,14 +35232,14 @@ pub mod api { #[doc = " The earliest session for which previous session info is stored."] pub fn earliest_stored_session( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::earliest_stored_session::EarliestStoredSession, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParaSessionInfo", "EarliestStoredSession", (), @@ -37224,14 +35255,14 @@ pub mod api { #[doc = " Does not have any entries before the session index in the first session change notification."] pub fn sessions_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::sessions::Sessions, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParaSessionInfo", "Sessions", (), @@ -37248,18 +35279,22 @@ pub mod api { #[doc = " Does not have any entries before the session index in the first session change notification."] pub fn sessions( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::sessions::Param0, + >, types::sessions::Sessions, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParaSessionInfo", "Sessions", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 254u8, 40u8, 169u8, 18u8, 252u8, 203u8, 49u8, 182u8, 123u8, 19u8, 241u8, 150u8, 227u8, 153u8, 108u8, 109u8, 66u8, 129u8, 157u8, 27u8, @@ -37271,14 +35306,14 @@ pub mod api { #[doc = " The validator account keys of the validators actively participating in parachain consensus."] pub fn account_keys_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::account_keys::AccountKeys, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParaSessionInfo", "AccountKeys", (), @@ -37293,18 +35328,22 @@ pub mod api { #[doc = " The validator account keys of the validators actively participating in parachain consensus."] pub fn account_keys( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::account_keys::Param0, + >, types::account_keys::AccountKeys, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParaSessionInfo", "AccountKeys", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 30u8, 98u8, 58u8, 140u8, 96u8, 231u8, 205u8, 111u8, 194u8, 100u8, 185u8, 242u8, 210u8, 143u8, 110u8, 144u8, 170u8, 187u8, 62u8, 196u8, @@ -37316,45 +35355,49 @@ pub mod api { #[doc = " Executor parameter set for a given session index"] pub fn session_executor_params_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::session_executor_params::SessionExecutorParams, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParaSessionInfo", "SessionExecutorParams", (), [ - 38u8, 80u8, 118u8, 112u8, 189u8, 55u8, 95u8, 184u8, 19u8, 8u8, 114u8, - 6u8, 173u8, 80u8, 254u8, 98u8, 107u8, 202u8, 215u8, 107u8, 149u8, - 157u8, 145u8, 8u8, 249u8, 255u8, 83u8, 199u8, 47u8, 179u8, 208u8, 83u8, + 102u8, 51u8, 28u8, 199u8, 238u8, 229u8, 99u8, 38u8, 116u8, 154u8, + 250u8, 136u8, 240u8, 122u8, 82u8, 13u8, 139u8, 160u8, 149u8, 218u8, + 162u8, 130u8, 109u8, 251u8, 10u8, 109u8, 200u8, 158u8, 32u8, 157u8, + 84u8, 234u8, ], ) } #[doc = " Executor parameter set for a given session index"] pub fn session_executor_params( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::session_executor_params::Param0, >, types::session_executor_params::SessionExecutorParams, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParaSessionInfo", "SessionExecutorParams", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ - 38u8, 80u8, 118u8, 112u8, 189u8, 55u8, 95u8, 184u8, 19u8, 8u8, 114u8, - 6u8, 173u8, 80u8, 254u8, 98u8, 107u8, 202u8, 215u8, 107u8, 149u8, - 157u8, 145u8, 8u8, 249u8, 255u8, 83u8, 199u8, 47u8, 179u8, 208u8, 83u8, + 102u8, 51u8, 28u8, 199u8, 238u8, 229u8, 99u8, 38u8, 116u8, 154u8, + 250u8, 136u8, 240u8, 122u8, 82u8, 13u8, 139u8, 160u8, 149u8, 218u8, + 162u8, 130u8, 109u8, 251u8, 10u8, 109u8, 200u8, 158u8, 32u8, 157u8, + 84u8, 234u8, ], ) } @@ -37375,25 +35418,33 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_unfreeze`]."] pub struct ForceUnfreeze; - impl ::subxt::blocks::StaticExtrinsic for ForceUnfreeze { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceUnfreeze { const PALLET: &'static str = "ParasDisputes"; const CALL: &'static str = "force_unfreeze"; } } pub struct TransactionApi; impl TransactionApi { - pub fn force_unfreeze(&self) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + #[doc = "See [`Pallet::force_unfreeze`]."] + pub fn force_unfreeze( + &self, + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "ParasDisputes", "force_unfreeze", types::ForceUnfreeze {}, @@ -37411,15 +35462,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A dispute has been initiated. \\[candidate hash, dispute location\\]"] pub struct DisputeInitiated( pub dispute_initiated::Field0, @@ -37431,20 +35482,20 @@ pub mod api { pub type Field1 = runtime_types::polkadot_runtime_parachains::disputes::DisputeLocation; } - impl ::subxt::events::StaticEvent for DisputeInitiated { + impl ::subxt::ext::subxt_core::events::StaticEvent for DisputeInitiated { const PALLET: &'static str = "ParasDisputes"; const EVENT: &'static str = "DisputeInitiated"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A dispute has concluded for or against a candidate."] #[doc = "`\\[para id, candidate hash, dispute result\\]`"] pub struct DisputeConcluded( @@ -37457,20 +35508,20 @@ pub mod api { pub type Field1 = runtime_types::polkadot_runtime_parachains::disputes::DisputeResult; } - impl ::subxt::events::StaticEvent for DisputeConcluded { + impl ::subxt::ext::subxt_core::events::StaticEvent for DisputeConcluded { const PALLET: &'static str = "ParasDisputes"; const EVENT: &'static str = "DisputeConcluded"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A dispute has concluded with supermajority against a candidate."] #[doc = "Block authors should no longer build on top of this head and should"] #[doc = "instead revert the block at the given height. This should be the"] @@ -37480,7 +35531,7 @@ pub mod api { use super::runtime_types; pub type Field0 = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for Revert { + impl ::subxt::ext::subxt_core::events::StaticEvent for Revert { const PALLET: &'static str = "ParasDisputes"; const EVENT: &'static str = "Revert"; } @@ -37503,8 +35554,9 @@ pub mod api { } pub mod backers_on_disputes { use super::runtime_types; - pub type BackersOnDisputes = - ::std::vec::Vec; + pub type BackersOnDisputes = ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::polkadot_primitives::v6::ValidatorIndex, + >; pub type Param0 = ::core::primitive::u32; pub type Param1 = runtime_types::polkadot_core_primitives::CandidateHash; } @@ -37525,14 +35577,14 @@ pub mod api { #[doc = " references sessions."] pub fn last_pruned_session( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::last_pruned_session::LastPrunedSession, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParasDisputes", "LastPrunedSession", (), @@ -37547,14 +35599,14 @@ pub mod api { #[doc = " All ongoing or concluded disputes for the last several sessions."] pub fn disputes_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::disputes::Disputes, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParasDisputes", "Disputes", (), @@ -37569,18 +35621,22 @@ pub mod api { #[doc = " All ongoing or concluded disputes for the last several sessions."] pub fn disputes_iter1( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::disputes::Param0, + >, types::disputes::Disputes, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParasDisputes", "Disputes", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 38u8, 237u8, 141u8, 222u8, 135u8, 82u8, 210u8, 166u8, 192u8, 122u8, 175u8, 96u8, 91u8, 1u8, 225u8, 182u8, 128u8, 4u8, 159u8, 56u8, 180u8, @@ -37592,24 +35648,32 @@ pub mod api { #[doc = " All ongoing or concluded disputes for the last several sessions."] pub fn disputes( &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< ( - ::subxt::storage::address::StaticStorageKey, - ::subxt::storage::address::StaticStorageKey, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::disputes::Param0, + >, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::disputes::Param1, + >, ), types::disputes::Disputes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParasDisputes", "Disputes", ( - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), ), [ 38u8, 237u8, 141u8, 222u8, 135u8, 82u8, 210u8, 166u8, 192u8, 122u8, @@ -37623,14 +35687,14 @@ pub mod api { #[doc = " This storage is used for slashing."] pub fn backers_on_disputes_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::backers_on_disputes::BackersOnDisputes, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParasDisputes", "BackersOnDisputes", (), @@ -37646,18 +35710,22 @@ pub mod api { #[doc = " This storage is used for slashing."] pub fn backers_on_disputes_iter1( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::backers_on_disputes::Param0, + >, types::backers_on_disputes::BackersOnDisputes, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParasDisputes", "BackersOnDisputes", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 136u8, 171u8, 20u8, 204u8, 135u8, 153u8, 144u8, 241u8, 46u8, 193u8, 65u8, 22u8, 116u8, 161u8, 144u8, 186u8, 31u8, 194u8, 202u8, 225u8, @@ -37670,28 +35738,32 @@ pub mod api { #[doc = " This storage is used for slashing."] pub fn backers_on_disputes( &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< ( - ::subxt::storage::address::StaticStorageKey< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::backers_on_disputes::Param0, >, - ::subxt::storage::address::StaticStorageKey< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::backers_on_disputes::Param1, >, ), types::backers_on_disputes::BackersOnDisputes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParasDisputes", "BackersOnDisputes", ( - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), ), [ 136u8, 171u8, 20u8, 204u8, 135u8, 153u8, 144u8, 241u8, 46u8, 193u8, @@ -37705,14 +35777,14 @@ pub mod api { #[doc = " should be reverted back to if the candidate is disputed and determined to be invalid."] pub fn included_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::included::Included, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParasDisputes", "Included", (), @@ -37728,18 +35800,22 @@ pub mod api { #[doc = " should be reverted back to if the candidate is disputed and determined to be invalid."] pub fn included_iter1( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::included::Param0, + >, types::included::Included, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParasDisputes", "Included", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 47u8, 105u8, 189u8, 233u8, 206u8, 153u8, 162u8, 217u8, 141u8, 118u8, 31u8, 85u8, 87u8, 53u8, 100u8, 187u8, 31u8, 245u8, 50u8, 171u8, 4u8, @@ -37752,24 +35828,32 @@ pub mod api { #[doc = " should be reverted back to if the candidate is disputed and determined to be invalid."] pub fn included( &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< ( - ::subxt::storage::address::StaticStorageKey, - ::subxt::storage::address::StaticStorageKey, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::included::Param0, + >, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::included::Param1, + >, ), types::included::Included, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParasDisputes", "Included", ( - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), ), [ 47u8, 105u8, 189u8, 233u8, 206u8, 153u8, 162u8, 217u8, 141u8, 118u8, @@ -37785,14 +35869,14 @@ pub mod api { #[doc = " It can only be set back to `None` by governance intervention."] pub fn frozen( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::frozen::Frozen, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParasDisputes", "Frozen", (), @@ -37822,18 +35906,24 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::report_dispute_lost_unsigned`]."] pub struct ReportDisputeLostUnsigned { - pub dispute_proof: - ::std::boxed::Box, + pub dispute_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< + report_dispute_lost_unsigned::DisputeProof, + >, pub key_owner_proof: report_dispute_lost_unsigned::KeyOwnerProof, } pub mod report_dispute_lost_unsigned { @@ -37842,23 +35932,27 @@ pub mod api { runtime_types::polkadot_primitives::v6::slashing::DisputeProof; pub type KeyOwnerProof = runtime_types::sp_session::MembershipProof; } - impl ::subxt::blocks::StaticExtrinsic for ReportDisputeLostUnsigned { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ReportDisputeLostUnsigned { const PALLET: &'static str = "ParasSlashing"; const CALL: &'static str = "report_dispute_lost_unsigned"; } } pub struct TransactionApi; impl TransactionApi { + #[doc = "See [`Pallet::report_dispute_lost_unsigned`]."] pub fn report_dispute_lost_unsigned( &self, dispute_proof: types::report_dispute_lost_unsigned::DisputeProof, key_owner_proof: types::report_dispute_lost_unsigned::KeyOwnerProof, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "ParasSlashing", "report_dispute_lost_unsigned", types::ReportDisputeLostUnsigned { - dispute_proof: ::std::boxed::Box::new(dispute_proof), + dispute_proof: ::subxt::ext::subxt_core::alloc::boxed::Box::new( + dispute_proof, + ), key_owner_proof, }, [ @@ -37893,14 +35987,14 @@ pub mod api { #[doc = " Validators pending dispute slashes."] pub fn unapplied_slashes_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::unapplied_slashes::UnappliedSlashes, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParasSlashing", "UnappliedSlashes", (), @@ -37915,18 +36009,22 @@ pub mod api { #[doc = " Validators pending dispute slashes."] pub fn unapplied_slashes_iter1( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::unapplied_slashes::Param0, + >, types::unapplied_slashes::UnappliedSlashes, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParasSlashing", "UnappliedSlashes", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 114u8, 171u8, 137u8, 142u8, 180u8, 125u8, 226u8, 240u8, 99u8, 181u8, 68u8, 221u8, 91u8, 124u8, 172u8, 93u8, 103u8, 12u8, 95u8, 43u8, 67u8, @@ -37938,28 +36036,32 @@ pub mod api { #[doc = " Validators pending dispute slashes."] pub fn unapplied_slashes( &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< ( - ::subxt::storage::address::StaticStorageKey< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::unapplied_slashes::Param0, >, - ::subxt::storage::address::StaticStorageKey< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::unapplied_slashes::Param1, >, ), types::unapplied_slashes::UnappliedSlashes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParasSlashing", "UnappliedSlashes", ( - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), ), [ 114u8, 171u8, 137u8, 142u8, 180u8, 125u8, 226u8, 240u8, 99u8, 181u8, @@ -37972,14 +36074,14 @@ pub mod api { #[doc = " `ValidatorSetCount` per session."] pub fn validator_set_counts_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::validator_set_counts::ValidatorSetCounts, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParasSlashing", "ValidatorSetCounts", (), @@ -37993,20 +36095,22 @@ pub mod api { #[doc = " `ValidatorSetCount` per session."] pub fn validator_set_counts( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::validator_set_counts::Param0, >, types::validator_set_counts::ValidatorSetCounts, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ParasSlashing", "ValidatorSetCounts", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 195u8, 220u8, 79u8, 140u8, 114u8, 80u8, 241u8, 103u8, 4u8, 7u8, 53u8, 100u8, 16u8, 78u8, 104u8, 171u8, 134u8, 110u8, 158u8, 191u8, 37u8, @@ -38031,16 +36135,20 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Remove a page which has no more messages remaining to be processed or is stale."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::reap_page`]."] pub struct ReapPage { pub message_origin: reap_page::MessageOrigin, pub page_index: reap_page::PageIndex, @@ -38050,33 +36158,25 @@ pub mod api { pub type MessageOrigin = runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin ; pub type PageIndex = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for ReapPage { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ReapPage { const PALLET: &'static str = "MessageQueue"; const CALL: &'static str = "reap_page"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Execute an overweight message."] - #[doc = ""] - #[doc = "Temporary processing errors will be propagated whereas permanent errors are treated"] - #[doc = "as success condition."] - #[doc = ""] - #[doc = "- `origin`: Must be `Signed`."] - #[doc = "- `message_origin`: The origin from which the message to be executed arrived."] - #[doc = "- `page`: The page in the queue in which the message to be executed is sitting."] - #[doc = "- `index`: The index into the queue of the message to be executed."] - #[doc = "- `weight_limit`: The maximum amount of weight allowed to be consumed in the execution"] - #[doc = " of the message."] - #[doc = ""] - #[doc = "Benchmark complexity considerations: O(index + weight_limit)."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::execute_overweight`]."] pub struct ExecuteOverweight { pub message_origin: execute_overweight::MessageOrigin, pub page: execute_overweight::Page, @@ -38090,20 +36190,20 @@ pub mod api { pub type Index = ::core::primitive::u32; pub type WeightLimit = runtime_types::sp_weights::weight_v2::Weight; } - impl ::subxt::blocks::StaticExtrinsic for ExecuteOverweight { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ExecuteOverweight { const PALLET: &'static str = "MessageQueue"; const CALL: &'static str = "execute_overweight"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Remove a page which has no more messages remaining to be processed or is stale."] + #[doc = "See [`Pallet::reap_page`]."] pub fn reap_page( &self, message_origin: types::reap_page::MessageOrigin, page_index: types::reap_page::PageIndex, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "MessageQueue", "reap_page", types::ReapPage { @@ -38117,27 +36217,16 @@ pub mod api { ], ) } - #[doc = "Execute an overweight message."] - #[doc = ""] - #[doc = "Temporary processing errors will be propagated whereas permanent errors are treated"] - #[doc = "as success condition."] - #[doc = ""] - #[doc = "- `origin`: Must be `Signed`."] - #[doc = "- `message_origin`: The origin from which the message to be executed arrived."] - #[doc = "- `page`: The page in the queue in which the message to be executed is sitting."] - #[doc = "- `index`: The index into the queue of the message to be executed."] - #[doc = "- `weight_limit`: The maximum amount of weight allowed to be consumed in the execution"] - #[doc = " of the message."] - #[doc = ""] - #[doc = "Benchmark complexity considerations: O(index + weight_limit)."] + #[doc = "See [`Pallet::execute_overweight`]."] pub fn execute_overweight( &self, message_origin: types::execute_overweight::MessageOrigin, page: types::execute_overweight::Page, index: types::execute_overweight::Index, weight_limit: types::execute_overweight::WeightLimit, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "MessageQueue", "execute_overweight", types::ExecuteOverweight { @@ -38161,15 +36250,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Message discarded due to an error in the `MessageProcessor` (usually a format error)."] pub struct ProcessingFailed { pub id: processing_failed::Id, @@ -38178,26 +36267,26 @@ pub mod api { } pub mod processing_failed { use super::runtime_types; - pub type Id = ::subxt::utils::H256; + pub type Id = [::core::primitive::u8; 32usize]; pub type Origin = runtime_types::polkadot_runtime_parachains::inclusion::AggregateMessageOrigin; pub type Error = runtime_types::frame_support::traits::messages::ProcessMessageError; } - impl ::subxt::events::StaticEvent for ProcessingFailed { + impl ::subxt::ext::subxt_core::events::StaticEvent for ProcessingFailed { const PALLET: &'static str = "MessageQueue"; const EVENT: &'static str = "ProcessingFailed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Message is processed."] pub struct Processed { pub id: processed::Id, @@ -38207,26 +36296,26 @@ pub mod api { } pub mod processed { use super::runtime_types; - pub type Id = ::subxt::utils::H256; + pub type Id = [::core::primitive::u8; 32usize]; pub type Origin = runtime_types::polkadot_runtime_parachains::inclusion::AggregateMessageOrigin; pub type WeightUsed = runtime_types::sp_weights::weight_v2::Weight; pub type Success = ::core::primitive::bool; } - impl ::subxt::events::StaticEvent for Processed { + impl ::subxt::ext::subxt_core::events::StaticEvent for Processed { const PALLET: &'static str = "MessageQueue"; const EVENT: &'static str = "Processed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Message placed in overweight queue."] pub struct OverweightEnqueued { pub id: overweight_enqueued::Id, @@ -38242,20 +36331,20 @@ pub mod api { pub type PageIndex = ::core::primitive::u32; pub type MessageIndex = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for OverweightEnqueued { + impl ::subxt::ext::subxt_core::events::StaticEvent for OverweightEnqueued { const PALLET: &'static str = "MessageQueue"; const EVENT: &'static str = "OverweightEnqueued"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "This page was reaped."] pub struct PageReaped { pub origin: page_reaped::Origin, @@ -38267,7 +36356,7 @@ pub mod api { runtime_types::polkadot_runtime_parachains::inclusion::AggregateMessageOrigin; pub type Index = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for PageReaped { + impl ::subxt::ext::subxt_core::events::StaticEvent for PageReaped { const PALLET: &'static str = "MessageQueue"; const EVENT: &'static str = "PageReaped"; } @@ -38298,14 +36387,14 @@ pub mod api { #[doc = " The index of the first and last (non-empty) pages."] pub fn book_state_for_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::book_state_for::BookStateFor, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "MessageQueue", "BookStateFor", (), @@ -38320,18 +36409,22 @@ pub mod api { #[doc = " The index of the first and last (non-empty) pages."] pub fn book_state_for( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::book_state_for::Param0, + >, types::book_state_for::BookStateFor, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "MessageQueue", "BookStateFor", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 32u8, 61u8, 161u8, 81u8, 134u8, 136u8, 252u8, 113u8, 204u8, 115u8, 206u8, 180u8, 33u8, 185u8, 137u8, 155u8, 178u8, 189u8, 234u8, 201u8, @@ -38343,14 +36436,14 @@ pub mod api { #[doc = " The origin at which we should begin servicing."] pub fn service_head( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::service_head::ServiceHead, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "MessageQueue", "ServiceHead", (), @@ -38365,14 +36458,14 @@ pub mod api { #[doc = " The map of page indices to pages."] pub fn pages_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::pages::Pages, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "MessageQueue", "Pages", (), @@ -38387,18 +36480,22 @@ pub mod api { #[doc = " The map of page indices to pages."] pub fn pages_iter1( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::pages::Param0, + >, types::pages::Pages, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "MessageQueue", "Pages", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 56u8, 181u8, 157u8, 16u8, 157u8, 123u8, 106u8, 93u8, 199u8, 208u8, 153u8, 53u8, 168u8, 188u8, 124u8, 77u8, 140u8, 163u8, 113u8, 16u8, @@ -38410,24 +36507,32 @@ pub mod api { #[doc = " The map of page indices to pages."] pub fn pages( &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< ( - ::subxt::storage::address::StaticStorageKey, - ::subxt::storage::address::StaticStorageKey, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::pages::Param0, + >, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::pages::Param1, + >, ), types::pages::Pages, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "MessageQueue", "Pages", ( - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), ), [ 56u8, 181u8, 157u8, 16u8, 157u8, 123u8, 106u8, 93u8, 199u8, 208u8, @@ -38448,8 +36553,11 @@ pub mod api { #[doc = " A good value depends on the expected message sizes, their weights, the weight that is"] #[doc = " available for processing them and the maximal needed message size. The maximal message"] #[doc = " size is slightly lower than this as defined by [`MaxMessageLenOf`]."] - pub fn heap_size(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn heap_size( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "MessageQueue", "HeapSize", [ @@ -38463,8 +36571,11 @@ pub mod api { #[doc = " The maximum number of stale pages (i.e. of overweight messages) allowed before culling"] #[doc = " can happen. Once there are more stale pages than this, then historical pages may be"] #[doc = " dropped, even if they contain unprocessed overweight messages."] - pub fn max_stale(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn max_stale( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "MessageQueue", "MaxStale", [ @@ -38482,10 +36593,10 @@ pub mod api { #[doc = " `ServiceQueues::service_queues` manually."] pub fn service_weight( &self, - ) -> ::subxt::constants::Address< + ) -> ::subxt::ext::subxt_core::constants::Address< ::core::option::Option, > { - ::subxt::constants::Address::new_static( + ::subxt::ext::subxt_core::constants::Address::new_static( "MessageQueue", "ServiceWeight", [ @@ -38498,6 +36609,18 @@ pub mod api { } } } + pub mod para_assignment_provider { + use super::root_mod; + use super::runtime_types; + pub mod storage { + use super::runtime_types; + pub mod types { + use super::runtime_types; + } + pub struct StorageApi; + impl StorageApi {} + } + } pub mod on_demand_assignment_provider { use super::root_mod; use super::runtime_types; @@ -38514,31 +36637,20 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Create a single on demand core order."] - #[doc = "Will use the spot price for the current block and will reap the account if needed."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `origin`: The sender of the call, funds will be withdrawn from this account."] - #[doc = "- `max_amount`: The maximum balance to withdraw from the origin to place an order."] - #[doc = "- `para_id`: A `ParaId` the origin wants to provide blockspace for."] - #[doc = ""] - #[doc = "Errors:"] - #[doc = "- `InsufficientBalance`: from the Currency implementation"] - #[doc = "- `InvalidParaId`"] - #[doc = "- `QueueFull`"] - #[doc = "- `SpotPriceHigherThanMaxAmount`"] - #[doc = ""] - #[doc = "Events:"] - #[doc = "- `SpotOrderPlaced`"] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::place_order_allow_death`]."] pub struct PlaceOrderAllowDeath { pub max_amount: place_order_allow_death::MaxAmount, pub para_id: place_order_allow_death::ParaId, @@ -38548,36 +36660,25 @@ pub mod api { pub type MaxAmount = ::core::primitive::u128; pub type ParaId = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::blocks::StaticExtrinsic for PlaceOrderAllowDeath { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for PlaceOrderAllowDeath { const PALLET: &'static str = "OnDemandAssignmentProvider"; const CALL: &'static str = "place_order_allow_death"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Same as the [`place_order_allow_death`](Self::place_order_allow_death) call , but with a"] - #[doc = "check that placing the order will not reap the account."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `origin`: The sender of the call, funds will be withdrawn from this account."] - #[doc = "- `max_amount`: The maximum balance to withdraw from the origin to place an order."] - #[doc = "- `para_id`: A `ParaId` the origin wants to provide blockspace for."] - #[doc = ""] - #[doc = "Errors:"] - #[doc = "- `InsufficientBalance`: from the Currency implementation"] - #[doc = "- `InvalidParaId`"] - #[doc = "- `QueueFull`"] - #[doc = "- `SpotPriceHigherThanMaxAmount`"] - #[doc = ""] - #[doc = "Events:"] - #[doc = "- `SpotOrderPlaced`"] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::place_order_keep_alive`]."] pub struct PlaceOrderKeepAlive { pub max_amount: place_order_keep_alive::MaxAmount, pub para_id: place_order_keep_alive::ParaId, @@ -38587,35 +36688,21 @@ pub mod api { pub type MaxAmount = ::core::primitive::u128; pub type ParaId = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::blocks::StaticExtrinsic for PlaceOrderKeepAlive { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for PlaceOrderKeepAlive { const PALLET: &'static str = "OnDemandAssignmentProvider"; const CALL: &'static str = "place_order_keep_alive"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Create a single on demand core order."] - #[doc = "Will use the spot price for the current block and will reap the account if needed."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `origin`: The sender of the call, funds will be withdrawn from this account."] - #[doc = "- `max_amount`: The maximum balance to withdraw from the origin to place an order."] - #[doc = "- `para_id`: A `ParaId` the origin wants to provide blockspace for."] - #[doc = ""] - #[doc = "Errors:"] - #[doc = "- `InsufficientBalance`: from the Currency implementation"] - #[doc = "- `InvalidParaId`"] - #[doc = "- `QueueFull`"] - #[doc = "- `SpotPriceHigherThanMaxAmount`"] - #[doc = ""] - #[doc = "Events:"] - #[doc = "- `SpotOrderPlaced`"] + #[doc = "See [`Pallet::place_order_allow_death`]."] pub fn place_order_allow_death( &self, max_amount: types::place_order_allow_death::MaxAmount, para_id: types::place_order_allow_death::ParaId, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "OnDemandAssignmentProvider", "place_order_allow_death", types::PlaceOrderAllowDeath { @@ -38630,28 +36717,14 @@ pub mod api { ], ) } - #[doc = "Same as the [`place_order_allow_death`](Self::place_order_allow_death) call , but with a"] - #[doc = "check that placing the order will not reap the account."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `origin`: The sender of the call, funds will be withdrawn from this account."] - #[doc = "- `max_amount`: The maximum balance to withdraw from the origin to place an order."] - #[doc = "- `para_id`: A `ParaId` the origin wants to provide blockspace for."] - #[doc = ""] - #[doc = "Errors:"] - #[doc = "- `InsufficientBalance`: from the Currency implementation"] - #[doc = "- `InvalidParaId`"] - #[doc = "- `QueueFull`"] - #[doc = "- `SpotPriceHigherThanMaxAmount`"] - #[doc = ""] - #[doc = "Events:"] - #[doc = "- `SpotOrderPlaced`"] + #[doc = "See [`Pallet::place_order_keep_alive`]."] pub fn place_order_keep_alive( &self, max_amount: types::place_order_keep_alive::MaxAmount, para_id: types::place_order_keep_alive::ParaId, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "OnDemandAssignmentProvider", "place_order_keep_alive", types::PlaceOrderKeepAlive { @@ -38673,15 +36746,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "An order was placed at some spot price amount."] pub struct OnDemandOrderPlaced { pub para_id: on_demand_order_placed::ParaId, @@ -38692,20 +36765,20 @@ pub mod api { pub type ParaId = runtime_types::polkadot_parachain_primitives::primitives::Id; pub type SpotPrice = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for OnDemandOrderPlaced { + impl ::subxt::ext::subxt_core::events::StaticEvent for OnDemandOrderPlaced { const PALLET: &'static str = "OnDemandAssignmentProvider"; const EVENT: &'static str = "OnDemandOrderPlaced"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The value of the spot traffic multiplier changed."] pub struct SpotTrafficSet { pub traffic: spot_traffic_set::Traffic, @@ -38714,7 +36787,7 @@ pub mod api { use super::runtime_types; pub type Traffic = runtime_types::sp_arithmetic::fixed_point::FixedU128; } - impl ::subxt::events::StaticEvent for SpotTrafficSet { + impl ::subxt::ext::subxt_core::events::StaticEvent for SpotTrafficSet { const PALLET: &'static str = "OnDemandAssignmentProvider"; const EVENT: &'static str = "SpotTrafficSet"; } @@ -38729,7 +36802,9 @@ pub mod api { } pub mod on_demand_queue { use super::runtime_types; - pub type OnDemandQueue = :: std :: vec :: Vec < runtime_types :: polkadot_runtime_parachains :: assigner_on_demand :: EnqueuedOrder > ; + pub type OnDemandQueue = ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::polkadot_runtime_parachains::scheduler::common::Assignment, + >; } pub mod para_id_affinity { use super::runtime_types; @@ -38743,14 +36818,14 @@ pub mod api { #[doc = " assigner."] pub fn spot_traffic( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::spot_traffic::SpotTraffic, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "OnDemandAssignmentProvider", "SpotTraffic", (), @@ -38765,14 +36840,14 @@ pub mod api { #[doc = " queue from the scheduler on session boundaries."] pub fn on_demand_queue( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::on_demand_queue::OnDemandQueue, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "OnDemandAssignmentProvider", "OnDemandQueue", (), @@ -38789,14 +36864,14 @@ pub mod api { #[doc = " `ParaId` on two or more `CoreIndex`es."] pub fn para_id_affinity_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::para_id_affinity::ParaIdAffinity, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "OnDemandAssignmentProvider", "ParaIdAffinity", (), @@ -38812,15 +36887,15 @@ pub mod api { #[doc = " `ParaId` on two or more `CoreIndex`es."] pub fn para_id_affinity( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::para_id_affinity::ParaIdAffinity, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "OnDemandAssignmentProvider", "ParaIdAffinity", (), @@ -38840,9 +36915,10 @@ pub mod api { #[doc = " The default value for the spot traffic multiplier."] pub fn traffic_default_value( &self, - ) -> ::subxt::constants::Address - { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address< + runtime_types::sp_arithmetic::fixed_point::FixedU128, + > { + ::subxt::ext::subxt_core::constants::Address::new_static( "OnDemandAssignmentProvider", "TrafficDefaultValue", [ @@ -38856,159 +36932,9 @@ pub mod api { } } } - pub mod coretime_assignment_provider { + pub mod parachains_assignment_provider { use super::root_mod; use super::runtime_types; - #[doc = "The `Error` enum of this pallet."] - pub type Error = - runtime_types::polkadot_runtime_parachains::assigner_coretime::pallet::Error; - pub mod storage { - use super::runtime_types; - pub mod types { - use super::runtime_types; - pub mod core_schedules { - use super::runtime_types; - pub type CoreSchedules = - runtime_types::polkadot_runtime_parachains::assigner_coretime::Schedule< - ::core::primitive::u32, - >; - pub type Param0 = ::core::primitive::u32; - pub type Param1 = runtime_types::polkadot_primitives::v6::CoreIndex; - } - pub mod core_descriptors { - use super::runtime_types; - pub type CoreDescriptors = runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: CoreDescriptor < :: core :: primitive :: u32 > ; - pub type Param0 = runtime_types::polkadot_primitives::v6::CoreIndex; - } - } - pub struct StorageApi; - impl StorageApi { - #[doc = " Scheduled assignment sets."] - #[doc = ""] - #[doc = " Assignments as of the given block number. They will go into state once the block number is"] - #[doc = " reached (and replace whatever was in there before)."] - pub fn core_schedules_iter( - &self, - ) -> ::subxt::storage::address::Address< - (), - types::core_schedules::CoreSchedules, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "CoretimeAssignmentProvider", - "CoreSchedules", - (), - [ - 34u8, 85u8, 91u8, 158u8, 28u8, 200u8, 76u8, 188u8, 253u8, 91u8, 153u8, - 42u8, 42u8, 227u8, 119u8, 181u8, 247u8, 44u8, 29u8, 24u8, 128u8, 49u8, - 57u8, 248u8, 24u8, 145u8, 34u8, 74u8, 21u8, 225u8, 159u8, 232u8, - ], - ) - } - #[doc = " Scheduled assignment sets."] - #[doc = ""] - #[doc = " Assignments as of the given block number. They will go into state once the block number is"] - #[doc = " reached (and replace whatever was in there before)."] - pub fn core_schedules_iter1( - &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - (), - types::core_schedules::CoreSchedules, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "CoretimeAssignmentProvider", - "CoreSchedules", - (), - [ - 34u8, 85u8, 91u8, 158u8, 28u8, 200u8, 76u8, 188u8, 253u8, 91u8, 153u8, - 42u8, 42u8, 227u8, 119u8, 181u8, 247u8, 44u8, 29u8, 24u8, 128u8, 49u8, - 57u8, 248u8, 24u8, 145u8, 34u8, 74u8, 21u8, 225u8, 159u8, 232u8, - ], - ) - } - #[doc = " Scheduled assignment sets."] - #[doc = ""] - #[doc = " Assignments as of the given block number. They will go into state once the block number is"] - #[doc = " reached (and replace whatever was in there before)."] - pub fn core_schedules( - &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ((), ()), - types::core_schedules::CoreSchedules, - ::subxt::storage::address::Yes, - (), - (), - > { - ::subxt::storage::address::Address::new_static( - "CoretimeAssignmentProvider", - "CoreSchedules", - ((), ()), - [ - 34u8, 85u8, 91u8, 158u8, 28u8, 200u8, 76u8, 188u8, 253u8, 91u8, 153u8, - 42u8, 42u8, 227u8, 119u8, 181u8, 247u8, 44u8, 29u8, 24u8, 128u8, 49u8, - 57u8, 248u8, 24u8, 145u8, 34u8, 74u8, 21u8, 225u8, 159u8, 232u8, - ], - ) - } - #[doc = " Assignments which are currently active."] - #[doc = ""] - #[doc = " They will be picked from `PendingAssignments` once we reach the scheduled block number in"] - #[doc = " `PendingAssignments`."] - pub fn core_descriptors_iter( - &self, - ) -> ::subxt::storage::address::Address< - (), - types::core_descriptors::CoreDescriptors, - (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "CoretimeAssignmentProvider", - "CoreDescriptors", - (), - [ - 1u8, 90u8, 208u8, 119u8, 150u8, 241u8, 133u8, 74u8, 22u8, 166u8, 13u8, - 7u8, 73u8, 136u8, 105u8, 61u8, 251u8, 245u8, 164u8, 7u8, 45u8, 68u8, - 190u8, 224u8, 34u8, 22u8, 30u8, 250u8, 171u8, 152u8, 238u8, 120u8, - ], - ) - } - #[doc = " Assignments which are currently active."] - #[doc = ""] - #[doc = " They will be picked from `PendingAssignments` once we reach the scheduled block number in"] - #[doc = " `PendingAssignments`."] - pub fn core_descriptors( - &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - (), - types::core_descriptors::CoreDescriptors, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "CoretimeAssignmentProvider", - "CoreDescriptors", - (), - [ - 1u8, 90u8, 208u8, 119u8, 150u8, 241u8, 133u8, 74u8, 22u8, 166u8, 13u8, - 7u8, 73u8, 136u8, 105u8, 61u8, 251u8, 245u8, 164u8, 7u8, 45u8, 68u8, - 190u8, 224u8, 34u8, 22u8, 30u8, 250u8, 171u8, 152u8, 238u8, 120u8, - ], - ) - } - } - } } pub mod registrar { use super::root_mod; @@ -39024,35 +36950,20 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Register head data and validation code for a reserved Para Id."] - #[doc = ""] - #[doc = "## Arguments"] - #[doc = "- `origin`: Must be called by a `Signed` origin."] - #[doc = "- `id`: The para ID. Must be owned/managed by the `origin` signing account."] - #[doc = "- `genesis_head`: The genesis head data of the parachain/thread."] - #[doc = "- `validation_code`: The initial validation code of the parachain/thread."] - #[doc = ""] - #[doc = "## Deposits/Fees"] - #[doc = "The account with the originating signature must reserve a deposit."] - #[doc = ""] - #[doc = "The deposit is required to cover the costs associated with storing the genesis head"] - #[doc = "data and the validation code."] - #[doc = "This accounts for the potential to store validation code of a size up to the"] - #[doc = "`max_code_size`, as defined in the configuration pallet"] - #[doc = ""] - #[doc = "Anything already reserved previously for this para ID is accounted for."] - #[doc = ""] - #[doc = "## Events"] - #[doc = "The `Registered` event is emitted in case of success."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::register`]."] pub struct Register { pub id: register::Id, pub genesis_head: register::GenesisHead, @@ -39066,26 +36977,25 @@ pub mod api { pub type ValidationCode = runtime_types::polkadot_parachain_primitives::primitives::ValidationCode; } - impl ::subxt::blocks::StaticExtrinsic for Register { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Register { const PALLET: &'static str = "Registrar"; const CALL: &'static str = "register"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Force the registration of a Para Id on the relay chain."] - #[doc = ""] - #[doc = "This function must be called by a Root origin."] - #[doc = ""] - #[doc = "The deposit taken can be specified for this registration. Any `ParaId`"] - #[doc = "can be registered, including sub-1000 IDs which are System Parachains."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_register`]."] pub struct ForceRegister { pub who: force_register::Who, pub deposit: force_register::Deposit, @@ -39095,7 +37005,7 @@ pub mod api { } pub mod force_register { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Deposit = ::core::primitive::u128; pub type Id = runtime_types::polkadot_parachain_primitives::primitives::Id; pub type GenesisHead = @@ -39103,24 +37013,25 @@ pub mod api { pub type ValidationCode = runtime_types::polkadot_parachain_primitives::primitives::ValidationCode; } - impl ::subxt::blocks::StaticExtrinsic for ForceRegister { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceRegister { const PALLET: &'static str = "Registrar"; const CALL: &'static str = "force_register"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Deregister a Para Id, freeing all data and returning any deposit."] - #[doc = ""] - #[doc = "The caller must be Root, the `para` owner, or the `para` itself. The para must be an"] - #[doc = "on-demand parachain."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::deregister`]."] pub struct Deregister { pub id: deregister::Id, } @@ -39128,32 +37039,25 @@ pub mod api { use super::runtime_types; pub type Id = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::blocks::StaticExtrinsic for Deregister { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Deregister { const PALLET: &'static str = "Registrar"; const CALL: &'static str = "deregister"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Swap a lease holding parachain with another parachain, either on-demand or lease"] - #[doc = "holding."] - #[doc = ""] - #[doc = "The origin must be Root, the `para` owner, or the `para` itself."] - #[doc = ""] - #[doc = "The swap will happen only if there is already an opposite swap pending. If there is not,"] - #[doc = "the swap will be stored in the pending swaps map, ready for a later confirmatory swap."] - #[doc = ""] - #[doc = "The `ParaId`s remain mapped to the same head data and code so external code can rely on"] - #[doc = "`ParaId` to be a long-term identifier of a notional \"parachain\". However, their"] - #[doc = "scheduling info (i.e. whether they're an on-demand parachain or lease holding"] - #[doc = "parachain), auction information and the auction deposit are switched."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::swap`]."] pub struct Swap { pub id: swap::Id, pub other: swap::Other, @@ -39163,24 +37067,25 @@ pub mod api { pub type Id = runtime_types::polkadot_parachain_primitives::primitives::Id; pub type Other = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::blocks::StaticExtrinsic for Swap { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Swap { const PALLET: &'static str = "Registrar"; const CALL: &'static str = "swap"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Remove a manager lock from a para. This will allow the manager of a"] - #[doc = "previously locked para to deregister or swap a para without using governance."] - #[doc = ""] - #[doc = "Can only be called by the Root origin or the parachain."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::remove_lock`]."] pub struct RemoveLock { pub para: remove_lock::Para, } @@ -39188,57 +37093,45 @@ pub mod api { use super::runtime_types; pub type Para = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::blocks::StaticExtrinsic for RemoveLock { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RemoveLock { const PALLET: &'static str = "Registrar"; const CALL: &'static str = "remove_lock"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Reserve a Para Id on the relay chain."] - #[doc = ""] - #[doc = "This function will reserve a new Para Id to be owned/managed by the origin account."] - #[doc = "The origin account is able to register head data and validation code using `register` to"] - #[doc = "create an on-demand parachain. Using the Slots pallet, an on-demand parachain can then"] - #[doc = "be upgraded to a lease holding parachain."] - #[doc = ""] - #[doc = "## Arguments"] - #[doc = "- `origin`: Must be called by a `Signed` origin. Becomes the manager/owner of the new"] - #[doc = " para ID."] - #[doc = ""] - #[doc = "## Deposits/Fees"] - #[doc = "The origin must reserve a deposit of `ParaDeposit` for the registration."] - #[doc = ""] - #[doc = "## Events"] - #[doc = "The `Reserved` event is emitted in case of success, which provides the ID reserved for"] - #[doc = "use."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::reserve`]."] pub struct Reserve; - impl ::subxt::blocks::StaticExtrinsic for Reserve { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Reserve { const PALLET: &'static str = "Registrar"; const CALL: &'static str = "reserve"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Add a manager lock from a para. This will prevent the manager of a"] - #[doc = "para to deregister or swap a para."] - #[doc = ""] - #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] - #[doc = "unlocked."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::add_lock`]."] pub struct AddLock { pub para: add_lock::Para, } @@ -39246,24 +37139,25 @@ pub mod api { use super::runtime_types; pub type Para = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::blocks::StaticExtrinsic for AddLock { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for AddLock { const PALLET: &'static str = "Registrar"; const CALL: &'static str = "add_lock"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Schedule a parachain upgrade."] - #[doc = ""] - #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] - #[doc = "unlocked."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::schedule_code_upgrade`]."] pub struct ScheduleCodeUpgrade { pub para: schedule_code_upgrade::Para, pub new_code: schedule_code_upgrade::NewCode, @@ -39274,24 +37168,25 @@ pub mod api { pub type NewCode = runtime_types::polkadot_parachain_primitives::primitives::ValidationCode; } - impl ::subxt::blocks::StaticExtrinsic for ScheduleCodeUpgrade { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ScheduleCodeUpgrade { const PALLET: &'static str = "Registrar"; const CALL: &'static str = "schedule_code_upgrade"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the parachain's current head."] - #[doc = ""] - #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] - #[doc = "unlocked."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_current_head`]."] pub struct SetCurrentHead { pub para: set_current_head::Para, pub new_head: set_current_head::NewHead, @@ -39302,40 +37197,21 @@ pub mod api { pub type NewHead = runtime_types::polkadot_parachain_primitives::primitives::HeadData; } - impl ::subxt::blocks::StaticExtrinsic for SetCurrentHead { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetCurrentHead { const PALLET: &'static str = "Registrar"; const CALL: &'static str = "set_current_head"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Register head data and validation code for a reserved Para Id."] - #[doc = ""] - #[doc = "## Arguments"] - #[doc = "- `origin`: Must be called by a `Signed` origin."] - #[doc = "- `id`: The para ID. Must be owned/managed by the `origin` signing account."] - #[doc = "- `genesis_head`: The genesis head data of the parachain/thread."] - #[doc = "- `validation_code`: The initial validation code of the parachain/thread."] - #[doc = ""] - #[doc = "## Deposits/Fees"] - #[doc = "The account with the originating signature must reserve a deposit."] - #[doc = ""] - #[doc = "The deposit is required to cover the costs associated with storing the genesis head"] - #[doc = "data and the validation code."] - #[doc = "This accounts for the potential to store validation code of a size up to the"] - #[doc = "`max_code_size`, as defined in the configuration pallet"] - #[doc = ""] - #[doc = "Anything already reserved previously for this para ID is accounted for."] - #[doc = ""] - #[doc = "## Events"] - #[doc = "The `Registered` event is emitted in case of success."] + #[doc = "See [`Pallet::register`]."] pub fn register( &self, id: types::register::Id, genesis_head: types::register::GenesisHead, validation_code: types::register::ValidationCode, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Registrar", "register", types::Register { @@ -39350,12 +37226,7 @@ pub mod api { ], ) } - #[doc = "Force the registration of a Para Id on the relay chain."] - #[doc = ""] - #[doc = "This function must be called by a Root origin."] - #[doc = ""] - #[doc = "The deposit taken can be specified for this registration. Any `ParaId`"] - #[doc = "can be registered, including sub-1000 IDs which are System Parachains."] + #[doc = "See [`Pallet::force_register`]."] pub fn force_register( &self, who: types::force_register::Who, @@ -39363,8 +37234,8 @@ pub mod api { id: types::force_register::Id, genesis_head: types::force_register::GenesisHead, validation_code: types::force_register::ValidationCode, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Registrar", "force_register", types::ForceRegister { @@ -39382,15 +37253,12 @@ pub mod api { ], ) } - #[doc = "Deregister a Para Id, freeing all data and returning any deposit."] - #[doc = ""] - #[doc = "The caller must be Root, the `para` owner, or the `para` itself. The para must be an"] - #[doc = "on-demand parachain."] + #[doc = "See [`Pallet::deregister`]."] pub fn deregister( &self, id: types::deregister::Id, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Registrar", "deregister", types::Deregister { id }, @@ -39401,24 +37269,13 @@ pub mod api { ], ) } - #[doc = "Swap a lease holding parachain with another parachain, either on-demand or lease"] - #[doc = "holding."] - #[doc = ""] - #[doc = "The origin must be Root, the `para` owner, or the `para` itself."] - #[doc = ""] - #[doc = "The swap will happen only if there is already an opposite swap pending. If there is not,"] - #[doc = "the swap will be stored in the pending swaps map, ready for a later confirmatory swap."] - #[doc = ""] - #[doc = "The `ParaId`s remain mapped to the same head data and code so external code can rely on"] - #[doc = "`ParaId` to be a long-term identifier of a notional \"parachain\". However, their"] - #[doc = "scheduling info (i.e. whether they're an on-demand parachain or lease holding"] - #[doc = "parachain), auction information and the auction deposit are switched."] + #[doc = "See [`Pallet::swap`]."] pub fn swap( &self, id: types::swap::Id, other: types::swap::Other, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Registrar", "swap", types::Swap { id, other }, @@ -39430,15 +37287,12 @@ pub mod api { ], ) } - #[doc = "Remove a manager lock from a para. This will allow the manager of a"] - #[doc = "previously locked para to deregister or swap a para without using governance."] - #[doc = ""] - #[doc = "Can only be called by the Root origin or the parachain."] + #[doc = "See [`Pallet::remove_lock`]."] pub fn remove_lock( &self, para: types::remove_lock::Para, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Registrar", "remove_lock", types::RemoveLock { para }, @@ -39449,25 +37303,9 @@ pub mod api { ], ) } - #[doc = "Reserve a Para Id on the relay chain."] - #[doc = ""] - #[doc = "This function will reserve a new Para Id to be owned/managed by the origin account."] - #[doc = "The origin account is able to register head data and validation code using `register` to"] - #[doc = "create an on-demand parachain. Using the Slots pallet, an on-demand parachain can then"] - #[doc = "be upgraded to a lease holding parachain."] - #[doc = ""] - #[doc = "## Arguments"] - #[doc = "- `origin`: Must be called by a `Signed` origin. Becomes the manager/owner of the new"] - #[doc = " para ID."] - #[doc = ""] - #[doc = "## Deposits/Fees"] - #[doc = "The origin must reserve a deposit of `ParaDeposit` for the registration."] - #[doc = ""] - #[doc = "## Events"] - #[doc = "The `Reserved` event is emitted in case of success, which provides the ID reserved for"] - #[doc = "use."] - pub fn reserve(&self) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + #[doc = "See [`Pallet::reserve`]."] + pub fn reserve(&self) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Registrar", "reserve", types::Reserve {}, @@ -39478,16 +37316,12 @@ pub mod api { ], ) } - #[doc = "Add a manager lock from a para. This will prevent the manager of a"] - #[doc = "para to deregister or swap a para."] - #[doc = ""] - #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] - #[doc = "unlocked."] + #[doc = "See [`Pallet::add_lock`]."] pub fn add_lock( &self, para: types::add_lock::Para, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Registrar", "add_lock", types::AddLock { para }, @@ -39498,16 +37332,14 @@ pub mod api { ], ) } - #[doc = "Schedule a parachain upgrade."] - #[doc = ""] - #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] - #[doc = "unlocked."] + #[doc = "See [`Pallet::schedule_code_upgrade`]."] pub fn schedule_code_upgrade( &self, para: types::schedule_code_upgrade::Para, new_code: types::schedule_code_upgrade::NewCode, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Registrar", "schedule_code_upgrade", types::ScheduleCodeUpgrade { para, new_code }, @@ -39519,16 +37351,13 @@ pub mod api { ], ) } - #[doc = "Set the parachain's current head."] - #[doc = ""] - #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] - #[doc = "unlocked."] + #[doc = "See [`Pallet::set_current_head`]."] pub fn set_current_head( &self, para: types::set_current_head::Para, new_head: types::set_current_head::NewHead, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Registrar", "set_current_head", types::SetCurrentHead { para, new_head }, @@ -39547,15 +37376,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct Registered { pub para_id: registered::ParaId, pub manager: registered::Manager, @@ -39563,22 +37392,22 @@ pub mod api { pub mod registered { use super::runtime_types; pub type ParaId = runtime_types::polkadot_parachain_primitives::primitives::Id; - pub type Manager = ::subxt::utils::AccountId32; + pub type Manager = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for Registered { + impl ::subxt::ext::subxt_core::events::StaticEvent for Registered { const PALLET: &'static str = "Registrar"; const EVENT: &'static str = "Registered"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct Deregistered { pub para_id: deregistered::ParaId, } @@ -39586,20 +37415,20 @@ pub mod api { use super::runtime_types; pub type ParaId = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::events::StaticEvent for Deregistered { + impl ::subxt::ext::subxt_core::events::StaticEvent for Deregistered { const PALLET: &'static str = "Registrar"; const EVENT: &'static str = "Deregistered"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct Reserved { pub para_id: reserved::ParaId, pub who: reserved::Who, @@ -39607,22 +37436,22 @@ pub mod api { pub mod reserved { use super::runtime_types; pub type ParaId = runtime_types::polkadot_parachain_primitives::primitives::Id; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; } - impl ::subxt::events::StaticEvent for Reserved { + impl ::subxt::ext::subxt_core::events::StaticEvent for Reserved { const PALLET: &'static str = "Registrar"; const EVENT: &'static str = "Reserved"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct Swapped { pub para_id: swapped::ParaId, pub other_id: swapped::OtherId, @@ -39632,7 +37461,7 @@ pub mod api { pub type ParaId = runtime_types::polkadot_parachain_primitives::primitives::Id; pub type OtherId = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::events::StaticEvent for Swapped { + impl ::subxt::ext::subxt_core::events::StaticEvent for Swapped { const PALLET: &'static str = "Registrar"; const EVENT: &'static str = "Swapped"; } @@ -39651,7 +37480,7 @@ pub mod api { use super::runtime_types; pub type Paras = runtime_types::polkadot_runtime_common::paras_registrar::ParaInfo< - ::subxt::utils::AccountId32, + ::subxt::ext::subxt_core::utils::AccountId32, ::core::primitive::u128, >; pub type Param0 = runtime_types::polkadot_parachain_primitives::primitives::Id; @@ -39667,14 +37496,14 @@ pub mod api { #[doc = " Pending swap operations."] pub fn pending_swap_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::pending_swap::PendingSwap, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Registrar", "PendingSwap", (), @@ -39689,18 +37518,22 @@ pub mod api { #[doc = " Pending swap operations."] pub fn pending_swap( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::pending_swap::Param0, + >, types::pending_swap::PendingSwap, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Registrar", "PendingSwap", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 75u8, 6u8, 68u8, 43u8, 108u8, 147u8, 220u8, 90u8, 190u8, 86u8, 209u8, 141u8, 9u8, 254u8, 103u8, 10u8, 94u8, 187u8, 155u8, 249u8, 140u8, @@ -39715,14 +37548,14 @@ pub mod api { #[doc = " only do so if it isn't yet registered. (After that, it's up to governance to do so.)"] pub fn paras_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::paras::Paras, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Registrar", "Paras", (), @@ -39739,18 +37572,22 @@ pub mod api { #[doc = " only do so if it isn't yet registered. (After that, it's up to governance to do so.)"] pub fn paras( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::paras::Param0, + >, types::paras::Paras, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Registrar", "Paras", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 125u8, 62u8, 50u8, 209u8, 40u8, 170u8, 61u8, 62u8, 61u8, 246u8, 103u8, 229u8, 213u8, 94u8, 249u8, 49u8, 18u8, 90u8, 138u8, 14u8, 101u8, 133u8, @@ -39761,14 +37598,14 @@ pub mod api { #[doc = " The next free `ParaId`."] pub fn next_free_para_id( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::next_free_para_id::NextFreeParaId, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Registrar", "NextFreeParaId", (), @@ -39788,8 +37625,11 @@ pub mod api { impl ConstantsApi { #[doc = " The deposit to be paid to run a on-demand parachain."] #[doc = " This should include the cost for storing the genesis head and validation code."] - pub fn para_deposit(&self) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + pub fn para_deposit( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Registrar", "ParaDeposit", [ @@ -39802,8 +37642,9 @@ pub mod api { #[doc = " The deposit to be paid per byte stored on chain."] pub fn data_deposit_per_byte( &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Registrar", "DataDepositPerByte", [ @@ -39830,19 +37671,20 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Just a connect into the `lease_out` call, in case Root wants to force some lease to"] - #[doc = "happen independently of any other on-chain mechanism to use it."] - #[doc = ""] - #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_lease`]."] pub struct ForceLease { pub para: force_lease::Para, pub leaser: force_lease::Leaser, @@ -39853,28 +37695,30 @@ pub mod api { pub mod force_lease { use super::runtime_types; pub type Para = runtime_types::polkadot_parachain_primitives::primitives::Id; - pub type Leaser = ::subxt::utils::AccountId32; + pub type Leaser = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; pub type PeriodBegin = ::core::primitive::u32; pub type PeriodCount = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for ForceLease { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceLease { const PALLET: &'static str = "Slots"; const CALL: &'static str = "force_lease"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Clear all leases for a Para Id, refunding any deposits back to the original owners."] - #[doc = ""] - #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::clear_all_leases`]."] pub struct ClearAllLeases { pub para: clear_all_leases::Para, } @@ -39882,27 +37726,25 @@ pub mod api { use super::runtime_types; pub type Para = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::blocks::StaticExtrinsic for ClearAllLeases { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ClearAllLeases { const PALLET: &'static str = "Slots"; const CALL: &'static str = "clear_all_leases"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Try to onboard a parachain that has a lease for the current lease period."] - #[doc = ""] - #[doc = "This function can be useful if there was some state issue with a para that should"] - #[doc = "have onboarded, but was unable to. As long as they have a lease period, we can"] - #[doc = "let them onboard from here."] - #[doc = ""] - #[doc = "Origin must be signed, but can be called by anyone."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::trigger_onboard`]."] pub struct TriggerOnboard { pub para: trigger_onboard::Para, } @@ -39910,17 +37752,14 @@ pub mod api { use super::runtime_types; pub type Para = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::blocks::StaticExtrinsic for TriggerOnboard { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for TriggerOnboard { const PALLET: &'static str = "Slots"; const CALL: &'static str = "trigger_onboard"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Just a connect into the `lease_out` call, in case Root wants to force some lease to"] - #[doc = "happen independently of any other on-chain mechanism to use it."] - #[doc = ""] - #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] + #[doc = "See [`Pallet::force_lease`]."] pub fn force_lease( &self, para: types::force_lease::Para, @@ -39928,8 +37767,8 @@ pub mod api { amount: types::force_lease::Amount, period_begin: types::force_lease::PeriodBegin, period_count: types::force_lease::PeriodCount, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Slots", "force_lease", types::ForceLease { @@ -39947,14 +37786,12 @@ pub mod api { ], ) } - #[doc = "Clear all leases for a Para Id, refunding any deposits back to the original owners."] - #[doc = ""] - #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] + #[doc = "See [`Pallet::clear_all_leases`]."] pub fn clear_all_leases( &self, para: types::clear_all_leases::Para, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Slots", "clear_all_leases", types::ClearAllLeases { para }, @@ -39965,18 +37802,12 @@ pub mod api { ], ) } - #[doc = "Try to onboard a parachain that has a lease for the current lease period."] - #[doc = ""] - #[doc = "This function can be useful if there was some state issue with a para that should"] - #[doc = "have onboarded, but was unable to. As long as they have a lease period, we can"] - #[doc = "let them onboard from here."] - #[doc = ""] - #[doc = "Origin must be signed, but can be called by anyone."] + #[doc = "See [`Pallet::trigger_onboard`]."] pub fn trigger_onboard( &self, para: types::trigger_onboard::Para, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Slots", "trigger_onboard", types::TriggerOnboard { para }, @@ -39994,15 +37825,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A new `[lease_period]` is beginning."] pub struct NewLeasePeriod { pub lease_period: new_lease_period::LeasePeriod, @@ -40011,20 +37842,20 @@ pub mod api { use super::runtime_types; pub type LeasePeriod = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for NewLeasePeriod { + impl ::subxt::ext::subxt_core::events::StaticEvent for NewLeasePeriod { const PALLET: &'static str = "Slots"; const EVENT: &'static str = "NewLeasePeriod"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A para has won the right to a continuous set of lease periods as a parachain."] #[doc = "First balance is any extra amount reserved on top of the para's existing deposit."] #[doc = "Second balance is the total amount reserved."] @@ -40039,13 +37870,13 @@ pub mod api { pub mod leased { use super::runtime_types; pub type ParaId = runtime_types::polkadot_parachain_primitives::primitives::Id; - pub type Leaser = ::subxt::utils::AccountId32; + pub type Leaser = ::subxt::ext::subxt_core::utils::AccountId32; pub type PeriodBegin = ::core::primitive::u32; pub type PeriodCount = ::core::primitive::u32; pub type ExtraReserved = ::core::primitive::u128; pub type TotalAmount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Leased { + impl ::subxt::ext::subxt_core::events::StaticEvent for Leased { const PALLET: &'static str = "Slots"; const EVENT: &'static str = "Leased"; } @@ -40056,9 +37887,9 @@ pub mod api { use super::runtime_types; pub mod leases { use super::runtime_types; - pub type Leases = ::std::vec::Vec< + pub type Leases = ::subxt::ext::subxt_core::alloc::vec::Vec< ::core::option::Option<( - ::subxt::utils::AccountId32, + ::subxt::ext::subxt_core::utils::AccountId32, ::core::primitive::u128, )>, >; @@ -40085,14 +37916,14 @@ pub mod api { #[doc = " It is illegal for a `None` value to trail in the list."] pub fn leases_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::leases::Leases, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Slots", "Leases", (), @@ -40122,18 +37953,22 @@ pub mod api { #[doc = " It is illegal for a `None` value to trail in the list."] pub fn leases( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::leases::Param0, + >, types::leases::Leases, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Slots", "Leases", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 233u8, 226u8, 181u8, 160u8, 216u8, 86u8, 238u8, 229u8, 31u8, 67u8, 200u8, 188u8, 134u8, 22u8, 88u8, 147u8, 204u8, 11u8, 34u8, 244u8, @@ -40149,8 +37984,11 @@ pub mod api { pub struct ConstantsApi; impl ConstantsApi { #[doc = " The number of blocks over which a single period lasts."] - pub fn lease_period(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn lease_period( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Slots", "LeasePeriod", [ @@ -40162,8 +38000,11 @@ pub mod api { ) } #[doc = " The number of blocks to offset each lease period by."] - pub fn lease_offset(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn lease_offset( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Slots", "LeaseOffset", [ @@ -40191,20 +38032,20 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Create a new auction."] - #[doc = ""] - #[doc = "This can only happen when there isn't already an auction in progress and may only be"] - #[doc = "called by the root origin. Accepts the `duration` of this auction and the"] - #[doc = "`lease_period_index` of the initial lease period of the four that are to be auctioned."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::new_auction`]."] pub struct NewAuction { #[codec(compact)] pub duration: new_auction::Duration, @@ -40216,36 +38057,25 @@ pub mod api { pub type Duration = ::core::primitive::u32; pub type LeasePeriodIndex = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for NewAuction { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for NewAuction { const PALLET: &'static str = "Auctions"; const CALL: &'static str = "new_auction"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Make a new bid from an account (including a parachain account) for deploying a new"] - #[doc = "parachain."] - #[doc = ""] - #[doc = "Multiple simultaneous bids from the same bidder are allowed only as long as all active"] - #[doc = "bids overlap each other (i.e. are mutually exclusive). Bids cannot be redacted."] - #[doc = ""] - #[doc = "- `sub` is the sub-bidder ID, allowing for multiple competing bids to be made by (and"] - #[doc = "funded by) the same account."] - #[doc = "- `auction_index` is the index of the auction to bid on. Should just be the present"] - #[doc = "value of `AuctionCounter`."] - #[doc = "- `first_slot` is the first lease period index of the range to bid on. This is the"] - #[doc = "absolute lease period index value, not an auction-specific offset."] - #[doc = "- `last_slot` is the last lease period index of the range to bid on. This is the"] - #[doc = "absolute lease period index value, not an auction-specific offset."] - #[doc = "- `amount` is the amount to bid to be held as deposit for the parachain should the"] - #[doc = "bid win. This amount is held throughout the range."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::bid`]."] pub struct Bid { #[codec(compact)] pub para: bid::Para, @@ -40266,42 +38096,40 @@ pub mod api { pub type LastSlot = ::core::primitive::u32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::blocks::StaticExtrinsic for Bid { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Bid { const PALLET: &'static str = "Auctions"; const CALL: &'static str = "bid"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Cancel an in-progress auction."] - #[doc = ""] - #[doc = "Can only be called by Root origin."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::cancel_auction`]."] pub struct CancelAuction; - impl ::subxt::blocks::StaticExtrinsic for CancelAuction { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for CancelAuction { const PALLET: &'static str = "Auctions"; const CALL: &'static str = "cancel_auction"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Create a new auction."] - #[doc = ""] - #[doc = "This can only happen when there isn't already an auction in progress and may only be"] - #[doc = "called by the root origin. Accepts the `duration` of this auction and the"] - #[doc = "`lease_period_index` of the initial lease period of the four that are to be auctioned."] + #[doc = "See [`Pallet::new_auction`]."] pub fn new_auction( &self, duration: types::new_auction::Duration, lease_period_index: types::new_auction::LeasePeriodIndex, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Auctions", "new_auction", types::NewAuction { @@ -40316,22 +38144,7 @@ pub mod api { ], ) } - #[doc = "Make a new bid from an account (including a parachain account) for deploying a new"] - #[doc = "parachain."] - #[doc = ""] - #[doc = "Multiple simultaneous bids from the same bidder are allowed only as long as all active"] - #[doc = "bids overlap each other (i.e. are mutually exclusive). Bids cannot be redacted."] - #[doc = ""] - #[doc = "- `sub` is the sub-bidder ID, allowing for multiple competing bids to be made by (and"] - #[doc = "funded by) the same account."] - #[doc = "- `auction_index` is the index of the auction to bid on. Should just be the present"] - #[doc = "value of `AuctionCounter`."] - #[doc = "- `first_slot` is the first lease period index of the range to bid on. This is the"] - #[doc = "absolute lease period index value, not an auction-specific offset."] - #[doc = "- `last_slot` is the last lease period index of the range to bid on. This is the"] - #[doc = "absolute lease period index value, not an auction-specific offset."] - #[doc = "- `amount` is the amount to bid to be held as deposit for the parachain should the"] - #[doc = "bid win. This amount is held throughout the range."] + #[doc = "See [`Pallet::bid`]."] pub fn bid( &self, para: types::bid::Para, @@ -40339,8 +38152,8 @@ pub mod api { first_slot: types::bid::FirstSlot, last_slot: types::bid::LastSlot, amount: types::bid::Amount, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Auctions", "bid", types::Bid { @@ -40357,11 +38170,11 @@ pub mod api { ], ) } - #[doc = "Cancel an in-progress auction."] - #[doc = ""] - #[doc = "Can only be called by Root origin."] - pub fn cancel_auction(&self) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + #[doc = "See [`Pallet::cancel_auction`]."] + pub fn cancel_auction( + &self, + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Auctions", "cancel_auction", types::CancelAuction {}, @@ -40379,15 +38192,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "An auction started. Provides its index and the block number where it will begin to"] #[doc = "close and the first lease period of the quadruplet that is auctioned."] pub struct AuctionStarted { @@ -40401,20 +38214,20 @@ pub mod api { pub type LeasePeriod = ::core::primitive::u32; pub type Ending = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for AuctionStarted { + impl ::subxt::ext::subxt_core::events::StaticEvent for AuctionStarted { const PALLET: &'static str = "Auctions"; const EVENT: &'static str = "AuctionStarted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "An auction ended. All funds become unreserved."] pub struct AuctionClosed { pub auction_index: auction_closed::AuctionIndex, @@ -40423,20 +38236,20 @@ pub mod api { use super::runtime_types; pub type AuctionIndex = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for AuctionClosed { + impl ::subxt::ext::subxt_core::events::StaticEvent for AuctionClosed { const PALLET: &'static str = "Auctions"; const EVENT: &'static str = "AuctionClosed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Funds were reserved for a winning bid. First balance is the extra amount reserved."] #[doc = "Second is the total."] pub struct Reserved { @@ -40446,24 +38259,24 @@ pub mod api { } pub mod reserved { use super::runtime_types; - pub type Bidder = ::subxt::utils::AccountId32; + pub type Bidder = ::subxt::ext::subxt_core::utils::AccountId32; pub type ExtraReserved = ::core::primitive::u128; pub type TotalAmount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Reserved { + impl ::subxt::ext::subxt_core::events::StaticEvent for Reserved { const PALLET: &'static str = "Auctions"; const EVENT: &'static str = "Reserved"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Funds were unreserved since bidder is no longer active. `[bidder, amount]`"] pub struct Unreserved { pub bidder: unreserved::Bidder, @@ -40471,23 +38284,23 @@ pub mod api { } pub mod unreserved { use super::runtime_types; - pub type Bidder = ::subxt::utils::AccountId32; + pub type Bidder = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Unreserved { + impl ::subxt::ext::subxt_core::events::StaticEvent for Unreserved { const PALLET: &'static str = "Auctions"; const EVENT: &'static str = "Unreserved"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Someone attempted to lease the same slot twice for a parachain. The amount is held in"] #[doc = "reserve but no parachain slot has been leased."] pub struct ReserveConfiscated { @@ -40498,23 +38311,23 @@ pub mod api { pub mod reserve_confiscated { use super::runtime_types; pub type ParaId = runtime_types::polkadot_parachain_primitives::primitives::Id; - pub type Leaser = ::subxt::utils::AccountId32; + pub type Leaser = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for ReserveConfiscated { + impl ::subxt::ext::subxt_core::events::StaticEvent for ReserveConfiscated { const PALLET: &'static str = "Auctions"; const EVENT: &'static str = "ReserveConfiscated"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A new bid has been accepted as the current winner."] pub struct BidAccepted { pub bidder: bid_accepted::Bidder, @@ -40525,26 +38338,26 @@ pub mod api { } pub mod bid_accepted { use super::runtime_types; - pub type Bidder = ::subxt::utils::AccountId32; + pub type Bidder = ::subxt::ext::subxt_core::utils::AccountId32; pub type ParaId = runtime_types::polkadot_parachain_primitives::primitives::Id; pub type Amount = ::core::primitive::u128; pub type FirstSlot = ::core::primitive::u32; pub type LastSlot = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for BidAccepted { + impl ::subxt::ext::subxt_core::events::StaticEvent for BidAccepted { const PALLET: &'static str = "Auctions"; const EVENT: &'static str = "BidAccepted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The winning offset was chosen for an auction. This will map into the `Winning` storage"] #[doc = "map."] pub struct WinningOffset { @@ -40556,7 +38369,7 @@ pub mod api { pub type AuctionIndex = ::core::primitive::u32; pub type BlockNumber = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for WinningOffset { + impl ::subxt::ext::subxt_core::events::StaticEvent for WinningOffset { const PALLET: &'static str = "Auctions"; const EVENT: &'static str = "WinningOffset"; } @@ -40576,13 +38389,13 @@ pub mod api { pub mod reserved_amounts { use super::runtime_types; pub type ReservedAmounts = ::core::primitive::u128; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; pub type Param1 = runtime_types::polkadot_parachain_primitives::primitives::Id; } pub mod winning { use super::runtime_types; pub type Winning = [::core::option::Option<( - ::subxt::utils::AccountId32, + ::subxt::ext::subxt_core::utils::AccountId32, runtime_types::polkadot_parachain_primitives::primitives::Id, ::core::primitive::u128, )>; 36usize]; @@ -40594,14 +38407,14 @@ pub mod api { #[doc = " Number of auctions started so far."] pub fn auction_counter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::auction_counter::AuctionCounter, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Auctions", "AuctionCounter", (), @@ -40619,14 +38432,14 @@ pub mod api { #[doc = " auction will \"begin to end\", i.e. the first block of the Ending Period of the auction."] pub fn auction_info( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::auction_info::AuctionInfo, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Auctions", "AuctionInfo", (), @@ -40641,14 +38454,14 @@ pub mod api { #[doc = " (sub-)ranges."] pub fn reserved_amounts_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::reserved_amounts::ReservedAmounts, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Auctions", "ReservedAmounts", (), @@ -40664,18 +38477,22 @@ pub mod api { #[doc = " (sub-)ranges."] pub fn reserved_amounts_iter1( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::reserved_amounts::Param0, + >, types::reserved_amounts::ReservedAmounts, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Auctions", "ReservedAmounts", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 77u8, 44u8, 116u8, 36u8, 189u8, 213u8, 126u8, 32u8, 42u8, 131u8, 108u8, 41u8, 147u8, 40u8, 247u8, 245u8, 161u8, 42u8, 152u8, 195u8, 28u8, @@ -40688,28 +38505,32 @@ pub mod api { #[doc = " (sub-)ranges."] pub fn reserved_amounts( &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< ( - ::subxt::storage::address::StaticStorageKey< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::reserved_amounts::Param0, >, - ::subxt::storage::address::StaticStorageKey< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::reserved_amounts::Param1, >, ), types::reserved_amounts::ReservedAmounts, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Auctions", "ReservedAmounts", ( - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), ), [ 77u8, 44u8, 116u8, 36u8, 189u8, 213u8, 126u8, 32u8, 42u8, 131u8, 108u8, @@ -40724,14 +38545,14 @@ pub mod api { #[doc = " first sample of the ending period is 0; the last is `Sample Size - 1`."] pub fn winning_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::winning::Winning, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Auctions", "Winning", (), @@ -40747,18 +38568,22 @@ pub mod api { #[doc = " first sample of the ending period is 0; the last is `Sample Size - 1`."] pub fn winning( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::winning::Param0, + >, types::winning::Winning, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Auctions", "Winning", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 8u8, 136u8, 174u8, 152u8, 223u8, 1u8, 143u8, 45u8, 213u8, 5u8, 239u8, 163u8, 152u8, 99u8, 197u8, 109u8, 194u8, 140u8, 246u8, 10u8, 40u8, @@ -40773,8 +38598,11 @@ pub mod api { pub struct ConstantsApi; impl ConstantsApi { #[doc = " The number of blocks over which an auction may be retroactively ended."] - pub fn ending_period(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn ending_period( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Auctions", "EndingPeriod", [ @@ -40788,8 +38616,11 @@ pub mod api { #[doc = " The length of each sample to take during the ending period."] #[doc = ""] #[doc = " `EndingPeriod` / `SampleLength` = Total # of Samples"] - pub fn sample_length(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + pub fn sample_length( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Auctions", "SampleLength", [ @@ -40802,8 +38633,9 @@ pub mod api { } pub fn slot_range_count( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Auctions", "SlotRangeCount", [ @@ -40816,8 +38648,9 @@ pub mod api { } pub fn lease_periods_per_slot( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Auctions", "LeasePeriodsPerSlot", [ @@ -40845,20 +38678,20 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Create a new crowdloaning campaign for a parachain slot with the given lease period"] - #[doc = "range."] - #[doc = ""] - #[doc = "This applies a lock to your parachain configuration, ensuring that it cannot be changed"] - #[doc = "by the parachain manager."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::create`]."] pub struct Create { #[codec(compact)] pub index: create::Index, @@ -40882,22 +38715,25 @@ pub mod api { pub type Verifier = ::core::option::Option; } - impl ::subxt::blocks::StaticExtrinsic for Create { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Create { const PALLET: &'static str = "Crowdloan"; const CALL: &'static str = "create"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contribute to a crowd sale. This will transfer some balance over to fund a parachain"] - #[doc = "slot. It will be withdrawable when the crowdloan has ended and the funds are unused."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::contribute`]."] pub struct Contribute { #[codec(compact)] pub index: contribute::Index, @@ -40912,37 +38748,25 @@ pub mod api { pub type Signature = ::core::option::Option; } - impl ::subxt::blocks::StaticExtrinsic for Contribute { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Contribute { const PALLET: &'static str = "Crowdloan"; const CALL: &'static str = "contribute"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Withdraw full balance of a specific contributor."] - #[doc = ""] - #[doc = "Origin must be signed, but can come from anyone."] - #[doc = ""] - #[doc = "The fund must be either in, or ready for, retirement. For a fund to be *in* retirement,"] - #[doc = "then the retirement flag must be set. For a fund to be ready for retirement, then:"] - #[doc = "- it must not already be in retirement;"] - #[doc = "- the amount of raised funds must be bigger than the _free_ balance of the account;"] - #[doc = "- and either:"] - #[doc = " - the block number must be at least `end`; or"] - #[doc = " - the current lease period must be greater than the fund's `last_period`."] - #[doc = ""] - #[doc = "In this case, the fund's retirement flag is set and its `end` is reset to the current"] - #[doc = "block number."] - #[doc = ""] - #[doc = "- `who`: The account whose contribution should be withdrawn."] - #[doc = "- `index`: The parachain to whose crowdloan the contribution was made."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::withdraw`]."] pub struct Withdraw { pub who: withdraw::Who, #[codec(compact)] @@ -40950,28 +38774,28 @@ pub mod api { } pub mod withdraw { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Index = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::blocks::StaticExtrinsic for Withdraw { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Withdraw { const PALLET: &'static str = "Crowdloan"; const CALL: &'static str = "withdraw"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Automatically refund contributors of an ended crowdloan."] - #[doc = "Due to weight restrictions, this function may need to be called multiple"] - #[doc = "times to fully refund all users. We will refund `RemoveKeysLimit` users at a time."] - #[doc = ""] - #[doc = "Origin must be signed, but can come from anyone."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::refund`]."] pub struct Refund { #[codec(compact)] pub index: refund::Index, @@ -40980,21 +38804,25 @@ pub mod api { use super::runtime_types; pub type Index = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::blocks::StaticExtrinsic for Refund { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Refund { const PALLET: &'static str = "Crowdloan"; const CALL: &'static str = "refund"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Remove a fund after the retirement period has ended and all funds have been returned."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::dissolve`]."] pub struct Dissolve { #[codec(compact)] pub index: dissolve::Index, @@ -41003,23 +38831,25 @@ pub mod api { use super::runtime_types; pub type Index = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::blocks::StaticExtrinsic for Dissolve { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Dissolve { const PALLET: &'static str = "Crowdloan"; const CALL: &'static str = "dissolve"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Edit the configuration for an in-progress crowdloan."] - #[doc = ""] - #[doc = "Can only be called by Root origin."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::edit`]."] pub struct Edit { #[codec(compact)] pub index: edit::Index, @@ -41043,23 +38873,25 @@ pub mod api { pub type Verifier = ::core::option::Option; } - impl ::subxt::blocks::StaticExtrinsic for Edit { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Edit { const PALLET: &'static str = "Crowdloan"; const CALL: &'static str = "edit"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Add an optional memo to an existing crowdloan contribution."] - #[doc = ""] - #[doc = "Origin must be Signed, and the user must have contributed to the crowdloan."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::add_memo`]."] pub struct AddMemo { pub index: add_memo::Index, pub memo: add_memo::Memo, @@ -41067,25 +38899,28 @@ pub mod api { pub mod add_memo { use super::runtime_types; pub type Index = runtime_types::polkadot_parachain_primitives::primitives::Id; - pub type Memo = ::std::vec::Vec<::core::primitive::u8>; + pub type Memo = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; } - impl ::subxt::blocks::StaticExtrinsic for AddMemo { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for AddMemo { const PALLET: &'static str = "Crowdloan"; const CALL: &'static str = "add_memo"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Poke the fund into `NewRaise`"] - #[doc = ""] - #[doc = "Origin must be Signed, and the fund has non-zero raise."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::poke`]."] pub struct Poke { pub index: poke::Index, } @@ -41093,23 +38928,25 @@ pub mod api { use super::runtime_types; pub type Index = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::blocks::StaticExtrinsic for Poke { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Poke { const PALLET: &'static str = "Crowdloan"; const CALL: &'static str = "poke"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contribute your entire balance to a crowd sale. This will transfer the entire balance of"] - #[doc = "a user over to fund a parachain slot. It will be withdrawable when the crowdloan has"] - #[doc = "ended and the funds are unused."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::contribute_all`]."] pub struct ContributeAll { #[codec(compact)] pub index: contribute_all::Index, @@ -41121,18 +38958,14 @@ pub mod api { pub type Signature = ::core::option::Option; } - impl ::subxt::blocks::StaticExtrinsic for ContributeAll { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ContributeAll { const PALLET: &'static str = "Crowdloan"; const CALL: &'static str = "contribute_all"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Create a new crowdloaning campaign for a parachain slot with the given lease period"] - #[doc = "range."] - #[doc = ""] - #[doc = "This applies a lock to your parachain configuration, ensuring that it cannot be changed"] - #[doc = "by the parachain manager."] + #[doc = "See [`Pallet::create`]."] pub fn create( &self, index: types::create::Index, @@ -41141,8 +38974,8 @@ pub mod api { last_period: types::create::LastPeriod, end: types::create::End, verifier: types::create::Verifier, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Crowdloan", "create", types::Create { @@ -41160,15 +38993,14 @@ pub mod api { ], ) } - #[doc = "Contribute to a crowd sale. This will transfer some balance over to fund a parachain"] - #[doc = "slot. It will be withdrawable when the crowdloan has ended and the funds are unused."] + #[doc = "See [`Pallet::contribute`]."] pub fn contribute( &self, index: types::contribute::Index, value: types::contribute::Value, signature: types::contribute::Signature, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Crowdloan", "contribute", types::Contribute { @@ -41184,29 +39016,13 @@ pub mod api { ], ) } - #[doc = "Withdraw full balance of a specific contributor."] - #[doc = ""] - #[doc = "Origin must be signed, but can come from anyone."] - #[doc = ""] - #[doc = "The fund must be either in, or ready for, retirement. For a fund to be *in* retirement,"] - #[doc = "then the retirement flag must be set. For a fund to be ready for retirement, then:"] - #[doc = "- it must not already be in retirement;"] - #[doc = "- the amount of raised funds must be bigger than the _free_ balance of the account;"] - #[doc = "- and either:"] - #[doc = " - the block number must be at least `end`; or"] - #[doc = " - the current lease period must be greater than the fund's `last_period`."] - #[doc = ""] - #[doc = "In this case, the fund's retirement flag is set and its `end` is reset to the current"] - #[doc = "block number."] - #[doc = ""] - #[doc = "- `who`: The account whose contribution should be withdrawn."] - #[doc = "- `index`: The parachain to whose crowdloan the contribution was made."] + #[doc = "See [`Pallet::withdraw`]."] pub fn withdraw( &self, who: types::withdraw::Who, index: types::withdraw::Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Crowdloan", "withdraw", types::Withdraw { who, index }, @@ -41217,16 +39033,12 @@ pub mod api { ], ) } - #[doc = "Automatically refund contributors of an ended crowdloan."] - #[doc = "Due to weight restrictions, this function may need to be called multiple"] - #[doc = "times to fully refund all users. We will refund `RemoveKeysLimit` users at a time."] - #[doc = ""] - #[doc = "Origin must be signed, but can come from anyone."] + #[doc = "See [`Pallet::refund`]."] pub fn refund( &self, index: types::refund::Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Crowdloan", "refund", types::Refund { index }, @@ -41238,12 +39050,12 @@ pub mod api { ], ) } - #[doc = "Remove a fund after the retirement period has ended and all funds have been returned."] + #[doc = "See [`Pallet::dissolve`]."] pub fn dissolve( &self, index: types::dissolve::Index, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Crowdloan", "dissolve", types::Dissolve { index }, @@ -41255,9 +39067,7 @@ pub mod api { ], ) } - #[doc = "Edit the configuration for an in-progress crowdloan."] - #[doc = ""] - #[doc = "Can only be called by Root origin."] + #[doc = "See [`Pallet::edit`]."] pub fn edit( &self, index: types::edit::Index, @@ -41266,8 +39076,8 @@ pub mod api { last_period: types::edit::LastPeriod, end: types::edit::End, verifier: types::edit::Verifier, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Crowdloan", "edit", types::Edit { @@ -41286,15 +39096,13 @@ pub mod api { ], ) } - #[doc = "Add an optional memo to an existing crowdloan contribution."] - #[doc = ""] - #[doc = "Origin must be Signed, and the user must have contributed to the crowdloan."] + #[doc = "See [`Pallet::add_memo`]."] pub fn add_memo( &self, index: types::add_memo::Index, memo: types::add_memo::Memo, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Crowdloan", "add_memo", types::AddMemo { index, memo }, @@ -41306,11 +39114,12 @@ pub mod api { ], ) } - #[doc = "Poke the fund into `NewRaise`"] - #[doc = ""] - #[doc = "Origin must be Signed, and the fund has non-zero raise."] - pub fn poke(&self, index: types::poke::Index) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + #[doc = "See [`Pallet::poke`]."] + pub fn poke( + &self, + index: types::poke::Index, + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Crowdloan", "poke", types::Poke { index }, @@ -41322,15 +39131,13 @@ pub mod api { ], ) } - #[doc = "Contribute your entire balance to a crowd sale. This will transfer the entire balance of"] - #[doc = "a user over to fund a parachain slot. It will be withdrawable when the crowdloan has"] - #[doc = "ended and the funds are unused."] + #[doc = "See [`Pallet::contribute_all`]."] pub fn contribute_all( &self, index: types::contribute_all::Index, signature: types::contribute_all::Signature, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Crowdloan", "contribute_all", types::ContributeAll { index, signature }, @@ -41348,15 +39155,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Create a new crowdloaning campaign."] pub struct Created { pub para_id: created::ParaId, @@ -41365,20 +39172,20 @@ pub mod api { use super::runtime_types; pub type ParaId = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::events::StaticEvent for Created { + impl ::subxt::ext::subxt_core::events::StaticEvent for Created { const PALLET: &'static str = "Crowdloan"; const EVENT: &'static str = "Created"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Contributed to a crowd sale."] pub struct Contributed { pub who: contributed::Who, @@ -41387,24 +39194,24 @@ pub mod api { } pub mod contributed { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type FundIndex = runtime_types::polkadot_parachain_primitives::primitives::Id; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Contributed { + impl ::subxt::ext::subxt_core::events::StaticEvent for Contributed { const PALLET: &'static str = "Crowdloan"; const EVENT: &'static str = "Contributed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Withdrew full balance of a contributor."] pub struct Withdrew { pub who: withdrew::Who, @@ -41413,24 +39220,24 @@ pub mod api { } pub mod withdrew { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type FundIndex = runtime_types::polkadot_parachain_primitives::primitives::Id; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Withdrew { + impl ::subxt::ext::subxt_core::events::StaticEvent for Withdrew { const PALLET: &'static str = "Crowdloan"; const EVENT: &'static str = "Withdrew"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The loans in a fund have been partially dissolved, i.e. there are some left"] #[doc = "over child keys that still need to be killed."] pub struct PartiallyRefunded { @@ -41440,20 +39247,20 @@ pub mod api { use super::runtime_types; pub type ParaId = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::events::StaticEvent for PartiallyRefunded { + impl ::subxt::ext::subxt_core::events::StaticEvent for PartiallyRefunded { const PALLET: &'static str = "Crowdloan"; const EVENT: &'static str = "PartiallyRefunded"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "All loans in a fund have been refunded."] pub struct AllRefunded { pub para_id: all_refunded::ParaId, @@ -41462,20 +39269,20 @@ pub mod api { use super::runtime_types; pub type ParaId = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::events::StaticEvent for AllRefunded { + impl ::subxt::ext::subxt_core::events::StaticEvent for AllRefunded { const PALLET: &'static str = "Crowdloan"; const EVENT: &'static str = "AllRefunded"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Fund is dissolved."] pub struct Dissolved { pub para_id: dissolved::ParaId, @@ -41484,20 +39291,20 @@ pub mod api { use super::runtime_types; pub type ParaId = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::events::StaticEvent for Dissolved { + impl ::subxt::ext::subxt_core::events::StaticEvent for Dissolved { const PALLET: &'static str = "Crowdloan"; const EVENT: &'static str = "Dissolved"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The result of trying to submit a new bid to the Slots pallet."] pub struct HandleBidResult { pub para_id: handle_bid_result::ParaId, @@ -41509,20 +39316,20 @@ pub mod api { pub type Result = ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>; } - impl ::subxt::events::StaticEvent for HandleBidResult { + impl ::subxt::ext::subxt_core::events::StaticEvent for HandleBidResult { const PALLET: &'static str = "Crowdloan"; const EVENT: &'static str = "HandleBidResult"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The configuration to a crowdloan has been edited."] pub struct Edited { pub para_id: edited::ParaId, @@ -41531,20 +39338,20 @@ pub mod api { use super::runtime_types; pub type ParaId = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::events::StaticEvent for Edited { + impl ::subxt::ext::subxt_core::events::StaticEvent for Edited { const PALLET: &'static str = "Crowdloan"; const EVENT: &'static str = "Edited"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A memo has been updated."] pub struct MemoUpdated { pub who: memo_updated::Who, @@ -41553,24 +39360,24 @@ pub mod api { } pub mod memo_updated { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type ParaId = runtime_types::polkadot_parachain_primitives::primitives::Id; - pub type Memo = ::std::vec::Vec<::core::primitive::u8>; + pub type Memo = ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; } - impl ::subxt::events::StaticEvent for MemoUpdated { + impl ::subxt::ext::subxt_core::events::StaticEvent for MemoUpdated { const PALLET: &'static str = "Crowdloan"; const EVENT: &'static str = "MemoUpdated"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A parachain has been moved to `NewRaise`"] pub struct AddedToNewRaise { pub para_id: added_to_new_raise::ParaId, @@ -41579,7 +39386,7 @@ pub mod api { use super::runtime_types; pub type ParaId = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::events::StaticEvent for AddedToNewRaise { + impl ::subxt::ext::subxt_core::events::StaticEvent for AddedToNewRaise { const PALLET: &'static str = "Crowdloan"; const EVENT: &'static str = "AddedToNewRaise"; } @@ -41591,7 +39398,7 @@ pub mod api { pub mod funds { use super::runtime_types; pub type Funds = runtime_types::polkadot_runtime_common::crowdloan::FundInfo< - ::subxt::utils::AccountId32, + ::subxt::ext::subxt_core::utils::AccountId32, ::core::primitive::u128, ::core::primitive::u32, ::core::primitive::u32, @@ -41600,7 +39407,7 @@ pub mod api { } pub mod new_raise { use super::runtime_types; - pub type NewRaise = ::std::vec::Vec< + pub type NewRaise = ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_parachain_primitives::primitives::Id, >; } @@ -41618,14 +39425,14 @@ pub mod api { #[doc = " Info on all of the funds."] pub fn funds_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::funds::Funds, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Crowdloan", "Funds", (), @@ -41640,18 +39447,22 @@ pub mod api { #[doc = " Info on all of the funds."] pub fn funds( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::funds::Param0, + >, types::funds::Funds, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Crowdloan", "Funds", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 191u8, 255u8, 37u8, 49u8, 246u8, 246u8, 168u8, 178u8, 73u8, 238u8, 49u8, 76u8, 66u8, 246u8, 207u8, 12u8, 76u8, 233u8, 31u8, 218u8, 132u8, @@ -41664,14 +39475,14 @@ pub mod api { #[doc = " in order to determine which funds should submit new or updated bids."] pub fn new_raise( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::new_raise::NewRaise, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Crowdloan", "NewRaise", (), @@ -41686,14 +39497,14 @@ pub mod api { #[doc = " The number of auctions that have entered into their ending period so far."] pub fn endings_count( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::endings_count::EndingsCount, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Crowdloan", "EndingsCount", (), @@ -41707,14 +39518,14 @@ pub mod api { #[doc = " Tracker for the next available fund index"] pub fn next_fund_index( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::next_fund_index::NextFundIndex, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Crowdloan", "NextFundIndex", (), @@ -41736,9 +39547,10 @@ pub mod api { #[doc = " `PalletId(*b\"py/cfund\")`"] pub fn pallet_id( &self, - ) -> ::subxt::constants::Address - { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address< + runtime_types::frame_support::PalletId, + > { + ::subxt::ext::subxt_core::constants::Address::new_static( "Crowdloan", "PalletId", [ @@ -41752,8 +39564,9 @@ pub mod api { #[doc = " at least `ExistentialDeposit`."] pub fn min_contribution( &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u128> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Crowdloan", "MinContribution", [ @@ -41766,8 +39579,9 @@ pub mod api { #[doc = " Max number of storage keys to remove per extrinsic call."] pub fn remove_keys_limit( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "Crowdloan", "RemoveKeysLimit", [ @@ -41781,201 +39595,6 @@ pub mod api { } } } - pub mod coretime { - use super::root_mod; - use super::runtime_types; - #[doc = "The `Error` enum of this pallet."] - pub type Error = runtime_types::polkadot_runtime_parachains::coretime::pallet::Error; - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub type Call = runtime_types::polkadot_runtime_parachains::coretime::pallet::Call; - pub mod calls { - use super::root_mod; - use super::runtime_types; - type DispatchError = runtime_types::sp_runtime::DispatchError; - pub mod types { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct RequestCoreCount { - pub count: request_core_count::Count, - } - pub mod request_core_count { - use super::runtime_types; - pub type Count = ::core::primitive::u16; - } - impl ::subxt::blocks::StaticExtrinsic for RequestCoreCount { - const PALLET: &'static str = "Coretime"; - const CALL: &'static str = "request_core_count"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Receive instructions from the `ExternalBrokerOrigin`, detailing how a specific core is"] - #[doc = "to be used."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "-`origin`: The `ExternalBrokerOrigin`, assumed to be the Broker system parachain."] - #[doc = "-`core`: The core that should be scheduled."] - #[doc = "-`begin`: The starting blockheight of the instruction."] - #[doc = "-`assignment`: How the blockspace should be utilised."] - #[doc = "-`end_hint`: An optional hint as to when this particular set of instructions will end."] - pub struct AssignCore { - pub core: assign_core::Core, - pub begin: assign_core::Begin, - pub assignment: assign_core::Assignment, - pub end_hint: assign_core::EndHint, - } - pub mod assign_core { - use super::runtime_types; - pub type Core = ::core::primitive::u16; - pub type Begin = ::core::primitive::u32; - pub type Assignment = ::std::vec::Vec<( - runtime_types::pallet_broker::coretime_interface::CoreAssignment, - runtime_types::polkadot_runtime_parachains::assigner_coretime::PartsOf57600, - )>; - pub type EndHint = ::core::option::Option<::core::primitive::u32>; - } - impl ::subxt::blocks::StaticExtrinsic for AssignCore { - const PALLET: &'static str = "Coretime"; - const CALL: &'static str = "assign_core"; - } - } - pub struct TransactionApi; - impl TransactionApi { - pub fn request_core_count( - &self, - count: types::request_core_count::Count, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Coretime", - "request_core_count", - types::RequestCoreCount { count }, - [ - 8u8, 225u8, 74u8, 162u8, 188u8, 3u8, 191u8, 45u8, 167u8, 21u8, 227u8, - 200u8, 65u8, 221u8, 49u8, 212u8, 12u8, 229u8, 160u8, 178u8, 136u8, - 13u8, 131u8, 42u8, 220u8, 3u8, 151u8, 241u8, 210u8, 158u8, 218u8, - 217u8, - ], - ) - } - #[doc = "Receive instructions from the `ExternalBrokerOrigin`, detailing how a specific core is"] - #[doc = "to be used."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "-`origin`: The `ExternalBrokerOrigin`, assumed to be the Broker system parachain."] - #[doc = "-`core`: The core that should be scheduled."] - #[doc = "-`begin`: The starting blockheight of the instruction."] - #[doc = "-`assignment`: How the blockspace should be utilised."] - #[doc = "-`end_hint`: An optional hint as to when this particular set of instructions will end."] - pub fn assign_core( - &self, - core: types::assign_core::Core, - begin: types::assign_core::Begin, - assignment: types::assign_core::Assignment, - end_hint: types::assign_core::EndHint, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Coretime", - "assign_core", - types::AssignCore { - core, - begin, - assignment, - end_hint, - }, - [ - 113u8, 133u8, 153u8, 202u8, 209u8, 53u8, 168u8, 214u8, 153u8, 232u8, - 170u8, 35u8, 63u8, 87u8, 5u8, 108u8, 188u8, 55u8, 111u8, 55u8, 22u8, - 1u8, 190u8, 216u8, 233u8, 185u8, 135u8, 172u8, 15u8, 254u8, 91u8, 92u8, - ], - ) - } - } - } - #[doc = "The `Event` enum of this pallet"] - pub type Event = runtime_types::polkadot_runtime_parachains::coretime::pallet::Event; - pub mod events { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The broker chain has asked for revenue information for a specific block."] - pub struct RevenueInfoRequested { - pub when: revenue_info_requested::When, - } - pub mod revenue_info_requested { - use super::runtime_types; - pub type When = ::core::primitive::u32; - } - impl ::subxt::events::StaticEvent for RevenueInfoRequested { - const PALLET: &'static str = "Coretime"; - const EVENT: &'static str = "RevenueInfoRequested"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A core has received a new assignment from the broker chain."] - pub struct CoreAssigned { - pub core: core_assigned::Core, - } - pub mod core_assigned { - use super::runtime_types; - pub type Core = runtime_types::polkadot_primitives::v6::CoreIndex; - } - impl ::subxt::events::StaticEvent for CoreAssigned { - const PALLET: &'static str = "Coretime"; - const EVENT: &'static str = "CoreAssigned"; - } - } - pub mod constants { - use super::runtime_types; - pub struct ConstantsApi; - impl ConstantsApi { - #[doc = " The ParaId of the broker system parachain."] - pub fn broker_id(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "Coretime", - "BrokerId", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } - } - } - } pub mod xcm_pallet { use super::root_mod; use super::runtime_types; @@ -41990,150 +39609,121 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::send`]."] pub struct Send { - pub dest: ::std::boxed::Box, - pub message: ::std::boxed::Box, + pub dest: ::subxt::ext::subxt_core::alloc::boxed::Box, + pub message: ::subxt::ext::subxt_core::alloc::boxed::Box, } pub mod send { use super::runtime_types; - pub type Dest = runtime_types::xcm::VersionedLocation; - pub type Message = runtime_types::xcm::VersionedXcm; + pub type Dest = runtime_types::xcm::VersionedMultiLocation; + pub type Message = runtime_types::xcm::VersionedXcm1; } - impl ::subxt::blocks::StaticExtrinsic for Send { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Send { const PALLET: &'static str = "XcmPallet"; const CALL: &'static str = "send"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Teleport some assets from the local chain to some destination chain."] - #[doc = ""] - #[doc = "**This function is deprecated: Use `limited_teleport_assets` instead.**"] - #[doc = ""] - #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] - #[doc = "index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,"] - #[doc = "with all fees taken as needed from the asset."] - #[doc = ""] - #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] - #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] - #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] - #[doc = " relay to parachain."] - #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] - #[doc = " generally be an `AccountId32` value."] - #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] - #[doc = " fee on the `dest` chain."] - #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] - #[doc = " fees."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::teleport_assets`]."] pub struct TeleportAssets { - pub dest: ::std::boxed::Box, - pub beneficiary: ::std::boxed::Box, - pub assets: ::std::boxed::Box, + pub dest: ::subxt::ext::subxt_core::alloc::boxed::Box, + pub beneficiary: + ::subxt::ext::subxt_core::alloc::boxed::Box, + pub assets: + ::subxt::ext::subxt_core::alloc::boxed::Box, pub fee_asset_item: teleport_assets::FeeAssetItem, } pub mod teleport_assets { use super::runtime_types; - pub type Dest = runtime_types::xcm::VersionedLocation; - pub type Beneficiary = runtime_types::xcm::VersionedLocation; - pub type Assets = runtime_types::xcm::VersionedAssets; + pub type Dest = runtime_types::xcm::VersionedMultiLocation; + pub type Beneficiary = runtime_types::xcm::VersionedMultiLocation; + pub type Assets = runtime_types::xcm::VersionedMultiAssets; pub type FeeAssetItem = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for TeleportAssets { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for TeleportAssets { const PALLET: &'static str = "XcmPallet"; const CALL: &'static str = "teleport_assets"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] - #[doc = "destination or remote reserve."] - #[doc = ""] - #[doc = "`assets` must have same reserve location and may not be teleportable to `dest`."] - #[doc = " - `assets` have local reserve: transfer assets to sovereign account of destination"] - #[doc = " chain and forward a notification XCM to `dest` to mint and deposit reserve-based"] - #[doc = " assets to `beneficiary`."] - #[doc = " - `assets` have destination reserve: burn local assets and forward a notification to"] - #[doc = " `dest` chain to withdraw the reserve assets from this chain's sovereign account and"] - #[doc = " deposit them to `beneficiary`."] - #[doc = " - `assets` have remote reserve: burn local assets, forward XCM to reserve chain to move"] - #[doc = " reserves from this chain's SA to `dest` chain's SA, and forward another XCM to `dest`"] - #[doc = " to mint and deposit reserve-based assets to `beneficiary`."] - #[doc = ""] - #[doc = "**This function is deprecated: Use `limited_reserve_transfer_assets` instead.**"] - #[doc = ""] - #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] - #[doc = "index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,"] - #[doc = "with all fees taken as needed from the asset."] - #[doc = ""] - #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] - #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] - #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] - #[doc = " relay to parachain."] - #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] - #[doc = " generally be an `AccountId32` value."] - #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] - #[doc = " fee on the `dest` (and possibly reserve) chains."] - #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] - #[doc = " fees."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::reserve_transfer_assets`]."] pub struct ReserveTransferAssets { - pub dest: ::std::boxed::Box, - pub beneficiary: ::std::boxed::Box, - pub assets: ::std::boxed::Box, + pub dest: + ::subxt::ext::subxt_core::alloc::boxed::Box, + pub beneficiary: ::subxt::ext::subxt_core::alloc::boxed::Box< + reserve_transfer_assets::Beneficiary, + >, + pub assets: ::subxt::ext::subxt_core::alloc::boxed::Box< + reserve_transfer_assets::Assets, + >, pub fee_asset_item: reserve_transfer_assets::FeeAssetItem, } pub mod reserve_transfer_assets { use super::runtime_types; - pub type Dest = runtime_types::xcm::VersionedLocation; - pub type Beneficiary = runtime_types::xcm::VersionedLocation; - pub type Assets = runtime_types::xcm::VersionedAssets; + pub type Dest = runtime_types::xcm::VersionedMultiLocation; + pub type Beneficiary = runtime_types::xcm::VersionedMultiLocation; + pub type Assets = runtime_types::xcm::VersionedMultiAssets; pub type FeeAssetItem = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for ReserveTransferAssets { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ReserveTransferAssets { const PALLET: &'static str = "XcmPallet"; const CALL: &'static str = "reserve_transfer_assets"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Execute an XCM message from a local, signed, origin."] - #[doc = ""] - #[doc = "An event is deposited indicating whether `msg` could be executed completely or only"] - #[doc = "partially."] - #[doc = ""] - #[doc = "No more than `max_weight` will be used in its attempted execution. If this is less than"] - #[doc = "the maximum amount of weight that the message could take to be executed, then no"] - #[doc = "execution attempt will be made."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::execute`]."] pub struct Execute { - pub message: ::std::boxed::Box, + pub message: ::subxt::ext::subxt_core::alloc::boxed::Box, pub max_weight: execute::MaxWeight, } pub mod execute { @@ -42141,54 +39731,55 @@ pub mod api { pub type Message = runtime_types::xcm::VersionedXcm2; pub type MaxWeight = runtime_types::sp_weights::weight_v2::Weight; } - impl ::subxt::blocks::StaticExtrinsic for Execute { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Execute { const PALLET: &'static str = "XcmPallet"; const CALL: &'static str = "execute"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Extoll that a particular destination can be communicated with through a particular"] - #[doc = "version of XCM."] - #[doc = ""] - #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] - #[doc = "- `location`: The destination that is being described."] - #[doc = "- `xcm_version`: The latest version of XCM that `location` supports."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_xcm_version`]."] pub struct ForceXcmVersion { - pub location: ::std::boxed::Box, + pub location: + ::subxt::ext::subxt_core::alloc::boxed::Box, pub version: force_xcm_version::Version, } pub mod force_xcm_version { use super::runtime_types; - pub type Location = runtime_types::staging_xcm::v4::location::Location; + pub type Location = + runtime_types::staging_xcm::v3::multilocation::MultiLocation; pub type Version = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for ForceXcmVersion { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceXcmVersion { const PALLET: &'static str = "XcmPallet"; const CALL: &'static str = "force_xcm_version"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set a safe XCM version (the version that XCM should be encoded with if the most recent"] - #[doc = "version a destination can accept is unknown)."] - #[doc = ""] - #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] - #[doc = "- `maybe_xcm_version`: The default XCM encoding version, or `None` to disable."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_default_xcm_version`]."] pub struct ForceDefaultXcmVersion { pub maybe_xcm_version: force_default_xcm_version::MaybeXcmVersion, } @@ -42196,183 +39787,160 @@ pub mod api { use super::runtime_types; pub type MaybeXcmVersion = ::core::option::Option<::core::primitive::u32>; } - impl ::subxt::blocks::StaticExtrinsic for ForceDefaultXcmVersion { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceDefaultXcmVersion { const PALLET: &'static str = "XcmPallet"; const CALL: &'static str = "force_default_xcm_version"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Ask a location to notify us regarding their XCM version and any changes to it."] - #[doc = ""] - #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] - #[doc = "- `location`: The location to which we should subscribe for XCM version notifications."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_subscribe_version_notify`]."] pub struct ForceSubscribeVersionNotify { - pub location: ::std::boxed::Box, + pub location: ::subxt::ext::subxt_core::alloc::boxed::Box< + force_subscribe_version_notify::Location, + >, } pub mod force_subscribe_version_notify { use super::runtime_types; - pub type Location = runtime_types::xcm::VersionedLocation; + pub type Location = runtime_types::xcm::VersionedMultiLocation; } - impl ::subxt::blocks::StaticExtrinsic for ForceSubscribeVersionNotify { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceSubscribeVersionNotify { const PALLET: &'static str = "XcmPallet"; const CALL: &'static str = "force_subscribe_version_notify"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Require that a particular destination should no longer notify us regarding any XCM"] - #[doc = "version changes."] - #[doc = ""] - #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] - #[doc = "- `location`: The location to which we are currently subscribed for XCM version"] - #[doc = " notifications which we no longer desire."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_unsubscribe_version_notify`]."] pub struct ForceUnsubscribeVersionNotify { - pub location: ::std::boxed::Box, + pub location: ::subxt::ext::subxt_core::alloc::boxed::Box< + force_unsubscribe_version_notify::Location, + >, } pub mod force_unsubscribe_version_notify { use super::runtime_types; - pub type Location = runtime_types::xcm::VersionedLocation; + pub type Location = runtime_types::xcm::VersionedMultiLocation; } - impl ::subxt::blocks::StaticExtrinsic for ForceUnsubscribeVersionNotify { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceUnsubscribeVersionNotify { const PALLET: &'static str = "XcmPallet"; const CALL: &'static str = "force_unsubscribe_version_notify"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] - #[doc = "destination or remote reserve."] - #[doc = ""] - #[doc = "`assets` must have same reserve location and may not be teleportable to `dest`."] - #[doc = " - `assets` have local reserve: transfer assets to sovereign account of destination"] - #[doc = " chain and forward a notification XCM to `dest` to mint and deposit reserve-based"] - #[doc = " assets to `beneficiary`."] - #[doc = " - `assets` have destination reserve: burn local assets and forward a notification to"] - #[doc = " `dest` chain to withdraw the reserve assets from this chain's sovereign account and"] - #[doc = " deposit them to `beneficiary`."] - #[doc = " - `assets` have remote reserve: burn local assets, forward XCM to reserve chain to move"] - #[doc = " reserves from this chain's SA to `dest` chain's SA, and forward another XCM to `dest`"] - #[doc = " to mint and deposit reserve-based assets to `beneficiary`."] - #[doc = ""] - #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] - #[doc = "index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight"] - #[doc = "is needed than `weight_limit`, then the operation will fail and the assets send may be"] - #[doc = "at risk."] - #[doc = ""] - #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] - #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] - #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] - #[doc = " relay to parachain."] - #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] - #[doc = " generally be an `AccountId32` value."] - #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] - #[doc = " fee on the `dest` (and possibly reserve) chains."] - #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] - #[doc = " fees."] - #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::limited_reserve_transfer_assets`]."] pub struct LimitedReserveTransferAssets { - pub dest: ::std::boxed::Box, - pub beneficiary: - ::std::boxed::Box, - pub assets: ::std::boxed::Box, + pub dest: ::subxt::ext::subxt_core::alloc::boxed::Box< + limited_reserve_transfer_assets::Dest, + >, + pub beneficiary: ::subxt::ext::subxt_core::alloc::boxed::Box< + limited_reserve_transfer_assets::Beneficiary, + >, + pub assets: ::subxt::ext::subxt_core::alloc::boxed::Box< + limited_reserve_transfer_assets::Assets, + >, pub fee_asset_item: limited_reserve_transfer_assets::FeeAssetItem, pub weight_limit: limited_reserve_transfer_assets::WeightLimit, } pub mod limited_reserve_transfer_assets { use super::runtime_types; - pub type Dest = runtime_types::xcm::VersionedLocation; - pub type Beneficiary = runtime_types::xcm::VersionedLocation; - pub type Assets = runtime_types::xcm::VersionedAssets; + pub type Dest = runtime_types::xcm::VersionedMultiLocation; + pub type Beneficiary = runtime_types::xcm::VersionedMultiLocation; + pub type Assets = runtime_types::xcm::VersionedMultiAssets; pub type FeeAssetItem = ::core::primitive::u32; pub type WeightLimit = runtime_types::xcm::v3::WeightLimit; } - impl ::subxt::blocks::StaticExtrinsic for LimitedReserveTransferAssets { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for LimitedReserveTransferAssets { const PALLET: &'static str = "XcmPallet"; const CALL: &'static str = "limited_reserve_transfer_assets"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Teleport some assets from the local chain to some destination chain."] - #[doc = ""] - #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] - #[doc = "index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight"] - #[doc = "is needed than `weight_limit`, then the operation will fail and the assets send may be"] - #[doc = "at risk."] - #[doc = ""] - #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] - #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] - #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] - #[doc = " relay to parachain."] - #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] - #[doc = " generally be an `AccountId32` value."] - #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] - #[doc = " fee on the `dest` chain."] - #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] - #[doc = " fees."] - #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::limited_teleport_assets`]."] pub struct LimitedTeleportAssets { - pub dest: ::std::boxed::Box, - pub beneficiary: ::std::boxed::Box, - pub assets: ::std::boxed::Box, + pub dest: + ::subxt::ext::subxt_core::alloc::boxed::Box, + pub beneficiary: ::subxt::ext::subxt_core::alloc::boxed::Box< + limited_teleport_assets::Beneficiary, + >, + pub assets: ::subxt::ext::subxt_core::alloc::boxed::Box< + limited_teleport_assets::Assets, + >, pub fee_asset_item: limited_teleport_assets::FeeAssetItem, pub weight_limit: limited_teleport_assets::WeightLimit, } pub mod limited_teleport_assets { use super::runtime_types; - pub type Dest = runtime_types::xcm::VersionedLocation; - pub type Beneficiary = runtime_types::xcm::VersionedLocation; - pub type Assets = runtime_types::xcm::VersionedAssets; + pub type Dest = runtime_types::xcm::VersionedMultiLocation; + pub type Beneficiary = runtime_types::xcm::VersionedMultiLocation; + pub type Assets = runtime_types::xcm::VersionedMultiAssets; pub type FeeAssetItem = ::core::primitive::u32; pub type WeightLimit = runtime_types::xcm::v3::WeightLimit; } - impl ::subxt::blocks::StaticExtrinsic for LimitedTeleportAssets { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for LimitedTeleportAssets { const PALLET: &'static str = "XcmPallet"; const CALL: &'static str = "limited_teleport_assets"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set or unset the global suspension state of the XCM executor."] - #[doc = ""] - #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] - #[doc = "- `suspended`: `true` to suspend, `false` to resume."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_suspension`]."] pub struct ForceSuspension { pub suspended: force_suspension::Suspended, } @@ -42380,282 +39948,133 @@ pub mod api { use super::runtime_types; pub type Suspended = ::core::primitive::bool; } - impl ::subxt::blocks::StaticExtrinsic for ForceSuspension { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceSuspension { const PALLET: &'static str = "XcmPallet"; const CALL: &'static str = "force_suspension"; } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] - #[doc = "destination or remote reserve, or through teleports."] - #[doc = ""] - #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] - #[doc = "index `fee_asset_item` (hence referred to as `fees`), up to enough to pay for"] - #[doc = "`weight_limit` of weight. If more weight is needed than `weight_limit`, then the"] - #[doc = "operation will fail and the assets sent may be at risk."] - #[doc = ""] - #[doc = "`assets` (excluding `fees`) must have same reserve location or otherwise be teleportable"] - #[doc = "to `dest`, no limitations imposed on `fees`."] - #[doc = " - for local reserve: transfer assets to sovereign account of destination chain and"] - #[doc = " forward a notification XCM to `dest` to mint and deposit reserve-based assets to"] - #[doc = " `beneficiary`."] - #[doc = " - for destination reserve: burn local assets and forward a notification to `dest` chain"] - #[doc = " to withdraw the reserve assets from this chain's sovereign account and deposit them"] - #[doc = " to `beneficiary`."] - #[doc = " - for remote reserve: burn local assets, forward XCM to reserve chain to move reserves"] - #[doc = " from this chain's SA to `dest` chain's SA, and forward another XCM to `dest` to mint"] - #[doc = " and deposit reserve-based assets to `beneficiary`."] - #[doc = " - for teleports: burn local assets and forward XCM to `dest` chain to mint/teleport"] - #[doc = " assets and deposit them to `beneficiary`."] - #[doc = ""] - #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] - #[doc = "- `dest`: Destination context for the assets. Will typically be `X2(Parent,"] - #[doc = " Parachain(..))` to send from parachain to parachain, or `X1(Parachain(..))` to send"] - #[doc = " from relay to parachain."] - #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] - #[doc = " generally be an `AccountId32` value."] - #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] - #[doc = " fee on the `dest` (and possibly reserve) chains."] - #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] - #[doc = " fees."] - #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] - pub struct TransferAssets { - pub dest: ::std::boxed::Box, - pub beneficiary: ::std::boxed::Box, - pub assets: ::std::boxed::Box, - pub fee_asset_item: transfer_assets::FeeAssetItem, - pub weight_limit: transfer_assets::WeightLimit, - } - pub mod transfer_assets { - use super::runtime_types; - pub type Dest = runtime_types::xcm::VersionedLocation; - pub type Beneficiary = runtime_types::xcm::VersionedLocation; - pub type Assets = runtime_types::xcm::VersionedAssets; - pub type FeeAssetItem = ::core::primitive::u32; - pub type WeightLimit = runtime_types::xcm::v3::WeightLimit; - } - impl ::subxt::blocks::StaticExtrinsic for TransferAssets { - const PALLET: &'static str = "XcmPallet"; - const CALL: &'static str = "transfer_assets"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Claims assets trapped on this pallet because of leftover assets during XCM execution."] - #[doc = ""] - #[doc = "- `origin`: Anyone can call this extrinsic."] - #[doc = "- `assets`: The exact assets that were trapped. Use the version to specify what version"] - #[doc = "was the latest when they were trapped."] - #[doc = "- `beneficiary`: The location/account where the claimed assets will be deposited."] - pub struct ClaimAssets { - pub assets: ::std::boxed::Box, - pub beneficiary: ::std::boxed::Box, - } - pub mod claim_assets { - use super::runtime_types; - pub type Assets = runtime_types::xcm::VersionedAssets; - pub type Beneficiary = runtime_types::xcm::VersionedLocation; - } - impl ::subxt::blocks::StaticExtrinsic for ClaimAssets { - const PALLET: &'static str = "XcmPallet"; - const CALL: &'static str = "claim_assets"; - } } pub struct TransactionApi; impl TransactionApi { + #[doc = "See [`Pallet::send`]."] pub fn send( &self, dest: types::send::Dest, message: types::send::Message, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "XcmPallet", "send", types::Send { - dest: ::std::boxed::Box::new(dest), - message: ::std::boxed::Box::new(message), + dest: ::subxt::ext::subxt_core::alloc::boxed::Box::new(dest), + message: ::subxt::ext::subxt_core::alloc::boxed::Box::new(message), }, [ - 47u8, 63u8, 128u8, 176u8, 10u8, 137u8, 124u8, 238u8, 155u8, 37u8, - 193u8, 160u8, 83u8, 240u8, 21u8, 179u8, 169u8, 131u8, 27u8, 104u8, - 195u8, 208u8, 123u8, 14u8, 221u8, 12u8, 45u8, 81u8, 148u8, 76u8, 17u8, - 100u8, + 147u8, 255u8, 86u8, 82u8, 17u8, 159u8, 225u8, 145u8, 220u8, 89u8, 71u8, + 23u8, 193u8, 249u8, 12u8, 70u8, 19u8, 140u8, 232u8, 97u8, 12u8, 220u8, + 113u8, 65u8, 4u8, 255u8, 138u8, 10u8, 231u8, 122u8, 67u8, 105u8, ], ) } - #[doc = "Teleport some assets from the local chain to some destination chain."] - #[doc = ""] - #[doc = "**This function is deprecated: Use `limited_teleport_assets` instead.**"] - #[doc = ""] - #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] - #[doc = "index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,"] - #[doc = "with all fees taken as needed from the asset."] - #[doc = ""] - #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] - #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] - #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] - #[doc = " relay to parachain."] - #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] - #[doc = " generally be an `AccountId32` value."] - #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] - #[doc = " fee on the `dest` chain."] - #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] - #[doc = " fees."] + #[doc = "See [`Pallet::teleport_assets`]."] pub fn teleport_assets( &self, dest: types::teleport_assets::Dest, beneficiary: types::teleport_assets::Beneficiary, assets: types::teleport_assets::Assets, fee_asset_item: types::teleport_assets::FeeAssetItem, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "XcmPallet", "teleport_assets", types::TeleportAssets { - dest: ::std::boxed::Box::new(dest), - beneficiary: ::std::boxed::Box::new(beneficiary), - assets: ::std::boxed::Box::new(assets), + dest: ::subxt::ext::subxt_core::alloc::boxed::Box::new(dest), + beneficiary: ::subxt::ext::subxt_core::alloc::boxed::Box::new( + beneficiary, + ), + assets: ::subxt::ext::subxt_core::alloc::boxed::Box::new(assets), fee_asset_item, }, [ - 124u8, 191u8, 118u8, 61u8, 45u8, 225u8, 97u8, 83u8, 198u8, 20u8, 139u8, - 117u8, 241u8, 1u8, 19u8, 54u8, 79u8, 181u8, 131u8, 112u8, 11u8, 118u8, - 147u8, 12u8, 89u8, 156u8, 123u8, 123u8, 195u8, 45u8, 50u8, 107u8, + 56u8, 144u8, 237u8, 60u8, 157u8, 5u8, 7u8, 129u8, 41u8, 149u8, 160u8, + 100u8, 233u8, 102u8, 181u8, 140u8, 115u8, 213u8, 29u8, 132u8, 16u8, + 30u8, 23u8, 82u8, 140u8, 134u8, 37u8, 87u8, 3u8, 99u8, 172u8, 42u8, ], ) } - #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] - #[doc = "destination or remote reserve."] - #[doc = ""] - #[doc = "`assets` must have same reserve location and may not be teleportable to `dest`."] - #[doc = " - `assets` have local reserve: transfer assets to sovereign account of destination"] - #[doc = " chain and forward a notification XCM to `dest` to mint and deposit reserve-based"] - #[doc = " assets to `beneficiary`."] - #[doc = " - `assets` have destination reserve: burn local assets and forward a notification to"] - #[doc = " `dest` chain to withdraw the reserve assets from this chain's sovereign account and"] - #[doc = " deposit them to `beneficiary`."] - #[doc = " - `assets` have remote reserve: burn local assets, forward XCM to reserve chain to move"] - #[doc = " reserves from this chain's SA to `dest` chain's SA, and forward another XCM to `dest`"] - #[doc = " to mint and deposit reserve-based assets to `beneficiary`."] - #[doc = ""] - #[doc = "**This function is deprecated: Use `limited_reserve_transfer_assets` instead.**"] - #[doc = ""] - #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] - #[doc = "index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,"] - #[doc = "with all fees taken as needed from the asset."] - #[doc = ""] - #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] - #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] - #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] - #[doc = " relay to parachain."] - #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] - #[doc = " generally be an `AccountId32` value."] - #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] - #[doc = " fee on the `dest` (and possibly reserve) chains."] - #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] - #[doc = " fees."] + #[doc = "See [`Pallet::reserve_transfer_assets`]."] pub fn reserve_transfer_assets( &self, dest: types::reserve_transfer_assets::Dest, beneficiary: types::reserve_transfer_assets::Beneficiary, assets: types::reserve_transfer_assets::Assets, fee_asset_item: types::reserve_transfer_assets::FeeAssetItem, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "XcmPallet", "reserve_transfer_assets", types::ReserveTransferAssets { - dest: ::std::boxed::Box::new(dest), - beneficiary: ::std::boxed::Box::new(beneficiary), - assets: ::std::boxed::Box::new(assets), + dest: ::subxt::ext::subxt_core::alloc::boxed::Box::new(dest), + beneficiary: ::subxt::ext::subxt_core::alloc::boxed::Box::new( + beneficiary, + ), + assets: ::subxt::ext::subxt_core::alloc::boxed::Box::new(assets), fee_asset_item, }, [ - 97u8, 102u8, 230u8, 44u8, 135u8, 197u8, 43u8, 53u8, 182u8, 125u8, - 140u8, 141u8, 229u8, 73u8, 29u8, 55u8, 159u8, 104u8, 197u8, 20u8, - 124u8, 234u8, 250u8, 94u8, 133u8, 253u8, 189u8, 6u8, 216u8, 162u8, - 218u8, 89u8, + 21u8, 167u8, 44u8, 22u8, 210u8, 73u8, 148u8, 7u8, 91u8, 108u8, 148u8, + 205u8, 170u8, 243u8, 142u8, 224u8, 205u8, 119u8, 252u8, 22u8, 203u8, + 32u8, 73u8, 200u8, 178u8, 14u8, 167u8, 147u8, 166u8, 55u8, 14u8, 231u8, ], ) } - #[doc = "Execute an XCM message from a local, signed, origin."] - #[doc = ""] - #[doc = "An event is deposited indicating whether `msg` could be executed completely or only"] - #[doc = "partially."] - #[doc = ""] - #[doc = "No more than `max_weight` will be used in its attempted execution. If this is less than"] - #[doc = "the maximum amount of weight that the message could take to be executed, then no"] - #[doc = "execution attempt will be made."] + #[doc = "See [`Pallet::execute`]."] pub fn execute( &self, message: types::execute::Message, max_weight: types::execute::MaxWeight, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "XcmPallet", "execute", types::Execute { - message: ::std::boxed::Box::new(message), + message: ::subxt::ext::subxt_core::alloc::boxed::Box::new(message), max_weight, }, [ - 71u8, 109u8, 92u8, 110u8, 198u8, 150u8, 140u8, 125u8, 248u8, 236u8, - 177u8, 156u8, 198u8, 223u8, 51u8, 15u8, 52u8, 240u8, 20u8, 200u8, 68u8, - 145u8, 36u8, 156u8, 159u8, 153u8, 125u8, 48u8, 181u8, 61u8, 53u8, - 208u8, + 15u8, 97u8, 86u8, 111u8, 105u8, 116u8, 109u8, 206u8, 70u8, 8u8, 57u8, + 232u8, 133u8, 132u8, 30u8, 219u8, 34u8, 69u8, 0u8, 213u8, 98u8, 241u8, + 186u8, 93u8, 216u8, 39u8, 73u8, 24u8, 193u8, 87u8, 92u8, 31u8, ], ) } - #[doc = "Extoll that a particular destination can be communicated with through a particular"] - #[doc = "version of XCM."] - #[doc = ""] - #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] - #[doc = "- `location`: The destination that is being described."] - #[doc = "- `xcm_version`: The latest version of XCM that `location` supports."] + #[doc = "See [`Pallet::force_xcm_version`]."] pub fn force_xcm_version( &self, location: types::force_xcm_version::Location, version: types::force_xcm_version::Version, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "XcmPallet", "force_xcm_version", types::ForceXcmVersion { - location: ::std::boxed::Box::new(location), + location: ::subxt::ext::subxt_core::alloc::boxed::Box::new(location), version, }, [ - 69u8, 151u8, 198u8, 154u8, 69u8, 181u8, 41u8, 111u8, 145u8, 230u8, - 103u8, 42u8, 237u8, 91u8, 235u8, 6u8, 156u8, 65u8, 187u8, 48u8, 171u8, - 200u8, 49u8, 4u8, 9u8, 210u8, 229u8, 152u8, 187u8, 88u8, 80u8, 246u8, + 110u8, 11u8, 78u8, 255u8, 66u8, 2u8, 55u8, 108u8, 92u8, 151u8, 231u8, + 175u8, 75u8, 156u8, 34u8, 191u8, 0u8, 56u8, 104u8, 197u8, 70u8, 204u8, + 73u8, 234u8, 173u8, 251u8, 88u8, 226u8, 3u8, 136u8, 228u8, 136u8, ], ) } - #[doc = "Set a safe XCM version (the version that XCM should be encoded with if the most recent"] - #[doc = "version a destination can accept is unknown)."] - #[doc = ""] - #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] - #[doc = "- `maybe_xcm_version`: The default XCM encoding version, or `None` to disable."] + #[doc = "See [`Pallet::force_default_xcm_version`]."] pub fn force_default_xcm_version( &self, maybe_xcm_version: types::force_default_xcm_version::MaybeXcmVersion, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "XcmPallet", "force_default_xcm_version", types::ForceDefaultXcmVersion { maybe_xcm_version }, @@ -42667,80 +40086,46 @@ pub mod api { ], ) } - #[doc = "Ask a location to notify us regarding their XCM version and any changes to it."] - #[doc = ""] - #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] - #[doc = "- `location`: The location to which we should subscribe for XCM version notifications."] + #[doc = "See [`Pallet::force_subscribe_version_notify`]."] pub fn force_subscribe_version_notify( &self, location: types::force_subscribe_version_notify::Location, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "XcmPallet", "force_subscribe_version_notify", types::ForceSubscribeVersionNotify { - location: ::std::boxed::Box::new(location), + location: ::subxt::ext::subxt_core::alloc::boxed::Box::new(location), }, [ - 203u8, 171u8, 70u8, 130u8, 46u8, 63u8, 76u8, 50u8, 105u8, 23u8, 249u8, - 190u8, 115u8, 74u8, 70u8, 125u8, 132u8, 112u8, 138u8, 60u8, 33u8, 35u8, - 45u8, 29u8, 95u8, 103u8, 187u8, 182u8, 188u8, 196u8, 248u8, 152u8, + 112u8, 254u8, 138u8, 12u8, 203u8, 176u8, 251u8, 167u8, 223u8, 0u8, + 71u8, 148u8, 19u8, 179u8, 47u8, 96u8, 188u8, 189u8, 14u8, 172u8, 1u8, + 1u8, 192u8, 107u8, 137u8, 158u8, 22u8, 9u8, 138u8, 241u8, 32u8, 47u8, ], ) } - #[doc = "Require that a particular destination should no longer notify us regarding any XCM"] - #[doc = "version changes."] - #[doc = ""] - #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] - #[doc = "- `location`: The location to which we are currently subscribed for XCM version"] - #[doc = " notifications which we no longer desire."] + #[doc = "See [`Pallet::force_unsubscribe_version_notify`]."] pub fn force_unsubscribe_version_notify( &self, location: types::force_unsubscribe_version_notify::Location, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "XcmPallet", "force_unsubscribe_version_notify", types::ForceUnsubscribeVersionNotify { - location: ::std::boxed::Box::new(location), + location: ::subxt::ext::subxt_core::alloc::boxed::Box::new(location), }, [ - 6u8, 113u8, 168u8, 215u8, 233u8, 202u8, 249u8, 134u8, 131u8, 8u8, - 142u8, 203u8, 142u8, 95u8, 216u8, 70u8, 38u8, 99u8, 166u8, 97u8, 218u8, - 132u8, 247u8, 14u8, 42u8, 99u8, 4u8, 115u8, 200u8, 180u8, 213u8, 50u8, + 205u8, 143u8, 230u8, 143u8, 166u8, 184u8, 53u8, 252u8, 118u8, 184u8, + 209u8, 227u8, 225u8, 184u8, 254u8, 244u8, 101u8, 56u8, 27u8, 128u8, + 40u8, 159u8, 178u8, 62u8, 63u8, 164u8, 59u8, 236u8, 1u8, 168u8, 202u8, + 42u8, ], ) } - #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] - #[doc = "destination or remote reserve."] - #[doc = ""] - #[doc = "`assets` must have same reserve location and may not be teleportable to `dest`."] - #[doc = " - `assets` have local reserve: transfer assets to sovereign account of destination"] - #[doc = " chain and forward a notification XCM to `dest` to mint and deposit reserve-based"] - #[doc = " assets to `beneficiary`."] - #[doc = " - `assets` have destination reserve: burn local assets and forward a notification to"] - #[doc = " `dest` chain to withdraw the reserve assets from this chain's sovereign account and"] - #[doc = " deposit them to `beneficiary`."] - #[doc = " - `assets` have remote reserve: burn local assets, forward XCM to reserve chain to move"] - #[doc = " reserves from this chain's SA to `dest` chain's SA, and forward another XCM to `dest`"] - #[doc = " to mint and deposit reserve-based assets to `beneficiary`."] - #[doc = ""] - #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] - #[doc = "index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight"] - #[doc = "is needed than `weight_limit`, then the operation will fail and the assets send may be"] - #[doc = "at risk."] - #[doc = ""] - #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] - #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] - #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] - #[doc = " relay to parachain."] - #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] - #[doc = " generally be an `AccountId32` value."] - #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] - #[doc = " fee on the `dest` (and possibly reserve) chains."] - #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] - #[doc = " fees."] - #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] + #[doc = "See [`Pallet::limited_reserve_transfer_assets`]."] pub fn limited_reserve_transfer_assets( &self, dest: types::limited_reserve_transfer_assets::Dest, @@ -42748,43 +40133,29 @@ pub mod api { assets: types::limited_reserve_transfer_assets::Assets, fee_asset_item: types::limited_reserve_transfer_assets::FeeAssetItem, weight_limit: types::limited_reserve_transfer_assets::WeightLimit, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "XcmPallet", "limited_reserve_transfer_assets", types::LimitedReserveTransferAssets { - dest: ::std::boxed::Box::new(dest), - beneficiary: ::std::boxed::Box::new(beneficiary), - assets: ::std::boxed::Box::new(assets), + dest: ::subxt::ext::subxt_core::alloc::boxed::Box::new(dest), + beneficiary: ::subxt::ext::subxt_core::alloc::boxed::Box::new( + beneficiary, + ), + assets: ::subxt::ext::subxt_core::alloc::boxed::Box::new(assets), fee_asset_item, weight_limit, }, [ - 198u8, 66u8, 204u8, 162u8, 222u8, 246u8, 141u8, 165u8, 241u8, 62u8, - 43u8, 236u8, 56u8, 200u8, 54u8, 47u8, 174u8, 83u8, 167u8, 220u8, 174u8, - 111u8, 123u8, 202u8, 248u8, 232u8, 166u8, 80u8, 152u8, 223u8, 86u8, - 141u8, + 10u8, 139u8, 165u8, 239u8, 92u8, 178u8, 169u8, 62u8, 166u8, 236u8, + 50u8, 12u8, 196u8, 3u8, 233u8, 209u8, 3u8, 159u8, 184u8, 234u8, 171u8, + 46u8, 145u8, 134u8, 241u8, 155u8, 221u8, 173u8, 166u8, 94u8, 147u8, + 88u8, ], ) } - #[doc = "Teleport some assets from the local chain to some destination chain."] - #[doc = ""] - #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] - #[doc = "index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight"] - #[doc = "is needed than `weight_limit`, then the operation will fail and the assets send may be"] - #[doc = "at risk."] - #[doc = ""] - #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] - #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] - #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] - #[doc = " relay to parachain."] - #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] - #[doc = " generally be an `AccountId32` value."] - #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] - #[doc = " fee on the `dest` chain."] - #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] - #[doc = " fees."] - #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] + #[doc = "See [`Pallet::limited_teleport_assets`]."] pub fn limited_teleport_assets( &self, dest: types::limited_teleport_assets::Dest, @@ -42792,33 +40163,34 @@ pub mod api { assets: types::limited_teleport_assets::Assets, fee_asset_item: types::limited_teleport_assets::FeeAssetItem, weight_limit: types::limited_teleport_assets::WeightLimit, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "XcmPallet", "limited_teleport_assets", types::LimitedTeleportAssets { - dest: ::std::boxed::Box::new(dest), - beneficiary: ::std::boxed::Box::new(beneficiary), - assets: ::std::boxed::Box::new(assets), + dest: ::subxt::ext::subxt_core::alloc::boxed::Box::new(dest), + beneficiary: ::subxt::ext::subxt_core::alloc::boxed::Box::new( + beneficiary, + ), + assets: ::subxt::ext::subxt_core::alloc::boxed::Box::new(assets), fee_asset_item, weight_limit, }, [ - 70u8, 61u8, 32u8, 43u8, 101u8, 104u8, 251u8, 60u8, 212u8, 124u8, 113u8, - 243u8, 241u8, 183u8, 5u8, 231u8, 209u8, 231u8, 136u8, 3u8, 145u8, - 242u8, 179u8, 171u8, 185u8, 185u8, 7u8, 34u8, 5u8, 203u8, 21u8, 210u8, + 156u8, 205u8, 105u8, 18u8, 120u8, 130u8, 144u8, 67u8, 152u8, 188u8, + 109u8, 121u8, 4u8, 240u8, 123u8, 112u8, 72u8, 153u8, 2u8, 111u8, 183u8, + 170u8, 199u8, 82u8, 33u8, 117u8, 43u8, 133u8, 208u8, 44u8, 118u8, + 107u8, ], ) } - #[doc = "Set or unset the global suspension state of the XCM executor."] - #[doc = ""] - #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] - #[doc = "- `suspended`: `true` to suspend, `false` to resume."] + #[doc = "See [`Pallet::force_suspension`]."] pub fn force_suspension( &self, suspended: types::force_suspension::Suspended, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "XcmPallet", "force_suspension", types::ForceSuspension { suspended }, @@ -42829,91 +40201,6 @@ pub mod api { ], ) } - #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] - #[doc = "destination or remote reserve, or through teleports."] - #[doc = ""] - #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] - #[doc = "index `fee_asset_item` (hence referred to as `fees`), up to enough to pay for"] - #[doc = "`weight_limit` of weight. If more weight is needed than `weight_limit`, then the"] - #[doc = "operation will fail and the assets sent may be at risk."] - #[doc = ""] - #[doc = "`assets` (excluding `fees`) must have same reserve location or otherwise be teleportable"] - #[doc = "to `dest`, no limitations imposed on `fees`."] - #[doc = " - for local reserve: transfer assets to sovereign account of destination chain and"] - #[doc = " forward a notification XCM to `dest` to mint and deposit reserve-based assets to"] - #[doc = " `beneficiary`."] - #[doc = " - for destination reserve: burn local assets and forward a notification to `dest` chain"] - #[doc = " to withdraw the reserve assets from this chain's sovereign account and deposit them"] - #[doc = " to `beneficiary`."] - #[doc = " - for remote reserve: burn local assets, forward XCM to reserve chain to move reserves"] - #[doc = " from this chain's SA to `dest` chain's SA, and forward another XCM to `dest` to mint"] - #[doc = " and deposit reserve-based assets to `beneficiary`."] - #[doc = " - for teleports: burn local assets and forward XCM to `dest` chain to mint/teleport"] - #[doc = " assets and deposit them to `beneficiary`."] - #[doc = ""] - #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] - #[doc = "- `dest`: Destination context for the assets. Will typically be `X2(Parent,"] - #[doc = " Parachain(..))` to send from parachain to parachain, or `X1(Parachain(..))` to send"] - #[doc = " from relay to parachain."] - #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] - #[doc = " generally be an `AccountId32` value."] - #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] - #[doc = " fee on the `dest` (and possibly reserve) chains."] - #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] - #[doc = " fees."] - #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] - pub fn transfer_assets( - &self, - dest: types::transfer_assets::Dest, - beneficiary: types::transfer_assets::Beneficiary, - assets: types::transfer_assets::Assets, - fee_asset_item: types::transfer_assets::FeeAssetItem, - weight_limit: types::transfer_assets::WeightLimit, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "XcmPallet", - "transfer_assets", - types::TransferAssets { - dest: ::std::boxed::Box::new(dest), - beneficiary: ::std::boxed::Box::new(beneficiary), - assets: ::std::boxed::Box::new(assets), - fee_asset_item, - weight_limit, - }, - [ - 44u8, 155u8, 182u8, 37u8, 123u8, 148u8, 150u8, 191u8, 117u8, 32u8, - 16u8, 238u8, 121u8, 188u8, 217u8, 110u8, 10u8, 236u8, 174u8, 91u8, - 100u8, 201u8, 109u8, 109u8, 60u8, 177u8, 233u8, 66u8, 181u8, 191u8, - 105u8, 37u8, - ], - ) - } - #[doc = "Claims assets trapped on this pallet because of leftover assets during XCM execution."] - #[doc = ""] - #[doc = "- `origin`: Anyone can call this extrinsic."] - #[doc = "- `assets`: The exact assets that were trapped. Use the version to specify what version"] - #[doc = "was the latest when they were trapped."] - #[doc = "- `beneficiary`: The location/account where the claimed assets will be deposited."] - pub fn claim_assets( - &self, - assets: types::claim_assets::Assets, - beneficiary: types::claim_assets::Beneficiary, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "XcmPallet", - "claim_assets", - types::ClaimAssets { - assets: ::std::boxed::Box::new(assets), - beneficiary: ::std::boxed::Box::new(beneficiary), - }, - [ - 155u8, 23u8, 166u8, 172u8, 251u8, 171u8, 136u8, 240u8, 253u8, 51u8, - 164u8, 43u8, 141u8, 23u8, 189u8, 177u8, 33u8, 32u8, 212u8, 56u8, 174u8, - 165u8, 129u8, 7u8, 49u8, 217u8, 213u8, 214u8, 250u8, 91u8, 200u8, - 195u8, - ], - ) - } } } #[doc = "The `Event` enum of this pallet"] @@ -42921,37 +40208,37 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Execution of an XCM message was attempted."] pub struct Attempted { pub outcome: attempted::Outcome, } pub mod attempted { use super::runtime_types; - pub type Outcome = runtime_types::staging_xcm::v4::traits::Outcome; + pub type Outcome = runtime_types::xcm::v3::traits::Outcome; } - impl ::subxt::events::StaticEvent for Attempted { + impl ::subxt::ext::subxt_core::events::StaticEvent for Attempted { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "Attempted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A XCM message was sent."] pub struct Sent { pub origin: sent::Origin, @@ -42961,25 +40248,25 @@ pub mod api { } pub mod sent { use super::runtime_types; - pub type Origin = runtime_types::staging_xcm::v4::location::Location; - pub type Destination = runtime_types::staging_xcm::v4::location::Location; - pub type Message = runtime_types::staging_xcm::v4::Xcm; + pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Destination = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Message = runtime_types::xcm::v3::Xcm1; pub type MessageId = [::core::primitive::u8; 32usize]; } - impl ::subxt::events::StaticEvent for Sent { + impl ::subxt::ext::subxt_core::events::StaticEvent for Sent { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "Sent"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Query response received which does not match a registered query. This may be because a"] #[doc = "matching query was never registered, it may be because it is a duplicate response, or"] #[doc = "because the query timed out."] @@ -42989,23 +40276,23 @@ pub mod api { } pub mod unexpected_response { use super::runtime_types; - pub type Origin = runtime_types::staging_xcm::v4::location::Location; + pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; pub type QueryId = ::core::primitive::u64; } - impl ::subxt::events::StaticEvent for UnexpectedResponse { + impl ::subxt::ext::subxt_core::events::StaticEvent for UnexpectedResponse { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "UnexpectedResponse"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Query response has been received and is ready for taking with `take_response`. There is"] #[doc = "no registered notification call."] pub struct ResponseReady { @@ -43015,22 +40302,22 @@ pub mod api { pub mod response_ready { use super::runtime_types; pub type QueryId = ::core::primitive::u64; - pub type Response = runtime_types::staging_xcm::v4::Response; + pub type Response = runtime_types::xcm::v3::Response; } - impl ::subxt::events::StaticEvent for ResponseReady { + impl ::subxt::ext::subxt_core::events::StaticEvent for ResponseReady { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "ResponseReady"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Query response has been received and query is removed. The registered notification has"] #[doc = "been dispatched and executed successfully."] pub struct Notified { @@ -43044,20 +40331,20 @@ pub mod api { pub type PalletIndex = ::core::primitive::u8; pub type CallIndex = ::core::primitive::u8; } - impl ::subxt::events::StaticEvent for Notified { + impl ::subxt::ext::subxt_core::events::StaticEvent for Notified { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "Notified"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Query response has been received and query is removed. The registered notification"] #[doc = "could not be dispatched because the dispatch weight is greater than the maximum weight"] #[doc = "originally budgeted by this runtime for the query result."] @@ -43076,20 +40363,20 @@ pub mod api { pub type ActualWeight = runtime_types::sp_weights::weight_v2::Weight; pub type MaxBudgetedWeight = runtime_types::sp_weights::weight_v2::Weight; } - impl ::subxt::events::StaticEvent for NotifyOverweight { + impl ::subxt::ext::subxt_core::events::StaticEvent for NotifyOverweight { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "NotifyOverweight"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Query response has been received and query is removed. There was a general error with"] #[doc = "dispatching the notification call."] pub struct NotifyDispatchError { @@ -43103,20 +40390,20 @@ pub mod api { pub type PalletIndex = ::core::primitive::u8; pub type CallIndex = ::core::primitive::u8; } - impl ::subxt::events::StaticEvent for NotifyDispatchError { + impl ::subxt::ext::subxt_core::events::StaticEvent for NotifyDispatchError { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "NotifyDispatchError"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Query response has been received and query is removed. The dispatch was unable to be"] #[doc = "decoded into a `Call`; this might be due to dispatch function having a signature which"] #[doc = "is not `(origin, QueryId, Response)`."] @@ -43131,20 +40418,20 @@ pub mod api { pub type PalletIndex = ::core::primitive::u8; pub type CallIndex = ::core::primitive::u8; } - impl ::subxt::events::StaticEvent for NotifyDecodeFailed { + impl ::subxt::ext::subxt_core::events::StaticEvent for NotifyDecodeFailed { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "NotifyDecodeFailed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Expected query response has been received but the origin location of the response does"] #[doc = "not match that expected. The query remains registered for a later, valid, response to"] #[doc = "be received and acted upon."] @@ -43155,25 +40442,26 @@ pub mod api { } pub mod invalid_responder { use super::runtime_types; - pub type Origin = runtime_types::staging_xcm::v4::location::Location; + pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; pub type QueryId = ::core::primitive::u64; - pub type ExpectedLocation = - ::core::option::Option; + pub type ExpectedLocation = ::core::option::Option< + runtime_types::staging_xcm::v3::multilocation::MultiLocation, + >; } - impl ::subxt::events::StaticEvent for InvalidResponder { + impl ::subxt::ext::subxt_core::events::StaticEvent for InvalidResponder { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "InvalidResponder"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Expected query response has been received but the expected origin location placed in"] #[doc = "storage by this runtime previously cannot be decoded. The query remains registered."] #[doc = ""] @@ -43187,23 +40475,23 @@ pub mod api { } pub mod invalid_responder_version { use super::runtime_types; - pub type Origin = runtime_types::staging_xcm::v4::location::Location; + pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; pub type QueryId = ::core::primitive::u64; } - impl ::subxt::events::StaticEvent for InvalidResponderVersion { + impl ::subxt::ext::subxt_core::events::StaticEvent for InvalidResponderVersion { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "InvalidResponderVersion"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Received query response has been read and removed."] pub struct ResponseTaken { pub query_id: response_taken::QueryId, @@ -43212,20 +40500,20 @@ pub mod api { use super::runtime_types; pub type QueryId = ::core::primitive::u64; } - impl ::subxt::events::StaticEvent for ResponseTaken { + impl ::subxt::ext::subxt_core::events::StaticEvent for ResponseTaken { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "ResponseTaken"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some assets have been placed in an asset trap."] pub struct AssetsTrapped { pub hash: assets_trapped::Hash, @@ -43234,24 +40522,24 @@ pub mod api { } pub mod assets_trapped { use super::runtime_types; - pub type Hash = ::subxt::utils::H256; - pub type Origin = runtime_types::staging_xcm::v4::location::Location; - pub type Assets = runtime_types::xcm::VersionedAssets; + pub type Hash = ::subxt::ext::subxt_core::utils::H256; + pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Assets = runtime_types::xcm::VersionedMultiAssets; } - impl ::subxt::events::StaticEvent for AssetsTrapped { + impl ::subxt::ext::subxt_core::events::StaticEvent for AssetsTrapped { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "AssetsTrapped"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "An XCM version change notification message has been attempted to be sent."] #[doc = ""] #[doc = "The cost of sending it (borne by the chain) is included."] @@ -43263,25 +40551,25 @@ pub mod api { } pub mod version_change_notified { use super::runtime_types; - pub type Destination = runtime_types::staging_xcm::v4::location::Location; + pub type Destination = runtime_types::staging_xcm::v3::multilocation::MultiLocation; pub type Result = ::core::primitive::u32; - pub type Cost = runtime_types::staging_xcm::v4::asset::Assets; + pub type Cost = runtime_types::xcm::v3::multiasset::MultiAssets; pub type MessageId = [::core::primitive::u8; 32usize]; } - impl ::subxt::events::StaticEvent for VersionChangeNotified { + impl ::subxt::ext::subxt_core::events::StaticEvent for VersionChangeNotified { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "VersionChangeNotified"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The supported version of a location has been changed. This might be through an"] #[doc = "automatic notification or a manual intervention."] pub struct SupportedVersionChanged { @@ -43290,23 +40578,23 @@ pub mod api { } pub mod supported_version_changed { use super::runtime_types; - pub type Location = runtime_types::staging_xcm::v4::location::Location; + pub type Location = runtime_types::staging_xcm::v3::multilocation::MultiLocation; pub type Version = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for SupportedVersionChanged { + impl ::subxt::ext::subxt_core::events::StaticEvent for SupportedVersionChanged { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "SupportedVersionChanged"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A given location which had a version change subscription was dropped owing to an error"] #[doc = "sending the notification to it."] pub struct NotifyTargetSendFail { @@ -43316,24 +40604,24 @@ pub mod api { } pub mod notify_target_send_fail { use super::runtime_types; - pub type Location = runtime_types::staging_xcm::v4::location::Location; + pub type Location = runtime_types::staging_xcm::v3::multilocation::MultiLocation; pub type QueryId = ::core::primitive::u64; pub type Error = runtime_types::xcm::v3::traits::Error; } - impl ::subxt::events::StaticEvent for NotifyTargetSendFail { + impl ::subxt::ext::subxt_core::events::StaticEvent for NotifyTargetSendFail { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "NotifyTargetSendFail"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A given location which had a version change subscription was dropped owing to an error"] #[doc = "migrating the location to our new XCM format."] pub struct NotifyTargetMigrationFail { @@ -43342,23 +40630,23 @@ pub mod api { } pub mod notify_target_migration_fail { use super::runtime_types; - pub type Location = runtime_types::xcm::VersionedLocation; + pub type Location = runtime_types::xcm::VersionedMultiLocation; pub type QueryId = ::core::primitive::u64; } - impl ::subxt::events::StaticEvent for NotifyTargetMigrationFail { + impl ::subxt::ext::subxt_core::events::StaticEvent for NotifyTargetMigrationFail { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "NotifyTargetMigrationFail"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Expected query response has been received but the expected querier location placed in"] #[doc = "storage by this runtime previously cannot be decoded. The query remains registered."] #[doc = ""] @@ -43372,23 +40660,23 @@ pub mod api { } pub mod invalid_querier_version { use super::runtime_types; - pub type Origin = runtime_types::staging_xcm::v4::location::Location; + pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; pub type QueryId = ::core::primitive::u64; } - impl ::subxt::events::StaticEvent for InvalidQuerierVersion { + impl ::subxt::ext::subxt_core::events::StaticEvent for InvalidQuerierVersion { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "InvalidQuerierVersion"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Expected query response has been received but the querier location of the response does"] #[doc = "not match the expected. The query remains registered for a later, valid, response to"] #[doc = "be received and acted upon."] @@ -43400,26 +40688,28 @@ pub mod api { } pub mod invalid_querier { use super::runtime_types; - pub type Origin = runtime_types::staging_xcm::v4::location::Location; + pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; pub type QueryId = ::core::primitive::u64; - pub type ExpectedQuerier = runtime_types::staging_xcm::v4::location::Location; - pub type MaybeActualQuerier = - ::core::option::Option; + pub type ExpectedQuerier = + runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type MaybeActualQuerier = ::core::option::Option< + runtime_types::staging_xcm::v3::multilocation::MultiLocation, + >; } - impl ::subxt::events::StaticEvent for InvalidQuerier { + impl ::subxt::ext::subxt_core::events::StaticEvent for InvalidQuerier { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "InvalidQuerier"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A remote has requested XCM version change notification from us and we have honored it."] #[doc = "A version information message is sent to them and its cost is included."] pub struct VersionNotifyStarted { @@ -43429,24 +40719,24 @@ pub mod api { } pub mod version_notify_started { use super::runtime_types; - pub type Destination = runtime_types::staging_xcm::v4::location::Location; - pub type Cost = runtime_types::staging_xcm::v4::asset::Assets; + pub type Destination = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Cost = runtime_types::xcm::v3::multiasset::MultiAssets; pub type MessageId = [::core::primitive::u8; 32usize]; } - impl ::subxt::events::StaticEvent for VersionNotifyStarted { + impl ::subxt::ext::subxt_core::events::StaticEvent for VersionNotifyStarted { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "VersionNotifyStarted"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "We have requested that a remote chain send us XCM version change notifications."] pub struct VersionNotifyRequested { pub destination: version_notify_requested::Destination, @@ -43455,24 +40745,24 @@ pub mod api { } pub mod version_notify_requested { use super::runtime_types; - pub type Destination = runtime_types::staging_xcm::v4::location::Location; - pub type Cost = runtime_types::staging_xcm::v4::asset::Assets; + pub type Destination = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Cost = runtime_types::xcm::v3::multiasset::MultiAssets; pub type MessageId = [::core::primitive::u8; 32usize]; } - impl ::subxt::events::StaticEvent for VersionNotifyRequested { + impl ::subxt::ext::subxt_core::events::StaticEvent for VersionNotifyRequested { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "VersionNotifyRequested"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "We have requested that a remote chain stops sending us XCM version change"] #[doc = "notifications."] pub struct VersionNotifyUnrequested { @@ -43482,24 +40772,24 @@ pub mod api { } pub mod version_notify_unrequested { use super::runtime_types; - pub type Destination = runtime_types::staging_xcm::v4::location::Location; - pub type Cost = runtime_types::staging_xcm::v4::asset::Assets; + pub type Destination = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Cost = runtime_types::xcm::v3::multiasset::MultiAssets; pub type MessageId = [::core::primitive::u8; 32usize]; } - impl ::subxt::events::StaticEvent for VersionNotifyUnrequested { + impl ::subxt::ext::subxt_core::events::StaticEvent for VersionNotifyUnrequested { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "VersionNotifyUnrequested"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Fees were paid from a location for an operation (often for using `SendXcm`)."] pub struct FeesPaid { pub paying: fees_paid::Paying, @@ -43507,23 +40797,23 @@ pub mod api { } pub mod fees_paid { use super::runtime_types; - pub type Paying = runtime_types::staging_xcm::v4::location::Location; - pub type Fees = runtime_types::staging_xcm::v4::asset::Assets; + pub type Paying = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Fees = runtime_types::xcm::v3::multiasset::MultiAssets; } - impl ::subxt::events::StaticEvent for FeesPaid { + impl ::subxt::ext::subxt_core::events::StaticEvent for FeesPaid { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "FeesPaid"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some assets have been claimed from an asset trap"] pub struct AssetsClaimed { pub hash: assets_claimed::Hash, @@ -43532,36 +40822,14 @@ pub mod api { } pub mod assets_claimed { use super::runtime_types; - pub type Hash = ::subxt::utils::H256; - pub type Origin = runtime_types::staging_xcm::v4::location::Location; - pub type Assets = runtime_types::xcm::VersionedAssets; + pub type Hash = ::subxt::ext::subxt_core::utils::H256; + pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Assets = runtime_types::xcm::VersionedMultiAssets; } - impl ::subxt::events::StaticEvent for AssetsClaimed { + impl ::subxt::ext::subxt_core::events::StaticEvent for AssetsClaimed { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "AssetsClaimed"; } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A XCM version migration finished."] - pub struct VersionMigrationFinished { - pub version: version_migration_finished::Version, - } - pub mod version_migration_finished { - use super::runtime_types; - pub type Version = ::core::primitive::u32; - } - impl ::subxt::events::StaticEvent for VersionMigrationFinished { - const PALLET: &'static str = "XcmPallet"; - const EVENT: &'static str = "VersionMigrationFinished"; - } } pub mod storage { use super::runtime_types; @@ -43580,7 +40848,7 @@ pub mod api { pub mod asset_traps { use super::runtime_types; pub type AssetTraps = ::core::primitive::u32; - pub type Param0 = ::subxt::utils::H256; + pub type Param0 = ::subxt::ext::subxt_core::utils::H256; } pub mod safe_xcm_version { use super::runtime_types; @@ -43590,13 +40858,13 @@ pub mod api { use super::runtime_types; pub type SupportedVersion = ::core::primitive::u32; pub type Param0 = ::core::primitive::u32; - pub type Param1 = runtime_types::xcm::VersionedLocation; + pub type Param1 = runtime_types::xcm::VersionedMultiLocation; } pub mod version_notifiers { use super::runtime_types; pub type VersionNotifiers = ::core::primitive::u64; pub type Param0 = ::core::primitive::u32; - pub type Param1 = runtime_types::xcm::VersionedLocation; + pub type Param1 = runtime_types::xcm::VersionedMultiLocation; } pub mod version_notify_targets { use super::runtime_types; @@ -43606,13 +40874,13 @@ pub mod api { ::core::primitive::u32, ); pub type Param0 = ::core::primitive::u32; - pub type Param1 = runtime_types::xcm::VersionedLocation; + pub type Param1 = runtime_types::xcm::VersionedMultiLocation; } pub mod version_discovery_queue { use super::runtime_types; pub type VersionDiscoveryQueue = - runtime_types::bounded_collections::bounded_vec::BoundedVec<( - runtime_types::xcm::VersionedLocation, + runtime_types::bounded_collections::bounded_vec::BoundedVec26<( + runtime_types::xcm::VersionedMultiLocation, ::core::primitive::u32, )>; } @@ -43626,17 +40894,17 @@ pub mod api { pub type RemoteLockedFungibles = runtime_types::pallet_xcm::pallet::RemoteLockedFungibleRecord<()>; pub type Param0 = ::core::primitive::u32; - pub type Param1 = ::subxt::utils::AccountId32; + pub type Param1 = ::subxt::ext::subxt_core::utils::AccountId32; pub type Param2 = runtime_types::xcm::VersionedAssetId; } pub mod locked_fungibles { use super::runtime_types; pub type LockedFungibles = - runtime_types::bounded_collections::bounded_vec::BoundedVec<( + runtime_types::bounded_collections::bounded_vec::BoundedVec28<( ::core::primitive::u128, - runtime_types::xcm::VersionedLocation, + runtime_types::xcm::VersionedMultiLocation, )>; - pub type Param0 = ::subxt::utils::AccountId32; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod xcm_execution_suspended { use super::runtime_types; @@ -43648,14 +40916,14 @@ pub mod api { #[doc = " The latest available query index."] pub fn query_counter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::query_counter::QueryCounter, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "XcmPallet", "QueryCounter", (), @@ -43670,62 +40938,64 @@ pub mod api { #[doc = " The ongoing queries."] pub fn queries_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::queries::Queries, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "XcmPallet", "Queries", (), [ - 246u8, 75u8, 240u8, 129u8, 106u8, 114u8, 99u8, 154u8, 176u8, 188u8, - 146u8, 125u8, 244u8, 103u8, 187u8, 171u8, 60u8, 119u8, 4u8, 90u8, 58u8, - 180u8, 48u8, 165u8, 145u8, 125u8, 227u8, 233u8, 11u8, 142u8, 122u8, - 3u8, + 119u8, 5u8, 12u8, 91u8, 117u8, 240u8, 52u8, 192u8, 135u8, 139u8, 220u8, + 78u8, 207u8, 199u8, 71u8, 163u8, 100u8, 17u8, 6u8, 65u8, 200u8, 245u8, + 191u8, 82u8, 232u8, 128u8, 126u8, 70u8, 39u8, 63u8, 148u8, 219u8, ], ) } #[doc = " The ongoing queries."] pub fn queries( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::queries::Param0, + >, types::queries::Queries, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "XcmPallet", "Queries", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ - 246u8, 75u8, 240u8, 129u8, 106u8, 114u8, 99u8, 154u8, 176u8, 188u8, - 146u8, 125u8, 244u8, 103u8, 187u8, 171u8, 60u8, 119u8, 4u8, 90u8, 58u8, - 180u8, 48u8, 165u8, 145u8, 125u8, 227u8, 233u8, 11u8, 142u8, 122u8, - 3u8, + 119u8, 5u8, 12u8, 91u8, 117u8, 240u8, 52u8, 192u8, 135u8, 139u8, 220u8, + 78u8, 207u8, 199u8, 71u8, 163u8, 100u8, 17u8, 6u8, 65u8, 200u8, 245u8, + 191u8, 82u8, 232u8, 128u8, 126u8, 70u8, 39u8, 63u8, 148u8, 219u8, ], ) } #[doc = " The existing asset traps."] #[doc = ""] - #[doc = " Key is the blake2 256 hash of (origin, versioned `Assets`) pair. Value is the number of"] + #[doc = " Key is the blake2 256 hash of (origin, versioned `MultiAssets`) pair. Value is the number of"] #[doc = " times this pair has been trapped (usually just 1 if it exists at all)."] pub fn asset_traps_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::asset_traps::AssetTraps, (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "XcmPallet", "AssetTraps", (), @@ -43738,22 +41008,26 @@ pub mod api { } #[doc = " The existing asset traps."] #[doc = ""] - #[doc = " Key is the blake2 256 hash of (origin, versioned `Assets`) pair. Value is the number of"] + #[doc = " Key is the blake2 256 hash of (origin, versioned `MultiAssets`) pair. Value is the number of"] #[doc = " times this pair has been trapped (usually just 1 if it exists at all)."] pub fn asset_traps( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::asset_traps::Param0, + >, types::asset_traps::AssetTraps, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "XcmPallet", "AssetTraps", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 148u8, 41u8, 254u8, 134u8, 61u8, 172u8, 126u8, 146u8, 78u8, 178u8, 50u8, 77u8, 226u8, 8u8, 200u8, 78u8, 77u8, 91u8, 26u8, 133u8, 104u8, @@ -43765,14 +41039,14 @@ pub mod api { #[doc = " then the destinations whose XCM version is unknown are considered unreachable."] pub fn safe_xcm_version( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::safe_xcm_version::SafeXcmVersion, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "XcmPallet", "SafeXcmVersion", (), @@ -43787,158 +41061,168 @@ pub mod api { #[doc = " The Latest versions that we know various locations support."] pub fn supported_version_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::supported_version::SupportedVersion, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "XcmPallet", "SupportedVersion", (), [ - 144u8, 218u8, 177u8, 254u8, 210u8, 8u8, 84u8, 149u8, 163u8, 162u8, - 238u8, 37u8, 157u8, 28u8, 140u8, 121u8, 201u8, 173u8, 204u8, 92u8, - 133u8, 45u8, 156u8, 38u8, 61u8, 51u8, 153u8, 161u8, 147u8, 146u8, - 202u8, 24u8, + 144u8, 22u8, 91u8, 30u8, 139u8, 164u8, 95u8, 149u8, 97u8, 247u8, 12u8, + 212u8, 96u8, 16u8, 134u8, 236u8, 74u8, 57u8, 244u8, 169u8, 68u8, 63u8, + 111u8, 86u8, 65u8, 229u8, 104u8, 51u8, 44u8, 100u8, 47u8, 191u8, ], ) } #[doc = " The Latest versions that we know various locations support."] pub fn supported_version_iter1( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::supported_version::Param0, + >, types::supported_version::SupportedVersion, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "XcmPallet", "SupportedVersion", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ - 144u8, 218u8, 177u8, 254u8, 210u8, 8u8, 84u8, 149u8, 163u8, 162u8, - 238u8, 37u8, 157u8, 28u8, 140u8, 121u8, 201u8, 173u8, 204u8, 92u8, - 133u8, 45u8, 156u8, 38u8, 61u8, 51u8, 153u8, 161u8, 147u8, 146u8, - 202u8, 24u8, + 144u8, 22u8, 91u8, 30u8, 139u8, 164u8, 95u8, 149u8, 97u8, 247u8, 12u8, + 212u8, 96u8, 16u8, 134u8, 236u8, 74u8, 57u8, 244u8, 169u8, 68u8, 63u8, + 111u8, 86u8, 65u8, 229u8, 104u8, 51u8, 44u8, 100u8, 47u8, 191u8, ], ) } #[doc = " The Latest versions that we know various locations support."] pub fn supported_version( &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< ( - ::subxt::storage::address::StaticStorageKey< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::supported_version::Param0, >, - ::subxt::storage::address::StaticStorageKey< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::supported_version::Param1, >, ), types::supported_version::SupportedVersion, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "XcmPallet", "SupportedVersion", ( - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), ), [ - 144u8, 218u8, 177u8, 254u8, 210u8, 8u8, 84u8, 149u8, 163u8, 162u8, - 238u8, 37u8, 157u8, 28u8, 140u8, 121u8, 201u8, 173u8, 204u8, 92u8, - 133u8, 45u8, 156u8, 38u8, 61u8, 51u8, 153u8, 161u8, 147u8, 146u8, - 202u8, 24u8, + 144u8, 22u8, 91u8, 30u8, 139u8, 164u8, 95u8, 149u8, 97u8, 247u8, 12u8, + 212u8, 96u8, 16u8, 134u8, 236u8, 74u8, 57u8, 244u8, 169u8, 68u8, 63u8, + 111u8, 86u8, 65u8, 229u8, 104u8, 51u8, 44u8, 100u8, 47u8, 191u8, ], ) } #[doc = " All locations that we have requested version notifications from."] pub fn version_notifiers_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::version_notifiers::VersionNotifiers, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "XcmPallet", "VersionNotifiers", (), [ - 175u8, 206u8, 29u8, 14u8, 111u8, 123u8, 211u8, 109u8, 159u8, 131u8, - 80u8, 149u8, 216u8, 196u8, 181u8, 105u8, 117u8, 138u8, 80u8, 69u8, - 237u8, 116u8, 195u8, 66u8, 209u8, 102u8, 42u8, 126u8, 222u8, 176u8, - 201u8, 49u8, + 49u8, 190u8, 73u8, 67u8, 91u8, 69u8, 121u8, 206u8, 25u8, 82u8, 29u8, + 170u8, 157u8, 201u8, 168u8, 93u8, 181u8, 55u8, 226u8, 142u8, 136u8, + 46u8, 117u8, 208u8, 130u8, 90u8, 129u8, 39u8, 151u8, 92u8, 118u8, 75u8, ], ) } #[doc = " All locations that we have requested version notifications from."] pub fn version_notifiers_iter1( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::version_notifiers::Param0, + >, types::version_notifiers::VersionNotifiers, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "XcmPallet", "VersionNotifiers", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ - 175u8, 206u8, 29u8, 14u8, 111u8, 123u8, 211u8, 109u8, 159u8, 131u8, - 80u8, 149u8, 216u8, 196u8, 181u8, 105u8, 117u8, 138u8, 80u8, 69u8, - 237u8, 116u8, 195u8, 66u8, 209u8, 102u8, 42u8, 126u8, 222u8, 176u8, - 201u8, 49u8, + 49u8, 190u8, 73u8, 67u8, 91u8, 69u8, 121u8, 206u8, 25u8, 82u8, 29u8, + 170u8, 157u8, 201u8, 168u8, 93u8, 181u8, 55u8, 226u8, 142u8, 136u8, + 46u8, 117u8, 208u8, 130u8, 90u8, 129u8, 39u8, 151u8, 92u8, 118u8, 75u8, ], ) } #[doc = " All locations that we have requested version notifications from."] pub fn version_notifiers( &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< ( - ::subxt::storage::address::StaticStorageKey< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::version_notifiers::Param0, >, - ::subxt::storage::address::StaticStorageKey< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::version_notifiers::Param1, >, ), types::version_notifiers::VersionNotifiers, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "XcmPallet", "VersionNotifiers", ( - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), ), [ - 175u8, 206u8, 29u8, 14u8, 111u8, 123u8, 211u8, 109u8, 159u8, 131u8, - 80u8, 149u8, 216u8, 196u8, 181u8, 105u8, 117u8, 138u8, 80u8, 69u8, - 237u8, 116u8, 195u8, 66u8, 209u8, 102u8, 42u8, 126u8, 222u8, 176u8, - 201u8, 49u8, + 49u8, 190u8, 73u8, 67u8, 91u8, 69u8, 121u8, 206u8, 25u8, 82u8, 29u8, + 170u8, 157u8, 201u8, 168u8, 93u8, 181u8, 55u8, 226u8, 142u8, 136u8, + 46u8, 117u8, 208u8, 130u8, 90u8, 129u8, 39u8, 151u8, 92u8, 118u8, 75u8, ], ) } @@ -43946,21 +41230,22 @@ pub mod api { #[doc = " of our versions we informed them of."] pub fn version_notify_targets_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::version_notify_targets::VersionNotifyTargets, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "XcmPallet", "VersionNotifyTargets", (), [ - 113u8, 77u8, 150u8, 42u8, 82u8, 49u8, 195u8, 120u8, 96u8, 80u8, 152u8, - 67u8, 27u8, 142u8, 10u8, 74u8, 66u8, 134u8, 35u8, 202u8, 77u8, 187u8, - 174u8, 22u8, 207u8, 199u8, 57u8, 85u8, 53u8, 208u8, 146u8, 81u8, + 1u8, 195u8, 40u8, 83u8, 216u8, 175u8, 241u8, 95u8, 42u8, 7u8, 85u8, + 253u8, 223u8, 241u8, 195u8, 41u8, 41u8, 21u8, 17u8, 171u8, 216u8, + 150u8, 39u8, 165u8, 215u8, 194u8, 201u8, 225u8, 179u8, 12u8, 52u8, + 173u8, ], ) } @@ -43968,24 +41253,27 @@ pub mod api { #[doc = " of our versions we informed them of."] pub fn version_notify_targets_iter1( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::version_notify_targets::Param0, >, types::version_notify_targets::VersionNotifyTargets, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "XcmPallet", "VersionNotifyTargets", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ - 113u8, 77u8, 150u8, 42u8, 82u8, 49u8, 195u8, 120u8, 96u8, 80u8, 152u8, - 67u8, 27u8, 142u8, 10u8, 74u8, 66u8, 134u8, 35u8, 202u8, 77u8, 187u8, - 174u8, 22u8, 207u8, 199u8, 57u8, 85u8, 53u8, 208u8, 146u8, 81u8, + 1u8, 195u8, 40u8, 83u8, 216u8, 175u8, 241u8, 95u8, 42u8, 7u8, 85u8, + 253u8, 223u8, 241u8, 195u8, 41u8, 41u8, 21u8, 17u8, 171u8, 216u8, + 150u8, 39u8, 165u8, 215u8, 194u8, 201u8, 225u8, 179u8, 12u8, 52u8, + 173u8, ], ) } @@ -43993,33 +41281,38 @@ pub mod api { #[doc = " of our versions we informed them of."] pub fn version_notify_targets( &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< ( - ::subxt::storage::address::StaticStorageKey< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::version_notify_targets::Param0, >, - ::subxt::storage::address::StaticStorageKey< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::version_notify_targets::Param1, >, ), types::version_notify_targets::VersionNotifyTargets, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "XcmPallet", "VersionNotifyTargets", ( - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), ), [ - 113u8, 77u8, 150u8, 42u8, 82u8, 49u8, 195u8, 120u8, 96u8, 80u8, 152u8, - 67u8, 27u8, 142u8, 10u8, 74u8, 66u8, 134u8, 35u8, 202u8, 77u8, 187u8, - 174u8, 22u8, 207u8, 199u8, 57u8, 85u8, 53u8, 208u8, 146u8, 81u8, + 1u8, 195u8, 40u8, 83u8, 216u8, 175u8, 241u8, 95u8, 42u8, 7u8, 85u8, + 253u8, 223u8, 241u8, 195u8, 41u8, 41u8, 21u8, 17u8, 171u8, 216u8, + 150u8, 39u8, 165u8, 215u8, 194u8, 201u8, 225u8, 179u8, 12u8, 52u8, + 173u8, ], ) } @@ -44028,36 +41321,35 @@ pub mod api { #[doc = " which is used as a prioritization."] pub fn version_discovery_queue( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::version_discovery_queue::VersionDiscoveryQueue, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "XcmPallet", "VersionDiscoveryQueue", (), [ - 95u8, 74u8, 97u8, 94u8, 40u8, 140u8, 175u8, 176u8, 224u8, 222u8, 83u8, - 199u8, 170u8, 102u8, 3u8, 77u8, 127u8, 208u8, 155u8, 122u8, 176u8, - 51u8, 15u8, 253u8, 231u8, 245u8, 91u8, 192u8, 60u8, 144u8, 101u8, - 168u8, + 110u8, 87u8, 102u8, 193u8, 125u8, 129u8, 0u8, 221u8, 218u8, 229u8, + 101u8, 94u8, 74u8, 229u8, 246u8, 180u8, 113u8, 11u8, 15u8, 159u8, 98u8, + 90u8, 30u8, 112u8, 164u8, 236u8, 151u8, 220u8, 19u8, 83u8, 67u8, 248u8, ], ) } #[doc = " The current migration's stage, if any."] pub fn current_migration( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::current_migration::CurrentMigration, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "XcmPallet", "CurrentMigration", (), @@ -44071,177 +41363,191 @@ pub mod api { #[doc = " Fungible assets which we know are locked on a remote chain."] pub fn remote_locked_fungibles_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::remote_locked_fungibles::RemoteLockedFungibles, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "XcmPallet", "RemoteLockedFungibles", (), [ - 247u8, 124u8, 77u8, 42u8, 208u8, 183u8, 99u8, 196u8, 50u8, 113u8, - 250u8, 221u8, 222u8, 170u8, 10u8, 60u8, 143u8, 172u8, 149u8, 198u8, - 125u8, 154u8, 196u8, 196u8, 145u8, 209u8, 68u8, 28u8, 241u8, 241u8, - 201u8, 150u8, + 74u8, 249u8, 83u8, 245u8, 44u8, 230u8, 152u8, 82u8, 4u8, 163u8, 230u8, + 121u8, 87u8, 143u8, 184u8, 12u8, 117u8, 112u8, 131u8, 160u8, 232u8, + 62u8, 175u8, 15u8, 81u8, 198u8, 182u8, 255u8, 37u8, 81u8, 6u8, 57u8, ], ) } #[doc = " Fungible assets which we know are locked on a remote chain."] pub fn remote_locked_fungibles_iter1( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey< + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::remote_locked_fungibles::Param0, >, types::remote_locked_fungibles::RemoteLockedFungibles, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "XcmPallet", "RemoteLockedFungibles", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ - 247u8, 124u8, 77u8, 42u8, 208u8, 183u8, 99u8, 196u8, 50u8, 113u8, - 250u8, 221u8, 222u8, 170u8, 10u8, 60u8, 143u8, 172u8, 149u8, 198u8, - 125u8, 154u8, 196u8, 196u8, 145u8, 209u8, 68u8, 28u8, 241u8, 241u8, - 201u8, 150u8, + 74u8, 249u8, 83u8, 245u8, 44u8, 230u8, 152u8, 82u8, 4u8, 163u8, 230u8, + 121u8, 87u8, 143u8, 184u8, 12u8, 117u8, 112u8, 131u8, 160u8, 232u8, + 62u8, 175u8, 15u8, 81u8, 198u8, 182u8, 255u8, 37u8, 81u8, 6u8, 57u8, ], ) } #[doc = " Fungible assets which we know are locked on a remote chain."] pub fn remote_locked_fungibles_iter2( &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< ( - ::subxt::storage::address::StaticStorageKey< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::remote_locked_fungibles::Param0, >, - ::subxt::storage::address::StaticStorageKey< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::remote_locked_fungibles::Param1, >, ), types::remote_locked_fungibles::RemoteLockedFungibles, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "XcmPallet", "RemoteLockedFungibles", ( - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), ), [ - 247u8, 124u8, 77u8, 42u8, 208u8, 183u8, 99u8, 196u8, 50u8, 113u8, - 250u8, 221u8, 222u8, 170u8, 10u8, 60u8, 143u8, 172u8, 149u8, 198u8, - 125u8, 154u8, 196u8, 196u8, 145u8, 209u8, 68u8, 28u8, 241u8, 241u8, - 201u8, 150u8, + 74u8, 249u8, 83u8, 245u8, 44u8, 230u8, 152u8, 82u8, 4u8, 163u8, 230u8, + 121u8, 87u8, 143u8, 184u8, 12u8, 117u8, 112u8, 131u8, 160u8, 232u8, + 62u8, 175u8, 15u8, 81u8, 198u8, 182u8, 255u8, 37u8, 81u8, 6u8, 57u8, ], ) } #[doc = " Fungible assets which we know are locked on a remote chain."] pub fn remote_locked_fungibles( &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow, - _2: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + _2: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< ( - ::subxt::storage::address::StaticStorageKey< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::remote_locked_fungibles::Param0, >, - ::subxt::storage::address::StaticStorageKey< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::remote_locked_fungibles::Param1, >, - ::subxt::storage::address::StaticStorageKey< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< types::remote_locked_fungibles::Param2, >, ), types::remote_locked_fungibles::RemoteLockedFungibles, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "XcmPallet", "RemoteLockedFungibles", ( - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - ::subxt::storage::address::StaticStorageKey::new(_1.borrow()), - ::subxt::storage::address::StaticStorageKey::new(_2.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _2.borrow(), + ), ), [ - 247u8, 124u8, 77u8, 42u8, 208u8, 183u8, 99u8, 196u8, 50u8, 113u8, - 250u8, 221u8, 222u8, 170u8, 10u8, 60u8, 143u8, 172u8, 149u8, 198u8, - 125u8, 154u8, 196u8, 196u8, 145u8, 209u8, 68u8, 28u8, 241u8, 241u8, - 201u8, 150u8, + 74u8, 249u8, 83u8, 245u8, 44u8, 230u8, 152u8, 82u8, 4u8, 163u8, 230u8, + 121u8, 87u8, 143u8, 184u8, 12u8, 117u8, 112u8, 131u8, 160u8, 232u8, + 62u8, 175u8, 15u8, 81u8, 198u8, 182u8, 255u8, 37u8, 81u8, 6u8, 57u8, ], ) } #[doc = " Fungible assets which we know are locked on this chain."] pub fn locked_fungibles_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::locked_fungibles::LockedFungibles, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "XcmPallet", "LockedFungibles", (), [ - 254u8, 234u8, 1u8, 27u8, 27u8, 32u8, 217u8, 24u8, 47u8, 30u8, 62u8, - 80u8, 86u8, 125u8, 120u8, 24u8, 143u8, 229u8, 161u8, 153u8, 240u8, - 246u8, 80u8, 15u8, 49u8, 189u8, 20u8, 204u8, 239u8, 198u8, 97u8, 174u8, + 110u8, 220u8, 127u8, 176u8, 219u8, 23u8, 132u8, 36u8, 224u8, 187u8, + 25u8, 103u8, 126u8, 99u8, 34u8, 105u8, 57u8, 182u8, 162u8, 69u8, 24u8, + 67u8, 221u8, 103u8, 79u8, 139u8, 187u8, 162u8, 113u8, 109u8, 163u8, + 35u8, ], ) } #[doc = " Fungible assets which we know are locked on this chain."] pub fn locked_fungibles( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::locked_fungibles::Param0, + >, types::locked_fungibles::LockedFungibles, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "XcmPallet", "LockedFungibles", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ - 254u8, 234u8, 1u8, 27u8, 27u8, 32u8, 217u8, 24u8, 47u8, 30u8, 62u8, - 80u8, 86u8, 125u8, 120u8, 24u8, 143u8, 229u8, 161u8, 153u8, 240u8, - 246u8, 80u8, 15u8, 49u8, 189u8, 20u8, 204u8, 239u8, 198u8, 97u8, 174u8, + 110u8, 220u8, 127u8, 176u8, 219u8, 23u8, 132u8, 36u8, 224u8, 187u8, + 25u8, 103u8, 126u8, 99u8, 34u8, 105u8, 57u8, 182u8, 162u8, 69u8, 24u8, + 67u8, 221u8, 103u8, 79u8, 139u8, 187u8, 162u8, 113u8, 109u8, 163u8, + 35u8, ], ) } #[doc = " Global suspension state of the XCM executor."] pub fn xcm_execution_suspended( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::xcm_execution_suspended::XcmExecutionSuspended, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "XcmPallet", "XcmExecutionSuspended", (), @@ -44255,775 +41561,6 @@ pub mod api { } } } - pub mod beefy { - use super::root_mod; - use super::runtime_types; - #[doc = "The `Error` enum of this pallet."] - pub type Error = runtime_types::pallet_beefy::pallet::Error; - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub type Call = runtime_types::pallet_beefy::pallet::Call; - pub mod calls { - use super::root_mod; - use super::runtime_types; - type DispatchError = runtime_types::sp_runtime::DispatchError; - pub mod types { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Report voter equivocation/misbehavior. This method will verify the"] - #[doc = "equivocation proof and validate the given key ownership proof"] - #[doc = "against the extracted offender. If both are valid, the offence"] - #[doc = "will be reported."] - pub struct ReportEquivocation { - pub equivocation_proof: - ::std::boxed::Box, - pub key_owner_proof: report_equivocation::KeyOwnerProof, - } - pub mod report_equivocation { - use super::runtime_types; - pub type EquivocationProof = - runtime_types::sp_consensus_beefy::EquivocationProof< - ::core::primitive::u32, - runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, - runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, - >; - pub type KeyOwnerProof = runtime_types::sp_session::MembershipProof; - } - impl ::subxt::blocks::StaticExtrinsic for ReportEquivocation { - const PALLET: &'static str = "Beefy"; - const CALL: &'static str = "report_equivocation"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Report voter equivocation/misbehavior. This method will verify the"] - #[doc = "equivocation proof and validate the given key ownership proof"] - #[doc = "against the extracted offender. If both are valid, the offence"] - #[doc = "will be reported."] - #[doc = ""] - #[doc = "This extrinsic must be called unsigned and it is expected that only"] - #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] - #[doc = "if the block author is defined it will be defined as the equivocation"] - #[doc = "reporter."] - pub struct ReportEquivocationUnsigned { - pub equivocation_proof: - ::std::boxed::Box, - pub key_owner_proof: report_equivocation_unsigned::KeyOwnerProof, - } - pub mod report_equivocation_unsigned { - use super::runtime_types; - pub type EquivocationProof = - runtime_types::sp_consensus_beefy::EquivocationProof< - ::core::primitive::u32, - runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, - runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, - >; - pub type KeyOwnerProof = runtime_types::sp_session::MembershipProof; - } - impl ::subxt::blocks::StaticExtrinsic for ReportEquivocationUnsigned { - const PALLET: &'static str = "Beefy"; - const CALL: &'static str = "report_equivocation_unsigned"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Reset BEEFY consensus by setting a new BEEFY genesis at `delay_in_blocks` blocks in the"] - #[doc = "future."] - #[doc = ""] - #[doc = "Note: `delay_in_blocks` has to be at least 1."] - pub struct SetNewGenesis { - pub delay_in_blocks: set_new_genesis::DelayInBlocks, - } - pub mod set_new_genesis { - use super::runtime_types; - pub type DelayInBlocks = ::core::primitive::u32; - } - impl ::subxt::blocks::StaticExtrinsic for SetNewGenesis { - const PALLET: &'static str = "Beefy"; - const CALL: &'static str = "set_new_genesis"; - } - } - pub struct TransactionApi; - impl TransactionApi { - #[doc = "Report voter equivocation/misbehavior. This method will verify the"] - #[doc = "equivocation proof and validate the given key ownership proof"] - #[doc = "against the extracted offender. If both are valid, the offence"] - #[doc = "will be reported."] - pub fn report_equivocation( - &self, - equivocation_proof: types::report_equivocation::EquivocationProof, - key_owner_proof: types::report_equivocation::KeyOwnerProof, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Beefy", - "report_equivocation", - types::ReportEquivocation { - equivocation_proof: ::std::boxed::Box::new(equivocation_proof), - key_owner_proof, - }, - [ - 156u8, 32u8, 92u8, 179u8, 165u8, 93u8, 216u8, 130u8, 121u8, 225u8, - 33u8, 141u8, 255u8, 12u8, 101u8, 136u8, 177u8, 25u8, 23u8, 239u8, 12u8, - 142u8, 88u8, 228u8, 85u8, 171u8, 218u8, 185u8, 146u8, 245u8, 149u8, - 85u8, - ], - ) - } - #[doc = "Report voter equivocation/misbehavior. This method will verify the"] - #[doc = "equivocation proof and validate the given key ownership proof"] - #[doc = "against the extracted offender. If both are valid, the offence"] - #[doc = "will be reported."] - #[doc = ""] - #[doc = "This extrinsic must be called unsigned and it is expected that only"] - #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] - #[doc = "if the block author is defined it will be defined as the equivocation"] - #[doc = "reporter."] - pub fn report_equivocation_unsigned( - &self, - equivocation_proof: types::report_equivocation_unsigned::EquivocationProof, - key_owner_proof: types::report_equivocation_unsigned::KeyOwnerProof, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Beefy", - "report_equivocation_unsigned", - types::ReportEquivocationUnsigned { - equivocation_proof: ::std::boxed::Box::new(equivocation_proof), - key_owner_proof, - }, - [ - 126u8, 201u8, 236u8, 234u8, 107u8, 52u8, 37u8, 115u8, 228u8, 232u8, - 103u8, 193u8, 143u8, 224u8, 79u8, 192u8, 207u8, 204u8, 161u8, 103u8, - 210u8, 131u8, 64u8, 251u8, 48u8, 196u8, 249u8, 148u8, 2u8, 179u8, - 135u8, 121u8, - ], - ) - } - #[doc = "Reset BEEFY consensus by setting a new BEEFY genesis at `delay_in_blocks` blocks in the"] - #[doc = "future."] - #[doc = ""] - #[doc = "Note: `delay_in_blocks` has to be at least 1."] - pub fn set_new_genesis( - &self, - delay_in_blocks: types::set_new_genesis::DelayInBlocks, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Beefy", - "set_new_genesis", - types::SetNewGenesis { delay_in_blocks }, - [ - 147u8, 6u8, 252u8, 43u8, 77u8, 91u8, 170u8, 45u8, 112u8, 155u8, 158u8, - 79u8, 1u8, 116u8, 162u8, 146u8, 181u8, 9u8, 171u8, 48u8, 198u8, 210u8, - 243u8, 64u8, 229u8, 35u8, 28u8, 177u8, 144u8, 22u8, 165u8, 163u8, - ], - ) - } - } - } - pub mod storage { - use super::runtime_types; - pub mod types { - use super::runtime_types; - pub mod authorities { - use super::runtime_types; - pub type Authorities = - runtime_types::bounded_collections::bounded_vec::BoundedVec< - runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, - >; - } - pub mod validator_set_id { - use super::runtime_types; - pub type ValidatorSetId = ::core::primitive::u64; - } - pub mod next_authorities { - use super::runtime_types; - pub type NextAuthorities = - runtime_types::bounded_collections::bounded_vec::BoundedVec< - runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, - >; - } - pub mod set_id_session { - use super::runtime_types; - pub type SetIdSession = ::core::primitive::u32; - pub type Param0 = ::core::primitive::u64; - } - pub mod genesis_block { - use super::runtime_types; - pub type GenesisBlock = ::core::option::Option<::core::primitive::u32>; - } - } - pub struct StorageApi; - impl StorageApi { - #[doc = " The current authorities set"] - pub fn authorities( - &self, - ) -> ::subxt::storage::address::Address< - (), - types::authorities::Authorities, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Beefy", - "Authorities", - (), - [ - 53u8, 171u8, 94u8, 33u8, 46u8, 83u8, 105u8, 120u8, 123u8, 201u8, 141u8, - 71u8, 131u8, 150u8, 51u8, 121u8, 67u8, 45u8, 249u8, 146u8, 85u8, 113u8, - 23u8, 59u8, 59u8, 41u8, 0u8, 226u8, 98u8, 166u8, 253u8, 59u8, - ], - ) - } - #[doc = " The current validator set id"] - pub fn validator_set_id( - &self, - ) -> ::subxt::storage::address::Address< - (), - types::validator_set_id::ValidatorSetId, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Beefy", - "ValidatorSetId", - (), - [ - 168u8, 84u8, 23u8, 134u8, 153u8, 30u8, 183u8, 176u8, 206u8, 100u8, - 109u8, 86u8, 109u8, 126u8, 146u8, 175u8, 173u8, 1u8, 253u8, 42u8, - 122u8, 207u8, 71u8, 4u8, 145u8, 83u8, 148u8, 29u8, 243u8, 52u8, 29u8, - 78u8, - ], - ) - } - #[doc = " Authorities set scheduled to be used with the next session"] - pub fn next_authorities( - &self, - ) -> ::subxt::storage::address::Address< - (), - types::next_authorities::NextAuthorities, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Beefy", - "NextAuthorities", - (), - [ - 87u8, 180u8, 0u8, 85u8, 209u8, 13u8, 131u8, 103u8, 8u8, 226u8, 42u8, - 72u8, 38u8, 47u8, 190u8, 78u8, 62u8, 4u8, 161u8, 130u8, 87u8, 196u8, - 13u8, 209u8, 205u8, 98u8, 104u8, 91u8, 3u8, 47u8, 82u8, 11u8, - ], - ) - } - #[doc = " A mapping from BEEFY set ID to the index of the *most recent* session for which its"] - #[doc = " members were responsible."] - #[doc = ""] - #[doc = " This is only used for validating equivocation proofs. An equivocation proof must"] - #[doc = " contains a key-ownership proof for a given session, therefore we need a way to tie"] - #[doc = " together sessions and BEEFY set ids, i.e. we need to validate that a validator"] - #[doc = " was the owner of a given key on a given session, and what the active set ID was"] - #[doc = " during that session."] - #[doc = ""] - #[doc = " TWOX-NOTE: `ValidatorSetId` is not under user control."] - pub fn set_id_session_iter( - &self, - ) -> ::subxt::storage::address::Address< - (), - types::set_id_session::SetIdSession, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Beefy", - "SetIdSession", - (), - [ - 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, - 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, - 238u8, 18u8, 209u8, 203u8, 38u8, 148u8, 16u8, 105u8, 72u8, 169u8, - ], - ) - } - #[doc = " A mapping from BEEFY set ID to the index of the *most recent* session for which its"] - #[doc = " members were responsible."] - #[doc = ""] - #[doc = " This is only used for validating equivocation proofs. An equivocation proof must"] - #[doc = " contains a key-ownership proof for a given session, therefore we need a way to tie"] - #[doc = " together sessions and BEEFY set ids, i.e. we need to validate that a validator"] - #[doc = " was the owner of a given key on a given session, and what the active set ID was"] - #[doc = " during that session."] - #[doc = ""] - #[doc = " TWOX-NOTE: `ValidatorSetId` is not under user control."] - pub fn set_id_session( - &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, - types::set_id_session::SetIdSession, - ::subxt::storage::address::Yes, - (), - (), - > { - ::subxt::storage::address::Address::new_static( - "Beefy", - "SetIdSession", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - [ - 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, - 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, - 238u8, 18u8, 209u8, 203u8, 38u8, 148u8, 16u8, 105u8, 72u8, 169u8, - ], - ) - } - #[doc = " Block number where BEEFY consensus is enabled/started."] - #[doc = " By changing this (through privileged `set_new_genesis()`), BEEFY consensus is effectively"] - #[doc = " restarted from the newly set block number."] - pub fn genesis_block( - &self, - ) -> ::subxt::storage::address::Address< - (), - types::genesis_block::GenesisBlock, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Beefy", - "GenesisBlock", - (), - [ - 198u8, 155u8, 11u8, 240u8, 189u8, 245u8, 159u8, 127u8, 55u8, 33u8, - 48u8, 29u8, 209u8, 119u8, 163u8, 24u8, 28u8, 22u8, 163u8, 163u8, 124u8, - 88u8, 126u8, 4u8, 193u8, 158u8, 29u8, 243u8, 212u8, 4u8, 41u8, 22u8, - ], - ) - } - } - } - pub mod constants { - use super::runtime_types; - pub struct ConstantsApi; - impl ConstantsApi { - #[doc = " The maximum number of authorities that can be added."] - pub fn max_authorities( - &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "Beefy", - "MaxAuthorities", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } - #[doc = " The maximum number of nominators for each validator."] - pub fn max_nominators( - &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "Beefy", - "MaxNominators", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } - #[doc = " The maximum number of entries to keep in the set id to session index mapping."] - #[doc = ""] - #[doc = " Since the `SetIdSession` map is only used for validating equivocations this"] - #[doc = " value should relate to the bonding duration of whatever staking system is"] - #[doc = " being used (if any). If equivocation handling is not enabled then this value"] - #[doc = " can be zero."] - pub fn max_set_id_session_entries( - &self, - ) -> ::subxt::constants::Address<::core::primitive::u64> { - ::subxt::constants::Address::new_static( - "Beefy", - "MaxSetIdSessionEntries", - [ - 128u8, 214u8, 205u8, 242u8, 181u8, 142u8, 124u8, 231u8, 190u8, 146u8, - 59u8, 226u8, 157u8, 101u8, 103u8, 117u8, 249u8, 65u8, 18u8, 191u8, - 103u8, 119u8, 53u8, 85u8, 81u8, 96u8, 220u8, 42u8, 184u8, 239u8, 42u8, - 246u8, - ], - ) - } - } - } - } - pub mod mmr { - use super::root_mod; - use super::runtime_types; - pub mod storage { - use super::runtime_types; - pub mod types { - use super::runtime_types; - pub mod root_hash { - use super::runtime_types; - pub type RootHash = ::subxt::utils::H256; - } - pub mod number_of_leaves { - use super::runtime_types; - pub type NumberOfLeaves = ::core::primitive::u64; - } - pub mod nodes { - use super::runtime_types; - pub type Nodes = ::subxt::utils::H256; - pub type Param0 = ::core::primitive::u64; - } - } - pub struct StorageApi; - impl StorageApi { - #[doc = " Latest MMR Root hash."] - pub fn root_hash( - &self, - ) -> ::subxt::storage::address::Address< - (), - types::root_hash::RootHash, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Mmr", - "RootHash", - (), - [ - 111u8, 206u8, 173u8, 92u8, 67u8, 49u8, 150u8, 113u8, 90u8, 245u8, 38u8, - 254u8, 76u8, 250u8, 167u8, 66u8, 130u8, 129u8, 251u8, 220u8, 172u8, - 229u8, 162u8, 251u8, 36u8, 227u8, 43u8, 189u8, 7u8, 106u8, 23u8, 13u8, - ], - ) - } - #[doc = " Current size of the MMR (number of leaves)."] - pub fn number_of_leaves( - &self, - ) -> ::subxt::storage::address::Address< - (), - types::number_of_leaves::NumberOfLeaves, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Mmr", - "NumberOfLeaves", - (), - [ - 123u8, 58u8, 149u8, 174u8, 85u8, 45u8, 20u8, 115u8, 241u8, 0u8, 51u8, - 174u8, 234u8, 60u8, 230u8, 59u8, 237u8, 144u8, 170u8, 32u8, 4u8, 0u8, - 34u8, 163u8, 238u8, 205u8, 93u8, 208u8, 53u8, 38u8, 141u8, 195u8, - ], - ) - } - #[doc = " Hashes of the nodes in the MMR."] - #[doc = ""] - #[doc = " Note this collection only contains MMR peaks, the inner nodes (and leaves)"] - #[doc = " are pruned and only stored in the Offchain DB."] - pub fn nodes_iter( - &self, - ) -> ::subxt::storage::address::Address< - (), - types::nodes::Nodes, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Mmr", - "Nodes", - (), - [ - 27u8, 84u8, 41u8, 195u8, 146u8, 81u8, 211u8, 189u8, 63u8, 125u8, 173u8, - 206u8, 69u8, 198u8, 202u8, 213u8, 89u8, 31u8, 89u8, 177u8, 76u8, 154u8, - 249u8, 197u8, 133u8, 78u8, 142u8, 71u8, 183u8, 3u8, 132u8, 25u8, - ], - ) - } - #[doc = " Hashes of the nodes in the MMR."] - #[doc = ""] - #[doc = " Note this collection only contains MMR peaks, the inner nodes (and leaves)"] - #[doc = " are pruned and only stored in the Offchain DB."] - pub fn nodes( - &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, - types::nodes::Nodes, - ::subxt::storage::address::Yes, - (), - (), - > { - ::subxt::storage::address::Address::new_static( - "Mmr", - "Nodes", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), - [ - 27u8, 84u8, 41u8, 195u8, 146u8, 81u8, 211u8, 189u8, 63u8, 125u8, 173u8, - 206u8, 69u8, 198u8, 202u8, 213u8, 89u8, 31u8, 89u8, 177u8, 76u8, 154u8, - 249u8, 197u8, 133u8, 78u8, 142u8, 71u8, 183u8, 3u8, 132u8, 25u8, - ], - ) - } - } - } - } - pub mod mmr_leaf { - use super::root_mod; - use super::runtime_types; - pub mod storage { - use super::runtime_types; - pub mod types { - use super::runtime_types; - pub mod beefy_authorities { - use super::runtime_types; - pub type BeefyAuthorities = - runtime_types::sp_consensus_beefy::mmr::BeefyAuthoritySet< - ::subxt::utils::H256, - >; - } - pub mod beefy_next_authorities { - use super::runtime_types; - pub type BeefyNextAuthorities = - runtime_types::sp_consensus_beefy::mmr::BeefyAuthoritySet< - ::subxt::utils::H256, - >; - } - } - pub struct StorageApi; - impl StorageApi { - #[doc = " Details of current BEEFY authority set."] - pub fn beefy_authorities( - &self, - ) -> ::subxt::storage::address::Address< - (), - types::beefy_authorities::BeefyAuthorities, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "MmrLeaf", - "BeefyAuthorities", - (), - [ - 128u8, 35u8, 176u8, 79u8, 224u8, 58u8, 214u8, 234u8, 231u8, 71u8, - 227u8, 153u8, 180u8, 189u8, 66u8, 44u8, 47u8, 174u8, 0u8, 83u8, 121u8, - 182u8, 226u8, 44u8, 224u8, 173u8, 237u8, 102u8, 231u8, 146u8, 110u8, - 7u8, - ], - ) - } - #[doc = " Details of next BEEFY authority set."] - #[doc = ""] - #[doc = " This storage entry is used as cache for calls to `update_beefy_next_authority_set`."] - pub fn beefy_next_authorities( - &self, - ) -> ::subxt::storage::address::Address< - (), - types::beefy_next_authorities::BeefyNextAuthorities, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "MmrLeaf", - "BeefyNextAuthorities", - (), - [ - 97u8, 71u8, 52u8, 111u8, 120u8, 251u8, 183u8, 155u8, 177u8, 100u8, - 236u8, 142u8, 204u8, 117u8, 95u8, 40u8, 201u8, 36u8, 32u8, 82u8, 38u8, - 234u8, 135u8, 39u8, 224u8, 69u8, 94u8, 85u8, 12u8, 89u8, 97u8, 218u8, - ], - ) - } - } - } - } - pub mod identity_migrator { - use super::root_mod; - use super::runtime_types; - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub type Call = runtime_types::polkadot_runtime_common::identity_migrator::pallet::Call; - pub mod calls { - use super::root_mod; - use super::runtime_types; - type DispatchError = runtime_types::sp_runtime::DispatchError; - pub mod types { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Reap the `IdentityInfo` of `who` from the Identity pallet of `T`, unreserving any"] - #[doc = "deposits held and removing storage items associated with `who`."] - pub struct ReapIdentity { - pub who: reap_identity::Who, - } - pub mod reap_identity { - use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; - } - impl ::subxt::blocks::StaticExtrinsic for ReapIdentity { - const PALLET: &'static str = "IdentityMigrator"; - const CALL: &'static str = "reap_identity"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Update the deposit of `who`. Meant to be called by the system with an XCM `Transact`"] - #[doc = "Instruction."] - pub struct PokeDeposit { - pub who: poke_deposit::Who, - } - pub mod poke_deposit { - use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; - } - impl ::subxt::blocks::StaticExtrinsic for PokeDeposit { - const PALLET: &'static str = "IdentityMigrator"; - const CALL: &'static str = "poke_deposit"; - } - } - pub struct TransactionApi; - impl TransactionApi { - #[doc = "Reap the `IdentityInfo` of `who` from the Identity pallet of `T`, unreserving any"] - #[doc = "deposits held and removing storage items associated with `who`."] - pub fn reap_identity( - &self, - who: types::reap_identity::Who, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "IdentityMigrator", - "reap_identity", - types::ReapIdentity { who }, - [ - 187u8, 110u8, 202u8, 220u8, 54u8, 240u8, 242u8, 171u8, 5u8, 83u8, - 129u8, 93u8, 213u8, 208u8, 21u8, 236u8, 121u8, 128u8, 127u8, 121u8, - 153u8, 118u8, 232u8, 44u8, 20u8, 124u8, 214u8, 185u8, 249u8, 182u8, - 136u8, 96u8, - ], - ) - } - #[doc = "Update the deposit of `who`. Meant to be called by the system with an XCM `Transact`"] - #[doc = "Instruction."] - pub fn poke_deposit( - &self, - who: types::poke_deposit::Who, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "IdentityMigrator", - "poke_deposit", - types::PokeDeposit { who }, - [ - 42u8, 67u8, 168u8, 124u8, 75u8, 32u8, 143u8, 173u8, 14u8, 28u8, 76u8, - 35u8, 196u8, 255u8, 250u8, 33u8, 128u8, 159u8, 132u8, 124u8, 51u8, - 243u8, 166u8, 55u8, 208u8, 101u8, 188u8, 133u8, 36u8, 18u8, 119u8, - 146u8, - ], - ) - } - } - } - #[doc = "The `Event` enum of this pallet"] - pub type Event = runtime_types::polkadot_runtime_common::identity_migrator::pallet::Event; - pub mod events { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The identity and all sub accounts were reaped for `who`."] - pub struct IdentityReaped { - pub who: identity_reaped::Who, - } - pub mod identity_reaped { - use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; - } - impl ::subxt::events::StaticEvent for IdentityReaped { - const PALLET: &'static str = "IdentityMigrator"; - const EVENT: &'static str = "IdentityReaped"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The deposits held for `who` were updated. `identity` is the new deposit held for"] - #[doc = "identity info, and `subs` is the new deposit held for the sub-accounts."] - pub struct DepositUpdated { - pub who: deposit_updated::Who, - pub identity: deposit_updated::Identity, - pub subs: deposit_updated::Subs, - } - pub mod deposit_updated { - use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; - pub type Identity = ::core::primitive::u128; - pub type Subs = ::core::primitive::u128; - } - impl ::subxt::events::StaticEvent for DepositUpdated { - const PALLET: &'static str = "IdentityMigrator"; - const EVENT: &'static str = "DepositUpdated"; - } - } - } pub mod paras_sudo_wrapper { use super::root_mod; use super::runtime_types; @@ -45038,20 +41575,20 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Schedule a para to be initialized at the start of the next session."] - #[doc = ""] - #[doc = "This should only be used for TESTING and not on PRODUCTION chains. It automatically"] - #[doc = "assigns Coretime to the chain and increases the number of cores. Thus, there is no"] - #[doc = "running coretime chain required."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::sudo_schedule_para_initialize`]."] pub struct SudoScheduleParaInitialize { pub id: sudo_schedule_para_initialize::Id, pub genesis: sudo_schedule_para_initialize::Genesis, @@ -45062,21 +41599,25 @@ pub mod api { pub type Genesis = runtime_types::polkadot_runtime_parachains::paras::ParaGenesisArgs; } - impl ::subxt::blocks::StaticExtrinsic for SudoScheduleParaInitialize { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SudoScheduleParaInitialize { const PALLET: &'static str = "ParasSudoWrapper"; const CALL: &'static str = "sudo_schedule_para_initialize"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Schedule a para to be cleaned up at the start of the next session."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::sudo_schedule_para_cleanup`]."] pub struct SudoScheduleParaCleanup { pub id: sudo_schedule_para_cleanup::Id, } @@ -45084,21 +41625,25 @@ pub mod api { use super::runtime_types; pub type Id = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::blocks::StaticExtrinsic for SudoScheduleParaCleanup { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SudoScheduleParaCleanup { const PALLET: &'static str = "ParasSudoWrapper"; const CALL: &'static str = "sudo_schedule_para_cleanup"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Upgrade a parathread (on-demand parachain) to a lease holding parachain"] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::sudo_schedule_parathread_upgrade`]."] pub struct SudoScheduleParathreadUpgrade { pub id: sudo_schedule_parathread_upgrade::Id, } @@ -45106,21 +41651,25 @@ pub mod api { use super::runtime_types; pub type Id = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::blocks::StaticExtrinsic for SudoScheduleParathreadUpgrade { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SudoScheduleParathreadUpgrade { const PALLET: &'static str = "ParasSudoWrapper"; const CALL: &'static str = "sudo_schedule_parathread_upgrade"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Downgrade a lease holding parachain to an on-demand parachain"] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::sudo_schedule_parachain_downgrade`]."] pub struct SudoScheduleParachainDowngrade { pub id: sudo_schedule_parachain_downgrade::Id, } @@ -45128,51 +41677,54 @@ pub mod api { use super::runtime_types; pub type Id = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::blocks::StaticExtrinsic for SudoScheduleParachainDowngrade { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SudoScheduleParachainDowngrade { const PALLET: &'static str = "ParasSudoWrapper"; const CALL: &'static str = "sudo_schedule_parachain_downgrade"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Send a downward XCM to the given para."] - #[doc = ""] - #[doc = "The given parachain should exist and the payload should not exceed the preconfigured"] - #[doc = "size `config.max_downward_message_size`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::sudo_queue_downward_xcm`]."] pub struct SudoQueueDownwardXcm { pub id: sudo_queue_downward_xcm::Id, - pub xcm: ::std::boxed::Box, + pub xcm: + ::subxt::ext::subxt_core::alloc::boxed::Box, } pub mod sudo_queue_downward_xcm { use super::runtime_types; pub type Id = runtime_types::polkadot_parachain_primitives::primitives::Id; - pub type Xcm = runtime_types::xcm::VersionedXcm; + pub type Xcm = runtime_types::xcm::VersionedXcm1; } - impl ::subxt::blocks::StaticExtrinsic for SudoQueueDownwardXcm { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SudoQueueDownwardXcm { const PALLET: &'static str = "ParasSudoWrapper"; const CALL: &'static str = "sudo_queue_downward_xcm"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Forcefully establish a channel from the sender to the recipient."] - #[doc = ""] - #[doc = "This is equivalent to sending an `Hrmp::hrmp_init_open_channel` extrinsic followed by"] - #[doc = "`Hrmp::hrmp_accept_open_channel`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::sudo_establish_hrmp_channel`]."] pub struct SudoEstablishHrmpChannel { pub sender: sudo_establish_hrmp_channel::Sender, pub recipient: sudo_establish_hrmp_channel::Recipient, @@ -45187,24 +41739,21 @@ pub mod api { pub type MaxCapacity = ::core::primitive::u32; pub type MaxMessageSize = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SudoEstablishHrmpChannel { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SudoEstablishHrmpChannel { const PALLET: &'static str = "ParasSudoWrapper"; const CALL: &'static str = "sudo_establish_hrmp_channel"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Schedule a para to be initialized at the start of the next session."] - #[doc = ""] - #[doc = "This should only be used for TESTING and not on PRODUCTION chains. It automatically"] - #[doc = "assigns Coretime to the chain and increases the number of cores. Thus, there is no"] - #[doc = "running coretime chain required."] + #[doc = "See [`Pallet::sudo_schedule_para_initialize`]."] pub fn sudo_schedule_para_initialize( &self, id: types::sudo_schedule_para_initialize::Id, genesis: types::sudo_schedule_para_initialize::Genesis, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "ParasSudoWrapper", "sudo_schedule_para_initialize", types::SudoScheduleParaInitialize { id, genesis }, @@ -45215,12 +41764,13 @@ pub mod api { ], ) } - #[doc = "Schedule a para to be cleaned up at the start of the next session."] + #[doc = "See [`Pallet::sudo_schedule_para_cleanup`]."] pub fn sudo_schedule_para_cleanup( &self, id: types::sudo_schedule_para_cleanup::Id, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "ParasSudoWrapper", "sudo_schedule_para_cleanup", types::SudoScheduleParaCleanup { id }, @@ -45231,12 +41781,13 @@ pub mod api { ], ) } - #[doc = "Upgrade a parathread (on-demand parachain) to a lease holding parachain"] + #[doc = "See [`Pallet::sudo_schedule_parathread_upgrade`]."] pub fn sudo_schedule_parathread_upgrade( &self, id: types::sudo_schedule_parathread_upgrade::Id, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "ParasSudoWrapper", "sudo_schedule_parathread_upgrade", types::SudoScheduleParathreadUpgrade { id }, @@ -45248,12 +41799,13 @@ pub mod api { ], ) } - #[doc = "Downgrade a lease holding parachain to an on-demand parachain"] + #[doc = "See [`Pallet::sudo_schedule_parachain_downgrade`]."] pub fn sudo_schedule_parachain_downgrade( &self, id: types::sudo_schedule_parachain_downgrade::Id, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "ParasSudoWrapper", "sudo_schedule_parachain_downgrade", types::SudoScheduleParachainDowngrade { id }, @@ -45265,41 +41817,38 @@ pub mod api { ], ) } - #[doc = "Send a downward XCM to the given para."] - #[doc = ""] - #[doc = "The given parachain should exist and the payload should not exceed the preconfigured"] - #[doc = "size `config.max_downward_message_size`."] + #[doc = "See [`Pallet::sudo_queue_downward_xcm`]."] pub fn sudo_queue_downward_xcm( &self, id: types::sudo_queue_downward_xcm::Id, xcm: types::sudo_queue_downward_xcm::Xcm, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "ParasSudoWrapper", "sudo_queue_downward_xcm", types::SudoQueueDownwardXcm { id, - xcm: ::std::boxed::Box::new(xcm), + xcm: ::subxt::ext::subxt_core::alloc::boxed::Box::new(xcm), }, [ - 35u8, 59u8, 126u8, 248u8, 211u8, 246u8, 239u8, 67u8, 252u8, 100u8, - 231u8, 46u8, 197u8, 83u8, 150u8, 54u8, 215u8, 188u8, 76u8, 193u8, 60u8, - 38u8, 251u8, 162u8, 19u8, 15u8, 214u8, 51u8, 24u8, 2u8, 9u8, 116u8, + 144u8, 179u8, 113u8, 39u8, 46u8, 58u8, 218u8, 220u8, 98u8, 232u8, + 121u8, 119u8, 127u8, 99u8, 52u8, 189u8, 232u8, 28u8, 233u8, 54u8, + 122u8, 206u8, 155u8, 7u8, 88u8, 167u8, 203u8, 251u8, 96u8, 156u8, 23u8, + 54u8, ], ) } - #[doc = "Forcefully establish a channel from the sender to the recipient."] - #[doc = ""] - #[doc = "This is equivalent to sending an `Hrmp::hrmp_init_open_channel` extrinsic followed by"] - #[doc = "`Hrmp::hrmp_accept_open_channel`."] + #[doc = "See [`Pallet::sudo_establish_hrmp_channel`]."] pub fn sudo_establish_hrmp_channel( &self, sender: types::sudo_establish_hrmp_channel::Sender, recipient: types::sudo_establish_hrmp_channel::Recipient, max_capacity: types::sudo_establish_hrmp_channel::MaxCapacity, max_message_size: types::sudo_establish_hrmp_channel::MaxMessageSize, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "ParasSudoWrapper", "sudo_establish_hrmp_channel", types::SudoEstablishHrmpChannel { @@ -45332,16 +41881,20 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Assign a permanent parachain slot and immediately create a lease for it."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::assign_perm_parachain_slot`]."] pub struct AssignPermParachainSlot { pub id: assign_perm_parachain_slot::Id, } @@ -45349,23 +41902,25 @@ pub mod api { use super::runtime_types; pub type Id = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::blocks::StaticExtrinsic for AssignPermParachainSlot { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for AssignPermParachainSlot { const PALLET: &'static str = "AssignedSlots"; const CALL: &'static str = "assign_perm_parachain_slot"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Assign a temporary parachain slot. The function tries to create a lease for it"] - #[doc = "immediately if `SlotLeasePeriodStart::Current` is specified, and if the number"] - #[doc = "of currently active temporary slots is below `MaxTemporarySlotPerLeasePeriod`."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::assign_temp_parachain_slot`]."] pub struct AssignTempParachainSlot { pub id: assign_temp_parachain_slot::Id, pub lease_period_start: assign_temp_parachain_slot::LeasePeriodStart, @@ -45375,21 +41930,25 @@ pub mod api { pub type Id = runtime_types::polkadot_parachain_primitives::primitives::Id; pub type LeasePeriodStart = runtime_types :: polkadot_runtime_common :: assigned_slots :: SlotLeasePeriodStart ; } - impl ::subxt::blocks::StaticExtrinsic for AssignTempParachainSlot { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for AssignTempParachainSlot { const PALLET: &'static str = "AssignedSlots"; const CALL: &'static str = "assign_temp_parachain_slot"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Unassign a permanent or temporary parachain slot"] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::unassign_parachain_slot`]."] pub struct UnassignParachainSlot { pub id: unassign_parachain_slot::Id, } @@ -45397,21 +41956,25 @@ pub mod api { use super::runtime_types; pub type Id = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::blocks::StaticExtrinsic for UnassignParachainSlot { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for UnassignParachainSlot { const PALLET: &'static str = "AssignedSlots"; const CALL: &'static str = "unassign_parachain_slot"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Sets the storage value [`MaxPermanentSlots`]."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_max_permanent_slots`]."] pub struct SetMaxPermanentSlots { pub slots: set_max_permanent_slots::Slots, } @@ -45419,21 +41982,25 @@ pub mod api { use super::runtime_types; pub type Slots = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetMaxPermanentSlots { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetMaxPermanentSlots { const PALLET: &'static str = "AssignedSlots"; const CALL: &'static str = "set_max_permanent_slots"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Sets the storage value [`MaxTemporarySlots`]."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_max_temporary_slots`]."] pub struct SetMaxTemporarySlots { pub slots: set_max_temporary_slots::Slots, } @@ -45441,19 +42008,20 @@ pub mod api { use super::runtime_types; pub type Slots = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for SetMaxTemporarySlots { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetMaxTemporarySlots { const PALLET: &'static str = "AssignedSlots"; const CALL: &'static str = "set_max_temporary_slots"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Assign a permanent parachain slot and immediately create a lease for it."] + #[doc = "See [`Pallet::assign_perm_parachain_slot`]."] pub fn assign_perm_parachain_slot( &self, id: types::assign_perm_parachain_slot::Id, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "AssignedSlots", "assign_perm_parachain_slot", types::AssignPermParachainSlot { id }, @@ -45464,15 +42032,14 @@ pub mod api { ], ) } - #[doc = "Assign a temporary parachain slot. The function tries to create a lease for it"] - #[doc = "immediately if `SlotLeasePeriodStart::Current` is specified, and if the number"] - #[doc = "of currently active temporary slots is below `MaxTemporarySlotPerLeasePeriod`."] + #[doc = "See [`Pallet::assign_temp_parachain_slot`]."] pub fn assign_temp_parachain_slot( &self, id: types::assign_temp_parachain_slot::Id, lease_period_start: types::assign_temp_parachain_slot::LeasePeriodStart, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "AssignedSlots", "assign_temp_parachain_slot", types::AssignTempParachainSlot { @@ -45487,12 +42054,13 @@ pub mod api { ], ) } - #[doc = "Unassign a permanent or temporary parachain slot"] + #[doc = "See [`Pallet::unassign_parachain_slot`]."] pub fn unassign_parachain_slot( &self, id: types::unassign_parachain_slot::Id, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "AssignedSlots", "unassign_parachain_slot", types::UnassignParachainSlot { id }, @@ -45504,12 +42072,13 @@ pub mod api { ], ) } - #[doc = "Sets the storage value [`MaxPermanentSlots`]."] + #[doc = "See [`Pallet::set_max_permanent_slots`]."] pub fn set_max_permanent_slots( &self, slots: types::set_max_permanent_slots::Slots, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "AssignedSlots", "set_max_permanent_slots", types::SetMaxPermanentSlots { slots }, @@ -45520,12 +42089,13 @@ pub mod api { ], ) } - #[doc = "Sets the storage value [`MaxTemporarySlots`]."] + #[doc = "See [`Pallet::set_max_temporary_slots`]."] pub fn set_max_temporary_slots( &self, slots: types::set_max_temporary_slots::Slots, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "AssignedSlots", "set_max_temporary_slots", types::SetMaxTemporarySlots { slots }, @@ -45544,55 +42114,55 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A parachain was assigned a permanent parachain slot"] pub struct PermanentSlotAssigned(pub permanent_slot_assigned::Field0); pub mod permanent_slot_assigned { use super::runtime_types; pub type Field0 = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::events::StaticEvent for PermanentSlotAssigned { + impl ::subxt::ext::subxt_core::events::StaticEvent for PermanentSlotAssigned { const PALLET: &'static str = "AssignedSlots"; const EVENT: &'static str = "PermanentSlotAssigned"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A parachain was assigned a temporary parachain slot"] pub struct TemporarySlotAssigned(pub temporary_slot_assigned::Field0); pub mod temporary_slot_assigned { use super::runtime_types; pub type Field0 = runtime_types::polkadot_parachain_primitives::primitives::Id; } - impl ::subxt::events::StaticEvent for TemporarySlotAssigned { + impl ::subxt::ext::subxt_core::events::StaticEvent for TemporarySlotAssigned { const PALLET: &'static str = "AssignedSlots"; const EVENT: &'static str = "TemporarySlotAssigned"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The maximum number of permanent slots has been changed"] pub struct MaxPermanentSlotsChanged { pub slots: max_permanent_slots_changed::Slots, @@ -45601,20 +42171,20 @@ pub mod api { use super::runtime_types; pub type Slots = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for MaxPermanentSlotsChanged { + impl ::subxt::ext::subxt_core::events::StaticEvent for MaxPermanentSlotsChanged { const PALLET: &'static str = "AssignedSlots"; const EVENT: &'static str = "MaxPermanentSlotsChanged"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The maximum number of temporary slots has been changed"] pub struct MaxTemporarySlotsChanged { pub slots: max_temporary_slots_changed::Slots, @@ -45623,7 +42193,7 @@ pub mod api { use super::runtime_types; pub type Slots = ::core::primitive::u32; } - impl ::subxt::events::StaticEvent for MaxTemporarySlotsChanged { + impl ::subxt::ext::subxt_core::events::StaticEvent for MaxTemporarySlotsChanged { const PALLET: &'static str = "AssignedSlots"; const EVENT: &'static str = "MaxTemporarySlotsChanged"; } @@ -45643,7 +42213,7 @@ pub mod api { } pub mod temporary_slots { use super::runtime_types; - pub type TemporarySlots = runtime_types :: polkadot_runtime_common :: assigned_slots :: ParachainTemporarySlot < :: subxt :: utils :: AccountId32 , :: core :: primitive :: u32 > ; + pub type TemporarySlots = runtime_types :: polkadot_runtime_common :: assigned_slots :: ParachainTemporarySlot < :: subxt :: ext :: subxt_core :: utils :: AccountId32 , :: core :: primitive :: u32 > ; pub type Param0 = runtime_types::polkadot_parachain_primitives::primitives::Id; } pub mod temporary_slot_count { @@ -45668,14 +42238,14 @@ pub mod api { #[doc = " Assigned permanent slots, with their start lease period, and duration."] pub fn permanent_slots_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::permanent_slots::PermanentSlots, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "AssignedSlots", "PermanentSlots", (), @@ -45690,18 +42260,22 @@ pub mod api { #[doc = " Assigned permanent slots, with their start lease period, and duration."] pub fn permanent_slots( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::permanent_slots::Param0, + >, types::permanent_slots::PermanentSlots, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "AssignedSlots", "PermanentSlots", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 133u8, 179u8, 221u8, 222u8, 50u8, 75u8, 158u8, 137u8, 167u8, 190u8, 19u8, 237u8, 201u8, 44u8, 86u8, 64u8, 57u8, 61u8, 96u8, 112u8, 218u8, @@ -45713,14 +42287,14 @@ pub mod api { #[doc = " Number of assigned (and active) permanent slots."] pub fn permanent_slot_count( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::permanent_slot_count::PermanentSlotCount, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "AssignedSlots", "PermanentSlotCount", (), @@ -45734,14 +42308,14 @@ pub mod api { #[doc = " Assigned temporary slots."] pub fn temporary_slots_iter( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::temporary_slots::TemporarySlots, (), (), - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "AssignedSlots", "TemporarySlots", (), @@ -45756,18 +42330,22 @@ pub mod api { #[doc = " Assigned temporary slots."] pub fn temporary_slots( &self, - _0: impl ::std::borrow::Borrow, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageKey, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::Address< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::temporary_slots::Param0, + >, types::temporary_slots::TemporarySlots, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "AssignedSlots", "TemporarySlots", - ::subxt::storage::address::StaticStorageKey::new(_0.borrow()), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), [ 184u8, 245u8, 181u8, 90u8, 169u8, 232u8, 108u8, 3u8, 153u8, 4u8, 176u8, 170u8, 230u8, 163u8, 236u8, 111u8, 196u8, 218u8, 154u8, 125u8, 102u8, @@ -45779,14 +42357,14 @@ pub mod api { #[doc = " Number of assigned temporary slots."] pub fn temporary_slot_count( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::temporary_slot_count::TemporarySlotCount, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "AssignedSlots", "TemporarySlotCount", (), @@ -45800,14 +42378,14 @@ pub mod api { #[doc = " Number of active temporary slots in current slot lease period."] pub fn active_temporary_slot_count( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::active_temporary_slot_count::ActiveTemporarySlotCount, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "AssignedSlots", "ActiveTemporarySlotCount", (), @@ -45822,14 +42400,14 @@ pub mod api { #[doc = " The max number of temporary slots that can be assigned."] pub fn max_temporary_slots( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::max_temporary_slots::MaxTemporarySlots, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "AssignedSlots", "MaxTemporarySlots", (), @@ -45844,14 +42422,14 @@ pub mod api { #[doc = " The max number of permanent slots that can be assigned."] pub fn max_permanent_slots( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::max_permanent_slots::MaxPermanentSlots, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "AssignedSlots", "MaxPermanentSlots", (), @@ -45872,8 +42450,9 @@ pub mod api { #[doc = " The number of lease periods a permanent parachain slot lasts."] pub fn permanent_slot_lease_period_length( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "AssignedSlots", "PermanentSlotLeasePeriodLength", [ @@ -45887,8 +42466,9 @@ pub mod api { #[doc = " The number of lease periods a temporary parachain slot lasts."] pub fn temporary_slot_lease_period_length( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "AssignedSlots", "TemporarySlotLeasePeriodLength", [ @@ -45902,8 +42482,9 @@ pub mod api { #[doc = " The max number of temporary slots to be scheduled per lease periods."] pub fn max_temporary_slot_per_lease_period( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "AssignedSlots", "MaxTemporarySlotPerLeasePeriod", [ @@ -45929,64 +42510,71 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Add new validators to the set."] - #[doc = ""] - #[doc = "The new validators will be active from current session + 2."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::register_validators`]."] pub struct RegisterValidators { pub validators: register_validators::Validators, } pub mod register_validators { use super::runtime_types; - pub type Validators = ::std::vec::Vec<::subxt::utils::AccountId32>; + pub type Validators = ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >; } - impl ::subxt::blocks::StaticExtrinsic for RegisterValidators { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RegisterValidators { const PALLET: &'static str = "ValidatorManager"; const CALL: &'static str = "register_validators"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Remove validators from the set."] - #[doc = ""] - #[doc = "The removed validators will be deactivated from current session + 2."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::deregister_validators`]."] pub struct DeregisterValidators { pub validators: deregister_validators::Validators, } pub mod deregister_validators { use super::runtime_types; - pub type Validators = ::std::vec::Vec<::subxt::utils::AccountId32>; + pub type Validators = ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >; } - impl ::subxt::blocks::StaticExtrinsic for DeregisterValidators { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for DeregisterValidators { const PALLET: &'static str = "ValidatorManager"; const CALL: &'static str = "deregister_validators"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Add new validators to the set."] - #[doc = ""] - #[doc = "The new validators will be active from current session + 2."] + #[doc = "See [`Pallet::register_validators`]."] pub fn register_validators( &self, validators: types::register_validators::Validators, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "ValidatorManager", "register_validators", types::RegisterValidators { validators }, @@ -45998,14 +42586,13 @@ pub mod api { ], ) } - #[doc = "Remove validators from the set."] - #[doc = ""] - #[doc = "The removed validators will be deactivated from current session + 2."] + #[doc = "See [`Pallet::deregister_validators`]."] pub fn deregister_validators( &self, validators: types::deregister_validators::Validators, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "ValidatorManager", "deregister_validators", types::DeregisterValidators { validators }, @@ -46024,42 +42611,46 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "New validators were added to the set."] pub struct ValidatorsRegistered(pub validators_registered::Field0); pub mod validators_registered { use super::runtime_types; - pub type Field0 = ::std::vec::Vec<::subxt::utils::AccountId32>; + pub type Field0 = ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >; } - impl ::subxt::events::StaticEvent for ValidatorsRegistered { + impl ::subxt::ext::subxt_core::events::StaticEvent for ValidatorsRegistered { const PALLET: &'static str = "ValidatorManager"; const EVENT: &'static str = "ValidatorsRegistered"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Validators were removed from the set."] pub struct ValidatorsDeregistered(pub validators_deregistered::Field0); pub mod validators_deregistered { use super::runtime_types; - pub type Field0 = ::std::vec::Vec<::subxt::utils::AccountId32>; + pub type Field0 = ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >; } - impl ::subxt::events::StaticEvent for ValidatorsDeregistered { + impl ::subxt::ext::subxt_core::events::StaticEvent for ValidatorsDeregistered { const PALLET: &'static str = "ValidatorManager"; const EVENT: &'static str = "ValidatorsDeregistered"; } @@ -46070,11 +42661,15 @@ pub mod api { use super::runtime_types; pub mod validators_to_retire { use super::runtime_types; - pub type ValidatorsToRetire = ::std::vec::Vec<::subxt::utils::AccountId32>; + pub type ValidatorsToRetire = ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >; } pub mod validators_to_add { use super::runtime_types; - pub type ValidatorsToAdd = ::std::vec::Vec<::subxt::utils::AccountId32>; + pub type ValidatorsToAdd = ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >; } } pub struct StorageApi; @@ -46082,14 +42677,14 @@ pub mod api { #[doc = " Validators that should be retired, because their Parachain was deregistered."] pub fn validators_to_retire( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::validators_to_retire::ValidatorsToRetire, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ValidatorManager", "ValidatorsToRetire", (), @@ -46103,14 +42698,14 @@ pub mod api { #[doc = " Validators that should be added."] pub fn validators_to_add( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::validators_to_add::ValidatorsToAdd, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "ValidatorManager", "ValidatorsToAdd", (), @@ -46139,18 +42734,20 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Control the automatic migration."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be [`Config::ControlOrigin`]."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::control_auto_migration`]."] pub struct ControlAutoMigration { pub maybe_config: control_auto_migration::MaybeConfig, } @@ -46160,41 +42757,25 @@ pub mod api { runtime_types::pallet_state_trie_migration::pallet::MigrationLimits, >; } - impl ::subxt::blocks::StaticExtrinsic for ControlAutoMigration { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ControlAutoMigration { const PALLET: &'static str = "StateTrieMigration"; const CALL: &'static str = "control_auto_migration"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Continue the migration for the given `limits`."] - #[doc = ""] - #[doc = "The dispatch origin of this call can be any signed account."] - #[doc = ""] - #[doc = "This transaction has NO MONETARY INCENTIVES. calling it will not reward anyone. Albeit,"] - #[doc = "Upon successful execution, the transaction fee is returned."] - #[doc = ""] - #[doc = "The (potentially over-estimated) of the byte length of all the data read must be"] - #[doc = "provided for up-front fee-payment and weighing. In essence, the caller is guaranteeing"] - #[doc = "that executing the current `MigrationTask` with the given `limits` will not exceed"] - #[doc = "`real_size_upper` bytes of read data."] - #[doc = ""] - #[doc = "The `witness_task` is merely a helper to prevent the caller from being slashed or"] - #[doc = "generally trigger a migration that they do not intend. This parameter is just a message"] - #[doc = "from caller, saying that they believed `witness_task` was the last state of the"] - #[doc = "migration, and they only wish for their transaction to do anything, if this assumption"] - #[doc = "holds. In case `witness_task` does not match, the transaction fails."] - #[doc = ""] - #[doc = "Based on the documentation of [`MigrationTask::migrate_until_exhaustion`], the"] - #[doc = "recommended way of doing this is to pass a `limit` that only bounds `count`, as the"] - #[doc = "`size` limit can always be overwritten."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::continue_migrate`]."] pub struct ContinueMigrate { pub limits: continue_migrate::Limits, pub real_size_upper: continue_migrate::RealSizeUpper, @@ -46208,53 +42789,55 @@ pub mod api { pub type WitnessTask = runtime_types::pallet_state_trie_migration::pallet::MigrationTask; } - impl ::subxt::blocks::StaticExtrinsic for ContinueMigrate { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ContinueMigrate { const PALLET: &'static str = "StateTrieMigration"; const CALL: &'static str = "continue_migrate"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Migrate the list of top keys by iterating each of them one by one."] - #[doc = ""] - #[doc = "This does not affect the global migration process tracker ([`MigrationProcess`]), and"] - #[doc = "should only be used in case any keys are leftover due to a bug."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::migrate_custom_top`]."] pub struct MigrateCustomTop { pub keys: migrate_custom_top::Keys, pub witness_size: migrate_custom_top::WitnessSize, } pub mod migrate_custom_top { use super::runtime_types; - pub type Keys = ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>; + pub type Keys = ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + >; pub type WitnessSize = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for MigrateCustomTop { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for MigrateCustomTop { const PALLET: &'static str = "StateTrieMigration"; const CALL: &'static str = "migrate_custom_top"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Migrate the list of child keys by iterating each of them one by one."] - #[doc = ""] - #[doc = "All of the given child keys must be present under one `child_root`."] - #[doc = ""] - #[doc = "This does not affect the global migration process tracker ([`MigrationProcess`]), and"] - #[doc = "should only be used in case any keys are leftover due to a bug."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::migrate_custom_child`]."] pub struct MigrateCustomChild { pub root: migrate_custom_child::Root, pub child_keys: migrate_custom_child::ChildKeys, @@ -46262,25 +42845,32 @@ pub mod api { } pub mod migrate_custom_child { use super::runtime_types; - pub type Root = ::std::vec::Vec<::core::primitive::u8>; - pub type ChildKeys = ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>; + pub type Root = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; + pub type ChildKeys = ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + >; pub type TotalSize = ::core::primitive::u32; } - impl ::subxt::blocks::StaticExtrinsic for MigrateCustomChild { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for MigrateCustomChild { const PALLET: &'static str = "StateTrieMigration"; const CALL: &'static str = "migrate_custom_child"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Set the maximum limit of the signed migration."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_signed_max_limits`]."] pub struct SetSignedMaxLimits { pub limits: set_signed_max_limits::Limits, } @@ -46289,29 +42879,25 @@ pub mod api { pub type Limits = runtime_types::pallet_state_trie_migration::pallet::MigrationLimits; } - impl ::subxt::blocks::StaticExtrinsic for SetSignedMaxLimits { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetSignedMaxLimits { const PALLET: &'static str = "StateTrieMigration"; const CALL: &'static str = "set_signed_max_limits"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Forcefully set the progress the running migration."] - #[doc = ""] - #[doc = "This is only useful in one case: the next key to migrate is too big to be migrated with"] - #[doc = "a signed account, in a parachain context, and we simply want to skip it. A reasonable"] - #[doc = "example of this would be `:code:`, which is both very expensive to migrate, and commonly"] - #[doc = "used, so probably it is already migrated."] - #[doc = ""] - #[doc = "In case you mess things up, you can also, in principle, use this to reset the migration"] - #[doc = "process."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::force_set_progress`]."] pub struct ForceSetProgress { pub progress_top: force_set_progress::ProgressTop, pub progress_child: force_set_progress::ProgressChild, @@ -46323,21 +42909,20 @@ pub mod api { pub type ProgressChild = runtime_types::pallet_state_trie_migration::pallet::Progress; } - impl ::subxt::blocks::StaticExtrinsic for ForceSetProgress { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceSetProgress { const PALLET: &'static str = "StateTrieMigration"; const CALL: &'static str = "force_set_progress"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Control the automatic migration."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be [`Config::ControlOrigin`]."] + #[doc = "See [`Pallet::control_auto_migration`]."] pub fn control_auto_migration( &self, maybe_config: types::control_auto_migration::MaybeConfig, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "StateTrieMigration", "control_auto_migration", types::ControlAutoMigration { maybe_config }, @@ -46348,34 +42933,14 @@ pub mod api { ], ) } - #[doc = "Continue the migration for the given `limits`."] - #[doc = ""] - #[doc = "The dispatch origin of this call can be any signed account."] - #[doc = ""] - #[doc = "This transaction has NO MONETARY INCENTIVES. calling it will not reward anyone. Albeit,"] - #[doc = "Upon successful execution, the transaction fee is returned."] - #[doc = ""] - #[doc = "The (potentially over-estimated) of the byte length of all the data read must be"] - #[doc = "provided for up-front fee-payment and weighing. In essence, the caller is guaranteeing"] - #[doc = "that executing the current `MigrationTask` with the given `limits` will not exceed"] - #[doc = "`real_size_upper` bytes of read data."] - #[doc = ""] - #[doc = "The `witness_task` is merely a helper to prevent the caller from being slashed or"] - #[doc = "generally trigger a migration that they do not intend. This parameter is just a message"] - #[doc = "from caller, saying that they believed `witness_task` was the last state of the"] - #[doc = "migration, and they only wish for their transaction to do anything, if this assumption"] - #[doc = "holds. In case `witness_task` does not match, the transaction fails."] - #[doc = ""] - #[doc = "Based on the documentation of [`MigrationTask::migrate_until_exhaustion`], the"] - #[doc = "recommended way of doing this is to pass a `limit` that only bounds `count`, as the"] - #[doc = "`size` limit can always be overwritten."] + #[doc = "See [`Pallet::continue_migrate`]."] pub fn continue_migrate( &self, limits: types::continue_migrate::Limits, real_size_upper: types::continue_migrate::RealSizeUpper, witness_task: types::continue_migrate::WitnessTask, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "StateTrieMigration", "continue_migrate", types::ContinueMigrate { @@ -46391,16 +42956,14 @@ pub mod api { ], ) } - #[doc = "Migrate the list of top keys by iterating each of them one by one."] - #[doc = ""] - #[doc = "This does not affect the global migration process tracker ([`MigrationProcess`]), and"] - #[doc = "should only be used in case any keys are leftover due to a bug."] + #[doc = "See [`Pallet::migrate_custom_top`]."] pub fn migrate_custom_top( &self, keys: types::migrate_custom_top::Keys, witness_size: types::migrate_custom_top::WitnessSize, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "StateTrieMigration", "migrate_custom_top", types::MigrateCustomTop { keys, witness_size }, @@ -46411,19 +42974,15 @@ pub mod api { ], ) } - #[doc = "Migrate the list of child keys by iterating each of them one by one."] - #[doc = ""] - #[doc = "All of the given child keys must be present under one `child_root`."] - #[doc = ""] - #[doc = "This does not affect the global migration process tracker ([`MigrationProcess`]), and"] - #[doc = "should only be used in case any keys are leftover due to a bug."] + #[doc = "See [`Pallet::migrate_custom_child`]."] pub fn migrate_custom_child( &self, root: types::migrate_custom_child::Root, child_keys: types::migrate_custom_child::ChildKeys, total_size: types::migrate_custom_child::TotalSize, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "StateTrieMigration", "migrate_custom_child", types::MigrateCustomChild { @@ -46438,12 +42997,13 @@ pub mod api { ], ) } - #[doc = "Set the maximum limit of the signed migration."] + #[doc = "See [`Pallet::set_signed_max_limits`]."] pub fn set_signed_max_limits( &self, limits: types::set_signed_max_limits::Limits, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "StateTrieMigration", "set_signed_max_limits", types::SetSignedMaxLimits { limits }, @@ -46454,21 +43014,14 @@ pub mod api { ], ) } - #[doc = "Forcefully set the progress the running migration."] - #[doc = ""] - #[doc = "This is only useful in one case: the next key to migrate is too big to be migrated with"] - #[doc = "a signed account, in a parachain context, and we simply want to skip it. A reasonable"] - #[doc = "example of this would be `:code:`, which is both very expensive to migrate, and commonly"] - #[doc = "used, so probably it is already migrated."] - #[doc = ""] - #[doc = "In case you mess things up, you can also, in principle, use this to reset the migration"] - #[doc = "process."] + #[doc = "See [`Pallet::force_set_progress`]."] pub fn force_set_progress( &self, progress_top: types::force_set_progress::ProgressTop, progress_child: types::force_set_progress::ProgressChild, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "StateTrieMigration", "force_set_progress", types::ForceSetProgress { @@ -46490,15 +43043,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Given number of `(top, child)` keys were migrated respectively, with the given"] #[doc = "`compute`."] pub struct Migrated { @@ -46513,20 +43066,20 @@ pub mod api { pub type Compute = runtime_types::pallet_state_trie_migration::pallet::MigrationCompute; } - impl ::subxt::events::StaticEvent for Migrated { + impl ::subxt::ext::subxt_core::events::StaticEvent for Migrated { const PALLET: &'static str = "StateTrieMigration"; const EVENT: &'static str = "Migrated"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Some account got slashed by the given amount."] pub struct Slashed { pub who: slashed::Who, @@ -46534,39 +43087,39 @@ pub mod api { } pub mod slashed { use super::runtime_types; - pub type Who = ::subxt::utils::AccountId32; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; pub type Amount = ::core::primitive::u128; } - impl ::subxt::events::StaticEvent for Slashed { + impl ::subxt::ext::subxt_core::events::StaticEvent for Slashed { const PALLET: &'static str = "StateTrieMigration"; const EVENT: &'static str = "Slashed"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The auto migration task finished."] pub struct AutoMigrationFinished; - impl ::subxt::events::StaticEvent for AutoMigrationFinished { + impl ::subxt::ext::subxt_core::events::StaticEvent for AutoMigrationFinished { const PALLET: &'static str = "StateTrieMigration"; const EVENT: &'static str = "AutoMigrationFinished"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "Migration got halted due to an error or miss-configuration."] pub struct Halted { pub error: halted::Error, @@ -46575,7 +43128,7 @@ pub mod api { use super::runtime_types; pub type Error = runtime_types::pallet_state_trie_migration::pallet::Error; } - impl ::subxt::events::StaticEvent for Halted { + impl ::subxt::ext::subxt_core::events::StaticEvent for Halted { const PALLET: &'static str = "StateTrieMigration"; const EVENT: &'static str = "Halted"; } @@ -46609,14 +43162,14 @@ pub mod api { #[doc = " forward by any of the means provided by this pallet."] pub fn migration_process( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::migration_process::MigrationProcess, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "StateTrieMigration", "MigrationProcess", (), @@ -46632,14 +43185,14 @@ pub mod api { #[doc = " If set to None, then no automatic migration happens."] pub fn auto_limits( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::auto_limits::AutoLimits, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "StateTrieMigration", "AutoLimits", (), @@ -46655,14 +43208,14 @@ pub mod api { #[doc = " If not set, no signed submission is allowed."] pub fn signed_migration_max_limits( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::signed_migration_max_limits::SignedMigrationMaxLimits, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "StateTrieMigration", "SignedMigrationMaxLimits", (), @@ -46700,9 +43253,12 @@ pub mod api { #[doc = " - [`frame_support::storage::StorageDoubleMap`]: 96 byte"] #[doc = ""] #[doc = " For more info see"] - #[doc = " "] - pub fn max_key_len(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( + #[doc = " "] + pub fn max_key_len( + &self, + ) -> ::subxt::ext::subxt_core::constants::Address<::core::primitive::u32> + { + ::subxt::ext::subxt_core::constants::Address::new_static( "StateTrieMigration", "MaxKeyLen", [ @@ -46716,114 +43272,10 @@ pub mod api { } } } - pub mod root_testing { - use super::root_mod; - use super::runtime_types; - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub type Call = runtime_types::pallet_root_testing::pallet::Call; - pub mod calls { - use super::root_mod; - use super::runtime_types; - type DispatchError = runtime_types::sp_runtime::DispatchError; - pub mod types { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A dispatch that will fill the block weight up to the given ratio."] - pub struct FillBlock { - pub ratio: fill_block::Ratio, - } - pub mod fill_block { - use super::runtime_types; - pub type Ratio = runtime_types::sp_arithmetic::per_things::Perbill; - } - impl ::subxt::blocks::StaticExtrinsic for FillBlock { - const PALLET: &'static str = "RootTesting"; - const CALL: &'static str = "fill_block"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct TriggerDefensive; - impl ::subxt::blocks::StaticExtrinsic for TriggerDefensive { - const PALLET: &'static str = "RootTesting"; - const CALL: &'static str = "trigger_defensive"; - } - } - pub struct TransactionApi; - impl TransactionApi { - #[doc = "A dispatch that will fill the block weight up to the given ratio."] - pub fn fill_block( - &self, - ratio: types::fill_block::Ratio, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "RootTesting", - "fill_block", - types::FillBlock { ratio }, - [ - 164u8, 37u8, 43u8, 91u8, 125u8, 34u8, 208u8, 126u8, 67u8, 94u8, 184u8, - 240u8, 68u8, 208u8, 41u8, 206u8, 172u8, 95u8, 111u8, 115u8, 9u8, 250u8, - 163u8, 66u8, 240u8, 0u8, 237u8, 140u8, 87u8, 57u8, 162u8, 117u8, - ], - ) - } - pub fn trigger_defensive(&self) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "RootTesting", - "trigger_defensive", - types::TriggerDefensive {}, - [ - 170u8, 234u8, 12u8, 158u8, 10u8, 171u8, 161u8, 144u8, 101u8, 67u8, - 150u8, 128u8, 105u8, 234u8, 223u8, 60u8, 241u8, 245u8, 112u8, 21u8, - 80u8, 216u8, 72u8, 147u8, 22u8, 125u8, 19u8, 200u8, 171u8, 153u8, 88u8, - 194u8, - ], - ) - } - } - } - #[doc = "The `Event` enum of this pallet"] - pub type Event = runtime_types::pallet_root_testing::pallet::Event; - pub mod events { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Event dispatched when the trigger_defensive extrinsic is called."] - pub struct DefensiveTestCall; - impl ::subxt::events::StaticEvent for DefensiveTestCall { - const PALLET: &'static str = "RootTesting"; - const EVENT: &'static str = "DefensiveTestCall"; - } - } - } pub mod sudo { use super::root_mod; use super::runtime_types; - #[doc = "Error for the Sudo pallet."] + #[doc = "Error for the Sudo pallet"] pub type Error = runtime_types::pallet_sudo::pallet::Error; #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_sudo::pallet::Call; @@ -46834,44 +43286,49 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Authenticates the sudo key and dispatches a function call with `Root` origin."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::sudo`]."] pub struct Sudo { - pub call: ::std::boxed::Box, + pub call: ::subxt::ext::subxt_core::alloc::boxed::Box, } pub mod sudo { use super::runtime_types; pub type Call = runtime_types::rococo_runtime::RuntimeCall; } - impl ::subxt::blocks::StaticExtrinsic for Sudo { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Sudo { const PALLET: &'static str = "Sudo"; const CALL: &'static str = "sudo"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Authenticates the sudo key and dispatches a function call with `Root` origin."] - #[doc = "This function does not check the weight of the call, and instead allows the"] - #[doc = "Sudo user to specify the weight of the call."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::sudo_unchecked_weight`]."] pub struct SudoUncheckedWeight { - pub call: ::std::boxed::Box, + pub call: + ::subxt::ext::subxt_core::alloc::boxed::Box, pub weight: sudo_unchecked_weight::Weight, } pub mod sudo_unchecked_weight { @@ -46879,128 +43336,119 @@ pub mod api { pub type Call = runtime_types::rococo_runtime::RuntimeCall; pub type Weight = runtime_types::sp_weights::weight_v2::Weight; } - impl ::subxt::blocks::StaticExtrinsic for SudoUncheckedWeight { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SudoUncheckedWeight { const PALLET: &'static str = "Sudo"; const CALL: &'static str = "sudo_unchecked_weight"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Authenticates the current sudo key and sets the given AccountId (`new`) as the new sudo"] - #[doc = "key."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::set_key`]."] pub struct SetKey { pub new: set_key::New, } pub mod set_key { use super::runtime_types; - pub type New = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type New = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; } - impl ::subxt::blocks::StaticExtrinsic for SetKey { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetKey { const PALLET: &'static str = "Sudo"; const CALL: &'static str = "set_key"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Authenticates the sudo key and dispatches a function call with `Signed` origin from"] - #[doc = "a given account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "See [`Pallet::sudo_as`]."] pub struct SudoAs { pub who: sudo_as::Who, - pub call: ::std::boxed::Box, + pub call: ::subxt::ext::subxt_core::alloc::boxed::Box, } pub mod sudo_as { use super::runtime_types; - pub type Who = ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>; + pub type Who = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; pub type Call = runtime_types::rococo_runtime::RuntimeCall; } - impl ::subxt::blocks::StaticExtrinsic for SudoAs { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SudoAs { const PALLET: &'static str = "Sudo"; const CALL: &'static str = "sudo_as"; } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Permanently removes the sudo key."] - #[doc = ""] - #[doc = "**This cannot be un-done.**"] - pub struct RemoveKey; - impl ::subxt::blocks::StaticExtrinsic for RemoveKey { - const PALLET: &'static str = "Sudo"; - const CALL: &'static str = "remove_key"; - } } pub struct TransactionApi; impl TransactionApi { - #[doc = "Authenticates the sudo key and dispatches a function call with `Root` origin."] - pub fn sudo(&self, call: types::sudo::Call) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + #[doc = "See [`Pallet::sudo`]."] + pub fn sudo( + &self, + call: types::sudo::Call, + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Sudo", "sudo", types::Sudo { - call: ::std::boxed::Box::new(call), + call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), }, [ - 182u8, 237u8, 136u8, 248u8, 26u8, 98u8, 159u8, 249u8, 13u8, 148u8, - 154u8, 119u8, 136u8, 199u8, 18u8, 226u8, 185u8, 128u8, 7u8, 47u8, - 253u8, 37u8, 106u8, 90u8, 143u8, 110u8, 108u8, 93u8, 246u8, 222u8, - 212u8, 108u8, + 56u8, 148u8, 134u8, 0u8, 111u8, 126u8, 24u8, 154u8, 223u8, 48u8, 246u8, + 206u8, 238u8, 120u8, 128u8, 149u8, 172u8, 101u8, 130u8, 156u8, 150u8, + 30u8, 8u8, 160u8, 241u8, 58u8, 220u8, 53u8, 75u8, 115u8, 77u8, 222u8, ], ) } - #[doc = "Authenticates the sudo key and dispatches a function call with `Root` origin."] - #[doc = "This function does not check the weight of the call, and instead allows the"] - #[doc = "Sudo user to specify the weight of the call."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = "See [`Pallet::sudo_unchecked_weight`]."] pub fn sudo_unchecked_weight( &self, call: types::sudo_unchecked_weight::Call, weight: types::sudo_unchecked_weight::Weight, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload + { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Sudo", "sudo_unchecked_weight", types::SudoUncheckedWeight { - call: ::std::boxed::Box::new(call), + call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), weight, }, [ - 114u8, 10u8, 181u8, 185u8, 46u8, 86u8, 44u8, 238u8, 76u8, 203u8, 182u8, - 103u8, 147u8, 81u8, 36u8, 237u8, 70u8, 139u8, 182u8, 117u8, 204u8, 0u8, - 146u8, 132u8, 251u8, 162u8, 65u8, 192u8, 61u8, 0u8, 43u8, 94u8, + 125u8, 67u8, 243u8, 4u8, 12u8, 40u8, 182u8, 28u8, 143u8, 31u8, 201u8, + 50u8, 55u8, 136u8, 117u8, 189u8, 112u8, 186u8, 22u8, 25u8, 127u8, + 223u8, 255u8, 50u8, 111u8, 207u8, 85u8, 125u8, 59u8, 179u8, 239u8, + 212u8, ], ) } - #[doc = "Authenticates the current sudo key and sets the given AccountId (`new`) as the new sudo"] - #[doc = "key."] + #[doc = "See [`Pallet::set_key`]."] pub fn set_key( &self, new: types::set_key::New, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Sudo", "set_key", types::SetKey { new }, @@ -47011,42 +43459,24 @@ pub mod api { ], ) } - #[doc = "Authenticates the sudo key and dispatches a function call with `Signed` origin from"] - #[doc = "a given account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = "See [`Pallet::sudo_as`]."] pub fn sudo_as( &self, who: types::sudo_as::Who, call: types::sudo_as::Call, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( + ) -> ::subxt::ext::subxt_core::tx::Payload { + ::subxt::ext::subxt_core::tx::Payload::new_static( "Sudo", "sudo_as", types::SudoAs { who, - call: ::std::boxed::Box::new(call), + call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), }, [ - 74u8, 180u8, 112u8, 113u8, 184u8, 0u8, 87u8, 59u8, 130u8, 8u8, 222u8, - 55u8, 165u8, 38u8, 147u8, 196u8, 218u8, 10u8, 219u8, 217u8, 103u8, - 150u8, 112u8, 190u8, 59u8, 170u8, 24u8, 84u8, 84u8, 50u8, 33u8, 62u8, - ], - ) - } - #[doc = "Permanently removes the sudo key."] - #[doc = ""] - #[doc = "**This cannot be un-done.**"] - pub fn remove_key(&self) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Sudo", - "remove_key", - types::RemoveKey {}, - [ - 133u8, 253u8, 54u8, 175u8, 202u8, 239u8, 5u8, 198u8, 180u8, 138u8, - 25u8, 28u8, 109u8, 40u8, 30u8, 56u8, 126u8, 100u8, 52u8, 205u8, 250u8, - 191u8, 61u8, 195u8, 172u8, 142u8, 184u8, 239u8, 247u8, 10u8, 211u8, - 79u8, + 149u8, 84u8, 143u8, 109u8, 44u8, 175u8, 20u8, 56u8, 122u8, 248u8, + 185u8, 163u8, 218u8, 12u8, 170u8, 231u8, 118u8, 189u8, 252u8, 27u8, + 35u8, 172u8, 2u8, 108u8, 63u8, 210u8, 245u8, 96u8, 162u8, 100u8, 15u8, + 39u8, ], ) } @@ -47057,15 +43487,15 @@ pub mod api { pub mod events { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A sudo call just took place."] pub struct Sudid { pub sudo_result: sudid::SudoResult, @@ -47075,60 +43505,43 @@ pub mod api { pub type SudoResult = ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>; } - impl ::subxt::events::StaticEvent for Sudid { + impl ::subxt::ext::subxt_core::events::StaticEvent for Sudid { const PALLET: &'static str = "Sudo"; const EVENT: &'static str = "Sudid"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The sudo key has been updated."] pub struct KeyChanged { - pub old: key_changed::Old, - pub new: key_changed::New, + pub old_sudoer: key_changed::OldSudoer, } pub mod key_changed { use super::runtime_types; - pub type Old = ::core::option::Option<::subxt::utils::AccountId32>; - pub type New = ::subxt::utils::AccountId32; + pub type OldSudoer = + ::core::option::Option<::subxt::ext::subxt_core::utils::AccountId32>; } - impl ::subxt::events::StaticEvent for KeyChanged { + impl ::subxt::ext::subxt_core::events::StaticEvent for KeyChanged { const PALLET: &'static str = "Sudo"; const EVENT: &'static str = "KeyChanged"; } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The key was permanently removed."] - pub struct KeyRemoved; - impl ::subxt::events::StaticEvent for KeyRemoved { - const PALLET: &'static str = "Sudo"; - const EVENT: &'static str = "KeyRemoved"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A [sudo_as](Pallet::sudo_as) call just took place."] pub struct SudoAsDone { pub sudo_result: sudo_as_done::SudoResult, @@ -47138,7 +43551,7 @@ pub mod api { pub type SudoResult = ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>; } - impl ::subxt::events::StaticEvent for SudoAsDone { + impl ::subxt::ext::subxt_core::events::StaticEvent for SudoAsDone { const PALLET: &'static str = "Sudo"; const EVENT: &'static str = "SudoAsDone"; } @@ -47149,7 +43562,7 @@ pub mod api { use super::runtime_types; pub mod key { use super::runtime_types; - pub type Key = ::subxt::utils::AccountId32; + pub type Key = ::subxt::ext::subxt_core::utils::AccountId32; } } pub struct StorageApi; @@ -47157,14 +43570,14 @@ pub mod api { #[doc = " The `AccountId` of the sudo key."] pub fn key( &self, - ) -> ::subxt::storage::address::Address< + ) -> ::subxt::ext::subxt_core::storage::address::Address< (), types::key::Key, - ::subxt::storage::address::Yes, + ::subxt::ext::subxt_core::utils::Yes, (), (), > { - ::subxt::storage::address::Address::new_static( + ::subxt::ext::subxt_core::storage::address::Address::new_static( "Sudo", "Key", (), @@ -47185,74 +43598,563 @@ pub mod api { pub mod bounded_vec { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct BoundedVec<_0>(pub ::std::vec::Vec<_0>); + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec1<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec10<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec11<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec12<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec13<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec14<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec15<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec16<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec17<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec18<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec19<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec2<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec20<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec21<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec22<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec23<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec24<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec25<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec26<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec27<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec28<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec3<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec4<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec5<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec6<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec7<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec8<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BoundedVec9<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); } pub mod weak_bounded_vec { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct WeakBoundedVec<_0>(pub ::std::vec::Vec<_0>); + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct WeakBoundedVec1<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct WeakBoundedVec2<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct WeakBoundedVec3<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct WeakBoundedVec4<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct WeakBoundedVec5<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); } } pub mod finality_grandpa { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Equivocation<_0, _1, _2> { + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + pub struct Equivocation1<_0, _1, _2> { pub round_number: ::core::primitive::u64, pub identity: _0, pub first: (_1, _2), pub second: (_1, _2), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + pub struct Equivocation2<_0, _1, _2> { + pub round_number: ::core::primitive::u64, + pub identity: _0, + pub first: (_1, _2), + pub second: (_1, _2), + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct Precommit<_0, _1> { pub target_hash: _0, pub target_number: _1, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct Prevote<_0, _1> { pub target_hash: _0, pub target_number: _1, @@ -47263,15 +44165,19 @@ pub mod api { pub mod dispatch { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum DispatchClass { #[codec(index = 0)] Normal, @@ -47281,30 +44187,38 @@ pub mod api { Mandatory, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct DispatchInfo { pub weight: runtime_types::sp_weights::weight_v2::Weight, pub class: runtime_types::frame_support::dispatch::DispatchClass, pub pays_fee: runtime_types::frame_support::dispatch::Pays, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum Pays { #[codec(index = 0)] Yes, @@ -47312,45 +44226,57 @@ pub mod api { No, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct PerDispatchClass<_0> { pub normal: _0, pub operational: _0, pub mandatory: _0, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct PostDispatchInfo { pub actual_weight: ::core::option::Option, pub pays_fee: runtime_types::frame_support::dispatch::Pays, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum RawOrigin<_0> { #[codec(index = 0)] Root, @@ -47365,15 +44291,19 @@ pub mod api { pub mod messages { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum ProcessMessageError { #[codec(index = 0)] BadFormat, @@ -47390,29 +44320,33 @@ pub mod api { pub mod preimages { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum Bounded<_0, _1> { #[codec(index = 0)] Legacy { - hash: ::subxt::utils::H256, + hash: ::subxt::ext::subxt_core::utils::H256, }, #[codec(index = 1)] Inline( - runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::bounded_collections::bounded_vec::BoundedVec5< ::core::primitive::u8, >, ), #[codec(index = 2)] Lookup { - hash: ::subxt::utils::H256, + hash: ::subxt::ext::subxt_core::utils::H256, len: ::core::primitive::u32, }, __Ignore(::core::marker::PhantomData<(_0, _1)>), @@ -47421,15 +44355,19 @@ pub mod api { pub mod schedule { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum DispatchTime<_0> { #[codec(index = 0)] At(_0), @@ -47442,30 +44380,38 @@ pub mod api { pub mod fungible { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: CompactAs, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct HoldConsideration(pub ::core::primitive::u128); } pub mod misc { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum BalanceStatus { #[codec(index = 0)] Free, @@ -47476,15 +44422,15 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct PalletId(pub [::core::primitive::u8; 8usize]); } pub mod frame_system { @@ -47494,129 +44440,165 @@ pub mod api { pub mod check_genesis { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct CheckGenesis; } pub mod check_mortality { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct CheckMortality(pub runtime_types::sp_runtime::generic::era::Era); } pub mod check_non_zero_sender { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct CheckNonZeroSender; } pub mod check_nonce { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct CheckNonce(#[codec(compact)] pub ::core::primitive::u32); } pub mod check_spec_version { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct CheckSpecVersion; } pub mod check_tx_version { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct CheckTxVersion; } pub mod check_weight { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct CheckWeight; } } pub mod limits { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct BlockLength { pub max: runtime_types::frame_support::dispatch::PerDispatchClass< ::core::primitive::u32, >, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct BlockWeights { pub base_block: runtime_types::sp_weights::weight_v2::Weight, pub max_block: runtime_types::sp_weights::weight_v2::Weight, @@ -47625,15 +44607,19 @@ pub mod api { >, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct WeightsPerClass { pub base_extrinsic: runtime_types::sp_weights::weight_v2::Weight, pub max_extrinsic: @@ -47647,107 +44633,80 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Make some on-chain remark."] - #[doc = ""] - #[doc = "Can be executed by every `origin`."] + #[doc = "See [`Pallet::remark`]."] remark { - remark: ::std::vec::Vec<::core::primitive::u8>, + remark: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, #[codec(index = 1)] - #[doc = "Set the number of pages in the WebAssembly environment's heap."] + #[doc = "See [`Pallet::set_heap_pages`]."] set_heap_pages { pages: ::core::primitive::u64 }, #[codec(index = 2)] - #[doc = "Set the new runtime code."] + #[doc = "See [`Pallet::set_code`]."] set_code { - code: ::std::vec::Vec<::core::primitive::u8>, + code: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, #[codec(index = 3)] - #[doc = "Set the new runtime code without doing any checks of the given `code`."] - #[doc = ""] - #[doc = "Note that runtime upgrades will not run if this is called with a not-increasing spec"] - #[doc = "version!"] + #[doc = "See [`Pallet::set_code_without_checks`]."] set_code_without_checks { - code: ::std::vec::Vec<::core::primitive::u8>, + code: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, #[codec(index = 4)] - #[doc = "Set some items of storage."] + #[doc = "See [`Pallet::set_storage`]."] set_storage { - items: ::std::vec::Vec<( - ::std::vec::Vec<::core::primitive::u8>, - ::std::vec::Vec<::core::primitive::u8>, + items: ::subxt::ext::subxt_core::alloc::vec::Vec<( + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, )>, }, #[codec(index = 5)] - #[doc = "Kill some items from storage."] + #[doc = "See [`Pallet::kill_storage`]."] kill_storage { - keys: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, + keys: ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + >, }, #[codec(index = 6)] - #[doc = "Kill all storage items with a key that starts with the given prefix."] - #[doc = ""] - #[doc = "**NOTE:** We rely on the Root origin to provide us the number of subkeys under"] - #[doc = "the prefix we are removing to accurately calculate the weight of this function."] + #[doc = "See [`Pallet::kill_prefix`]."] kill_prefix { - prefix: ::std::vec::Vec<::core::primitive::u8>, + prefix: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, subkeys: ::core::primitive::u32, }, #[codec(index = 7)] - #[doc = "Make some on-chain remark and emit event."] + #[doc = "See [`Pallet::remark_with_event`]."] remark_with_event { - remark: ::std::vec::Vec<::core::primitive::u8>, - }, - #[codec(index = 9)] - #[doc = "Authorize an upgrade to a given `code_hash` for the runtime. The runtime can be supplied"] - #[doc = "later."] - #[doc = ""] - #[doc = "This call requires Root origin."] - authorize_upgrade { code_hash: ::subxt::utils::H256 }, - #[codec(index = 10)] - #[doc = "Authorize an upgrade to a given `code_hash` for the runtime. The runtime can be supplied"] - #[doc = "later."] - #[doc = ""] - #[doc = "WARNING: This authorizes an upgrade that will take place without any safety checks, for"] - #[doc = "example that the spec name remains the same and that the version number increases. Not"] - #[doc = "recommended for normal use. Use `authorize_upgrade` instead."] - #[doc = ""] - #[doc = "This call requires Root origin."] - authorize_upgrade_without_checks { code_hash: ::subxt::utils::H256 }, - #[codec(index = 11)] - #[doc = "Provide the preimage (runtime binary) `code` for an upgrade that has been authorized."] - #[doc = ""] - #[doc = "If the authorization required a version check, this call will ensure the spec name"] - #[doc = "remains unchanged and that the spec version has increased."] - #[doc = ""] - #[doc = "Depending on the runtime's `OnSetCode` configuration, this function may directly apply"] - #[doc = "the new `code` in the same block or attempt to schedule the upgrade."] - #[doc = ""] - #[doc = "All origins are allowed."] - apply_authorized_upgrade { - code: ::std::vec::Vec<::core::primitive::u8>, + remark: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Error for the System pallet"] pub enum Error { #[codec(index = 0)] @@ -47772,26 +44731,21 @@ pub mod api { #[codec(index = 5)] #[doc = "The origin filter prevent the call to be dispatched."] CallFiltered, - #[codec(index = 6)] - #[doc = "A multi-block migration is ongoing and prevents the current code from being replaced."] - MultiBlockMigrationsOngoing, - #[codec(index = 7)] - #[doc = "No upgrade authorized."] - NothingAuthorized, - #[codec(index = 8)] - #[doc = "The submitted code is not authorized."] - Unauthorized, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Event for the System pallet."] pub enum Event { #[codec(index = 0)] @@ -47811,37 +44765,31 @@ pub mod api { #[codec(index = 3)] #[doc = "A new account was created."] NewAccount { - account: ::subxt::utils::AccountId32, + account: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 4)] #[doc = "An account was reaped."] KilledAccount { - account: ::subxt::utils::AccountId32, + account: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 5)] #[doc = "On on-chain remark happened."] Remarked { - sender: ::subxt::utils::AccountId32, - hash: ::subxt::utils::H256, - }, - #[codec(index = 6)] - #[doc = "An upgrade was authorized."] - UpgradeAuthorized { - code_hash: ::subxt::utils::H256, - check_version: ::core::primitive::bool, + sender: ::subxt::ext::subxt_core::utils::AccountId32, + hash: ::subxt::ext::subxt_core::utils::H256, }, } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct AccountInfo<_0, _1> { pub nonce: _0, pub consumers: ::core::primitive::u32, @@ -47850,59 +44798,45 @@ pub mod api { pub data: _1, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct CodeUpgradeAuthorization { - pub code_hash: ::subxt::utils::H256, - pub check_version: ::core::primitive::bool, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct EventRecord<_0, _1> { pub phase: runtime_types::frame_system::Phase, pub event: _0, - pub topics: ::std::vec::Vec<_1>, + pub topics: ::subxt::ext::subxt_core::alloc::vec::Vec<_1>, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct LastRuntimeUpgradeInfo { #[codec(compact)] pub spec_version: ::core::primitive::u32, - pub spec_name: ::std::string::String, + pub spec_name: ::subxt::ext::subxt_core::alloc::string::String, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum Phase { #[codec(index = 0)] ApplyExtrinsic(::core::primitive::u32), @@ -47917,60 +44851,59 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Initialize a conversion rate to native balance for the given asset."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)"] + #[doc = "See [`Pallet::create`]."] create { - asset_kind: ::std::boxed::Box< + asset_kind: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, >, rate: runtime_types::sp_arithmetic::fixed_point::FixedU128, }, #[codec(index = 1)] - #[doc = "Update the conversion rate to native balance for the given asset."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)"] + #[doc = "See [`Pallet::update`]."] update { - asset_kind: ::std::boxed::Box< + asset_kind: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, >, rate: runtime_types::sp_arithmetic::fixed_point::FixedU128, }, #[codec(index = 2)] - #[doc = "Remove an existing conversion rate to native balance for the given asset."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)"] + #[doc = "See [`Pallet::remove`]."] remove { - asset_kind: ::std::boxed::Box< + asset_kind: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, >, }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -47979,20 +44912,21 @@ pub mod api { #[codec(index = 1)] #[doc = "The given asset ID already has an assigned conversion rate and cannot be re-created."] AlreadyExists, - #[codec(index = 2)] - #[doc = "Overflow ocurred when calculating the inverse rate."] - Overflow, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] @@ -48021,24 +44955,25 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Report authority equivocation/misbehavior. This method will verify"] - #[doc = "the equivocation proof and validate the given key ownership proof"] - #[doc = "against the extracted offender. If both are valid, the offence will"] - #[doc = "be reported."] + #[doc = "See [`Pallet::report_equivocation`]."] report_equivocation { - equivocation_proof: ::std::boxed::Box< + equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::sp_consensus_slots::EquivocationProof< runtime_types::sp_runtime::generic::header::Header< ::core::primitive::u32, @@ -48049,16 +44984,9 @@ pub mod api { key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 1)] - #[doc = "Report authority equivocation/misbehavior. This method will verify"] - #[doc = "the equivocation proof and validate the given key ownership proof"] - #[doc = "against the extracted offender. If both are valid, the offence will"] - #[doc = "be reported."] - #[doc = "This extrinsic must be called unsigned and it is expected that only"] - #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] - #[doc = "if the block author is defined it will be defined as the equivocation"] - #[doc = "reporter."] + #[doc = "See [`Pallet::report_equivocation_unsigned`]."] report_equivocation_unsigned { - equivocation_proof: ::std::boxed::Box< + equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::sp_consensus_slots::EquivocationProof< runtime_types::sp_runtime::generic::header::Header< ::core::primitive::u32, @@ -48069,24 +44997,25 @@ pub mod api { key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 2)] - #[doc = "Plan an epoch config change. The epoch config change is recorded and will be enacted on"] - #[doc = "the next call to `enact_epoch_change`. The config will be activated one epoch after."] - #[doc = "Multiple calls to this method will replace any existing planned config change that had"] - #[doc = "not been enacted yet."] + #[doc = "See [`Pallet::plan_config_change`]."] plan_config_change { config: runtime_types::sp_consensus_babe::digests::NextConfigDescriptor, }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -48109,229 +45038,105 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Transfer some liquid free balance to another account."] - #[doc = ""] - #[doc = "`transfer_allow_death` will set the `FreeBalance` of the sender and receiver."] - #[doc = "If the sender's account is below the existential deposit as a result"] - #[doc = "of the transfer, the account will be reaped."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be `Signed` by the transactor."] + #[doc = "See [`Pallet::transfer_allow_death`]."] transfer_allow_death { - dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + dest: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, #[codec(compact)] value: ::core::primitive::u128, }, #[codec(index = 2)] - #[doc = "Exactly as `transfer_allow_death`, except the origin must be root and the source account"] - #[doc = "may be specified."] + #[doc = "See [`Pallet::force_transfer`]."] force_transfer { - source: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + source: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, + dest: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, #[codec(compact)] value: ::core::primitive::u128, }, #[codec(index = 3)] - #[doc = "Same as the [`transfer_allow_death`] call, but with a check that the transfer will not"] - #[doc = "kill the origin account."] - #[doc = ""] - #[doc = "99% of the time you want [`transfer_allow_death`] instead."] - #[doc = ""] - #[doc = "[`transfer_allow_death`]: struct.Pallet.html#method.transfer"] + #[doc = "See [`Pallet::transfer_keep_alive`]."] transfer_keep_alive { - dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + dest: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, #[codec(compact)] value: ::core::primitive::u128, }, #[codec(index = 4)] - #[doc = "Transfer the entire transferable balance from the caller account."] - #[doc = ""] - #[doc = "NOTE: This function only attempts to transfer _transferable_ balances. This means that"] - #[doc = "any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be"] - #[doc = "transferred by this function. To ensure that this function results in a killed account,"] - #[doc = "you might need to prepare the account by removing any reference counters, storage"] - #[doc = "deposits, etc..."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be Signed."] - #[doc = ""] - #[doc = "- `dest`: The recipient of the transfer."] - #[doc = "- `keep_alive`: A boolean to determine if the `transfer_all` operation should send all"] - #[doc = " of the funds the account has, causing the sender account to be killed (false), or"] - #[doc = " transfer everything except at least the existential deposit, which will guarantee to"] - #[doc = " keep the sender account alive (true)."] + #[doc = "See [`Pallet::transfer_all`]."] transfer_all { - dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + dest: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, keep_alive: ::core::primitive::bool, }, #[codec(index = 5)] - #[doc = "Unreserve some balance from a user by force."] - #[doc = ""] - #[doc = "Can only be called by ROOT."] + #[doc = "See [`Pallet::force_unreserve`]."] force_unreserve { - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + who: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, amount: ::core::primitive::u128, }, #[codec(index = 6)] - #[doc = "Upgrade a specified account."] - #[doc = ""] - #[doc = "- `origin`: Must be `Signed`."] - #[doc = "- `who`: The account to be upgraded."] - #[doc = ""] - #[doc = "This will waive the transaction fee if at least all but 10% of the accounts needed to"] - #[doc = "be upgraded. (We let some not have to be upgraded just in order to allow for the"] - #[doc = "possibililty of churn)."] + #[doc = "See [`Pallet::upgrade_accounts`]."] upgrade_accounts { - who: ::std::vec::Vec<::subxt::utils::AccountId32>, + who: ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >, }, #[codec(index = 8)] - #[doc = "Set the regular balance of a given account."] - #[doc = ""] - #[doc = "The dispatch origin for this call is `root`."] + #[doc = "See [`Pallet::force_set_balance`]."] force_set_balance { - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + who: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, #[codec(compact)] new_free: ::core::primitive::u128, }, - #[codec(index = 9)] - #[doc = "Adjust the total issuance in a saturating way."] - #[doc = ""] - #[doc = "Can only be called by root and always needs a positive `delta`."] - #[doc = ""] - #[doc = "# Example"] - force_adjust_total_issuance { - direction: runtime_types::pallet_balances::types::AdjustmentDirection, - #[codec(compact)] - delta: ::core::primitive::u128, - }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub enum Call2 { - #[codec(index = 0)] - #[doc = "Transfer some liquid free balance to another account."] - #[doc = ""] - #[doc = "`transfer_allow_death` will set the `FreeBalance` of the sender and receiver."] - #[doc = "If the sender's account is below the existential deposit as a result"] - #[doc = "of the transfer, the account will be reaped."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be `Signed` by the transactor."] - transfer_allow_death { - dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - #[codec(compact)] - value: ::core::primitive::u128, - }, - #[codec(index = 2)] - #[doc = "Exactly as `transfer_allow_death`, except the origin must be root and the source account"] - #[doc = "may be specified."] - force_transfer { - source: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - #[codec(compact)] - value: ::core::primitive::u128, - }, - #[codec(index = 3)] - #[doc = "Same as the [`transfer_allow_death`] call, but with a check that the transfer will not"] - #[doc = "kill the origin account."] - #[doc = ""] - #[doc = "99% of the time you want [`transfer_allow_death`] instead."] - #[doc = ""] - #[doc = "[`transfer_allow_death`]: struct.Pallet.html#method.transfer"] - transfer_keep_alive { - dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - #[codec(compact)] - value: ::core::primitive::u128, - }, - #[codec(index = 4)] - #[doc = "Transfer the entire transferable balance from the caller account."] - #[doc = ""] - #[doc = "NOTE: This function only attempts to transfer _transferable_ balances. This means that"] - #[doc = "any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be"] - #[doc = "transferred by this function. To ensure that this function results in a killed account,"] - #[doc = "you might need to prepare the account by removing any reference counters, storage"] - #[doc = "deposits, etc..."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be Signed."] - #[doc = ""] - #[doc = "- `dest`: The recipient of the transfer."] - #[doc = "- `keep_alive`: A boolean to determine if the `transfer_all` operation should send all"] - #[doc = " of the funds the account has, causing the sender account to be killed (false), or"] - #[doc = " transfer everything except at least the existential deposit, which will guarantee to"] - #[doc = " keep the sender account alive (true)."] - transfer_all { - dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - keep_alive: ::core::primitive::bool, - }, - #[codec(index = 5)] - #[doc = "Unreserve some balance from a user by force."] - #[doc = ""] - #[doc = "Can only be called by ROOT."] - force_unreserve { - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - amount: ::core::primitive::u128, - }, - #[codec(index = 6)] - #[doc = "Upgrade a specified account."] - #[doc = ""] - #[doc = "- `origin`: Must be `Signed`."] - #[doc = "- `who`: The account to be upgraded."] - #[doc = ""] - #[doc = "This will waive the transaction fee if at least all but 10% of the accounts needed to"] - #[doc = "be upgraded. (We let some not have to be upgraded just in order to allow for the"] - #[doc = "possibililty of churn)."] - upgrade_accounts { - who: ::std::vec::Vec<::subxt::utils::AccountId32>, - }, - #[codec(index = 8)] - #[doc = "Set the regular balance of a given account."] - #[doc = ""] - #[doc = "The dispatch origin for this call is `root`."] - force_set_balance { - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - #[codec(compact)] - new_free: ::core::primitive::u128, - }, - #[codec(index = 9)] - #[doc = "Adjust the total issuance in a saturating way."] - #[doc = ""] - #[doc = "Can only be called by root and always needs a positive `delta`."] - #[doc = ""] - #[doc = "# Example"] - force_adjust_total_issuance { - direction: runtime_types::pallet_balances::types::AdjustmentDirection, - #[codec(compact)] - delta: ::core::primitive::u128, - }, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -48359,123 +45164,72 @@ pub mod api { #[doc = "Number of named reserves exceed `MaxReserves`."] TooManyReserves, #[codec(index = 8)] - #[doc = "Number of holds exceed `VariantCountOf`."] + #[doc = "Number of holds exceed `MaxHolds`."] TooManyHolds, #[codec(index = 9)] #[doc = "Number of freezes exceed `MaxFreezes`."] TooManyFreezes, - #[codec(index = 10)] - #[doc = "The issuance cannot be modified since it is already deactivated."] - IssuanceDeactivated, - #[codec(index = 11)] - #[doc = "The delta cannot be zero."] - DeltaZero, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The `Error` enum of this pallet."] - pub enum Error2 { - #[codec(index = 0)] - #[doc = "Vesting balance too high to send value."] - VestingBalance, - #[codec(index = 1)] - #[doc = "Account liquidity restrictions prevent withdrawal."] - LiquidityRestrictions, - #[codec(index = 2)] - #[doc = "Balance too low to send value."] - InsufficientBalance, - #[codec(index = 3)] - #[doc = "Value too low to create account due to existential deposit."] - ExistentialDeposit, - #[codec(index = 4)] - #[doc = "Transfer/payment would kill account."] - Expendability, - #[codec(index = 5)] - #[doc = "A vesting schedule already exists for this account."] - ExistingVestingSchedule, - #[codec(index = 6)] - #[doc = "Beneficiary account must pre-exist."] - DeadAccount, - #[codec(index = 7)] - #[doc = "Number of named reserves exceed `MaxReserves`."] - TooManyReserves, - #[codec(index = 8)] - #[doc = "Number of holds exceed `VariantCountOf`."] - TooManyHolds, - #[codec(index = 9)] - #[doc = "Number of freezes exceed `MaxFreezes`."] - TooManyFreezes, - #[codec(index = 10)] - #[doc = "The issuance cannot be modified since it is already deactivated."] - IssuanceDeactivated, - #[codec(index = 11)] - #[doc = "The delta cannot be zero."] - DeltaZero, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "An account was created with some free balance."] Endowed { - account: ::subxt::utils::AccountId32, + account: ::subxt::ext::subxt_core::utils::AccountId32, free_balance: ::core::primitive::u128, }, #[codec(index = 1)] #[doc = "An account was removed whose balance was non-zero but below ExistentialDeposit,"] #[doc = "resulting in an outright loss."] DustLost { - account: ::subxt::utils::AccountId32, + account: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, #[codec(index = 2)] #[doc = "Transfer succeeded."] Transfer { - from: ::subxt::utils::AccountId32, - to: ::subxt::utils::AccountId32, + from: ::subxt::ext::subxt_core::utils::AccountId32, + to: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, #[codec(index = 3)] #[doc = "A balance was set by root."] BalanceSet { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, free: ::core::primitive::u128, }, #[codec(index = 4)] #[doc = "Some balance was reserved (moved from free to reserved)."] Reserved { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, #[codec(index = 5)] #[doc = "Some balance was unreserved (moved from reserved to free)."] Unreserved { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, #[codec(index = 6)] #[doc = "Some balance was moved from the reserve of the first account to the second account."] #[doc = "Final argument indicates the destination balance type."] ReserveRepatriated { - from: ::subxt::utils::AccountId32, - to: ::subxt::utils::AccountId32, + from: ::subxt::ext::subxt_core::utils::AccountId32, + to: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, destination_status: runtime_types::frame_support::traits::tokens::misc::BalanceStatus, @@ -48483,48 +45237,50 @@ pub mod api { #[codec(index = 7)] #[doc = "Some amount was deposited (e.g. for transaction fees)."] Deposit { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, #[codec(index = 8)] #[doc = "Some amount was withdrawn from the account (e.g. for transaction fees)."] Withdraw { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, #[codec(index = 9)] #[doc = "Some amount was removed from the account (e.g. for misbehavior)."] Slashed { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, #[codec(index = 10)] #[doc = "Some amount was minted into an account."] Minted { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, #[codec(index = 11)] #[doc = "Some amount was burned from an account."] Burned { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, #[codec(index = 12)] #[doc = "Some amount was suspended from an account (it can be restored later)."] Suspended { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, #[codec(index = 13)] #[doc = "Some amount was restored into an account."] Restored { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, #[codec(index = 14)] #[doc = "An account was upgraded."] - Upgraded { who: ::subxt::utils::AccountId32 }, + Upgraded { + who: ::subxt::ext::subxt_core::utils::AccountId32, + }, #[codec(index = 15)] #[doc = "Total issuance was increased by `amount`, creating a credit to be balanced."] Issued { amount: ::core::primitive::u128 }, @@ -48534,189 +45290,45 @@ pub mod api { #[codec(index = 17)] #[doc = "Some balance was locked."] Locked { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, #[codec(index = 18)] #[doc = "Some balance was unlocked."] Unlocked { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, #[codec(index = 19)] #[doc = "Some balance was frozen."] Frozen { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, #[codec(index = 20)] #[doc = "Some balance was thawed."] Thawed { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, - #[codec(index = 21)] - #[doc = "The `TotalIssuance` was forcefully changed."] - TotalIssuanceForced { - old: ::core::primitive::u128, - new: ::core::primitive::u128, - }, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The `Event` enum of this pallet"] - pub enum Event2 { - #[codec(index = 0)] - #[doc = "An account was created with some free balance."] - Endowed { - account: ::subxt::utils::AccountId32, - free_balance: ::core::primitive::u128, - }, - #[codec(index = 1)] - #[doc = "An account was removed whose balance was non-zero but below ExistentialDeposit,"] - #[doc = "resulting in an outright loss."] - DustLost { - account: ::subxt::utils::AccountId32, - amount: ::core::primitive::u128, - }, - #[codec(index = 2)] - #[doc = "Transfer succeeded."] - Transfer { - from: ::subxt::utils::AccountId32, - to: ::subxt::utils::AccountId32, - amount: ::core::primitive::u128, - }, - #[codec(index = 3)] - #[doc = "A balance was set by root."] - BalanceSet { - who: ::subxt::utils::AccountId32, - free: ::core::primitive::u128, - }, - #[codec(index = 4)] - #[doc = "Some balance was reserved (moved from free to reserved)."] - Reserved { - who: ::subxt::utils::AccountId32, - amount: ::core::primitive::u128, - }, - #[codec(index = 5)] - #[doc = "Some balance was unreserved (moved from reserved to free)."] - Unreserved { - who: ::subxt::utils::AccountId32, - amount: ::core::primitive::u128, - }, - #[codec(index = 6)] - #[doc = "Some balance was moved from the reserve of the first account to the second account."] - #[doc = "Final argument indicates the destination balance type."] - ReserveRepatriated { - from: ::subxt::utils::AccountId32, - to: ::subxt::utils::AccountId32, - amount: ::core::primitive::u128, - destination_status: - runtime_types::frame_support::traits::tokens::misc::BalanceStatus, - }, - #[codec(index = 7)] - #[doc = "Some amount was deposited (e.g. for transaction fees)."] - Deposit { - who: ::subxt::utils::AccountId32, - amount: ::core::primitive::u128, - }, - #[codec(index = 8)] - #[doc = "Some amount was withdrawn from the account (e.g. for transaction fees)."] - Withdraw { - who: ::subxt::utils::AccountId32, - amount: ::core::primitive::u128, - }, - #[codec(index = 9)] - #[doc = "Some amount was removed from the account (e.g. for misbehavior)."] - Slashed { - who: ::subxt::utils::AccountId32, - amount: ::core::primitive::u128, - }, - #[codec(index = 10)] - #[doc = "Some amount was minted into an account."] - Minted { - who: ::subxt::utils::AccountId32, - amount: ::core::primitive::u128, - }, - #[codec(index = 11)] - #[doc = "Some amount was burned from an account."] - Burned { - who: ::subxt::utils::AccountId32, - amount: ::core::primitive::u128, - }, - #[codec(index = 12)] - #[doc = "Some amount was suspended from an account (it can be restored later)."] - Suspended { - who: ::subxt::utils::AccountId32, - amount: ::core::primitive::u128, - }, - #[codec(index = 13)] - #[doc = "Some amount was restored into an account."] - Restored { - who: ::subxt::utils::AccountId32, - amount: ::core::primitive::u128, - }, - #[codec(index = 14)] - #[doc = "An account was upgraded."] - Upgraded { who: ::subxt::utils::AccountId32 }, - #[codec(index = 15)] - #[doc = "Total issuance was increased by `amount`, creating a credit to be balanced."] - Issued { amount: ::core::primitive::u128 }, - #[codec(index = 16)] - #[doc = "Total issuance was decreased by `amount`, creating a debt to be balanced."] - Rescinded { amount: ::core::primitive::u128 }, - #[codec(index = 17)] - #[doc = "Some balance was locked."] - Locked { - who: ::subxt::utils::AccountId32, - amount: ::core::primitive::u128, - }, - #[codec(index = 18)] - #[doc = "Some balance was unlocked."] - Unlocked { - who: ::subxt::utils::AccountId32, - amount: ::core::primitive::u128, - }, - #[codec(index = 19)] - #[doc = "Some balance was frozen."] - Frozen { - who: ::subxt::utils::AccountId32, - amount: ::core::primitive::u128, - }, - #[codec(index = 20)] - #[doc = "Some balance was thawed."] - Thawed { - who: ::subxt::utils::AccountId32, - amount: ::core::primitive::u128, - }, - #[codec(index = 21)] - #[doc = "The `TotalIssuance` was forcefully changed."] - TotalIssuanceForced { - old: ::core::primitive::u128, - new: ::core::primitive::u128, - }, } } pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct AccountData<_0> { pub free: _0, pub reserved: _0, @@ -48724,72 +45336,72 @@ pub mod api { pub flags: runtime_types::pallet_balances::types::ExtraFlags, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum AdjustmentDirection { - #[codec(index = 0)] - Increase, - #[codec(index = 1)] - Decrease, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct BalanceLock<_0> { pub id: [::core::primitive::u8; 8usize], pub amount: _0, pub reasons: runtime_types::pallet_balances::types::Reasons, } #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: CompactAs, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct ExtraFlags(pub ::core::primitive::u128); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct IdAmount<_0, _1> { pub id: _0, pub amount: _1, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum Reasons { #[codec(index = 0)] Fee, @@ -48799,15 +45411,19 @@ pub mod api { All, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct ReserveData<_0, _1> { pub id: _0, pub amount: _1, @@ -48819,24 +45435,25 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Report voter equivocation/misbehavior. This method will verify the"] - #[doc = "equivocation proof and validate the given key ownership proof"] - #[doc = "against the extracted offender. If both are valid, the offence"] - #[doc = "will be reported."] + #[doc = "See [`Pallet::report_equivocation`]."] report_equivocation { - equivocation_proof: ::std::boxed::Box< + equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::sp_consensus_beefy::EquivocationProof< ::core::primitive::u32, runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, @@ -48846,17 +45463,9 @@ pub mod api { key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 1)] - #[doc = "Report voter equivocation/misbehavior. This method will verify the"] - #[doc = "equivocation proof and validate the given key ownership proof"] - #[doc = "against the extracted offender. If both are valid, the offence"] - #[doc = "will be reported."] - #[doc = ""] - #[doc = "This extrinsic must be called unsigned and it is expected that only"] - #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] - #[doc = "if the block author is defined it will be defined as the equivocation"] - #[doc = "reporter."] + #[doc = "See [`Pallet::report_equivocation_unsigned`]."] report_equivocation_unsigned { - equivocation_proof: ::std::boxed::Box< + equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::sp_consensus_beefy::EquivocationProof< ::core::primitive::u32, runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, @@ -48866,24 +45475,25 @@ pub mod api { key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 2)] - #[doc = "Reset BEEFY consensus by setting a new BEEFY genesis at `delay_in_blocks` blocks in the"] - #[doc = "future."] - #[doc = ""] - #[doc = "Note: `delay_in_blocks` has to be at least 1."] + #[doc = "See [`Pallet::set_new_genesis`]."] set_new_genesis { delay_in_blocks: ::core::primitive::u32, }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -48906,164 +45516,103 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Propose a new bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Payment: `TipReportDepositBase` will be reserved from the origin account, as well as"] - #[doc = "`DataDepositPerByte` for each byte in `reason`. It will be unreserved upon approval,"] - #[doc = "or slashed when rejected."] - #[doc = ""] - #[doc = "- `curator`: The curator account whom will manage this bounty."] - #[doc = "- `fee`: The curator fee."] - #[doc = "- `value`: The total payment amount of this bounty, curator fee included."] - #[doc = "- `description`: The description of this bounty."] + #[doc = "See [`Pallet::propose_bounty`]."] propose_bounty { #[codec(compact)] value: ::core::primitive::u128, - description: ::std::vec::Vec<::core::primitive::u8>, + description: + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, #[codec(index = 1)] - #[doc = "Approve a bounty proposal. At a later time, the bounty will be funded and become active"] - #[doc = "and the original deposit will be returned."] - #[doc = ""] - #[doc = "May only be called from `T::SpendOrigin`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::approve_bounty`]."] approve_bounty { #[codec(compact)] bounty_id: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "Propose a curator to a funded bounty."] - #[doc = ""] - #[doc = "May only be called from `T::SpendOrigin`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::propose_curator`]."] propose_curator { #[codec(compact)] bounty_id: ::core::primitive::u32, - curator: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + curator: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, #[codec(compact)] fee: ::core::primitive::u128, }, #[codec(index = 3)] - #[doc = "Unassign curator from a bounty."] - #[doc = ""] - #[doc = "This function can only be called by the `RejectOrigin` a signed origin."] - #[doc = ""] - #[doc = "If this function is called by the `RejectOrigin`, we assume that the curator is"] - #[doc = "malicious or inactive. As a result, we will slash the curator when possible."] - #[doc = ""] - #[doc = "If the origin is the curator, we take this as a sign they are unable to do their job and"] - #[doc = "they willingly give up. We could slash them, but for now we allow them to recover their"] - #[doc = "deposit and exit without issue. (We may want to change this if it is abused.)"] - #[doc = ""] - #[doc = "Finally, the origin can be anyone if and only if the curator is \"inactive\". This allows"] - #[doc = "anyone in the community to call out that a curator is not doing their due diligence, and"] - #[doc = "we should pick a new curator. In this case the curator should also be slashed."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::unassign_curator`]."] unassign_curator { #[codec(compact)] bounty_id: ::core::primitive::u32, }, #[codec(index = 4)] - #[doc = "Accept the curator role for a bounty."] - #[doc = "A deposit will be reserved from curator and refund upon successful payout."] - #[doc = ""] - #[doc = "May only be called from the curator."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::accept_curator`]."] accept_curator { #[codec(compact)] bounty_id: ::core::primitive::u32, }, #[codec(index = 5)] - #[doc = "Award bounty to a beneficiary account. The beneficiary will be able to claim the funds"] - #[doc = "after a delay."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the curator of this bounty."] - #[doc = ""] - #[doc = "- `bounty_id`: Bounty ID to award."] - #[doc = "- `beneficiary`: The beneficiary account whom will receive the payout."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::award_bounty`]."] award_bounty { #[codec(compact)] bounty_id: ::core::primitive::u32, - beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + beneficiary: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, }, #[codec(index = 6)] - #[doc = "Claim the payout from an awarded bounty after payout delay."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the beneficiary of this bounty."] - #[doc = ""] - #[doc = "- `bounty_id`: Bounty ID to claim."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::claim_bounty`]."] claim_bounty { #[codec(compact)] bounty_id: ::core::primitive::u32, }, #[codec(index = 7)] - #[doc = "Cancel a proposed or active bounty. All the funds will be sent to treasury and"] - #[doc = "the curator deposit will be unreserved if possible."] - #[doc = ""] - #[doc = "Only `T::RejectOrigin` is able to cancel a bounty."] - #[doc = ""] - #[doc = "- `bounty_id`: Bounty ID to cancel."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::close_bounty`]."] close_bounty { #[codec(compact)] bounty_id: ::core::primitive::u32, }, #[codec(index = 8)] - #[doc = "Extend the expiry time of an active bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the curator of this bounty."] - #[doc = ""] - #[doc = "- `bounty_id`: Bounty ID to extend."] - #[doc = "- `remark`: additional information."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::extend_bounty_expiry`]."] extend_bounty_expiry { #[codec(compact)] bounty_id: ::core::primitive::u32, - remark: ::std::vec::Vec<::core::primitive::u8>, + remark: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -49102,15 +45651,19 @@ pub mod api { TooManyQueued, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] @@ -49129,14 +45682,14 @@ pub mod api { #[doc = "A bounty is awarded to a beneficiary."] BountyAwarded { index: ::core::primitive::u32, - beneficiary: ::subxt::utils::AccountId32, + beneficiary: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 4)] #[doc = "A bounty is claimed by beneficiary."] BountyClaimed { index: ::core::primitive::u32, payout: ::core::primitive::u128, - beneficiary: ::subxt::utils::AccountId32, + beneficiary: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 5)] #[doc = "A bounty is cancelled."] @@ -49151,7 +45704,7 @@ pub mod api { #[doc = "A bounty curator is proposed."] CuratorProposed { bounty_id: ::core::primitive::u32, - curator: ::subxt::utils::AccountId32, + curator: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 9)] #[doc = "A bounty curator is unassigned."] @@ -49160,20 +45713,20 @@ pub mod api { #[doc = "A bounty curator is accepted."] CuratorAccepted { bounty_id: ::core::primitive::u32, - curator: ::subxt::utils::AccountId32, + curator: ::subxt::ext::subxt_core::utils::AccountId32, }, } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct Bounty<_0, _1, _2> { pub proposer: _0, pub value: _1, @@ -49183,15 +45736,15 @@ pub mod api { pub status: runtime_types::pallet_bounties::BountyStatus<_0, _2>, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum BountyStatus<_0, _1> { #[codec(index = 0)] Proposed, @@ -49211,118 +45764,52 @@ pub mod api { }, } } - pub mod pallet_broker { - use super::runtime_types; - pub mod coretime_interface { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum CoreAssignment { - #[codec(index = 0)] - Idle, - #[codec(index = 1)] - Pool, - #[codec(index = 2)] - Task(::core::primitive::u32), - } - } - } pub mod pallet_child_bounties { use super::runtime_types; pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Add a new child-bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the curator of parent"] - #[doc = "bounty and the parent bounty must be in \"active\" state."] - #[doc = ""] - #[doc = "Child-bounty gets added successfully & fund gets transferred from"] - #[doc = "parent bounty to child-bounty account, if parent bounty has enough"] - #[doc = "funds, else the call fails."] - #[doc = ""] - #[doc = "Upper bound to maximum number of active child bounties that can be"] - #[doc = "added are managed via runtime trait config"] - #[doc = "[`Config::MaxActiveChildBountyCount`]."] - #[doc = ""] - #[doc = "If the call is success, the status of child-bounty is updated to"] - #[doc = "\"Added\"."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty for which child-bounty is being added."] - #[doc = "- `value`: Value for executing the proposal."] - #[doc = "- `description`: Text description for the child-bounty."] + #[doc = "See [`Pallet::add_child_bounty`]."] add_child_bounty { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, #[codec(compact)] value: ::core::primitive::u128, - description: ::std::vec::Vec<::core::primitive::u8>, + description: + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, #[codec(index = 1)] - #[doc = "Propose curator for funded child-bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be curator of parent bounty."] - #[doc = ""] - #[doc = "Parent bounty must be in active state, for this child-bounty call to"] - #[doc = "work."] - #[doc = ""] - #[doc = "Child-bounty must be in \"Added\" state, for processing the call. And"] - #[doc = "state of child-bounty is moved to \"CuratorProposed\" on successful"] - #[doc = "call completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] - #[doc = "- `curator`: Address of child-bounty curator."] - #[doc = "- `fee`: payment fee to child-bounty curator for execution."] + #[doc = "See [`Pallet::propose_curator`]."] propose_curator { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, #[codec(compact)] child_bounty_id: ::core::primitive::u32, - curator: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + curator: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, #[codec(compact)] fee: ::core::primitive::u128, }, #[codec(index = 2)] - #[doc = "Accept the curator role for the child-bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the curator of this"] - #[doc = "child-bounty."] - #[doc = ""] - #[doc = "A deposit will be reserved from the curator and refund upon"] - #[doc = "successful payout or cancellation."] - #[doc = ""] - #[doc = "Fee for curator is deducted from curator fee of parent bounty."] - #[doc = ""] - #[doc = "Parent bounty must be in active state, for this child-bounty call to"] - #[doc = "work."] - #[doc = ""] - #[doc = "Child-bounty must be in \"CuratorProposed\" state, for processing the"] - #[doc = "call. And state of child-bounty is moved to \"Active\" on successful"] - #[doc = "call completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "See [`Pallet::accept_curator`]."] accept_curator { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, @@ -49330,40 +45817,7 @@ pub mod api { child_bounty_id: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "Unassign curator from a child-bounty."] - #[doc = ""] - #[doc = "The dispatch origin for this call can be either `RejectOrigin`, or"] - #[doc = "the curator of the parent bounty, or any signed origin."] - #[doc = ""] - #[doc = "For the origin other than T::RejectOrigin and the child-bounty"] - #[doc = "curator, parent bounty must be in active state, for this call to"] - #[doc = "work. We allow child-bounty curator and T::RejectOrigin to execute"] - #[doc = "this call irrespective of the parent bounty state."] - #[doc = ""] - #[doc = "If this function is called by the `RejectOrigin` or the"] - #[doc = "parent bounty curator, we assume that the child-bounty curator is"] - #[doc = "malicious or inactive. As a result, child-bounty curator deposit is"] - #[doc = "slashed."] - #[doc = ""] - #[doc = "If the origin is the child-bounty curator, we take this as a sign"] - #[doc = "that they are unable to do their job, and are willingly giving up."] - #[doc = "We could slash the deposit, but for now we allow them to unreserve"] - #[doc = "their deposit and exit without issue. (We may want to change this if"] - #[doc = "it is abused.)"] - #[doc = ""] - #[doc = "Finally, the origin can be anyone iff the child-bounty curator is"] - #[doc = "\"inactive\". Expiry update due of parent bounty is used to estimate"] - #[doc = "inactive state of child-bounty curator."] - #[doc = ""] - #[doc = "This allows anyone in the community to call out that a child-bounty"] - #[doc = "curator is not doing their due diligence, and we should pick a new"] - #[doc = "one. In this case the child-bounty curator deposit is slashed."] - #[doc = ""] - #[doc = "State of child-bounty is moved to Added state on successful call"] - #[doc = "completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "See [`Pallet::unassign_curator`]."] unassign_curator { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, @@ -49371,47 +45825,19 @@ pub mod api { child_bounty_id: ::core::primitive::u32, }, #[codec(index = 4)] - #[doc = "Award child-bounty to a beneficiary."] - #[doc = ""] - #[doc = "The beneficiary will be able to claim the funds after a delay."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be the parent curator or"] - #[doc = "curator of this child-bounty."] - #[doc = ""] - #[doc = "Parent bounty must be in active state, for this child-bounty call to"] - #[doc = "work."] - #[doc = ""] - #[doc = "Child-bounty must be in active state, for processing the call. And"] - #[doc = "state of child-bounty is moved to \"PendingPayout\" on successful call"] - #[doc = "completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] - #[doc = "- `beneficiary`: Beneficiary account."] + #[doc = "See [`Pallet::award_child_bounty`]."] award_child_bounty { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, #[codec(compact)] child_bounty_id: ::core::primitive::u32, - beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + beneficiary: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, }, #[codec(index = 5)] - #[doc = "Claim the payout from an awarded child-bounty after payout delay."] - #[doc = ""] - #[doc = "The dispatch origin for this call may be any signed origin."] - #[doc = ""] - #[doc = "Call works independent of parent bounty state, No need for parent"] - #[doc = "bounty to be in active state."] - #[doc = ""] - #[doc = "The Beneficiary is paid out with agreed bounty value. Curator fee is"] - #[doc = "paid & curator deposit is unreserved."] - #[doc = ""] - #[doc = "Child-bounty must be in \"PendingPayout\" state, for processing the"] - #[doc = "call. And instance of child-bounty is removed from the state on"] - #[doc = "successful call completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "See [`Pallet::claim_child_bounty`]."] claim_child_bounty { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, @@ -49419,28 +45845,7 @@ pub mod api { child_bounty_id: ::core::primitive::u32, }, #[codec(index = 6)] - #[doc = "Cancel a proposed or active child-bounty. Child-bounty account funds"] - #[doc = "are transferred to parent bounty account. The child-bounty curator"] - #[doc = "deposit may be unreserved if possible."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be either parent curator or"] - #[doc = "`T::RejectOrigin`."] - #[doc = ""] - #[doc = "If the state of child-bounty is `Active`, curator deposit is"] - #[doc = "unreserved."] - #[doc = ""] - #[doc = "If the state of child-bounty is `PendingPayout`, call fails &"] - #[doc = "returns `PendingPayout` error."] - #[doc = ""] - #[doc = "For the origin other than T::RejectOrigin, parent bounty must be in"] - #[doc = "active state, for this child-bounty call to work. For origin"] - #[doc = "T::RejectOrigin execution is forced."] - #[doc = ""] - #[doc = "Instance of child-bounty is removed from the state on successful"] - #[doc = "call completion."] - #[doc = ""] - #[doc = "- `parent_bounty_id`: Index of parent bounty."] - #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "See [`Pallet::close_child_bounty`]."] close_child_bounty { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, @@ -49449,15 +45854,19 @@ pub mod api { }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -49471,15 +45880,19 @@ pub mod api { TooManyChildBounties, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] @@ -49493,7 +45906,7 @@ pub mod api { Awarded { index: ::core::primitive::u32, child_index: ::core::primitive::u32, - beneficiary: ::subxt::utils::AccountId32, + beneficiary: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 2)] #[doc = "A child-bounty is claimed by beneficiary."] @@ -49501,7 +45914,7 @@ pub mod api { index: ::core::primitive::u32, child_index: ::core::primitive::u32, payout: ::core::primitive::u128, - beneficiary: ::subxt::utils::AccountId32, + beneficiary: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 3)] #[doc = "A child-bounty is cancelled."] @@ -49512,15 +45925,15 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct ChildBounty<_0, _1, _2> { pub parent_bounty: ::core::primitive::u32, pub value: _1, @@ -49529,15 +45942,15 @@ pub mod api { pub status: runtime_types::pallet_child_bounties::ChildBountyStatus<_0, _2>, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum ChildBountyStatus<_0, _1> { #[codec(index = 0)] Added, @@ -49558,15 +45971,19 @@ pub mod api { pub mod conviction { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum Conviction { #[codec(index = 0)] None, @@ -49587,27 +46004,23 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Vote in a poll. If `vote.is_aye()`, the vote is to enact the proposal;"] - #[doc = "otherwise it is a vote to keep the status quo."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_."] - #[doc = ""] - #[doc = "- `poll_index`: The index of the poll to vote for."] - #[doc = "- `vote`: The vote configuration."] - #[doc = ""] - #[doc = "Weight: `O(R)` where R is the number of polls the voter has voted on."] + #[doc = "See [`Pallet::vote`]."] vote { #[codec(compact)] poll_index: ::core::primitive::u32, @@ -49616,132 +46029,59 @@ pub mod api { >, }, #[codec(index = 1)] - #[doc = "Delegate the voting power (with some given conviction) of the sending account for a"] - #[doc = "particular class of polls."] - #[doc = ""] - #[doc = "The balance delegated is locked for as long as it's delegated, and thereafter for the"] - #[doc = "time appropriate for the conviction's lock period."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_, and the signing account must either:"] - #[doc = " - be delegating already; or"] - #[doc = " - have no voting activity (if there is, then it will need to be removed through"] - #[doc = " `remove_vote`)."] - #[doc = ""] - #[doc = "- `to`: The account whose voting the `target` account's voting power will follow."] - #[doc = "- `class`: The class of polls to delegate. To delegate multiple classes, multiple calls"] - #[doc = " to this function are required."] - #[doc = "- `conviction`: The conviction that will be attached to the delegated votes. When the"] - #[doc = " account is undelegated, the funds will be locked for the corresponding period."] - #[doc = "- `balance`: The amount of the account's balance to be used in delegating. This must not"] - #[doc = " be more than the account's current balance."] - #[doc = ""] - #[doc = "Emits `Delegated`."] - #[doc = ""] - #[doc = "Weight: `O(R)` where R is the number of polls the voter delegating to has"] - #[doc = " voted on. Weight is initially charged as if maximum votes, but is refunded later."] + #[doc = "See [`Pallet::delegate`]."] delegate { class: ::core::primitive::u16, - to: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + to: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, conviction: runtime_types::pallet_conviction_voting::conviction::Conviction, balance: ::core::primitive::u128, }, #[codec(index = 2)] - #[doc = "Undelegate the voting power of the sending account for a particular class of polls."] - #[doc = ""] - #[doc = "Tokens may be unlocked following once an amount of time consistent with the lock period"] - #[doc = "of the conviction with which the delegation was issued has passed."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_ and the signing account must be"] - #[doc = "currently delegating."] - #[doc = ""] - #[doc = "- `class`: The class of polls to remove the delegation from."] - #[doc = ""] - #[doc = "Emits `Undelegated`."] - #[doc = ""] - #[doc = "Weight: `O(R)` where R is the number of polls the voter delegating to has"] - #[doc = " voted on. Weight is initially charged as if maximum votes, but is refunded later."] + #[doc = "See [`Pallet::undelegate`]."] undelegate { class: ::core::primitive::u16 }, #[codec(index = 3)] - #[doc = "Remove the lock caused by prior voting/delegating which has expired within a particular"] - #[doc = "class."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_."] - #[doc = ""] - #[doc = "- `class`: The class of polls to unlock."] - #[doc = "- `target`: The account to remove the lock on."] - #[doc = ""] - #[doc = "Weight: `O(R)` with R number of vote of target."] + #[doc = "See [`Pallet::unlock`]."] unlock { class: ::core::primitive::u16, - target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + target: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, }, #[codec(index = 4)] - #[doc = "Remove a vote for a poll."] - #[doc = ""] - #[doc = "If:"] - #[doc = "- the poll was cancelled, or"] - #[doc = "- the poll is ongoing, or"] - #[doc = "- the poll has ended such that"] - #[doc = " - the vote of the account was in opposition to the result; or"] - #[doc = " - there was no conviction to the account's vote; or"] - #[doc = " - the account made a split vote"] - #[doc = "...then the vote is removed cleanly and a following call to `unlock` may result in more"] - #[doc = "funds being available."] - #[doc = ""] - #[doc = "If, however, the poll has ended and:"] - #[doc = "- it finished corresponding to the vote of the account, and"] - #[doc = "- the account made a standard vote with conviction, and"] - #[doc = "- the lock period of the conviction is not over"] - #[doc = "...then the lock will be aggregated into the overall account's lock, which may involve"] - #[doc = "*overlocking* (where the two locks are combined into a single lock that is the maximum"] - #[doc = "of both the amount locked and the time is it locked for)."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_, and the signer must have a vote"] - #[doc = "registered for poll `index`."] - #[doc = ""] - #[doc = "- `index`: The index of poll of the vote to be removed."] - #[doc = "- `class`: Optional parameter, if given it indicates the class of the poll. For polls"] - #[doc = " which have finished or are cancelled, this must be `Some`."] - #[doc = ""] - #[doc = "Weight: `O(R + log R)` where R is the number of polls that `target` has voted on."] - #[doc = " Weight is calculated for the maximum number of vote."] + #[doc = "See [`Pallet::remove_vote`]."] remove_vote { class: ::core::option::Option<::core::primitive::u16>, index: ::core::primitive::u32, }, #[codec(index = 5)] - #[doc = "Remove a vote for a poll."] - #[doc = ""] - #[doc = "If the `target` is equal to the signer, then this function is exactly equivalent to"] - #[doc = "`remove_vote`. If not equal to the signer, then the vote must have expired,"] - #[doc = "either because the poll was cancelled, because the voter lost the poll or"] - #[doc = "because the conviction period is over."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be _Signed_."] - #[doc = ""] - #[doc = "- `target`: The account of the vote to be removed; this account must have voted for poll"] - #[doc = " `index`."] - #[doc = "- `index`: The index of poll of the vote to be removed."] - #[doc = "- `class`: The class of the poll."] - #[doc = ""] - #[doc = "Weight: `O(R + log R)` where R is the number of polls that `target` has voted on."] - #[doc = " Weight is calculated for the maximum number of vote."] + #[doc = "See [`Pallet::remove_other_vote`]."] remove_other_vote { - target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + target: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, class: ::core::primitive::u16, index: ::core::primitive::u32, }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -49761,7 +46101,7 @@ pub mod api { AlreadyDelegating, #[codec(index = 5)] #[doc = "The account currently has votes attached to it and the operation cannot succeed until"] - #[doc = "these are removed through `remove_vote`."] + #[doc = "these are removed, either through `unvote` or `reap_vote`."] AlreadyVoting, #[codec(index = 6)] #[doc = "Too high a balance was provided that the account cannot afford."] @@ -49783,51 +46123,66 @@ pub mod api { BadClass, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "An account has delegated their vote to another account. \\[who, target\\]"] - Delegated(::subxt::utils::AccountId32, ::subxt::utils::AccountId32), + Delegated( + ::subxt::ext::subxt_core::utils::AccountId32, + ::subxt::ext::subxt_core::utils::AccountId32, + ), #[codec(index = 1)] #[doc = "An \\[account\\] has cancelled a previous delegation operation."] - Undelegated(::subxt::utils::AccountId32), + Undelegated(::subxt::ext::subxt_core::utils::AccountId32), } } pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Delegations<_0> { pub votes: _0, pub capital: _0, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Tally<_0> { pub ayes: _0, pub nays: _0, @@ -49837,15 +46192,19 @@ pub mod api { pub mod vote { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum AccountVote<_0> { #[codec(index = 0)] Standard { @@ -49858,17 +46217,21 @@ pub mod api { SplitAbstain { aye: _0, nay: _0, abstain: _0 }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Casting<_0, _1, _2> { - pub votes: runtime_types::bounded_collections::bounded_vec::BoundedVec<( + pub votes: runtime_types::bounded_collections::bounded_vec::BoundedVec13<( _1, runtime_types::pallet_conviction_voting::vote::AccountVote<_0>, )>, @@ -49879,15 +46242,19 @@ pub mod api { pub __ignore: ::core::marker::PhantomData<_2>, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Delegating<_0, _1, _2> { pub balance: _0, pub target: _1, @@ -49897,38 +46264,50 @@ pub mod api { pub prior: runtime_types::pallet_conviction_voting::vote::PriorLock<_2, _0>, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct PriorLock<_0, _1>(pub _0, pub _1); #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: CompactAs, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Vote(pub ::core::primitive::u8); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum Voting<_0, _1, _2, _3> { #[codec(index = 0)] Casting(runtime_types::pallet_conviction_voting::vote::Casting<_0, _2, _2>), @@ -49945,78 +46324,64 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Report voter equivocation/misbehavior. This method will verify the"] - #[doc = "equivocation proof and validate the given key ownership proof"] - #[doc = "against the extracted offender. If both are valid, the offence"] - #[doc = "will be reported."] + #[doc = "See [`Pallet::report_equivocation`]."] report_equivocation { - equivocation_proof: ::std::boxed::Box< + equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::sp_consensus_grandpa::EquivocationProof< - ::subxt::utils::H256, + ::subxt::ext::subxt_core::utils::H256, ::core::primitive::u32, >, >, key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 1)] - #[doc = "Report voter equivocation/misbehavior. This method will verify the"] - #[doc = "equivocation proof and validate the given key ownership proof"] - #[doc = "against the extracted offender. If both are valid, the offence"] - #[doc = "will be reported."] - #[doc = ""] - #[doc = "This extrinsic must be called unsigned and it is expected that only"] - #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] - #[doc = "if the block author is defined it will be defined as the equivocation"] - #[doc = "reporter."] + #[doc = "See [`Pallet::report_equivocation_unsigned`]."] report_equivocation_unsigned { - equivocation_proof: ::std::boxed::Box< + equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::sp_consensus_grandpa::EquivocationProof< - ::subxt::utils::H256, + ::subxt::ext::subxt_core::utils::H256, ::core::primitive::u32, >, >, key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 2)] - #[doc = "Note that the current authority set of the GRANDPA finality gadget has stalled."] - #[doc = ""] - #[doc = "This will trigger a forced authority set change at the beginning of the next session, to"] - #[doc = "be enacted `delay` blocks after that. The `delay` should be high enough to safely assume"] - #[doc = "that the block signalling the forced change will not be re-orged e.g. 1000 blocks."] - #[doc = "The block production rate (which may be slowed down because of finality lagging) should"] - #[doc = "be taken into account when choosing the `delay`. The GRANDPA voters based on the new"] - #[doc = "authority will start voting on top of `best_finalized_block_number` for new finalized"] - #[doc = "blocks. `best_finalized_block_number` should be the highest of the latest finalized"] - #[doc = "block of all validators of the new authority set."] - #[doc = ""] - #[doc = "Only callable by root."] + #[doc = "See [`Pallet::note_stalled`]."] note_stalled { delay: ::core::primitive::u32, best_finalized_block_number: ::core::primitive::u32, }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -50044,21 +46409,25 @@ pub mod api { DuplicateOffenceReport, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "New authority set has been applied."] NewAuthorities { - authority_set: ::std::vec::Vec<( + authority_set: ::subxt::ext::subxt_core::alloc::vec::Vec<( runtime_types::sp_consensus_grandpa::app::Public, ::core::primitive::u64, )>, @@ -50072,35 +46441,35 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct StoredPendingChange<_0> { pub scheduled_at: _0, pub delay: _0, pub next_authorities: - runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec<( + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec4<( runtime_types::sp_consensus_grandpa::app::Public, ::core::primitive::u64, )>, pub forced: ::core::option::Option<_0>, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum StoredState<_0> { #[codec(index = 0)] Live, @@ -50114,116 +46483,52 @@ pub mod api { } pub mod pallet_identity { use super::runtime_types; - pub mod legacy { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct IdentityInfo { - pub additional: runtime_types::bounded_collections::bounded_vec::BoundedVec<( - runtime_types::pallet_identity::types::Data, - runtime_types::pallet_identity::types::Data, - )>, - pub display: runtime_types::pallet_identity::types::Data, - pub legal: runtime_types::pallet_identity::types::Data, - pub web: runtime_types::pallet_identity::types::Data, - pub riot: runtime_types::pallet_identity::types::Data, - pub email: runtime_types::pallet_identity::types::Data, - pub pgp_fingerprint: ::core::option::Option<[::core::primitive::u8; 20usize]>, - pub image: runtime_types::pallet_identity::types::Data, - pub twitter: runtime_types::pallet_identity::types::Data, - } - } pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Identity pallet declaration."] pub enum Call { #[codec(index = 0)] - #[doc = "Add a registrar to the system."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be `T::RegistrarOrigin`."] - #[doc = ""] - #[doc = "- `account`: the account of the registrar."] - #[doc = ""] - #[doc = "Emits `RegistrarAdded` if successful."] + #[doc = "See [`Pallet::add_registrar`]."] add_registrar { - account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + account: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, }, #[codec(index = 1)] - #[doc = "Set an account's identity information and reserve the appropriate deposit."] - #[doc = ""] - #[doc = "If the account already has identity information, the deposit is taken as part payment"] - #[doc = "for the new deposit."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `info`: The identity information."] - #[doc = ""] - #[doc = "Emits `IdentitySet` if successful."] + #[doc = "See [`Pallet::set_identity`]."] set_identity { - info: - ::std::boxed::Box, + info: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::pallet_identity::types::IdentityInfo, + >, }, #[codec(index = 2)] - #[doc = "Set the sub-accounts of the sender."] - #[doc = ""] - #[doc = "Payment: Any aggregate balance reserved by previous `set_subs` calls will be returned"] - #[doc = "and an amount `SubAccountDeposit` will be reserved for each item in `subs`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "identity."] - #[doc = ""] - #[doc = "- `subs`: The identity's (new) sub-accounts."] + #[doc = "See [`Pallet::set_subs`]."] set_subs { - subs: ::std::vec::Vec<( - ::subxt::utils::AccountId32, + subs: ::subxt::ext::subxt_core::alloc::vec::Vec<( + ::subxt::ext::subxt_core::utils::AccountId32, runtime_types::pallet_identity::types::Data, )>, }, #[codec(index = 3)] - #[doc = "Clear an account's identity info and all sub-accounts and return all deposits."] - #[doc = ""] - #[doc = "Payment: All reserved balances on the account are returned."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "identity."] - #[doc = ""] - #[doc = "Emits `IdentityCleared` if successful."] + #[doc = "See [`Pallet::clear_identity`]."] clear_identity, #[codec(index = 4)] - #[doc = "Request a judgement from a registrar."] - #[doc = ""] - #[doc = "Payment: At most `max_fee` will be reserved for payment to the registrar if judgement"] - #[doc = "given."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a"] - #[doc = "registered identity."] - #[doc = ""] - #[doc = "- `reg_index`: The index of the registrar whose judgement is requested."] - #[doc = "- `max_fee`: The maximum fee that may be paid. This should just be auto-populated as:"] - #[doc = ""] - #[doc = "```nocompile"] - #[doc = "Self::registrars().get(reg_index).unwrap().fee"] - #[doc = "```"] - #[doc = ""] - #[doc = "Emits `JudgementRequested` if successful."] + #[doc = "See [`Pallet::request_judgement`]."] request_judgement { #[codec(compact)] reg_index: ::core::primitive::u32, @@ -50231,25 +46536,10 @@ pub mod api { max_fee: ::core::primitive::u128, }, #[codec(index = 5)] - #[doc = "Cancel a previous request."] - #[doc = ""] - #[doc = "Payment: A previously reserved deposit is returned on success."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a"] - #[doc = "registered identity."] - #[doc = ""] - #[doc = "- `reg_index`: The index of the registrar whose judgement is no longer requested."] - #[doc = ""] - #[doc = "Emits `JudgementUnrequested` if successful."] + #[doc = "See [`Pallet::cancel_request`]."] cancel_request { reg_index: ::core::primitive::u32 }, #[codec(index = 6)] - #[doc = "Set the fee required for a judgement to be requested from a registrar."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] - #[doc = "of the registrar whose index is `index`."] - #[doc = ""] - #[doc = "- `index`: the index of the registrar whose fee is to be set."] - #[doc = "- `fee`: the new fee."] + #[doc = "See [`Pallet::set_fee`]."] set_fee { #[codec(compact)] index: ::core::primitive::u32, @@ -50257,190 +46547,90 @@ pub mod api { fee: ::core::primitive::u128, }, #[codec(index = 7)] - #[doc = "Change the account associated with a registrar."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] - #[doc = "of the registrar whose index is `index`."] - #[doc = ""] - #[doc = "- `index`: the index of the registrar whose fee is to be set."] - #[doc = "- `new`: the new account ID."] + #[doc = "See [`Pallet::set_account_id`]."] set_account_id { #[codec(compact)] index: ::core::primitive::u32, - new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + new: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, }, #[codec(index = 8)] - #[doc = "Set the field information for a registrar."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] - #[doc = "of the registrar whose index is `index`."] - #[doc = ""] - #[doc = "- `index`: the index of the registrar whose fee is to be set."] - #[doc = "- `fields`: the fields that the registrar concerns themselves with."] + #[doc = "See [`Pallet::set_fields`]."] set_fields { #[codec(compact)] index: ::core::primitive::u32, - fields: ::core::primitive::u64, + fields: runtime_types::pallet_identity::types::BitFlags< + runtime_types::pallet_identity::types::IdentityField, + >, }, #[codec(index = 9)] - #[doc = "Provide a judgement for an account's identity."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] - #[doc = "of the registrar whose index is `reg_index`."] - #[doc = ""] - #[doc = "- `reg_index`: the index of the registrar whose judgement is being made."] - #[doc = "- `target`: the account whose identity the judgement is upon. This must be an account"] - #[doc = " with a registered identity."] - #[doc = "- `judgement`: the judgement of the registrar of index `reg_index` about `target`."] - #[doc = "- `identity`: The hash of the [`IdentityInformationProvider`] for that the judgement is"] - #[doc = " provided."] - #[doc = ""] - #[doc = "Note: Judgements do not apply to a username."] - #[doc = ""] - #[doc = "Emits `JudgementGiven` if successful."] + #[doc = "See [`Pallet::provide_judgement`]."] provide_judgement { #[codec(compact)] reg_index: ::core::primitive::u32, - target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + target: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, judgement: runtime_types::pallet_identity::types::Judgement< ::core::primitive::u128, >, - identity: ::subxt::utils::H256, + identity: ::subxt::ext::subxt_core::utils::H256, }, #[codec(index = 10)] - #[doc = "Remove an account's identity and sub-account information and slash the deposits."] - #[doc = ""] - #[doc = "Payment: Reserved balances from `set_subs` and `set_identity` are slashed and handled by"] - #[doc = "`Slash`. Verification request deposits are not returned; they should be cancelled"] - #[doc = "manually using `cancel_request`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] - #[doc = ""] - #[doc = "- `target`: the account whose identity the judgement is upon. This must be an account"] - #[doc = " with a registered identity."] - #[doc = ""] - #[doc = "Emits `IdentityKilled` if successful."] + #[doc = "See [`Pallet::kill_identity`]."] kill_identity { - target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + target: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, }, #[codec(index = 11)] - #[doc = "Add the given account to the sender's subs."] - #[doc = ""] - #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] - #[doc = "to the sender."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "sub identity of `sub`."] + #[doc = "See [`Pallet::add_sub`]."] add_sub { - sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + sub: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, data: runtime_types::pallet_identity::types::Data, }, #[codec(index = 12)] - #[doc = "Alter the associated name of the given sub-account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "sub identity of `sub`."] + #[doc = "See [`Pallet::rename_sub`]."] rename_sub { - sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + sub: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, data: runtime_types::pallet_identity::types::Data, }, #[codec(index = 13)] - #[doc = "Remove the given account from the sender's subs."] - #[doc = ""] - #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] - #[doc = "to the sender."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "sub identity of `sub`."] + #[doc = "See [`Pallet::remove_sub`]."] remove_sub { - sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + sub: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, }, #[codec(index = 14)] - #[doc = "Remove the sender as a sub-account."] - #[doc = ""] - #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] - #[doc = "to the sender (*not* the original depositor)."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] - #[doc = "super-identity."] - #[doc = ""] - #[doc = "NOTE: This should not normally be used, but is provided in the case that the non-"] - #[doc = "controller of an account is maliciously registered as a sub-account."] + #[doc = "See [`Pallet::quit_sub`]."] quit_sub, - #[codec(index = 15)] - #[doc = "Add an `AccountId` with permission to grant usernames with a given `suffix` appended."] - #[doc = ""] - #[doc = "The authority can grant up to `allocation` usernames. To top up their allocation, they"] - #[doc = "should just issue (or request via governance) a new `add_username_authority` call."] - add_username_authority { - authority: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - suffix: ::std::vec::Vec<::core::primitive::u8>, - allocation: ::core::primitive::u32, - }, - #[codec(index = 16)] - #[doc = "Remove `authority` from the username authorities."] - remove_username_authority { - authority: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - }, - #[codec(index = 17)] - #[doc = "Set the username for `who`. Must be called by a username authority."] - #[doc = ""] - #[doc = "The authority must have an `allocation`. Users can either pre-sign their usernames or"] - #[doc = "accept them later."] - #[doc = ""] - #[doc = "Usernames must:"] - #[doc = " - Only contain lowercase ASCII characters or digits."] - #[doc = " - When combined with the suffix of the issuing authority be _less than_ the"] - #[doc = " `MaxUsernameLength`."] - set_username_for { - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - username: ::std::vec::Vec<::core::primitive::u8>, - signature: - ::core::option::Option, - }, - #[codec(index = 18)] - #[doc = "Accept a given username that an `authority` granted. The call must include the full"] - #[doc = "username, as in `username.suffix`."] - accept_username { - username: runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::core::primitive::u8, - >, - }, - #[codec(index = 19)] - #[doc = "Remove an expired username approval. The username was approved by an authority but never"] - #[doc = "accepted by the user and must now be beyond its expiration. The call must include the"] - #[doc = "full username, as in `username.suffix`."] - remove_expired_approval { - username: runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::core::primitive::u8, - >, - }, - #[codec(index = 20)] - #[doc = "Set a given username as the primary. The username should include the suffix."] - set_primary_username { - username: runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::core::primitive::u8, - >, - }, - #[codec(index = 21)] - #[doc = "Remove a username that corresponds to an account with no identity. Exists when a user"] - #[doc = "gets a username but then calls `clear_identity`."] - remove_dangling_username { - username: runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::core::primitive::u8, - >, - }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -50477,94 +46667,76 @@ pub mod api { #[doc = "The target is invalid."] InvalidTarget, #[codec(index = 11)] + #[doc = "Too many additional fields."] + TooManyFields, + #[codec(index = 12)] #[doc = "Maximum amount of registrars reached. Cannot add any more."] TooManyRegistrars, - #[codec(index = 12)] + #[codec(index = 13)] #[doc = "Account ID is already named."] AlreadyClaimed, - #[codec(index = 13)] + #[codec(index = 14)] #[doc = "Sender is not a sub-account."] NotSub, - #[codec(index = 14)] + #[codec(index = 15)] #[doc = "Sub-account isn't owned by sender."] NotOwned, - #[codec(index = 15)] + #[codec(index = 16)] #[doc = "The provided judgement was for a different identity."] JudgementForDifferentIdentity, - #[codec(index = 16)] + #[codec(index = 17)] #[doc = "Error that occurs when there is an issue paying for judgement."] JudgementPaymentFailed, - #[codec(index = 17)] - #[doc = "The provided suffix is too long."] - InvalidSuffix, - #[codec(index = 18)] - #[doc = "The sender does not have permission to issue a username."] - NotUsernameAuthority, - #[codec(index = 19)] - #[doc = "The authority cannot allocate any more usernames."] - NoAllocation, - #[codec(index = 20)] - #[doc = "The signature on a username was not valid."] - InvalidSignature, - #[codec(index = 21)] - #[doc = "Setting this username requires a signature, but none was provided."] - RequiresSignature, - #[codec(index = 22)] - #[doc = "The username does not meet the requirements."] - InvalidUsername, - #[codec(index = 23)] - #[doc = "The username is already taken."] - UsernameTaken, - #[codec(index = 24)] - #[doc = "The requested username does not exist."] - NoUsername, - #[codec(index = 25)] - #[doc = "The username cannot be forcefully removed because it can still be accepted."] - NotExpired, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "A name was set or reset (which will remove all judgements)."] - IdentitySet { who: ::subxt::utils::AccountId32 }, + IdentitySet { + who: ::subxt::ext::subxt_core::utils::AccountId32, + }, #[codec(index = 1)] #[doc = "A name was cleared, and the given balance returned."] IdentityCleared { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, deposit: ::core::primitive::u128, }, #[codec(index = 2)] #[doc = "A name was removed and the given balance slashed."] IdentityKilled { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, deposit: ::core::primitive::u128, }, #[codec(index = 3)] #[doc = "A judgement was asked from a registrar."] JudgementRequested { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, registrar_index: ::core::primitive::u32, }, #[codec(index = 4)] #[doc = "A judgement request was retracted."] JudgementUnrequested { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, registrar_index: ::core::primitive::u32, }, #[codec(index = 5)] #[doc = "A judgement was given by a registrar."] JudgementGiven { - target: ::subxt::utils::AccountId32, + target: ::subxt::ext::subxt_core::utils::AccountId32, registrar_index: ::core::primitive::u32, }, #[codec(index = 6)] @@ -50575,100 +46747,62 @@ pub mod api { #[codec(index = 7)] #[doc = "A sub-identity was added to an identity and the deposit paid."] SubIdentityAdded { - sub: ::subxt::utils::AccountId32, - main: ::subxt::utils::AccountId32, + sub: ::subxt::ext::subxt_core::utils::AccountId32, + main: ::subxt::ext::subxt_core::utils::AccountId32, deposit: ::core::primitive::u128, }, #[codec(index = 8)] #[doc = "A sub-identity was removed from an identity and the deposit freed."] SubIdentityRemoved { - sub: ::subxt::utils::AccountId32, - main: ::subxt::utils::AccountId32, + sub: ::subxt::ext::subxt_core::utils::AccountId32, + main: ::subxt::ext::subxt_core::utils::AccountId32, deposit: ::core::primitive::u128, }, #[codec(index = 9)] #[doc = "A sub-identity was cleared, and the given deposit repatriated from the"] #[doc = "main identity account to the sub-identity account."] SubIdentityRevoked { - sub: ::subxt::utils::AccountId32, - main: ::subxt::utils::AccountId32, + sub: ::subxt::ext::subxt_core::utils::AccountId32, + main: ::subxt::ext::subxt_core::utils::AccountId32, deposit: ::core::primitive::u128, }, - #[codec(index = 10)] - #[doc = "A username authority was added."] - AuthorityAdded { - authority: ::subxt::utils::AccountId32, - }, - #[codec(index = 11)] - #[doc = "A username authority was removed."] - AuthorityRemoved { - authority: ::subxt::utils::AccountId32, - }, - #[codec(index = 12)] - #[doc = "A username was set for `who`."] - UsernameSet { - who: ::subxt::utils::AccountId32, - username: runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::core::primitive::u8, - >, - }, - #[codec(index = 13)] - #[doc = "A username was queued, but `who` must accept it prior to `expiration`."] - UsernameQueued { - who: ::subxt::utils::AccountId32, - username: runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::core::primitive::u8, - >, - expiration: ::core::primitive::u32, - }, - #[codec(index = 14)] - #[doc = "A queued username passed its expiration without being claimed and was removed."] - PreapprovalExpired { whose: ::subxt::utils::AccountId32 }, - #[codec(index = 15)] - #[doc = "A username was set as a primary and can be looked up from `who`."] - PrimaryUsernameSet { - who: ::subxt::utils::AccountId32, - username: runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::core::primitive::u8, - >, - }, - #[codec(index = 16)] - #[doc = "A dangling username (as in, a username corresponding to an account that has removed its"] - #[doc = "identity) has been removed."] - DanglingUsernameRemoved { - who: ::subxt::utils::AccountId32, - username: runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::core::primitive::u8, - >, - }, } } pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: CompactAs, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct AuthorityProperties<_0> { - pub suffix: _0, - pub allocation: ::core::primitive::u32, - } + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BitFlags<_0>( + pub ::core::primitive::u64, + #[codec(skip)] pub ::core::marker::PhantomData<_0>, + ); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum Data { #[codec(index = 0)] None, @@ -50748,15 +46882,79 @@ pub mod api { ShaThree256([::core::primitive::u8; 32usize]), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum IdentityField { + #[codec(index = 1)] + Display, + #[codec(index = 2)] + Legal, + #[codec(index = 4)] + Web, + #[codec(index = 8)] + Riot, + #[codec(index = 16)] + Email, + #[codec(index = 32)] + PgpFingerprint, + #[codec(index = 64)] + Image, + #[codec(index = 128)] + Twitter, + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct IdentityInfo { + pub additional: runtime_types::bounded_collections::bounded_vec::BoundedVec1<( + runtime_types::pallet_identity::types::Data, + runtime_types::pallet_identity::types::Data, + )>, + pub display: runtime_types::pallet_identity::types::Data, + pub legal: runtime_types::pallet_identity::types::Data, + pub web: runtime_types::pallet_identity::types::Data, + pub riot: runtime_types::pallet_identity::types::Data, + pub email: runtime_types::pallet_identity::types::Data, + pub pgp_fingerprint: ::core::option::Option<[::core::primitive::u8; 20usize]>, + pub image: runtime_types::pallet_identity::types::Data, + pub twitter: runtime_types::pallet_identity::types::Data, + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum Judgement<_0> { #[codec(index = 0)] Unknown, @@ -50774,145 +46972,252 @@ pub mod api { Erroneous, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct RegistrarInfo<_0, _1, _2> { + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct RegistrarInfo<_0, _1> { pub account: _1, pub fee: _0, - pub fields: _2, + pub fields: runtime_types::pallet_identity::types::BitFlags< + runtime_types::pallet_identity::types::IdentityField, + >, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Registration<_0, _2> { - pub judgements: runtime_types::bounded_collections::bounded_vec::BoundedVec<( - ::core::primitive::u32, - runtime_types::pallet_identity::types::Judgement<_0>, - )>, + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct Registration<_0> { + pub judgements: + runtime_types::bounded_collections::bounded_vec::BoundedVec17<( + ::core::primitive::u32, + runtime_types::pallet_identity::types::Judgement<_0>, + )>, pub deposit: _0, - pub info: _2, + pub info: runtime_types::pallet_identity::types::IdentityInfo, } } } + pub mod pallet_im_online { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::heartbeat`]."] + heartbeat { + heartbeat: + runtime_types::pallet_im_online::Heartbeat<::core::primitive::u32>, + signature: runtime_types::pallet_im_online::sr25519::app_sr25519::Signature, + }, + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "Non existent public key."] + InvalidKey, + #[codec(index = 1)] + #[doc = "Duplicated heartbeat."] + DuplicatedHeartbeat, + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "A new heartbeat was received from `AuthorityId`."] + HeartbeatReceived { + authority_id: runtime_types::pallet_im_online::sr25519::app_sr25519::Public, + }, + #[codec(index = 1)] + #[doc = "At the end of the session, no offence was committed."] + AllGood, + #[codec(index = 2)] + #[doc = "At the end of the session, at least one validator was found to be offline."] + SomeOffline { + offline: ::subxt::ext::subxt_core::alloc::vec::Vec<( + ::subxt::ext::subxt_core::utils::AccountId32, + (), + )>, + }, + } + } + pub mod sr25519 { + use super::runtime_types; + pub mod app_sr25519 { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct Public(pub runtime_types::sp_core::sr25519::Public); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct Signature(pub runtime_types::sp_core::sr25519::Signature); + } + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + pub struct Heartbeat<_0> { + pub block_number: _0, + pub session_index: ::core::primitive::u32, + pub authority_index: ::core::primitive::u32, + pub validators_len: ::core::primitive::u32, + } + } pub mod pallet_indices { use super::runtime_types; pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Assign an previously unassigned index."] - #[doc = ""] - #[doc = "Payment: `Deposit` is reserved from the sender account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `index`: the index to be claimed. This must not be in use."] - #[doc = ""] - #[doc = "Emits `IndexAssigned` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::claim`]."] claim { index: ::core::primitive::u32 }, #[codec(index = 1)] - #[doc = "Assign an index already owned by the sender to another account. The balance reservation"] - #[doc = "is effectively transferred to the new account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `index`: the index to be re-assigned. This must be owned by the sender."] - #[doc = "- `new`: the new owner of the index. This function is a no-op if it is equal to sender."] - #[doc = ""] - #[doc = "Emits `IndexAssigned` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::transfer`]."] transfer { - new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + new: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, index: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "Free up an index owned by the sender."] - #[doc = ""] - #[doc = "Payment: Any previous deposit placed for the index is unreserved in the sender account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must own the index."] - #[doc = ""] - #[doc = "- `index`: the index to be freed. This must be owned by the sender."] - #[doc = ""] - #[doc = "Emits `IndexFreed` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::free`]."] free { index: ::core::primitive::u32 }, #[codec(index = 3)] - #[doc = "Force an index to an account. This doesn't require a deposit. If the index is already"] - #[doc = "held, then any deposit is reimbursed to its current owner."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] - #[doc = ""] - #[doc = "- `index`: the index to be (re-)assigned."] - #[doc = "- `new`: the new owner of the index. This function is a no-op if it is equal to sender."] - #[doc = "- `freeze`: if set to `true`, will freeze the index so it cannot be transferred."] - #[doc = ""] - #[doc = "Emits `IndexAssigned` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::force_transfer`]."] force_transfer { - new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + new: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, index: ::core::primitive::u32, freeze: ::core::primitive::bool, }, #[codec(index = 4)] - #[doc = "Freeze an index so it will always point to the sender account. This consumes the"] - #[doc = "deposit."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the signing account must have a"] - #[doc = "non-frozen account `index`."] - #[doc = ""] - #[doc = "- `index`: the index to be frozen in place."] - #[doc = ""] - #[doc = "Emits `IndexFrozen` if successful."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::freeze`]."] freeze { index: ::core::primitive::u32 }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -50932,21 +47237,25 @@ pub mod api { Permanent, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "A account index was assigned."] IndexAssigned { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, index: ::core::primitive::u32, }, #[codec(index = 1)] @@ -50956,7 +47265,7 @@ pub mod api { #[doc = "A account index has been frozen to its current account ID."] IndexFrozen { index: ::core::primitive::u32, - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, }, } } @@ -50966,28 +47275,36 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "Remove a page which has no more messages remaining to be processed or is stale."] reap_page { message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page_index : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "Execute an overweight message."] # [doc = ""] # [doc = "Temporary processing errors will be propagated whereas permanent errors are treated"] # [doc = "as success condition."] # [doc = ""] # [doc = "- `origin`: Must be `Signed`."] # [doc = "- `message_origin`: The origin from which the message to be executed arrived."] # [doc = "- `page`: The page in the queue in which the message to be executed is sitting."] # [doc = "- `index`: The index into the queue of the message to be executed."] # [doc = "- `weight_limit`: The maximum amount of weight allowed to be consumed in the execution"] # [doc = " of the message."] # [doc = ""] # [doc = "Benchmark complexity considerations: O(index + weight_limit)."] execute_overweight { message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page : :: core :: primitive :: u32 , index : :: core :: primitive :: u32 , weight_limit : runtime_types :: sp_weights :: weight_v2 :: Weight , } , } + # [codec (index = 0)] # [doc = "See [`Pallet::reap_page`]."] reap_page { message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page_index : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "See [`Pallet::execute_overweight`]."] execute_overweight { message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page : :: core :: primitive :: u32 , index : :: core :: primitive :: u32 , weight_limit : runtime_types :: sp_weights :: weight_v2 :: Weight , } , } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -51020,34 +47337,35 @@ pub mod api { #[doc = ""] #[doc = "This can change at any time and may resolve in the future by re-trying."] QueuePaused, - #[codec(index = 8)] - #[doc = "Another call is in progress and needs to finish before this call can happen."] - RecursiveDisallowed, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { - # [codec (index = 0)] # [doc = "Message discarded due to an error in the `MessageProcessor` (usually a format error)."] ProcessingFailed { id : :: subxt :: utils :: H256 , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , error : runtime_types :: frame_support :: traits :: messages :: ProcessMessageError , } , # [codec (index = 1)] # [doc = "Message is processed."] Processed { id : :: subxt :: utils :: H256 , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , weight_used : runtime_types :: sp_weights :: weight_v2 :: Weight , success : :: core :: primitive :: bool , } , # [codec (index = 2)] # [doc = "Message placed in overweight queue."] OverweightEnqueued { id : [:: core :: primitive :: u8 ; 32usize] , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page_index : :: core :: primitive :: u32 , message_index : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "This page was reaped."] PageReaped { origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , index : :: core :: primitive :: u32 , } , } + # [codec (index = 0)] # [doc = "Message discarded due to an error in the `MessageProcessor` (usually a format error)."] ProcessingFailed { id : [:: core :: primitive :: u8 ; 32usize] , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , error : runtime_types :: frame_support :: traits :: messages :: ProcessMessageError , } , # [codec (index = 1)] # [doc = "Message is processed."] Processed { id : [:: core :: primitive :: u8 ; 32usize] , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , weight_used : runtime_types :: sp_weights :: weight_v2 :: Weight , success : :: core :: primitive :: bool , } , # [codec (index = 2)] # [doc = "Message placed in overweight queue."] OverweightEnqueued { id : [:: core :: primitive :: u8 ; 32usize] , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page_index : :: core :: primitive :: u32 , message_index : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "This page was reaped."] PageReaped { origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , index : :: core :: primitive :: u32 , } , } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct BookState<_0> { pub begin: ::core::primitive::u32, pub end: ::core::primitive::u32, @@ -51058,36 +47376,36 @@ pub mod api { pub size: ::core::primitive::u64, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct Neighbours<_0> { pub prev: _0, pub next: _0, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct Page<_0> { pub remaining: _0, pub remaining_size: _0, pub first_index: _0, pub first: _0, pub last: _0, - pub heap: runtime_types::bounded_collections::bounded_vec::BoundedVec< + pub heap: runtime_types::bounded_collections::bounded_vec::BoundedVec5< ::core::primitive::u8, >, } @@ -51097,117 +47415,53 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Immediately dispatch a multi-signature call using a single approval from the caller."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `other_signatories`: The accounts (other than the sender) who are part of the"] - #[doc = "multi-signature, but do not participate in the approval process."] - #[doc = "- `call`: The call to be executed."] - #[doc = ""] - #[doc = "Result is equivalent to the dispatched result."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "O(Z + C) where Z is the length of the call and C its execution weight."] + #[doc = "See [`Pallet::as_multi_threshold_1`]."] as_multi_threshold_1 { - other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, - call: ::std::boxed::Box, + other_signatories: ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >, + call: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::rococo_runtime::RuntimeCall, + >, }, #[codec(index = 1)] - #[doc = "Register approval for a dispatch to be made from a deterministic composite account if"] - #[doc = "approved by a total of `threshold - 1` of `other_signatories`."] - #[doc = ""] - #[doc = "If there are enough, then dispatch the call."] - #[doc = ""] - #[doc = "Payment: `DepositBase` will be reserved if this is the first approval, plus"] - #[doc = "`threshold` times `DepositFactor`. It is returned once this dispatch happens or"] - #[doc = "is cancelled."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] - #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] - #[doc = "dispatch. May not be empty."] - #[doc = "- `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is"] - #[doc = "not the first approval, then it must be `Some`, with the timepoint (block number and"] - #[doc = "transaction index) of the first approval transaction."] - #[doc = "- `call`: The call to be executed."] - #[doc = ""] - #[doc = "NOTE: Unless this is the final approval, you will generally want to use"] - #[doc = "`approve_as_multi` instead, since it only requires a hash of the call."] - #[doc = ""] - #[doc = "Result is equivalent to the dispatched result if `threshold` is exactly `1`. Otherwise"] - #[doc = "on success, result is `Ok` and the result from the interior call, if it was executed,"] - #[doc = "may be found in the deposited `MultisigExecuted` event."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(S + Z + Call)`."] - #[doc = "- Up to one balance-reserve or unreserve operation."] - #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] - #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] - #[doc = "- One call encode & hash, both of complexity `O(Z)` where `Z` is tx-len."] - #[doc = "- One encode & hash, both of complexity `O(S)`."] - #[doc = "- Up to one binary search and insert (`O(logS + S)`)."] - #[doc = "- I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove."] - #[doc = "- One event."] - #[doc = "- The weight of the `call`."] - #[doc = "- Storage: inserts one item, value size bounded by `MaxSignatories`, with a deposit"] - #[doc = " taken for its lifetime of `DepositBase + threshold * DepositFactor`."] + #[doc = "See [`Pallet::as_multi`]."] as_multi { threshold: ::core::primitive::u16, - other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, + other_signatories: ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >, maybe_timepoint: ::core::option::Option< runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>, >, - call: ::std::boxed::Box, + call: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::rococo_runtime::RuntimeCall, + >, max_weight: runtime_types::sp_weights::weight_v2::Weight, }, #[codec(index = 2)] - #[doc = "Register approval for a dispatch to be made from a deterministic composite account if"] - #[doc = "approved by a total of `threshold - 1` of `other_signatories`."] - #[doc = ""] - #[doc = "Payment: `DepositBase` will be reserved if this is the first approval, plus"] - #[doc = "`threshold` times `DepositFactor`. It is returned once this dispatch happens or"] - #[doc = "is cancelled."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] - #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] - #[doc = "dispatch. May not be empty."] - #[doc = "- `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is"] - #[doc = "not the first approval, then it must be `Some`, with the timepoint (block number and"] - #[doc = "transaction index) of the first approval transaction."] - #[doc = "- `call_hash`: The hash of the call to be executed."] - #[doc = ""] - #[doc = "NOTE: If this is the final approval, you will want to use `as_multi` instead."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(S)`."] - #[doc = "- Up to one balance-reserve or unreserve operation."] - #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] - #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] - #[doc = "- One encode & hash, both of complexity `O(S)`."] - #[doc = "- Up to one binary search and insert (`O(logS + S)`)."] - #[doc = "- I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove."] - #[doc = "- One event."] - #[doc = "- Storage: inserts one item, value size bounded by `MaxSignatories`, with a deposit"] - #[doc = " taken for its lifetime of `DepositBase + threshold * DepositFactor`."] + #[doc = "See [`Pallet::approve_as_multi`]."] approve_as_multi { threshold: ::core::primitive::u16, - other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, + other_signatories: ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >, maybe_timepoint: ::core::option::Option< runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>, >, @@ -51215,45 +47469,31 @@ pub mod api { max_weight: runtime_types::sp_weights::weight_v2::Weight, }, #[codec(index = 3)] - #[doc = "Cancel a pre-existing, on-going multisig transaction. Any deposit reserved previously"] - #[doc = "for this operation will be unreserved on success."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] - #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] - #[doc = "dispatch. May not be empty."] - #[doc = "- `timepoint`: The timepoint (block number and transaction index) of the first approval"] - #[doc = "transaction for this dispatch."] - #[doc = "- `call_hash`: The hash of the call to be executed."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(S)`."] - #[doc = "- Up to one balance-reserve or unreserve operation."] - #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] - #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] - #[doc = "- One encode & hash, both of complexity `O(S)`."] - #[doc = "- One event."] - #[doc = "- I/O: 1 read `O(S)`, one remove."] - #[doc = "- Storage: removes one item."] + #[doc = "See [`Pallet::cancel_as_multi`]."] cancel_as_multi { threshold: ::core::primitive::u16, - other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, + other_signatories: ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >, timepoint: runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>, call_hash: [::core::primitive::u8; 32usize], }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -51300,40 +47540,44 @@ pub mod api { AlreadyStored, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "A new multisig operation has begun."] NewMultisig { - approving: ::subxt::utils::AccountId32, - multisig: ::subxt::utils::AccountId32, + approving: ::subxt::ext::subxt_core::utils::AccountId32, + multisig: ::subxt::ext::subxt_core::utils::AccountId32, call_hash: [::core::primitive::u8; 32usize], }, #[codec(index = 1)] #[doc = "A multisig operation has been approved by someone."] MultisigApproval { - approving: ::subxt::utils::AccountId32, + approving: ::subxt::ext::subxt_core::utils::AccountId32, timepoint: runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>, - multisig: ::subxt::utils::AccountId32, + multisig: ::subxt::ext::subxt_core::utils::AccountId32, call_hash: [::core::primitive::u8; 32usize], }, #[codec(index = 2)] #[doc = "A multisig operation has been executed."] MultisigExecuted { - approving: ::subxt::utils::AccountId32, + approving: ::subxt::ext::subxt_core::utils::AccountId32, timepoint: runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>, - multisig: ::subxt::utils::AccountId32, + multisig: ::subxt::ext::subxt_core::utils::AccountId32, call_hash: [::core::primitive::u8; 32usize], result: ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, @@ -51341,40 +47585,40 @@ pub mod api { #[codec(index = 3)] #[doc = "A multisig operation has been cancelled."] MultisigCancelled { - cancelling: ::subxt::utils::AccountId32, + cancelling: ::subxt::ext::subxt_core::utils::AccountId32, timepoint: runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>, - multisig: ::subxt::utils::AccountId32, + multisig: ::subxt::ext::subxt_core::utils::AccountId32, call_hash: [::core::primitive::u8; 32usize], }, } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct Multisig<_0, _1, _2> { pub when: runtime_types::pallet_multisig::Timepoint<_0>, pub deposit: _1, pub depositor: _2, - pub approvals: runtime_types::bounded_collections::bounded_vec::BoundedVec<_2>, + pub approvals: runtime_types::bounded_collections::bounded_vec::BoundedVec18<_2>, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct Timepoint<_0> { pub height: _0, pub index: ::core::primitive::u32, @@ -51385,75 +47629,58 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Bid<_0, _1> { pub amount: _0, pub who: _1, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Place a bid."] - #[doc = ""] - #[doc = "Origin must be Signed, and account must have at least `amount` in free balance."] - #[doc = ""] - #[doc = "- `amount`: The amount of the bid; these funds will be reserved, and if/when"] - #[doc = " consolidated, removed. Must be at least `MinBid`."] - #[doc = "- `duration`: The number of periods before which the newly consolidated bid may be"] - #[doc = " thawed. Must be greater than 1 and no more than `QueueCount`."] - #[doc = ""] - #[doc = "Complexities:"] - #[doc = "- `Queues[duration].len()` (just take max)."] + #[doc = "See [`Pallet::place_bid`]."] place_bid { #[codec(compact)] amount: ::core::primitive::u128, duration: ::core::primitive::u32, }, #[codec(index = 1)] - #[doc = "Retract a previously placed bid."] - #[doc = ""] - #[doc = "Origin must be Signed, and the account should have previously issued a still-active bid"] - #[doc = "of `amount` for `duration`."] - #[doc = ""] - #[doc = "- `amount`: The amount of the previous bid."] - #[doc = "- `duration`: The duration of the previous bid."] + #[doc = "See [`Pallet::retract_bid`]."] retract_bid { #[codec(compact)] amount: ::core::primitive::u128, duration: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "Ensure we have sufficient funding for all potential payouts."] - #[doc = ""] - #[doc = "- `origin`: Must be accepted by `FundOrigin`."] + #[doc = "See [`Pallet::fund_deficit`]."] fund_deficit, #[codec(index = 3)] - #[doc = "Reduce or remove an outstanding receipt, placing the according proportion of funds into"] - #[doc = "the account of the owner."] - #[doc = ""] - #[doc = "- `origin`: Must be Signed and the account must be the owner of the receipt `index` as"] - #[doc = " well as any fungible counterpart."] - #[doc = "- `index`: The index of the receipt."] - #[doc = "- `portion`: If `Some`, then only the given portion of the receipt should be thawed. If"] - #[doc = " `None`, then all of it should be."] + #[doc = "See [`Pallet::thaw_private`]."] thaw_private { #[codec(compact)] index: ::core::primitive::u32, @@ -51462,39 +47689,38 @@ pub mod api { >, }, #[codec(index = 4)] - #[doc = "Reduce or remove an outstanding receipt, placing the according proportion of funds into"] - #[doc = "the account of the owner."] - #[doc = ""] - #[doc = "- `origin`: Must be Signed and the account must be the owner of the fungible counterpart"] - #[doc = " for receipt `index`."] - #[doc = "- `index`: The index of the receipt."] + #[doc = "See [`Pallet::thaw_communal`]."] thaw_communal { #[codec(compact)] index: ::core::primitive::u32, }, #[codec(index = 5)] - #[doc = "Make a private receipt communal and create fungible counterparts for its owner."] + #[doc = "See [`Pallet::communify`]."] communify { #[codec(compact)] index: ::core::primitive::u32, }, #[codec(index = 6)] - #[doc = "Make a communal receipt private and burn fungible counterparts from its owner."] + #[doc = "See [`Pallet::privatize`]."] privatize { #[codec(compact)] index: ::core::primitive::u32, }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -51545,35 +47771,39 @@ pub mod api { AlreadyPrivate, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "A bid was successfully placed."] BidPlaced { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, duration: ::core::primitive::u32, }, #[codec(index = 1)] #[doc = "A bid was successfully removed (before being accepted)."] BidRetracted { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, duration: ::core::primitive::u32, }, #[codec(index = 2)] #[doc = "A bid was dropped from a queue because of another, more substantial, bid was present."] BidDropped { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, duration: ::core::primitive::u32, }, @@ -51582,7 +47812,7 @@ pub mod api { Issued { index: ::core::primitive::u32, expiry: ::core::primitive::u32, - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, proportion: runtime_types::sp_arithmetic::per_things::Perquintill, amount: ::core::primitive::u128, }, @@ -51590,7 +47820,7 @@ pub mod api { #[doc = "An receipt has been (at least partially) thawed."] Thawed { index: ::core::primitive::u32, - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, proportion: runtime_types::sp_arithmetic::per_things::Perquintill, amount: ::core::primitive::u128, dropped: ::core::primitive::bool, @@ -51601,50 +47831,62 @@ pub mod api { #[codec(index = 6)] #[doc = "A receipt was transfered."] Transferred { - from: ::subxt::utils::AccountId32, - to: ::subxt::utils::AccountId32, + from: ::subxt::ext::subxt_core::utils::AccountId32, + to: ::subxt::ext::subxt_core::utils::AccountId32, index: ::core::primitive::u32, }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum HoldReason { #[codec(index = 0)] NftReceipt, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct ReceiptRecord<_0, _1, _2> { pub proportion: runtime_types::sp_arithmetic::per_things::Perquintill, pub owner: ::core::option::Option<(_0, _2)>, pub expiry: _1, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct SummaryRecord<_0, _1> { pub proportion_owed: runtime_types::sp_arithmetic::per_things::Perquintill, pub index: ::core::primitive::u32, @@ -51659,15 +47901,19 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Events type."] pub enum Event { #[codec(index = 0)] @@ -51676,7 +47922,7 @@ pub mod api { #[doc = "\\[kind, timeslot\\]."] Offence { kind: [::core::primitive::u8; 16usize], - timeslot: ::std::vec::Vec<::core::primitive::u8>, + timeslot: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, } } @@ -51686,62 +47932,63 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Register a preimage on-chain."] - #[doc = ""] - #[doc = "If the preimage was previously requested, no fees or deposits are taken for providing"] - #[doc = "the preimage. Otherwise, a deposit is taken proportional to the size of the preimage."] + #[doc = "See [`Pallet::note_preimage`]."] note_preimage { - bytes: ::std::vec::Vec<::core::primitive::u8>, + bytes: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, #[codec(index = 1)] - #[doc = "Clear an unrequested preimage from the runtime storage."] - #[doc = ""] - #[doc = "If `len` is provided, then it will be a much cheaper operation."] - #[doc = ""] - #[doc = "- `hash`: The hash of the preimage to be removed from the store."] - #[doc = "- `len`: The length of the preimage of `hash`."] - unnote_preimage { hash: ::subxt::utils::H256 }, + #[doc = "See [`Pallet::unnote_preimage`]."] + unnote_preimage { + hash: ::subxt::ext::subxt_core::utils::H256, + }, #[codec(index = 2)] - #[doc = "Request a preimage be uploaded to the chain without paying any fees or deposits."] - #[doc = ""] - #[doc = "If the preimage requests has already been provided on-chain, we unreserve any deposit"] - #[doc = "a user may have paid, and take the control of the preimage out of their hands."] - request_preimage { hash: ::subxt::utils::H256 }, + #[doc = "See [`Pallet::request_preimage`]."] + request_preimage { + hash: ::subxt::ext::subxt_core::utils::H256, + }, #[codec(index = 3)] - #[doc = "Clear a previously made request for a preimage."] - #[doc = ""] - #[doc = "NOTE: THIS MUST NOT BE CALLED ON `hash` MORE TIMES THAN `request_preimage`."] - unrequest_preimage { hash: ::subxt::utils::H256 }, + #[doc = "See [`Pallet::unrequest_preimage`]."] + unrequest_preimage { + hash: ::subxt::ext::subxt_core::utils::H256, + }, #[codec(index = 4)] - #[doc = "Ensure that the a bulk of pre-images is upgraded."] - #[doc = ""] - #[doc = "The caller pays no fee if at least 90% of pre-images were successfully updated."] + #[doc = "See [`Pallet::ensure_updated`]."] ensure_updated { - hashes: ::std::vec::Vec<::subxt::utils::H256>, + hashes: ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::H256, + >, }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -51770,52 +48017,66 @@ pub mod api { TooFew, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "A preimage has been noted."] - Noted { hash: ::subxt::utils::H256 }, + Noted { + hash: ::subxt::ext::subxt_core::utils::H256, + }, #[codec(index = 1)] #[doc = "A preimage has been requested."] - Requested { hash: ::subxt::utils::H256 }, + Requested { + hash: ::subxt::ext::subxt_core::utils::H256, + }, #[codec(index = 2)] #[doc = "A preimage has ben cleared."] - Cleared { hash: ::subxt::utils::H256 }, + Cleared { + hash: ::subxt::ext::subxt_core::utils::H256, + }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum HoldReason { #[codec(index = 0)] Preimage, } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum OldRequestStatus<_0, _1> { #[codec(index = 0)] Unrequested { @@ -51830,15 +48091,15 @@ pub mod api { }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum RequestStatus<_0, _1> { #[codec(index = 0)] Unrequested { @@ -51858,112 +48119,71 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Dispatch the given `call` from an account that the sender is authorised for through"] - #[doc = "`add_proxy`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `real`: The account that the proxy will make a call on behalf of."] - #[doc = "- `force_proxy_type`: Specify the exact proxy type to be used and checked for this call."] - #[doc = "- `call`: The call to be made by the `real` account."] + #[doc = "See [`Pallet::proxy`]."] proxy { - real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + real: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, force_proxy_type: ::core::option::Option, - call: ::std::boxed::Box, + call: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::rococo_runtime::RuntimeCall, + >, }, #[codec(index = 1)] - #[doc = "Register a proxy account for the sender that is able to make calls on its behalf."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `proxy`: The account that the `caller` would like to make a proxy."] - #[doc = "- `proxy_type`: The permissions allowed for this proxy account."] - #[doc = "- `delay`: The announcement period required of the initial proxy. Will generally be"] - #[doc = "zero."] + #[doc = "See [`Pallet::add_proxy`]."] add_proxy { - delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + delegate: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, proxy_type: runtime_types::rococo_runtime::ProxyType, delay: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "Unregister a proxy account for the sender."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `proxy`: The account that the `caller` would like to remove as a proxy."] - #[doc = "- `proxy_type`: The permissions currently enabled for the removed proxy account."] + #[doc = "See [`Pallet::remove_proxy`]."] remove_proxy { - delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + delegate: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, proxy_type: runtime_types::rococo_runtime::ProxyType, delay: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "Unregister all proxy accounts for the sender."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "WARNING: This may be called on accounts created by `pure`, however if done, then"] - #[doc = "the unreserved fees will be inaccessible. **All access to this account will be lost.**"] + #[doc = "See [`Pallet::remove_proxies`]."] remove_proxies, #[codec(index = 4)] - #[doc = "Spawn a fresh new account that is guaranteed to be otherwise inaccessible, and"] - #[doc = "initialize it with a proxy of `proxy_type` for `origin` sender."] - #[doc = ""] - #[doc = "Requires a `Signed` origin."] - #[doc = ""] - #[doc = "- `proxy_type`: The type of the proxy that the sender will be registered as over the"] - #[doc = "new account. This will almost always be the most permissive `ProxyType` possible to"] - #[doc = "allow for maximum flexibility."] - #[doc = "- `index`: A disambiguation index, in case this is called multiple times in the same"] - #[doc = "transaction (e.g. with `utility::batch`). Unless you're using `batch` you probably just"] - #[doc = "want to use `0`."] - #[doc = "- `delay`: The announcement period required of the initial proxy. Will generally be"] - #[doc = "zero."] - #[doc = ""] - #[doc = "Fails with `Duplicate` if this has already been called in this transaction, from the"] - #[doc = "same sender, with the same parameters."] - #[doc = ""] - #[doc = "Fails if there are insufficient funds to pay for deposit."] + #[doc = "See [`Pallet::create_pure`]."] create_pure { proxy_type: runtime_types::rococo_runtime::ProxyType, delay: ::core::primitive::u32, index: ::core::primitive::u16, }, #[codec(index = 5)] - #[doc = "Removes a previously spawned pure proxy."] - #[doc = ""] - #[doc = "WARNING: **All access to this account will be lost.** Any funds held in it will be"] - #[doc = "inaccessible."] - #[doc = ""] - #[doc = "Requires a `Signed` origin, and the sender account must have been created by a call to"] - #[doc = "`pure` with corresponding parameters."] - #[doc = ""] - #[doc = "- `spawner`: The account that originally called `pure` to create this account."] - #[doc = "- `index`: The disambiguation index originally passed to `pure`. Probably `0`."] - #[doc = "- `proxy_type`: The proxy type originally passed to `pure`."] - #[doc = "- `height`: The height of the chain when the call to `pure` was processed."] - #[doc = "- `ext_index`: The extrinsic index in which the call to `pure` was processed."] - #[doc = ""] - #[doc = "Fails with `NoPermission` in case the caller is not a previously created pure"] - #[doc = "account whose `pure` call has corresponding parameters."] + #[doc = "See [`Pallet::kill_pure`]."] kill_pure { - spawner: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + spawner: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, proxy_type: runtime_types::rococo_runtime::ProxyType, index: ::core::primitive::u16, #[codec(compact)] @@ -51972,85 +48192,64 @@ pub mod api { ext_index: ::core::primitive::u32, }, #[codec(index = 6)] - #[doc = "Publish the hash of a proxy-call that will be made in the future."] - #[doc = ""] - #[doc = "This must be called some number of blocks before the corresponding `proxy` is attempted"] - #[doc = "if the delay associated with the proxy relationship is greater than zero."] - #[doc = ""] - #[doc = "No more than `MaxPending` announcements may be made at any one time."] - #[doc = ""] - #[doc = "This will take a deposit of `AnnouncementDepositFactor` as well as"] - #[doc = "`AnnouncementDepositBase` if there are no other pending announcements."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and a proxy of `real`."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `real`: The account that the proxy will make a call on behalf of."] - #[doc = "- `call_hash`: The hash of the call to be made by the `real` account."] + #[doc = "See [`Pallet::announce`]."] announce { - real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - call_hash: ::subxt::utils::H256, + real: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, + call_hash: ::subxt::ext::subxt_core::utils::H256, }, #[codec(index = 7)] - #[doc = "Remove a given announcement."] - #[doc = ""] - #[doc = "May be called by a proxy account to remove a call they previously announced and return"] - #[doc = "the deposit."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `real`: The account that the proxy will make a call on behalf of."] - #[doc = "- `call_hash`: The hash of the call to be made by the `real` account."] + #[doc = "See [`Pallet::remove_announcement`]."] remove_announcement { - real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - call_hash: ::subxt::utils::H256, + real: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, + call_hash: ::subxt::ext::subxt_core::utils::H256, }, #[codec(index = 8)] - #[doc = "Remove the given announcement of a delegate."] - #[doc = ""] - #[doc = "May be called by a target (proxied) account to remove a call that one of their delegates"] - #[doc = "(`delegate`) has announced they want to execute. The deposit is returned."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `delegate`: The account that previously announced the call."] - #[doc = "- `call_hash`: The hash of the call to be made."] + #[doc = "See [`Pallet::reject_announcement`]."] reject_announcement { - delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - call_hash: ::subxt::utils::H256, + delegate: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, + call_hash: ::subxt::ext::subxt_core::utils::H256, }, #[codec(index = 9)] - #[doc = "Dispatch the given `call` from an account that the sender is authorized for through"] - #[doc = "`add_proxy`."] - #[doc = ""] - #[doc = "Removes any corresponding announcement(s)."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `real`: The account that the proxy will make a call on behalf of."] - #[doc = "- `force_proxy_type`: Specify the exact proxy type to be used and checked for this call."] - #[doc = "- `call`: The call to be made by the `real` account."] + #[doc = "See [`Pallet::proxy_announced`]."] proxy_announced { - delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + delegate: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, + real: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, force_proxy_type: ::core::option::Option, - call: ::std::boxed::Box, + call: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::rococo_runtime::RuntimeCall, + >, }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -52079,15 +48278,19 @@ pub mod api { NoSelfProxy, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] @@ -52100,61 +48303,61 @@ pub mod api { #[doc = "A pure account has been created by new proxy with given"] #[doc = "disambiguation index and proxy type."] PureCreated { - pure: ::subxt::utils::AccountId32, - who: ::subxt::utils::AccountId32, + pure: ::subxt::ext::subxt_core::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, proxy_type: runtime_types::rococo_runtime::ProxyType, disambiguation_index: ::core::primitive::u16, }, #[codec(index = 2)] #[doc = "An announcement was placed to make a call in the future."] Announced { - real: ::subxt::utils::AccountId32, - proxy: ::subxt::utils::AccountId32, - call_hash: ::subxt::utils::H256, + real: ::subxt::ext::subxt_core::utils::AccountId32, + proxy: ::subxt::ext::subxt_core::utils::AccountId32, + call_hash: ::subxt::ext::subxt_core::utils::H256, }, #[codec(index = 3)] #[doc = "A proxy was added."] ProxyAdded { - delegator: ::subxt::utils::AccountId32, - delegatee: ::subxt::utils::AccountId32, + delegator: ::subxt::ext::subxt_core::utils::AccountId32, + delegatee: ::subxt::ext::subxt_core::utils::AccountId32, proxy_type: runtime_types::rococo_runtime::ProxyType, delay: ::core::primitive::u32, }, #[codec(index = 4)] #[doc = "A proxy was removed."] ProxyRemoved { - delegator: ::subxt::utils::AccountId32, - delegatee: ::subxt::utils::AccountId32, + delegator: ::subxt::ext::subxt_core::utils::AccountId32, + delegatee: ::subxt::ext::subxt_core::utils::AccountId32, proxy_type: runtime_types::rococo_runtime::ProxyType, delay: ::core::primitive::u32, }, } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct Announcement<_0, _1, _2> { pub real: _0, pub call_hash: _1, pub height: _2, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct ProxyDefinition<_0, _1, _2> { pub delegate: _0, pub proxy_type: _1, @@ -52166,112 +48369,81 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Introduce a new member."] - #[doc = ""] - #[doc = "- `origin`: Must be the `AddOrigin`."] - #[doc = "- `who`: Account of non-member which will become a member."] - #[doc = ""] - #[doc = "Weight: `O(1)`"] + #[doc = "See [`Pallet::add_member`]."] add_member { - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + who: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, }, #[codec(index = 1)] - #[doc = "Increment the rank of an existing member by one."] - #[doc = ""] - #[doc = "- `origin`: Must be the `PromoteOrigin`."] - #[doc = "- `who`: Account of existing member."] - #[doc = ""] - #[doc = "Weight: `O(1)`"] + #[doc = "See [`Pallet::promote_member`]."] promote_member { - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + who: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, }, #[codec(index = 2)] - #[doc = "Decrement the rank of an existing member by one. If the member is already at rank zero,"] - #[doc = "then they are removed entirely."] - #[doc = ""] - #[doc = "- `origin`: Must be the `DemoteOrigin`."] - #[doc = "- `who`: Account of existing member of rank greater than zero."] - #[doc = ""] - #[doc = "Weight: `O(1)`, less if the member's index is highest in its rank."] + #[doc = "See [`Pallet::demote_member`]."] demote_member { - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + who: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, }, #[codec(index = 3)] - #[doc = "Remove the member entirely."] - #[doc = ""] - #[doc = "- `origin`: Must be the `RemoveOrigin`."] - #[doc = "- `who`: Account of existing member of rank greater than zero."] - #[doc = "- `min_rank`: The rank of the member or greater."] - #[doc = ""] - #[doc = "Weight: `O(min_rank)`."] + #[doc = "See [`Pallet::remove_member`]."] remove_member { - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + who: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, min_rank: ::core::primitive::u16, }, #[codec(index = 4)] - #[doc = "Add an aye or nay vote for the sender to the given proposal."] - #[doc = ""] - #[doc = "- `origin`: Must be `Signed` by a member account."] - #[doc = "- `poll`: Index of a poll which is ongoing."] - #[doc = "- `aye`: `true` if the vote is to approve the proposal, `false` otherwise."] - #[doc = ""] - #[doc = "Transaction fees are be waived if the member is voting on any particular proposal"] - #[doc = "for the first time and the call is successful. Subsequent vote changes will charge a"] - #[doc = "fee."] - #[doc = ""] - #[doc = "Weight: `O(1)`, less if there was no previous vote on the poll by the member."] + #[doc = "See [`Pallet::vote`]."] vote { poll: ::core::primitive::u32, aye: ::core::primitive::bool, }, #[codec(index = 5)] - #[doc = "Remove votes from the given poll. It must have ended."] - #[doc = ""] - #[doc = "- `origin`: Must be `Signed` by any account."] - #[doc = "- `poll_index`: Index of a poll which is completed and for which votes continue to"] - #[doc = " exist."] - #[doc = "- `max`: Maximum number of vote items from remove in this call."] - #[doc = ""] - #[doc = "Transaction fees are waived if the operation is successful."] - #[doc = ""] - #[doc = "Weight `O(max)` (less if there are fewer items to remove than `max`)."] + #[doc = "See [`Pallet::cleanup_poll`]."] cleanup_poll { poll_index: ::core::primitive::u32, max: ::core::primitive::u32, }, - #[codec(index = 6)] - #[doc = "Exchanges a member with a new account and the same existing rank."] - #[doc = ""] - #[doc = "- `origin`: Must be the `ExchangeOrigin`."] - #[doc = "- `who`: Account of existing member of rank greater than zero to be exchanged."] - #[doc = "- `new_who`: New Account of existing member of rank greater than zero to exchanged to."] - exchange_member { - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - new_who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -52301,93 +48473,90 @@ pub mod api { #[codec(index = 8)] #[doc = "The origin is not sufficiently privileged to do the operation."] NoPermission, - #[codec(index = 9)] - #[doc = "The new member to exchange is the same as the old member"] - SameMember, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "A member `who` has been added."] - MemberAdded { who: ::subxt::utils::AccountId32 }, + MemberAdded { + who: ::subxt::ext::subxt_core::utils::AccountId32, + }, #[codec(index = 1)] #[doc = "The member `who`se rank has been changed to the given `rank`."] RankChanged { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, rank: ::core::primitive::u16, }, #[codec(index = 2)] #[doc = "The member `who` of given `rank` has been removed from the collective."] MemberRemoved { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, rank: ::core::primitive::u16, }, #[codec(index = 3)] #[doc = "The member `who` has voted for the `poll` with the given `vote` leading to an updated"] #[doc = "`tally`."] Voted { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, poll: ::core::primitive::u32, vote: runtime_types::pallet_ranked_collective::VoteRecord, tally: runtime_types::pallet_ranked_collective::Tally, }, - #[codec(index = 4)] - #[doc = "The member `who` had their `AccountId` changed to `new_who`."] - MemberExchanged { - who: ::subxt::utils::AccountId32, - new_who: ::subxt::utils::AccountId32, - }, } } #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: CompactAs, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct MemberRecord { pub rank: ::core::primitive::u16, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct Tally { pub bare_ayes: ::core::primitive::u32, pub ayes: ::core::primitive::u32, pub nays: ::core::primitive::u32, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum VoteRecord { #[codec(index = 0)] Aye(::core::primitive::u32), @@ -52400,160 +48569,115 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Send a call through a recovered account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and registered to"] - #[doc = "be able to make calls on behalf of the recovered account."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `account`: The recovered account you want to make a call on-behalf-of."] - #[doc = "- `call`: The call you want to make with the recovered account."] + #[doc = "See [`Pallet::as_recovered`]."] as_recovered { - account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - call: ::std::boxed::Box, + account: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, + call: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::rococo_runtime::RuntimeCall, + >, }, #[codec(index = 1)] - #[doc = "Allow ROOT to bypass the recovery process and set an a rescuer account"] - #[doc = "for a lost account directly."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _ROOT_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `lost`: The \"lost account\" to be recovered."] - #[doc = "- `rescuer`: The \"rescuer account\" which can call as the lost account."] + #[doc = "See [`Pallet::set_recovered`]."] set_recovered { - lost: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - rescuer: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + lost: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, + rescuer: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, }, #[codec(index = 2)] - #[doc = "Create a recovery configuration for your account. This makes your account recoverable."] - #[doc = ""] - #[doc = "Payment: `ConfigDepositBase` + `FriendDepositFactor` * #_of_friends balance"] - #[doc = "will be reserved for storing the recovery configuration. This deposit is returned"] - #[doc = "in full when the user calls `remove_recovery`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `friends`: A list of friends you trust to vouch for recovery attempts. Should be"] - #[doc = " ordered and contain no duplicate values."] - #[doc = "- `threshold`: The number of friends that must vouch for a recovery attempt before the"] - #[doc = " account can be recovered. Should be less than or equal to the length of the list of"] - #[doc = " friends."] - #[doc = "- `delay_period`: The number of blocks after a recovery attempt is initialized that"] - #[doc = " needs to pass before the account can be recovered."] + #[doc = "See [`Pallet::create_recovery`]."] create_recovery { - friends: ::std::vec::Vec<::subxt::utils::AccountId32>, + friends: ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >, threshold: ::core::primitive::u16, delay_period: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "Initiate the process for recovering a recoverable account."] - #[doc = ""] - #[doc = "Payment: `RecoveryDeposit` balance will be reserved for initiating the"] - #[doc = "recovery process. This deposit will always be repatriated to the account"] - #[doc = "trying to be recovered. See `close_recovery`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `account`: The lost account that you want to recover. This account needs to be"] - #[doc = " recoverable (i.e. have a recovery configuration)."] + #[doc = "See [`Pallet::initiate_recovery`]."] initiate_recovery { - account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + account: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, }, #[codec(index = 4)] - #[doc = "Allow a \"friend\" of a recoverable account to vouch for an active recovery"] - #[doc = "process for that account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and must be a \"friend\""] - #[doc = "for the recoverable account."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `lost`: The lost account that you want to recover."] - #[doc = "- `rescuer`: The account trying to rescue the lost account that you want to vouch for."] - #[doc = ""] - #[doc = "The combination of these two parameters must point to an active recovery"] - #[doc = "process."] + #[doc = "See [`Pallet::vouch_recovery`]."] vouch_recovery { - lost: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - rescuer: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + lost: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, + rescuer: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, }, #[codec(index = 5)] - #[doc = "Allow a successful rescuer to claim their recovered account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and must be a \"rescuer\""] - #[doc = "who has successfully completed the account recovery process: collected"] - #[doc = "`threshold` or more vouches, waited `delay_period` blocks since initiation."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `account`: The lost account that you want to claim has been successfully recovered by"] - #[doc = " you."] + #[doc = "See [`Pallet::claim_recovery`]."] claim_recovery { - account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + account: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, }, #[codec(index = 6)] - #[doc = "As the controller of a recoverable account, close an active recovery"] - #[doc = "process for your account."] - #[doc = ""] - #[doc = "Payment: By calling this function, the recoverable account will receive"] - #[doc = "the recovery deposit `RecoveryDeposit` placed by the rescuer."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and must be a"] - #[doc = "recoverable account with an active recovery process for it."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `rescuer`: The account trying to rescue this recoverable account."] + #[doc = "See [`Pallet::close_recovery`]."] close_recovery { - rescuer: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + rescuer: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, }, #[codec(index = 7)] - #[doc = "Remove the recovery process for your account. Recovered accounts are still accessible."] - #[doc = ""] - #[doc = "NOTE: The user must make sure to call `close_recovery` on all active"] - #[doc = "recovery attempts before calling this function else it will fail."] - #[doc = ""] - #[doc = "Payment: By calling this function the recoverable account will unreserve"] - #[doc = "their recovery configuration deposit."] - #[doc = "(`ConfigDepositBase` + `FriendDepositFactor` * #_of_friends)"] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and must be a"] - #[doc = "recoverable account (i.e. has a recovery configuration)."] + #[doc = "See [`Pallet::remove_recovery`]."] remove_recovery, #[codec(index = 8)] - #[doc = "Cancel the ability to use `as_recovered` for `account`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and registered to"] - #[doc = "be able to make calls on behalf of the recovered account."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `account`: The recovered account you are able to call on-behalf-of."] + #[doc = "See [`Pallet::cancel_recovered`]."] cancel_recovered { - account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + account: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -52606,79 +48730,83 @@ pub mod api { BadState, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Events type."] pub enum Event { #[codec(index = 0)] #[doc = "A recovery process has been set up for an account."] RecoveryCreated { - account: ::subxt::utils::AccountId32, + account: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 1)] #[doc = "A recovery process has been initiated for lost account by rescuer account."] RecoveryInitiated { - lost_account: ::subxt::utils::AccountId32, - rescuer_account: ::subxt::utils::AccountId32, + lost_account: ::subxt::ext::subxt_core::utils::AccountId32, + rescuer_account: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 2)] #[doc = "A recovery process for lost account by rescuer account has been vouched for by sender."] RecoveryVouched { - lost_account: ::subxt::utils::AccountId32, - rescuer_account: ::subxt::utils::AccountId32, - sender: ::subxt::utils::AccountId32, + lost_account: ::subxt::ext::subxt_core::utils::AccountId32, + rescuer_account: ::subxt::ext::subxt_core::utils::AccountId32, + sender: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 3)] #[doc = "A recovery process for lost account by rescuer account has been closed."] RecoveryClosed { - lost_account: ::subxt::utils::AccountId32, - rescuer_account: ::subxt::utils::AccountId32, + lost_account: ::subxt::ext::subxt_core::utils::AccountId32, + rescuer_account: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 4)] #[doc = "Lost account has been successfully recovered by rescuer account."] AccountRecovered { - lost_account: ::subxt::utils::AccountId32, - rescuer_account: ::subxt::utils::AccountId32, + lost_account: ::subxt::ext::subxt_core::utils::AccountId32, + rescuer_account: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 5)] #[doc = "A recovery process has been removed for an account."] RecoveryRemoved { - lost_account: ::subxt::utils::AccountId32, + lost_account: ::subxt::ext::subxt_core::utils::AccountId32, }, } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct ActiveRecovery<_0, _1, _2> { pub created: _0, pub deposit: _1, pub friends: _2, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct RecoveryConfig<_0, _1, _2> { pub delay_period: _0, pub deposit: _1, @@ -52691,30 +48819,27 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Propose a referendum on a privileged action."] - #[doc = ""] - #[doc = "- `origin`: must be `SubmitOrigin` and the account must have `SubmissionDeposit` funds"] - #[doc = " available."] - #[doc = "- `proposal_origin`: The origin from which the proposal should be executed."] - #[doc = "- `proposal`: The proposal."] - #[doc = "- `enactment_moment`: The moment that the proposal should be enacted."] - #[doc = ""] - #[doc = "Emits `Submitted`."] + #[doc = "See [`Pallet::submit`]."] submit { - proposal_origin: - ::std::boxed::Box, + proposal_origin: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::rococo_runtime::OriginCaller, + >, proposal: runtime_types::frame_support::traits::preimages::Bounded< runtime_types::rococo_runtime::RuntimeCall, runtime_types::sp_runtime::traits::BlakeTwo256, @@ -52725,197 +48850,47 @@ pub mod api { >, }, #[codec(index = 1)] - #[doc = "Post the Decision Deposit for a referendum."] - #[doc = ""] - #[doc = "- `origin`: must be `Signed` and the account must have funds available for the"] - #[doc = " referendum's track's Decision Deposit."] - #[doc = "- `index`: The index of the submitted referendum whose Decision Deposit is yet to be"] - #[doc = " posted."] - #[doc = ""] - #[doc = "Emits `DecisionDepositPlaced`."] + #[doc = "See [`Pallet::place_decision_deposit`]."] place_decision_deposit { index: ::core::primitive::u32 }, #[codec(index = 2)] - #[doc = "Refund the Decision Deposit for a closed referendum back to the depositor."] - #[doc = ""] - #[doc = "- `origin`: must be `Signed` or `Root`."] - #[doc = "- `index`: The index of a closed referendum whose Decision Deposit has not yet been"] - #[doc = " refunded."] - #[doc = ""] - #[doc = "Emits `DecisionDepositRefunded`."] + #[doc = "See [`Pallet::refund_decision_deposit`]."] refund_decision_deposit { index: ::core::primitive::u32 }, #[codec(index = 3)] - #[doc = "Cancel an ongoing referendum."] - #[doc = ""] - #[doc = "- `origin`: must be the `CancelOrigin`."] - #[doc = "- `index`: The index of the referendum to be cancelled."] - #[doc = ""] - #[doc = "Emits `Cancelled`."] + #[doc = "See [`Pallet::cancel`]."] cancel { index: ::core::primitive::u32 }, #[codec(index = 4)] - #[doc = "Cancel an ongoing referendum and slash the deposits."] - #[doc = ""] - #[doc = "- `origin`: must be the `KillOrigin`."] - #[doc = "- `index`: The index of the referendum to be cancelled."] - #[doc = ""] - #[doc = "Emits `Killed` and `DepositSlashed`."] + #[doc = "See [`Pallet::kill`]."] kill { index: ::core::primitive::u32 }, #[codec(index = 5)] - #[doc = "Advance a referendum onto its next logical state. Only used internally."] - #[doc = ""] - #[doc = "- `origin`: must be `Root`."] - #[doc = "- `index`: the referendum to be advanced."] + #[doc = "See [`Pallet::nudge_referendum`]."] nudge_referendum { index: ::core::primitive::u32 }, #[codec(index = 6)] - #[doc = "Advance a track onto its next logical state. Only used internally."] - #[doc = ""] - #[doc = "- `origin`: must be `Root`."] - #[doc = "- `track`: the track to be advanced."] - #[doc = ""] - #[doc = "Action item for when there is now one fewer referendum in the deciding phase and the"] - #[doc = "`DecidingCount` is not yet updated. This means that we should either:"] - #[doc = "- begin deciding another referendum (and leave `DecidingCount` alone); or"] - #[doc = "- decrement `DecidingCount`."] + #[doc = "See [`Pallet::one_fewer_deciding`]."] one_fewer_deciding { track: ::core::primitive::u16 }, #[codec(index = 7)] - #[doc = "Refund the Submission Deposit for a closed referendum back to the depositor."] - #[doc = ""] - #[doc = "- `origin`: must be `Signed` or `Root`."] - #[doc = "- `index`: The index of a closed referendum whose Submission Deposit has not yet been"] - #[doc = " refunded."] - #[doc = ""] - #[doc = "Emits `SubmissionDepositRefunded`."] + #[doc = "See [`Pallet::refund_submission_deposit`]."] refund_submission_deposit { index: ::core::primitive::u32 }, #[codec(index = 8)] - #[doc = "Set or clear metadata of a referendum."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `origin`: Must be `Signed` by a creator of a referendum or by anyone to clear a"] - #[doc = " metadata of a finished referendum."] - #[doc = "- `index`: The index of a referendum to set or clear metadata for."] - #[doc = "- `maybe_hash`: The hash of an on-chain stored preimage. `None` to clear a metadata."] + #[doc = "See [`Pallet::set_metadata`]."] set_metadata { index: ::core::primitive::u32, - maybe_hash: ::core::option::Option<::subxt::utils::H256>, + maybe_hash: ::core::option::Option<::subxt::ext::subxt_core::utils::H256>, }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub enum Call2 { - #[codec(index = 0)] - #[doc = "Propose a referendum on a privileged action."] - #[doc = ""] - #[doc = "- `origin`: must be `SubmitOrigin` and the account must have `SubmissionDeposit` funds"] - #[doc = " available."] - #[doc = "- `proposal_origin`: The origin from which the proposal should be executed."] - #[doc = "- `proposal`: The proposal."] - #[doc = "- `enactment_moment`: The moment that the proposal should be enacted."] - #[doc = ""] - #[doc = "Emits `Submitted`."] - submit { - proposal_origin: - ::std::boxed::Box, - proposal: runtime_types::frame_support::traits::preimages::Bounded< - runtime_types::rococo_runtime::RuntimeCall, - runtime_types::sp_runtime::traits::BlakeTwo256, - >, - enactment_moment: - runtime_types::frame_support::traits::schedule::DispatchTime< - ::core::primitive::u32, - >, - }, - #[codec(index = 1)] - #[doc = "Post the Decision Deposit for a referendum."] - #[doc = ""] - #[doc = "- `origin`: must be `Signed` and the account must have funds available for the"] - #[doc = " referendum's track's Decision Deposit."] - #[doc = "- `index`: The index of the submitted referendum whose Decision Deposit is yet to be"] - #[doc = " posted."] - #[doc = ""] - #[doc = "Emits `DecisionDepositPlaced`."] - place_decision_deposit { index: ::core::primitive::u32 }, - #[codec(index = 2)] - #[doc = "Refund the Decision Deposit for a closed referendum back to the depositor."] - #[doc = ""] - #[doc = "- `origin`: must be `Signed` or `Root`."] - #[doc = "- `index`: The index of a closed referendum whose Decision Deposit has not yet been"] - #[doc = " refunded."] - #[doc = ""] - #[doc = "Emits `DecisionDepositRefunded`."] - refund_decision_deposit { index: ::core::primitive::u32 }, - #[codec(index = 3)] - #[doc = "Cancel an ongoing referendum."] - #[doc = ""] - #[doc = "- `origin`: must be the `CancelOrigin`."] - #[doc = "- `index`: The index of the referendum to be cancelled."] - #[doc = ""] - #[doc = "Emits `Cancelled`."] - cancel { index: ::core::primitive::u32 }, - #[codec(index = 4)] - #[doc = "Cancel an ongoing referendum and slash the deposits."] - #[doc = ""] - #[doc = "- `origin`: must be the `KillOrigin`."] - #[doc = "- `index`: The index of the referendum to be cancelled."] - #[doc = ""] - #[doc = "Emits `Killed` and `DepositSlashed`."] - kill { index: ::core::primitive::u32 }, - #[codec(index = 5)] - #[doc = "Advance a referendum onto its next logical state. Only used internally."] - #[doc = ""] - #[doc = "- `origin`: must be `Root`."] - #[doc = "- `index`: the referendum to be advanced."] - nudge_referendum { index: ::core::primitive::u32 }, - #[codec(index = 6)] - #[doc = "Advance a track onto its next logical state. Only used internally."] - #[doc = ""] - #[doc = "- `origin`: must be `Root`."] - #[doc = "- `track`: the track to be advanced."] - #[doc = ""] - #[doc = "Action item for when there is now one fewer referendum in the deciding phase and the"] - #[doc = "`DecidingCount` is not yet updated. This means that we should either:"] - #[doc = "- begin deciding another referendum (and leave `DecidingCount` alone); or"] - #[doc = "- decrement `DecidingCount`."] - one_fewer_deciding { track: ::core::primitive::u16 }, - #[codec(index = 7)] - #[doc = "Refund the Submission Deposit for a closed referendum back to the depositor."] - #[doc = ""] - #[doc = "- `origin`: must be `Signed` or `Root`."] - #[doc = "- `index`: The index of a closed referendum whose Submission Deposit has not yet been"] - #[doc = " refunded."] - #[doc = ""] - #[doc = "Emits `SubmissionDepositRefunded`."] - refund_submission_deposit { index: ::core::primitive::u32 }, - #[codec(index = 8)] - #[doc = "Set or clear metadata of a referendum."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `origin`: Must be `Signed` by a creator of a referendum or by anyone to clear a"] - #[doc = " metadata of a finished referendum."] - #[doc = "- `index`: The index of a referendum to set or clear metadata for."] - #[doc = "- `maybe_hash`: The hash of an on-chain stored preimage. `None` to clear a metadata."] - set_metadata { - index: ::core::primitive::u32, - maybe_hash: ::core::option::Option<::subxt::utils::H256>, - }, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -52959,69 +48934,21 @@ pub mod api { PreimageNotExist, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The `Error` enum of this pallet."] - pub enum Error2 { - #[codec(index = 0)] - #[doc = "Referendum is not ongoing."] - NotOngoing, - #[codec(index = 1)] - #[doc = "Referendum's decision deposit is already paid."] - HasDeposit, - #[codec(index = 2)] - #[doc = "The track identifier given was invalid."] - BadTrack, - #[codec(index = 3)] - #[doc = "There are already a full complement of referenda in progress for this track."] - Full, - #[codec(index = 4)] - #[doc = "The queue of the track is empty."] - QueueEmpty, - #[codec(index = 5)] - #[doc = "The referendum index provided is invalid in this context."] - BadReferendum, - #[codec(index = 6)] - #[doc = "There was nothing to do in the advancement."] - NothingToDo, - #[codec(index = 7)] - #[doc = "No track exists for the proposal origin."] - NoTrack, - #[codec(index = 8)] - #[doc = "Any deposit cannot be refunded until after the decision is over."] - Unfinished, - #[codec(index = 9)] - #[doc = "The deposit refunder is not the depositor."] - NoPermission, - #[codec(index = 10)] - #[doc = "The deposit cannot be refunded since none was made."] - NoDeposit, - #[codec(index = 11)] - #[doc = "The referendum status is invalid for this operation."] - BadStatus, - #[codec(index = 12)] - #[doc = "The preimage does not exist."] - PreimageNotExist, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "The `Event` enum of this pallet"] - pub enum Event { + pub enum Event1 { #[codec(index = 0)] #[doc = "A referendum has been submitted."] Submitted { @@ -53036,20 +48963,20 @@ pub mod api { #[doc = "The decision deposit has been placed."] DecisionDepositPlaced { index: ::core::primitive::u32, - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, #[codec(index = 2)] #[doc = "The decision deposit has been refunded."] DecisionDepositRefunded { index: ::core::primitive::u32, - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, #[codec(index = 3)] - #[doc = "A deposit has been slashed."] + #[doc = "A deposit has been slashaed."] DepositSlashed { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, #[codec(index = 4)] @@ -53116,32 +49043,36 @@ pub mod api { #[doc = "The submission deposit has been refunded."] SubmissionDepositRefunded { index: ::core::primitive::u32, - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, #[codec(index = 14)] #[doc = "Metadata for a referendum has been set."] MetadataSet { index: ::core::primitive::u32, - hash: ::subxt::utils::H256, + hash: ::subxt::ext::subxt_core::utils::H256, }, #[codec(index = 15)] #[doc = "Metadata for a referendum has been cleared."] MetadataCleared { index: ::core::primitive::u32, - hash: ::subxt::utils::H256, + hash: ::subxt::ext::subxt_core::utils::H256, }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event2 { #[codec(index = 0)] @@ -53158,20 +49089,20 @@ pub mod api { #[doc = "The decision deposit has been placed."] DecisionDepositPlaced { index: ::core::primitive::u32, - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, #[codec(index = 2)] #[doc = "The decision deposit has been refunded."] DecisionDepositRefunded { index: ::core::primitive::u32, - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, #[codec(index = 3)] - #[doc = "A deposit has been slashed."] + #[doc = "A deposit has been slashaed."] DepositSlashed { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, #[codec(index = 4)] @@ -53226,35 +49157,39 @@ pub mod api { #[doc = "The submission deposit has been refunded."] SubmissionDepositRefunded { index: ::core::primitive::u32, - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, #[codec(index = 14)] #[doc = "Metadata for a referendum has been set."] MetadataSet { index: ::core::primitive::u32, - hash: ::subxt::utils::H256, + hash: ::subxt::ext::subxt_core::utils::H256, }, #[codec(index = 15)] #[doc = "Metadata for a referendum has been cleared."] MetadataCleared { index: ::core::primitive::u32, - hash: ::subxt::utils::H256, + hash: ::subxt::ext::subxt_core::utils::H256, }, } } pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum Curve { #[codec(index = 0)] LinearDecreasing { @@ -53277,44 +49212,56 @@ pub mod api { }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct DecidingStatus<_0> { pub since: _0, pub confirming: ::core::option::Option<_0>, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Deposit<_0, _1> { pub who: _0, pub amount: _1, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum ReferendumInfo<_0, _1, _2, _3, _4, _5, _6, _7> { + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum ReferendumInfo1<_0, _1, _2, _3, _4, _5, _6, _7> { #[codec(index = 0)] Ongoing( runtime_types::pallet_referenda::types::ReferendumStatus< @@ -53372,15 +49319,90 @@ pub mod api { Killed(_2), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum ReferendumInfo2<_0, _1, _2, _3, _4, _5, _6, _7> { + #[codec(index = 0)] + Ongoing( + runtime_types::pallet_referenda::types::ReferendumStatus< + _0, + _1, + _2, + _3, + _4, + _5, + _6, + _7, + >, + ), + #[codec(index = 1)] + Approved( + _2, + ::core::option::Option< + runtime_types::pallet_referenda::types::Deposit<_6, _4>, + >, + ::core::option::Option< + runtime_types::pallet_referenda::types::Deposit<_6, _4>, + >, + ), + #[codec(index = 2)] + Rejected( + _2, + ::core::option::Option< + runtime_types::pallet_referenda::types::Deposit<_6, _4>, + >, + ::core::option::Option< + runtime_types::pallet_referenda::types::Deposit<_6, _4>, + >, + ), + #[codec(index = 3)] + Cancelled( + _2, + ::core::option::Option< + runtime_types::pallet_referenda::types::Deposit<_6, _4>, + >, + ::core::option::Option< + runtime_types::pallet_referenda::types::Deposit<_6, _4>, + >, + ), + #[codec(index = 4)] + TimedOut( + _2, + ::core::option::Option< + runtime_types::pallet_referenda::types::Deposit<_6, _4>, + >, + ::core::option::Option< + runtime_types::pallet_referenda::types::Deposit<_6, _4>, + >, + ), + #[codec(index = 5)] + Killed(_2), + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct ReferendumStatus<_0, _1, _2, _3, _4, _5, _6, _7> { pub track: _0, pub origin: _1, @@ -53399,17 +49421,21 @@ pub mod api { pub alarm: ::core::option::Option<(_2, _7)>, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct TrackInfo<_0, _1> { - pub name: ::std::string::String, + pub name: ::subxt::ext::subxt_core::alloc::string::String, pub max_deciding: ::core::primitive::u32, pub decision_deposit: _0, pub prepare_period: _1, @@ -53421,66 +49447,28 @@ pub mod api { } } } - pub mod pallet_root_testing { - use super::runtime_types; - pub mod pallet { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub enum Call { - #[codec(index = 0)] - #[doc = "A dispatch that will fill the block weight up to the given ratio."] - fill_block { - ratio: runtime_types::sp_arithmetic::per_things::Perbill, - }, - #[codec(index = 1)] - trigger_defensive, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The `Event` enum of this pallet"] - pub enum Event { - #[codec(index = 0)] - #[doc = "Event dispatched when the trigger_defensive extrinsic is called."] - DefensiveTestCall, - } - } - } pub mod pallet_scheduler { use super::runtime_types; pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Anonymously schedule a task."] + #[doc = "See [`Pallet::schedule`]."] schedule { when: ::core::primitive::u32, maybe_periodic: ::core::option::Option<( @@ -53488,16 +49476,18 @@ pub mod api { ::core::primitive::u32, )>, priority: ::core::primitive::u8, - call: ::std::boxed::Box, + call: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::rococo_runtime::RuntimeCall, + >, }, #[codec(index = 1)] - #[doc = "Cancel an anonymously scheduled task."] + #[doc = "See [`Pallet::cancel`]."] cancel { when: ::core::primitive::u32, index: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "Schedule a named task."] + #[doc = "See [`Pallet::schedule_named`]."] schedule_named { id: [::core::primitive::u8; 32usize], when: ::core::primitive::u32, @@ -53506,15 +49496,17 @@ pub mod api { ::core::primitive::u32, )>, priority: ::core::primitive::u8, - call: ::std::boxed::Box, + call: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::rococo_runtime::RuntimeCall, + >, }, #[codec(index = 3)] - #[doc = "Cancel a named scheduled task."] + #[doc = "See [`Pallet::cancel_named`]."] cancel_named { id: [::core::primitive::u8; 32usize], }, #[codec(index = 4)] - #[doc = "Anonymously schedule a task after a delay."] + #[doc = "See [`Pallet::schedule_after`]."] schedule_after { after: ::core::primitive::u32, maybe_periodic: ::core::option::Option<( @@ -53522,10 +49514,12 @@ pub mod api { ::core::primitive::u32, )>, priority: ::core::primitive::u8, - call: ::std::boxed::Box, + call: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::rococo_runtime::RuntimeCall, + >, }, #[codec(index = 5)] - #[doc = "Schedule a named task after a delay."] + #[doc = "See [`Pallet::schedule_named_after`]."] schedule_named_after { id: [::core::primitive::u8; 32usize], after: ::core::primitive::u32, @@ -53534,65 +49528,25 @@ pub mod api { ::core::primitive::u32, )>, priority: ::core::primitive::u8, - call: ::std::boxed::Box, - }, - #[codec(index = 6)] - #[doc = "Set a retry configuration for a task so that, in case its scheduled run fails, it will"] - #[doc = "be retried after `period` blocks, for a total amount of `retries` retries or until it"] - #[doc = "succeeds."] - #[doc = ""] - #[doc = "Tasks which need to be scheduled for a retry are still subject to weight metering and"] - #[doc = "agenda space, same as a regular task. If a periodic task fails, it will be scheduled"] - #[doc = "normally while the task is retrying."] - #[doc = ""] - #[doc = "Tasks scheduled as a result of a retry for a periodic task are unnamed, non-periodic"] - #[doc = "clones of the original task. Their retry configuration will be derived from the"] - #[doc = "original task's configuration, but will have a lower value for `remaining` than the"] - #[doc = "original `total_retries`."] - set_retry { - task: (::core::primitive::u32, ::core::primitive::u32), - retries: ::core::primitive::u8, - period: ::core::primitive::u32, - }, - #[codec(index = 7)] - #[doc = "Set a retry configuration for a named task so that, in case its scheduled run fails, it"] - #[doc = "will be retried after `period` blocks, for a total amount of `retries` retries or until"] - #[doc = "it succeeds."] - #[doc = ""] - #[doc = "Tasks which need to be scheduled for a retry are still subject to weight metering and"] - #[doc = "agenda space, same as a regular task. If a periodic task fails, it will be scheduled"] - #[doc = "normally while the task is retrying."] - #[doc = ""] - #[doc = "Tasks scheduled as a result of a retry for a periodic task are unnamed, non-periodic"] - #[doc = "clones of the original task. Their retry configuration will be derived from the"] - #[doc = "original task's configuration, but will have a lower value for `remaining` than the"] - #[doc = "original `total_retries`."] - set_retry_named { - id: [::core::primitive::u8; 32usize], - retries: ::core::primitive::u8, - period: ::core::primitive::u32, - }, - #[codec(index = 8)] - #[doc = "Removes the retry configuration of a task."] - cancel_retry { - task: (::core::primitive::u32, ::core::primitive::u32), - }, - #[codec(index = 9)] - #[doc = "Cancel the retry configuration of a named task."] - cancel_retry_named { - id: [::core::primitive::u8; 32usize], + call: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::rococo_runtime::RuntimeCall, + >, }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -53612,15 +49566,19 @@ pub mod api { Named, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Events type."] pub enum Event { #[codec(index = 0)] @@ -53644,39 +49602,18 @@ pub mod api { ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, }, #[codec(index = 3)] - #[doc = "Set a retry configuration for some task."] - RetrySet { - task: (::core::primitive::u32, ::core::primitive::u32), - id: ::core::option::Option<[::core::primitive::u8; 32usize]>, - period: ::core::primitive::u32, - retries: ::core::primitive::u8, - }, - #[codec(index = 4)] - #[doc = "Cancel a retry configuration for some task."] - RetryCancelled { - task: (::core::primitive::u32, ::core::primitive::u32), - id: ::core::option::Option<[::core::primitive::u8; 32usize]>, - }, - #[codec(index = 5)] #[doc = "The call for the provided hash was not found so the task has been aborted."] CallUnavailable { task: (::core::primitive::u32, ::core::primitive::u32), id: ::core::option::Option<[::core::primitive::u8; 32usize]>, }, - #[codec(index = 6)] + #[codec(index = 4)] #[doc = "The given task was unable to be renewed since the agenda is full at that block."] PeriodicFailed { task: (::core::primitive::u32, ::core::primitive::u32), id: ::core::option::Option<[::core::primitive::u8; 32usize]>, }, - #[codec(index = 7)] - #[doc = "The given task was unable to be retried since the agenda is full at that block or there"] - #[doc = "was not enough weight to reschedule it."] - RetryFailed { - task: (::core::primitive::u32, ::core::primitive::u32), - id: ::core::option::Option<[::core::primitive::u8; 32usize]>, - }, - #[codec(index = 8)] + #[codec(index = 5)] #[doc = "The given task can never be executed since it is overweight."] PermanentlyOverweight { task: (::core::primitive::u32, ::core::primitive::u32), @@ -53685,30 +49622,15 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct RetryConfig<_0> { - pub total_retries: ::core::primitive::u8, - pub remaining: ::core::primitive::u8, - pub period: _0, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct Scheduled<_0, _1, _2, _3, _4> { pub maybe_id: ::core::option::Option<_0>, pub priority: ::core::primitive::u8, @@ -53724,56 +49646,45 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Sets the session key(s) of the function caller to `keys`."] - #[doc = "Allows an account to set its session key prior to becoming a validator."] - #[doc = "This doesn't take effect until the next session."] - #[doc = ""] - #[doc = "The dispatch origin of this function must be signed."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`. Actual cost depends on the number of length of `T::Keys::key_ids()` which is"] - #[doc = " fixed."] + #[doc = "See [`Pallet::set_keys`]."] set_keys { keys: runtime_types::rococo_runtime::SessionKeys, - proof: ::std::vec::Vec<::core::primitive::u8>, + proof: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, #[codec(index = 1)] - #[doc = "Removes any session key(s) of the function caller."] - #[doc = ""] - #[doc = "This doesn't take effect until the next session."] - #[doc = ""] - #[doc = "The dispatch origin of this function must be Signed and the account must be either be"] - #[doc = "convertible to a validator ID using the chain's typical addressing system (this usually"] - #[doc = "means being a controller account) or directly convertible into a validator ID (which"] - #[doc = "usually means being a stash account)."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)` in number of key types. Actual cost depends on the number of length of"] - #[doc = " `T::Keys::key_ids()` which is fixed."] + #[doc = "See [`Pallet::purge_keys`]."] purge_keys, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Error for the session pallet."] pub enum Error { #[codec(index = 0)] @@ -53793,15 +49704,19 @@ pub mod api { NoAccount, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] @@ -53818,172 +49733,85 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "A user outside of the society can make a bid for entry."] - #[doc = ""] - #[doc = "Payment: The group's Candidate Deposit will be reserved for making a bid. It is returned"] - #[doc = "when the bid becomes a member, or if the bid calls `unbid`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `value`: A one time payment the bid would like to receive when joining the society."] + #[doc = "See [`Pallet::bid`]."] bid { value: ::core::primitive::u128 }, #[codec(index = 1)] - #[doc = "A bidder can remove their bid for entry into society."] - #[doc = "By doing so, they will have their candidate deposit returned or"] - #[doc = "they will unvouch their voucher."] - #[doc = ""] - #[doc = "Payment: The bid deposit is unreserved if the user made a bid."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and a bidder."] + #[doc = "See [`Pallet::unbid`]."] unbid, #[codec(index = 2)] - #[doc = "As a member, vouch for someone to join society by placing a bid on their behalf."] - #[doc = ""] - #[doc = "There is no deposit required to vouch for a new bid, but a member can only vouch for"] - #[doc = "one bid at a time. If the bid becomes a suspended candidate and ultimately rejected by"] - #[doc = "the suspension judgement origin, the member will be banned from vouching again."] - #[doc = ""] - #[doc = "As a vouching member, you can claim a tip if the candidate is accepted. This tip will"] - #[doc = "be paid as a portion of the reward the member will receive for joining the society."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and a member."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `who`: The user who you would like to vouch for."] - #[doc = "- `value`: The total reward to be paid between you and the candidate if they become"] - #[doc = "a member in the society."] - #[doc = "- `tip`: Your cut of the total `value` payout when the candidate is inducted into"] - #[doc = "the society. Tips larger than `value` will be saturated upon payout."] + #[doc = "See [`Pallet::vouch`]."] vouch { - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + who: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, value: ::core::primitive::u128, tip: ::core::primitive::u128, }, #[codec(index = 3)] - #[doc = "As a vouching member, unvouch a bid. This only works while vouched user is"] - #[doc = "only a bidder (and not a candidate)."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and a vouching member."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `pos`: Position in the `Bids` vector of the bid who should be unvouched."] + #[doc = "See [`Pallet::unvouch`]."] unvouch, #[codec(index = 4)] - #[doc = "As a member, vote on a candidate."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and a member."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `candidate`: The candidate that the member would like to bid on."] - #[doc = "- `approve`: A boolean which says if the candidate should be approved (`true`) or"] - #[doc = " rejected (`false`)."] + #[doc = "See [`Pallet::vote`]."] vote { - candidate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + candidate: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, approve: ::core::primitive::bool, }, #[codec(index = 5)] - #[doc = "As a member, vote on the defender."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and a member."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `approve`: A boolean which says if the candidate should be"] - #[doc = "approved (`true`) or rejected (`false`)."] + #[doc = "See [`Pallet::defender_vote`]."] defender_vote { approve: ::core::primitive::bool }, #[codec(index = 6)] - #[doc = "Transfer the first matured payout for the sender and remove it from the records."] - #[doc = ""] - #[doc = "NOTE: This extrinsic needs to be called multiple times to claim multiple matured"] - #[doc = "payouts."] - #[doc = ""] - #[doc = "Payment: The member will receive a payment equal to their first matured"] - #[doc = "payout to their free balance."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and a member with"] - #[doc = "payouts remaining."] + #[doc = "See [`Pallet::payout`]."] payout, #[codec(index = 7)] - #[doc = "Repay the payment previously given to the member with the signed origin, remove any"] - #[doc = "pending payments, and elevate them from rank 0 to rank 1."] + #[doc = "See [`Pallet::waive_repay`]."] waive_repay { amount: ::core::primitive::u128 }, #[codec(index = 8)] - #[doc = "Found the society."] - #[doc = ""] - #[doc = "This is done as a discrete action in order to allow for the"] - #[doc = "pallet to be included into a running chain and can only be done once."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be from the _FounderSetOrigin_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `founder` - The first member and head of the newly founded society."] - #[doc = "- `max_members` - The initial max number of members for the society."] - #[doc = "- `max_intake` - The maximum number of candidates per intake period."] - #[doc = "- `max_strikes`: The maximum number of strikes a member may get before they become"] - #[doc = " suspended and may only be reinstated by the founder."] - #[doc = "- `candidate_deposit`: The deposit required to make a bid for membership of the group."] - #[doc = "- `rules` - The rules of this society concerning membership."] - #[doc = ""] - #[doc = "Complexity: O(1)"] + #[doc = "See [`Pallet::found_society`]."] found_society { - founder: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + founder: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, max_members: ::core::primitive::u32, max_intake: ::core::primitive::u32, max_strikes: ::core::primitive::u32, candidate_deposit: ::core::primitive::u128, - rules: ::std::vec::Vec<::core::primitive::u8>, + rules: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, #[codec(index = 9)] - #[doc = "Dissolve the society and remove all members."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be Signed, and the signing account must be both"] - #[doc = "the `Founder` and the `Head`. This implies that it may only be done when there is one"] - #[doc = "member."] + #[doc = "See [`Pallet::dissolve`]."] dissolve, #[codec(index = 10)] - #[doc = "Allow suspension judgement origin to make judgement on a suspended member."] - #[doc = ""] - #[doc = "If a suspended member is forgiven, we simply add them back as a member, not affecting"] - #[doc = "any of the existing storage items for that member."] - #[doc = ""] - #[doc = "If a suspended member is rejected, remove all associated storage items, including"] - #[doc = "their payouts, and remove any vouched bids they currently have."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be Signed from the Founder."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `who` - The suspended member to be judged."] - #[doc = "- `forgive` - A boolean representing whether the suspension judgement origin forgives"] - #[doc = " (`true`) or rejects (`false`) a suspended member."] + #[doc = "See [`Pallet::judge_suspended_member`]."] judge_suspended_member { - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + who: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, forgive: ::core::primitive::bool, }, #[codec(index = 11)] - #[doc = "Change the maximum number of members in society and the maximum number of new candidates"] - #[doc = "in a single intake period."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be Signed by the Founder."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `max_members` - The maximum number of members for the society. This must be no less"] - #[doc = " than the current number of members."] - #[doc = "- `max_intake` - The maximum number of candidates per intake period."] - #[doc = "- `max_strikes`: The maximum number of strikes a member may get before they become"] - #[doc = " suspended and may only be reinstated by the founder."] - #[doc = "- `candidate_deposit`: The deposit required to make a bid for membership of the group."] + #[doc = "See [`Pallet::set_parameters`]."] set_parameters { max_members: ::core::primitive::u32, max_intake: ::core::primitive::u32, @@ -53991,70 +49819,56 @@ pub mod api { candidate_deposit: ::core::primitive::u128, }, #[codec(index = 12)] - #[doc = "Punish the skeptic with a strike if they did not vote on a candidate. Callable by the"] - #[doc = "candidate."] + #[doc = "See [`Pallet::punish_skeptic`]."] punish_skeptic, #[codec(index = 13)] - #[doc = "Transform an approved candidate into a member. Callable only by the"] - #[doc = "the candidate, and only after the period for voting has ended."] + #[doc = "See [`Pallet::claim_membership`]."] claim_membership, #[codec(index = 14)] - #[doc = "Transform an approved candidate into a member. Callable only by the Signed origin of the"] - #[doc = "Founder, only after the period for voting has ended and only when the candidate is not"] - #[doc = "clearly rejected."] + #[doc = "See [`Pallet::bestow_membership`]."] bestow_membership { - candidate: ::subxt::utils::AccountId32, + candidate: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 15)] - #[doc = "Remove the candidate's application from the society. Callable only by the Signed origin"] - #[doc = "of the Founder, only after the period for voting has ended, and only when they do not"] - #[doc = "have a clear approval."] - #[doc = ""] - #[doc = "Any bid deposit is lost and voucher is banned."] + #[doc = "See [`Pallet::kick_candidate`]."] kick_candidate { - candidate: ::subxt::utils::AccountId32, + candidate: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 16)] - #[doc = "Remove the candidate's application from the society. Callable only by the candidate."] - #[doc = ""] - #[doc = "Any bid deposit is lost and voucher is banned."] + #[doc = "See [`Pallet::resign_candidacy`]."] resign_candidacy, #[codec(index = 17)] - #[doc = "Remove a `candidate`'s failed application from the society. Callable by any"] - #[doc = "signed origin but only at the end of the subsequent round and only for"] - #[doc = "a candidate with more rejections than approvals."] - #[doc = ""] - #[doc = "The bid deposit is lost and the voucher is banned."] + #[doc = "See [`Pallet::drop_candidate`]."] drop_candidate { - candidate: ::subxt::utils::AccountId32, + candidate: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 18)] - #[doc = "Remove up to `max` stale votes for the given `candidate`."] - #[doc = ""] - #[doc = "May be called by any Signed origin, but only after the candidate's candidacy is ended."] + #[doc = "See [`Pallet::cleanup_candidacy`]."] cleanup_candidacy { - candidate: ::subxt::utils::AccountId32, + candidate: ::subxt::ext::subxt_core::utils::AccountId32, max: ::core::primitive::u32, }, #[codec(index = 19)] - #[doc = "Remove up to `max` stale votes for the defender in the given `challenge_round`."] - #[doc = ""] - #[doc = "May be called by any Signed origin, but only after the challenge round is ended."] + #[doc = "See [`Pallet::cleanup_challenge`]."] cleanup_challenge { challenge_round: ::core::primitive::u32, max: ::core::primitive::u32, }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -54155,87 +49969,97 @@ pub mod api { NoVotes, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "The society is founded by the given identity."] Founded { - founder: ::subxt::utils::AccountId32, + founder: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 1)] #[doc = "A membership bid just happened. The given account is the candidate's ID and their offer"] #[doc = "is the second."] Bid { - candidate_id: ::subxt::utils::AccountId32, + candidate_id: ::subxt::ext::subxt_core::utils::AccountId32, offer: ::core::primitive::u128, }, #[codec(index = 2)] #[doc = "A membership bid just happened by vouching. The given account is the candidate's ID and"] #[doc = "their offer is the second. The vouching party is the third."] Vouch { - candidate_id: ::subxt::utils::AccountId32, + candidate_id: ::subxt::ext::subxt_core::utils::AccountId32, offer: ::core::primitive::u128, - vouching: ::subxt::utils::AccountId32, + vouching: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 3)] #[doc = "A candidate was dropped (due to an excess of bids in the system)."] AutoUnbid { - candidate: ::subxt::utils::AccountId32, + candidate: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 4)] #[doc = "A candidate was dropped (by their request)."] Unbid { - candidate: ::subxt::utils::AccountId32, + candidate: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 5)] #[doc = "A candidate was dropped (by request of who vouched for them)."] Unvouch { - candidate: ::subxt::utils::AccountId32, + candidate: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 6)] #[doc = "A group of candidates have been inducted. The batch's primary is the first value, the"] #[doc = "batch in full is the second."] Inducted { - primary: ::subxt::utils::AccountId32, - candidates: ::std::vec::Vec<::subxt::utils::AccountId32>, + primary: ::subxt::ext::subxt_core::utils::AccountId32, + candidates: ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >, }, #[codec(index = 7)] #[doc = "A suspended member has been judged."] SuspendedMemberJudgement { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, judged: ::core::primitive::bool, }, #[codec(index = 8)] #[doc = "A candidate has been suspended"] CandidateSuspended { - candidate: ::subxt::utils::AccountId32, + candidate: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 9)] #[doc = "A member has been suspended"] - MemberSuspended { member: ::subxt::utils::AccountId32 }, + MemberSuspended { + member: ::subxt::ext::subxt_core::utils::AccountId32, + }, #[codec(index = 10)] #[doc = "A member has been challenged"] - Challenged { member: ::subxt::utils::AccountId32 }, + Challenged { + member: ::subxt::ext::subxt_core::utils::AccountId32, + }, #[codec(index = 11)] #[doc = "A vote has been placed"] Vote { - candidate: ::subxt::utils::AccountId32, - voter: ::subxt::utils::AccountId32, + candidate: ::subxt::ext::subxt_core::utils::AccountId32, + voter: ::subxt::ext::subxt_core::utils::AccountId32, vote: ::core::primitive::bool, }, #[codec(index = 12)] #[doc = "A vote has been placed for a defending member"] DefenderVote { - voter: ::subxt::utils::AccountId32, + voter: ::subxt::ext::subxt_core::utils::AccountId32, vote: ::core::primitive::bool, }, #[codec(index = 13)] @@ -54246,7 +50070,7 @@ pub mod api { #[codec(index = 14)] #[doc = "Society is unfounded."] Unfounded { - founder: ::subxt::utils::AccountId32, + founder: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 15)] #[doc = "Some funds were deposited into the society account."] @@ -54254,36 +50078,36 @@ pub mod api { #[codec(index = 16)] #[doc = "A \\[member\\] got elevated to \\[rank\\]."] Elevated { - member: ::subxt::utils::AccountId32, + member: ::subxt::ext::subxt_core::utils::AccountId32, rank: ::core::primitive::u32, }, } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct Bid<_0, _1> { pub who: _0, pub kind: runtime_types::pallet_society::BidKind<_0, _1>, pub value: _1, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum BidKind<_0, _1> { #[codec(index = 0)] Deposit(_1), @@ -54291,15 +50115,15 @@ pub mod api { Vouch(_0, _1), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct Candidacy<_0, _1> { pub round: ::core::primitive::u32, pub kind: runtime_types::pallet_society::BidKind<_0, _1>, @@ -54308,15 +50132,15 @@ pub mod api { pub skeptic_struck: ::core::primitive::bool, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct GroupParams<_0> { pub max_members: ::core::primitive::u32, pub max_intake: ::core::primitive::u32, @@ -54324,30 +50148,30 @@ pub mod api { pub candidate_deposit: _0, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct IntakeRecord<_0, _1> { pub who: _0, pub bid: _1, pub round: ::core::primitive::u32, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct MemberRecord { pub rank: ::core::primitive::u32, pub strikes: ::core::primitive::u32, @@ -54355,57 +50179,57 @@ pub mod api { pub index: ::core::primitive::u32, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct PayoutRecord<_0, _1> { pub paid: _0, pub payouts: _1, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct Tally { pub approvals: ::core::primitive::u32, pub rejections: ::core::primitive::u32, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct Vote { pub approve: ::core::primitive::bool, pub weight: ::core::primitive::u32, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum VouchingStatus { #[codec(index = 0)] Vouching, @@ -54418,48 +50242,30 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Control the automatic migration."] - #[doc = ""] - #[doc = "The dispatch origin of this call must be [`Config::ControlOrigin`]."] + #[doc = "See [`Pallet::control_auto_migration`]."] control_auto_migration { maybe_config: ::core::option::Option< runtime_types::pallet_state_trie_migration::pallet::MigrationLimits, >, }, #[codec(index = 1)] - #[doc = "Continue the migration for the given `limits`."] - #[doc = ""] - #[doc = "The dispatch origin of this call can be any signed account."] - #[doc = ""] - #[doc = "This transaction has NO MONETARY INCENTIVES. calling it will not reward anyone. Albeit,"] - #[doc = "Upon successful execution, the transaction fee is returned."] - #[doc = ""] - #[doc = "The (potentially over-estimated) of the byte length of all the data read must be"] - #[doc = "provided for up-front fee-payment and weighing. In essence, the caller is guaranteeing"] - #[doc = "that executing the current `MigrationTask` with the given `limits` will not exceed"] - #[doc = "`real_size_upper` bytes of read data."] - #[doc = ""] - #[doc = "The `witness_task` is merely a helper to prevent the caller from being slashed or"] - #[doc = "generally trigger a migration that they do not intend. This parameter is just a message"] - #[doc = "from caller, saying that they believed `witness_task` was the last state of the"] - #[doc = "migration, and they only wish for their transaction to do anything, if this assumption"] - #[doc = "holds. In case `witness_task` does not match, the transaction fails."] - #[doc = ""] - #[doc = "Based on the documentation of [`MigrationTask::migrate_until_exhaustion`], the"] - #[doc = "recommended way of doing this is to pass a `limit` that only bounds `count`, as the"] - #[doc = "`size` limit can always be overwritten."] + #[doc = "See [`Pallet::continue_migrate`]."] continue_migrate { limits: runtime_types::pallet_state_trie_migration::pallet::MigrationLimits, real_size_upper: ::core::primitive::u32, @@ -54467,41 +50273,29 @@ pub mod api { runtime_types::pallet_state_trie_migration::pallet::MigrationTask, }, #[codec(index = 2)] - #[doc = "Migrate the list of top keys by iterating each of them one by one."] - #[doc = ""] - #[doc = "This does not affect the global migration process tracker ([`MigrationProcess`]), and"] - #[doc = "should only be used in case any keys are leftover due to a bug."] + #[doc = "See [`Pallet::migrate_custom_top`]."] migrate_custom_top { - keys: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, + keys: ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + >, witness_size: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "Migrate the list of child keys by iterating each of them one by one."] - #[doc = ""] - #[doc = "All of the given child keys must be present under one `child_root`."] - #[doc = ""] - #[doc = "This does not affect the global migration process tracker ([`MigrationProcess`]), and"] - #[doc = "should only be used in case any keys are leftover due to a bug."] + #[doc = "See [`Pallet::migrate_custom_child`]."] migrate_custom_child { - root: ::std::vec::Vec<::core::primitive::u8>, - child_keys: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, + root: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + child_keys: ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + >, total_size: ::core::primitive::u32, }, #[codec(index = 4)] - #[doc = "Set the maximum limit of the signed migration."] + #[doc = "See [`Pallet::set_signed_max_limits`]."] set_signed_max_limits { limits: runtime_types::pallet_state_trie_migration::pallet::MigrationLimits, }, #[codec(index = 5)] - #[doc = "Forcefully set the progress the running migration."] - #[doc = ""] - #[doc = "This is only useful in one case: the next key to migrate is too big to be migrated with"] - #[doc = "a signed account, in a parachain context, and we simply want to skip it. A reasonable"] - #[doc = "example of this would be `:code:`, which is both very expensive to migrate, and commonly"] - #[doc = "used, so probably it is already migrated."] - #[doc = ""] - #[doc = "In case you mess things up, you can also, in principle, use this to reset the migration"] - #[doc = "process."] + #[doc = "See [`Pallet::force_set_progress`]."] force_set_progress { progress_top: runtime_types::pallet_state_trie_migration::pallet::Progress, progress_child: @@ -54509,15 +50303,19 @@ pub mod api { }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -54546,15 +50344,19 @@ pub mod api { BadChildRoot, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Inner events of this pallet."] pub enum Event { #[codec(index = 0)] @@ -54569,7 +50371,7 @@ pub mod api { #[codec(index = 1)] #[doc = "Some account got slashed by the given amount."] Slashed { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, #[codec(index = 2)] @@ -54582,29 +50384,19 @@ pub mod api { }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum HoldReason { - #[codec(index = 0)] - SlashForMigrate, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum MigrationCompute { #[codec(index = 0)] Signed, @@ -54612,29 +50404,37 @@ pub mod api { Auto, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct MigrationLimits { pub size: ::core::primitive::u32, pub item: ::core::primitive::u32, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct MigrationTask { pub progress_top: runtime_types::pallet_state_trie_migration::pallet::Progress, pub progress_child: @@ -54644,21 +50444,25 @@ pub mod api { pub child_items: ::core::primitive::u32, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum Progress { #[codec(index = 0)] ToStart, #[codec(index = 1)] LastKey( - runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::bounded_collections::bounded_vec::BoundedVec5< ::core::primitive::u8, >, ), @@ -54672,79 +50476,90 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Authenticates the sudo key and dispatches a function call with `Root` origin."] + #[doc = "See [`Pallet::sudo`]."] sudo { - call: ::std::boxed::Box, + call: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::rococo_runtime::RuntimeCall, + >, }, #[codec(index = 1)] - #[doc = "Authenticates the sudo key and dispatches a function call with `Root` origin."] - #[doc = "This function does not check the weight of the call, and instead allows the"] - #[doc = "Sudo user to specify the weight of the call."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = "See [`Pallet::sudo_unchecked_weight`]."] sudo_unchecked_weight { - call: ::std::boxed::Box, + call: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::rococo_runtime::RuntimeCall, + >, weight: runtime_types::sp_weights::weight_v2::Weight, }, #[codec(index = 2)] - #[doc = "Authenticates the current sudo key and sets the given AccountId (`new`) as the new sudo"] - #[doc = "key."] + #[doc = "See [`Pallet::set_key`]."] set_key { - new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + new: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, }, #[codec(index = 3)] - #[doc = "Authenticates the sudo key and dispatches a function call with `Signed` origin from"] - #[doc = "a given account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = "See [`Pallet::sudo_as`]."] sudo_as { - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - call: ::std::boxed::Box, + who: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, + call: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::rococo_runtime::RuntimeCall, + >, }, - #[codec(index = 4)] - #[doc = "Permanently removes the sudo key."] - #[doc = ""] - #[doc = "**This cannot be un-done.**"] - remove_key, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Error for the Sudo pallet."] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Error for the Sudo pallet"] pub enum Error { #[codec(index = 0)] - #[doc = "Sender must be the Sudo account."] + #[doc = "Sender must be the Sudo account"] RequireSudo, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] @@ -54756,13 +50571,10 @@ pub mod api { #[codec(index = 1)] #[doc = "The sudo key has been updated."] KeyChanged { - old: ::core::option::Option<::subxt::utils::AccountId32>, - new: ::subxt::utils::AccountId32, + old_sudoer: + ::core::option::Option<::subxt::ext::subxt_core::utils::AccountId32>, }, #[codec(index = 2)] - #[doc = "The key was permanently removed."] - KeyRemoved, - #[codec(index = 3)] #[doc = "A [sudo_as](Pallet::sudo_as) call just took place."] SudoAsDone { sudo_result: @@ -54776,37 +50588,23 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Set the current time."] - #[doc = ""] - #[doc = "This call should be invoked exactly once per block. It will panic at the finalization"] - #[doc = "phase, if this call hasn't been invoked by that time."] - #[doc = ""] - #[doc = "The timestamp should be greater than the previous one by the amount specified by"] - #[doc = "[`Config::MinimumPeriod`]."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _None_."] - #[doc = ""] - #[doc = "This dispatch class is _Mandatory_ to ensure it gets executed in the block. Be aware"] - #[doc = "that changing the complexity of this call could result exhausting the resources in a"] - #[doc = "block to execute any other calls."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)` (Note that implementations of `OnTimestampSet` must also be `O(1)`)"] - #[doc = "- 1 storage read and 1 storage mutation (codec `O(1)` because of `DidUpdate::take` in"] - #[doc = " `on_finalize`)"] - #[doc = "- 1 event handler `on_timestamp_set`. Must be `O(1)`."] + #[doc = "See [`Pallet::set`]."] set { #[codec(compact)] now: ::core::primitive::u64, @@ -54819,22 +50617,26 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "A transaction fee `actual_fee`, of which `tip` was added to the minimum inclusion fee,"] #[doc = "has been paid by `who`."] TransactionFeePaid { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, actual_fee: ::core::primitive::u128, tip: ::core::primitive::u128, }, @@ -54843,15 +50645,19 @@ pub mod api { pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct FeeDetails<_0> { pub inclusion_fee: ::core::option::Option< runtime_types::pallet_transaction_payment::types::InclusionFee<_0>, @@ -54859,30 +50665,38 @@ pub mod api { pub tip: _0, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct InclusionFee<_0> { pub base_fee: _0, pub len_fee: _0, pub adjusted_weight_fee: _0, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct RuntimeDispatchInfo<_0, _1> { pub weight: _1, pub class: runtime_types::frame_support::dispatch::DispatchClass, @@ -54890,26 +50704,26 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct ChargeTransactionPayment(#[codec(compact)] pub ::core::primitive::u128); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum Releases { #[codec(index = 0)] V1Ancient, @@ -54922,237 +50736,96 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Put forward a suggestion for spending."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be signed."] - #[doc = ""] - #[doc = "## Details"] - #[doc = "A deposit proportional to the value is reserved and slashed if the proposal is rejected."] - #[doc = "It is returned once the proposal is awarded."] - #[doc = ""] - #[doc = "### Complexity"] - #[doc = "- O(1)"] - #[doc = ""] - #[doc = "## Events"] - #[doc = ""] - #[doc = "Emits [`Event::Proposed`] if successful."] + #[doc = "See [`Pallet::propose_spend`]."] propose_spend { #[codec(compact)] value: ::core::primitive::u128, - beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + beneficiary: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, }, #[codec(index = 1)] - #[doc = "Reject a proposed spend."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be [`Config::RejectOrigin`]."] - #[doc = ""] - #[doc = "## Details"] - #[doc = "The original deposit will be slashed."] - #[doc = ""] - #[doc = "### Complexity"] - #[doc = "- O(1)"] - #[doc = ""] - #[doc = "## Events"] - #[doc = ""] - #[doc = "Emits [`Event::Rejected`] if successful."] + #[doc = "See [`Pallet::reject_proposal`]."] reject_proposal { #[codec(compact)] proposal_id: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "Approve a proposal."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be [`Config::ApproveOrigin`]."] - #[doc = ""] - #[doc = "## Details"] - #[doc = ""] - #[doc = "At a later time, the proposal will be allocated to the beneficiary and the original"] - #[doc = "deposit will be returned."] - #[doc = ""] - #[doc = "### Complexity"] - #[doc = " - O(1)."] - #[doc = ""] - #[doc = "## Events"] - #[doc = ""] - #[doc = "No events are emitted from this dispatch."] + #[doc = "See [`Pallet::approve_proposal`]."] approve_proposal { #[codec(compact)] proposal_id: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "Propose and approve a spend of treasury funds."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be [`Config::SpendOrigin`] with the `Success` value being at least `amount`."] - #[doc = ""] - #[doc = "### Details"] - #[doc = "NOTE: For record-keeping purposes, the proposer is deemed to be equivalent to the"] - #[doc = "beneficiary."] - #[doc = ""] - #[doc = "### Parameters"] - #[doc = "- `amount`: The amount to be transferred from the treasury to the `beneficiary`."] - #[doc = "- `beneficiary`: The destination account for the transfer."] - #[doc = ""] - #[doc = "## Events"] - #[doc = ""] - #[doc = "Emits [`Event::SpendApproved`] if successful."] + #[doc = "See [`Pallet::spend_local`]."] spend_local { #[codec(compact)] amount: ::core::primitive::u128, - beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + beneficiary: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, }, #[codec(index = 4)] - #[doc = "Force a previously approved proposal to be removed from the approval queue."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be [`Config::RejectOrigin`]."] - #[doc = ""] - #[doc = "## Details"] - #[doc = ""] - #[doc = "The original deposit will no longer be returned."] - #[doc = ""] - #[doc = "### Parameters"] - #[doc = "- `proposal_id`: The index of a proposal"] - #[doc = ""] - #[doc = "### Complexity"] - #[doc = "- O(A) where `A` is the number of approvals"] - #[doc = ""] - #[doc = "### Errors"] - #[doc = "- [`Error::ProposalNotApproved`]: The `proposal_id` supplied was not found in the"] - #[doc = " approval queue, i.e., the proposal has not been approved. This could also mean the"] - #[doc = " proposal does not exist altogether, thus there is no way it would have been approved"] - #[doc = " in the first place."] + #[doc = "See [`Pallet::remove_approval`]."] remove_approval { #[codec(compact)] proposal_id: ::core::primitive::u32, }, #[codec(index = 5)] - #[doc = "Propose and approve a spend of treasury funds."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be [`Config::SpendOrigin`] with the `Success` value being at least"] - #[doc = "`amount` of `asset_kind` in the native asset. The amount of `asset_kind` is converted"] - #[doc = "for assertion using the [`Config::BalanceConverter`]."] - #[doc = ""] - #[doc = "## Details"] - #[doc = ""] - #[doc = "Create an approved spend for transferring a specific `amount` of `asset_kind` to a"] - #[doc = "designated beneficiary. The spend must be claimed using the `payout` dispatchable within"] - #[doc = "the [`Config::PayoutPeriod`]."] - #[doc = ""] - #[doc = "### Parameters"] - #[doc = "- `asset_kind`: An indicator of the specific asset class to be spent."] - #[doc = "- `amount`: The amount to be transferred from the treasury to the `beneficiary`."] - #[doc = "- `beneficiary`: The beneficiary of the spend."] - #[doc = "- `valid_from`: The block number from which the spend can be claimed. It can refer to"] - #[doc = " the past if the resulting spend has not yet expired according to the"] - #[doc = " [`Config::PayoutPeriod`]. If `None`, the spend can be claimed immediately after"] - #[doc = " approval."] - #[doc = ""] - #[doc = "## Events"] - #[doc = ""] - #[doc = "Emits [`Event::AssetSpendApproved`] if successful."] + #[doc = "See [`Pallet::spend`]."] spend { - asset_kind: ::std::boxed::Box< + asset_kind: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, >, #[codec(compact)] amount: ::core::primitive::u128, - beneficiary: ::std::boxed::Box, + beneficiary: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::xcm::VersionedMultiLocation, + >, valid_from: ::core::option::Option<::core::primitive::u32>, }, #[codec(index = 6)] - #[doc = "Claim a spend."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be signed."] - #[doc = ""] - #[doc = "## Details"] - #[doc = ""] - #[doc = "Spends must be claimed within some temporal bounds. A spend may be claimed within one"] - #[doc = "[`Config::PayoutPeriod`] from the `valid_from` block."] - #[doc = "In case of a payout failure, the spend status must be updated with the `check_status`"] - #[doc = "dispatchable before retrying with the current function."] - #[doc = ""] - #[doc = "### Parameters"] - #[doc = "- `index`: The spend index."] - #[doc = ""] - #[doc = "## Events"] - #[doc = ""] - #[doc = "Emits [`Event::Paid`] if successful."] + #[doc = "See [`Pallet::payout`]."] payout { index: ::core::primitive::u32 }, #[codec(index = 7)] - #[doc = "Check the status of the spend and remove it from the storage if processed."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be signed."] - #[doc = ""] - #[doc = "## Details"] - #[doc = ""] - #[doc = "The status check is a prerequisite for retrying a failed payout."] - #[doc = "If a spend has either succeeded or expired, it is removed from the storage by this"] - #[doc = "function. In such instances, transaction fees are refunded."] - #[doc = ""] - #[doc = "### Parameters"] - #[doc = "- `index`: The spend index."] - #[doc = ""] - #[doc = "## Events"] - #[doc = ""] - #[doc = "Emits [`Event::PaymentFailed`] if the spend payout has failed."] - #[doc = "Emits [`Event::SpendProcessed`] if the spend payout has succeed."] + #[doc = "See [`Pallet::check_status`]."] check_status { index: ::core::primitive::u32 }, #[codec(index = 8)] - #[doc = "Void previously approved spend."] - #[doc = ""] - #[doc = "## Dispatch Origin"] - #[doc = ""] - #[doc = "Must be [`Config::RejectOrigin`]."] - #[doc = ""] - #[doc = "## Details"] - #[doc = ""] - #[doc = "A spend void is only possible if the payout has not been attempted yet."] - #[doc = ""] - #[doc = "### Parameters"] - #[doc = "- `index`: The spend index."] - #[doc = ""] - #[doc = "## Events"] - #[doc = ""] - #[doc = "Emits [`Event::AssetSpendVoided`] if successful."] + #[doc = "See [`Pallet::void_spend`]."] void_spend { index: ::core::primitive::u32 }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Error for the treasury pallet."] pub enum Error { #[codec(index = 0)] @@ -55194,15 +50867,19 @@ pub mod api { Inconclusive, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] @@ -55220,7 +50897,7 @@ pub mod api { Awarded { proposal_index: ::core::primitive::u32, award: ::core::primitive::u128, - account: ::subxt::utils::AccountId32, + account: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 3)] #[doc = "A proposal was rejected; funds were slashed."] @@ -55246,7 +50923,7 @@ pub mod api { SpendApproved { proposal_index: ::core::primitive::u32, amount: ::core::primitive::u128, - beneficiary: ::subxt::utils::AccountId32, + beneficiary: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 8)] #[doc = "The inactive funds of the pallet have been updated."] @@ -55261,7 +50938,7 @@ pub mod api { asset_kind: runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, amount: ::core::primitive::u128, - beneficiary: runtime_types::xcm::VersionedLocation, + beneficiary: runtime_types::xcm::VersionedMultiLocation, valid_from: ::core::primitive::u32, expire_at: ::core::primitive::u32, }, @@ -55287,15 +50964,15 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum PaymentState<_0> { #[codec(index = 0)] Pending, @@ -55305,15 +50982,15 @@ pub mod api { Failed, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct Proposal<_0, _1> { pub proposer: _0, pub value: _1, @@ -55321,15 +50998,15 @@ pub mod api { pub bond: _1, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct SpendStatus<_0, _1, _2, _3, _4> { pub asset_kind: _0, pub amount: _1, @@ -55344,124 +51021,83 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Send a batch of dispatch calls."] - #[doc = ""] - #[doc = "May be called from any origin except `None`."] - #[doc = ""] - #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] - #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] - #[doc = ""] - #[doc = "If origin is root then the calls are dispatched without checking origin filter. (This"] - #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(C) where C is the number of calls to be batched."] - #[doc = ""] - #[doc = "This will return `Ok` in all circumstances. To determine the success of the batch, an"] - #[doc = "event is deposited. If a call failed and the batch was interrupted, then the"] - #[doc = "`BatchInterrupted` event is deposited, along with the number of successful calls made"] - #[doc = "and the error of the failed call. If all were successful, then the `BatchCompleted`"] - #[doc = "event is deposited."] + #[doc = "See [`Pallet::batch`]."] batch { - calls: ::std::vec::Vec, + calls: ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::rococo_runtime::RuntimeCall, + >, }, #[codec(index = 1)] - #[doc = "Send a call through an indexed pseudonym of the sender."] - #[doc = ""] - #[doc = "Filter from origin are passed along. The call will be dispatched with an origin which"] - #[doc = "use the same filter as the origin of this call."] - #[doc = ""] - #[doc = "NOTE: If you need to ensure that any account-based filtering is not honored (i.e."] - #[doc = "because you expect `proxy` to have been used prior in the call stack and you do not want"] - #[doc = "the call restrictions to apply to any sub-accounts), then use `as_multi_threshold_1`"] - #[doc = "in the Multisig pallet instead."] - #[doc = ""] - #[doc = "NOTE: Prior to version *12, this was called `as_limited_sub`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = "See [`Pallet::as_derivative`]."] as_derivative { index: ::core::primitive::u16, - call: ::std::boxed::Box, + call: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::rococo_runtime::RuntimeCall, + >, }, #[codec(index = 2)] - #[doc = "Send a batch of dispatch calls and atomically execute them."] - #[doc = "The whole transaction will rollback and fail if any of the calls failed."] - #[doc = ""] - #[doc = "May be called from any origin except `None`."] - #[doc = ""] - #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] - #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] - #[doc = ""] - #[doc = "If origin is root then the calls are dispatched without checking origin filter. (This"] - #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(C) where C is the number of calls to be batched."] + #[doc = "See [`Pallet::batch_all`]."] batch_all { - calls: ::std::vec::Vec, + calls: ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::rococo_runtime::RuntimeCall, + >, }, #[codec(index = 3)] - #[doc = "Dispatches a function call with a provided origin."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(1)."] + #[doc = "See [`Pallet::dispatch_as`]."] dispatch_as { - as_origin: ::std::boxed::Box, - call: ::std::boxed::Box, + as_origin: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::rococo_runtime::OriginCaller, + >, + call: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::rococo_runtime::RuntimeCall, + >, }, #[codec(index = 4)] - #[doc = "Send a batch of dispatch calls."] - #[doc = "Unlike `batch`, it allows errors and won't interrupt."] - #[doc = ""] - #[doc = "May be called from any origin except `None`."] - #[doc = ""] - #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] - #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] - #[doc = ""] - #[doc = "If origin is root then the calls are dispatch without checking origin filter. (This"] - #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- O(C) where C is the number of calls to be batched."] + #[doc = "See [`Pallet::force_batch`]."] force_batch { - calls: ::std::vec::Vec, + calls: ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::rococo_runtime::RuntimeCall, + >, }, #[codec(index = 5)] - #[doc = "Dispatch a function call with a specified weight."] - #[doc = ""] - #[doc = "This function does not check the weight of the call, and instead allows the"] - #[doc = "Root origin to specify the weight of the call."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = "See [`Pallet::with_weight`]."] with_weight { - call: ::std::boxed::Box, + call: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::rococo_runtime::RuntimeCall, + >, weight: runtime_types::sp_weights::weight_v2::Weight, }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -55469,15 +51105,19 @@ pub mod api { TooManyCalls, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] @@ -55515,135 +51155,81 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Unlock any vested funds of the sender account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have funds still"] - #[doc = "locked under this pallet."] - #[doc = ""] - #[doc = "Emits either `VestingCompleted` or `VestingUpdated`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::vest`]."] vest, #[codec(index = 1)] - #[doc = "Unlock any vested funds of a `target` account."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `target`: The account whose vested funds should be unlocked. Must have funds still"] - #[doc = "locked under this pallet."] - #[doc = ""] - #[doc = "Emits either `VestingCompleted` or `VestingUpdated`."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::vest_other`]."] vest_other { - target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + target: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, }, #[codec(index = 2)] - #[doc = "Create a vested transfer."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `target`: The account receiving the vested funds."] - #[doc = "- `schedule`: The vesting schedule attached to the transfer."] - #[doc = ""] - #[doc = "Emits `VestingCreated`."] - #[doc = ""] - #[doc = "NOTE: This will unlock all schedules through the current block."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::vested_transfer`]."] vested_transfer { - target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + target: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, schedule: runtime_types::pallet_vesting::vesting_info::VestingInfo< ::core::primitive::u128, ::core::primitive::u32, >, }, #[codec(index = 3)] - #[doc = "Force a vested transfer."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] - #[doc = ""] - #[doc = "- `source`: The account whose funds should be transferred."] - #[doc = "- `target`: The account that should be transferred the vested funds."] - #[doc = "- `schedule`: The vesting schedule attached to the transfer."] - #[doc = ""] - #[doc = "Emits `VestingCreated`."] - #[doc = ""] - #[doc = "NOTE: This will unlock all schedules through the current block."] - #[doc = ""] - #[doc = "## Complexity"] - #[doc = "- `O(1)`."] + #[doc = "See [`Pallet::force_vested_transfer`]."] force_vested_transfer { - source: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + source: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, + target: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, schedule: runtime_types::pallet_vesting::vesting_info::VestingInfo< ::core::primitive::u128, ::core::primitive::u32, >, }, #[codec(index = 4)] - #[doc = "Merge two vesting schedules together, creating a new vesting schedule that unlocks over"] - #[doc = "the highest possible start and end blocks. If both schedules have already started the"] - #[doc = "current block will be used as the schedule start; with the caveat that if one schedule"] - #[doc = "is finished by the current block, the other will be treated as the new merged schedule,"] - #[doc = "unmodified."] - #[doc = ""] - #[doc = "NOTE: If `schedule1_index == schedule2_index` this is a no-op."] - #[doc = "NOTE: This will unlock all schedules through the current block prior to merging."] - #[doc = "NOTE: If both schedules have ended by the current block, no new schedule will be created"] - #[doc = "and both will be removed."] - #[doc = ""] - #[doc = "Merged schedule attributes:"] - #[doc = "- `starting_block`: `MAX(schedule1.starting_block, scheduled2.starting_block,"] - #[doc = " current_block)`."] - #[doc = "- `ending_block`: `MAX(schedule1.ending_block, schedule2.ending_block)`."] - #[doc = "- `locked`: `schedule1.locked_at(current_block) + schedule2.locked_at(current_block)`."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Signed_."] - #[doc = ""] - #[doc = "- `schedule1_index`: index of the first schedule to merge."] - #[doc = "- `schedule2_index`: index of the second schedule to merge."] + #[doc = "See [`Pallet::merge_schedules`]."] merge_schedules { schedule1_index: ::core::primitive::u32, schedule2_index: ::core::primitive::u32, }, - #[codec(index = 5)] - #[doc = "Force remove a vesting schedule"] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] - #[doc = ""] - #[doc = "- `target`: An account that has a vesting schedule"] - #[doc = "- `schedule_index`: The vesting schedule index that should be removed"] - force_remove_vesting_schedule { - target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - schedule_index: ::core::primitive::u32, - }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Error for the vesting pallet."] pub enum Error { #[codec(index = 0)] @@ -55664,43 +51250,51 @@ pub mod api { InvalidScheduleParams, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "The amount vested has been updated. This could indicate a change in funds available."] #[doc = "The balance given is the amount which is left unvested (and thus locked)."] VestingUpdated { - account: ::subxt::utils::AccountId32, + account: ::subxt::ext::subxt_core::utils::AccountId32, unvested: ::core::primitive::u128, }, #[codec(index = 1)] #[doc = "An \\[account\\] has become fully vested."] VestingCompleted { - account: ::subxt::utils::AccountId32, + account: ::subxt::ext::subxt_core::utils::AccountId32, }, } } pub mod vesting_info { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct VestingInfo<_0, _1> { pub locked: _0, pub per_block: _0, @@ -55708,15 +51302,15 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum Releases { #[codec(index = 0)] V0, @@ -55729,42 +51323,60 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - whitelist_call { call_hash: ::subxt::utils::H256 }, + #[doc = "See [`Pallet::whitelist_call`]."] + whitelist_call { + call_hash: ::subxt::ext::subxt_core::utils::H256, + }, #[codec(index = 1)] - remove_whitelisted_call { call_hash: ::subxt::utils::H256 }, + #[doc = "See [`Pallet::remove_whitelisted_call`]."] + remove_whitelisted_call { + call_hash: ::subxt::ext::subxt_core::utils::H256, + }, #[codec(index = 2)] + #[doc = "See [`Pallet::dispatch_whitelisted_call`]."] dispatch_whitelisted_call { - call_hash: ::subxt::utils::H256, + call_hash: ::subxt::ext::subxt_core::utils::H256, call_encoded_len: ::core::primitive::u32, call_weight_witness: runtime_types::sp_weights::weight_v2::Weight, }, #[codec(index = 3)] + #[doc = "See [`Pallet::dispatch_whitelisted_call_with_preimage`]."] dispatch_whitelisted_call_with_preimage { - call: ::std::boxed::Box, + call: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::rococo_runtime::RuntimeCall, + >, }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -55784,24 +51396,32 @@ pub mod api { CallAlreadyWhitelisted, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] - CallWhitelisted { call_hash: ::subxt::utils::H256 }, + CallWhitelisted { + call_hash: ::subxt::ext::subxt_core::utils::H256, + }, #[codec(index = 1)] - WhitelistedCallRemoved { call_hash: ::subxt::utils::H256 }, + WhitelistedCallRemoved { + call_hash: ::subxt::ext::subxt_core::utils::H256, + }, #[codec(index = 2)] WhitelistedCallDispatched { - call_hash: ::subxt::utils::H256, + call_hash: ::subxt::ext::subxt_core::utils::H256, result: ::core::result::Result< runtime_types::frame_support::dispatch::PostDispatchInfo, runtime_types::sp_runtime::DispatchErrorWithPostInfo< @@ -55817,269 +51437,142 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] + #[doc = "See [`Pallet::send`]."] send { - dest: ::std::boxed::Box, - message: ::std::boxed::Box, + dest: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::xcm::VersionedMultiLocation, + >, + message: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::xcm::VersionedXcm1, + >, }, #[codec(index = 1)] - #[doc = "Teleport some assets from the local chain to some destination chain."] - #[doc = ""] - #[doc = "**This function is deprecated: Use `limited_teleport_assets` instead.**"] - #[doc = ""] - #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] - #[doc = "index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,"] - #[doc = "with all fees taken as needed from the asset."] - #[doc = ""] - #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] - #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] - #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] - #[doc = " relay to parachain."] - #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] - #[doc = " generally be an `AccountId32` value."] - #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] - #[doc = " fee on the `dest` chain."] - #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] - #[doc = " fees."] + #[doc = "See [`Pallet::teleport_assets`]."] teleport_assets { - dest: ::std::boxed::Box, - beneficiary: ::std::boxed::Box, - assets: ::std::boxed::Box, + dest: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::xcm::VersionedMultiLocation, + >, + beneficiary: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::xcm::VersionedMultiLocation, + >, + assets: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::xcm::VersionedMultiAssets, + >, fee_asset_item: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] - #[doc = "destination or remote reserve."] - #[doc = ""] - #[doc = "`assets` must have same reserve location and may not be teleportable to `dest`."] - #[doc = " - `assets` have local reserve: transfer assets to sovereign account of destination"] - #[doc = " chain and forward a notification XCM to `dest` to mint and deposit reserve-based"] - #[doc = " assets to `beneficiary`."] - #[doc = " - `assets` have destination reserve: burn local assets and forward a notification to"] - #[doc = " `dest` chain to withdraw the reserve assets from this chain's sovereign account and"] - #[doc = " deposit them to `beneficiary`."] - #[doc = " - `assets` have remote reserve: burn local assets, forward XCM to reserve chain to move"] - #[doc = " reserves from this chain's SA to `dest` chain's SA, and forward another XCM to `dest`"] - #[doc = " to mint and deposit reserve-based assets to `beneficiary`."] - #[doc = ""] - #[doc = "**This function is deprecated: Use `limited_reserve_transfer_assets` instead.**"] - #[doc = ""] - #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] - #[doc = "index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,"] - #[doc = "with all fees taken as needed from the asset."] - #[doc = ""] - #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] - #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] - #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] - #[doc = " relay to parachain."] - #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] - #[doc = " generally be an `AccountId32` value."] - #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] - #[doc = " fee on the `dest` (and possibly reserve) chains."] - #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] - #[doc = " fees."] + #[doc = "See [`Pallet::reserve_transfer_assets`]."] reserve_transfer_assets { - dest: ::std::boxed::Box, - beneficiary: ::std::boxed::Box, - assets: ::std::boxed::Box, + dest: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::xcm::VersionedMultiLocation, + >, + beneficiary: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::xcm::VersionedMultiLocation, + >, + assets: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::xcm::VersionedMultiAssets, + >, fee_asset_item: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "Execute an XCM message from a local, signed, origin."] - #[doc = ""] - #[doc = "An event is deposited indicating whether `msg` could be executed completely or only"] - #[doc = "partially."] - #[doc = ""] - #[doc = "No more than `max_weight` will be used in its attempted execution. If this is less than"] - #[doc = "the maximum amount of weight that the message could take to be executed, then no"] - #[doc = "execution attempt will be made."] + #[doc = "See [`Pallet::execute`]."] execute { - message: ::std::boxed::Box, + message: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::xcm::VersionedXcm2, + >, max_weight: runtime_types::sp_weights::weight_v2::Weight, }, #[codec(index = 4)] - #[doc = "Extoll that a particular destination can be communicated with through a particular"] - #[doc = "version of XCM."] - #[doc = ""] - #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] - #[doc = "- `location`: The destination that is being described."] - #[doc = "- `xcm_version`: The latest version of XCM that `location` supports."] + #[doc = "See [`Pallet::force_xcm_version`]."] force_xcm_version { - location: - ::std::boxed::Box, + location: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::staging_xcm::v3::multilocation::MultiLocation, + >, version: ::core::primitive::u32, }, #[codec(index = 5)] - #[doc = "Set a safe XCM version (the version that XCM should be encoded with if the most recent"] - #[doc = "version a destination can accept is unknown)."] - #[doc = ""] - #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] - #[doc = "- `maybe_xcm_version`: The default XCM encoding version, or `None` to disable."] + #[doc = "See [`Pallet::force_default_xcm_version`]."] force_default_xcm_version { maybe_xcm_version: ::core::option::Option<::core::primitive::u32>, }, #[codec(index = 6)] - #[doc = "Ask a location to notify us regarding their XCM version and any changes to it."] - #[doc = ""] - #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] - #[doc = "- `location`: The location to which we should subscribe for XCM version notifications."] + #[doc = "See [`Pallet::force_subscribe_version_notify`]."] force_subscribe_version_notify { - location: ::std::boxed::Box, + location: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::xcm::VersionedMultiLocation, + >, }, #[codec(index = 7)] - #[doc = "Require that a particular destination should no longer notify us regarding any XCM"] - #[doc = "version changes."] - #[doc = ""] - #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] - #[doc = "- `location`: The location to which we are currently subscribed for XCM version"] - #[doc = " notifications which we no longer desire."] + #[doc = "See [`Pallet::force_unsubscribe_version_notify`]."] force_unsubscribe_version_notify { - location: ::std::boxed::Box, + location: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::xcm::VersionedMultiLocation, + >, }, #[codec(index = 8)] - #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] - #[doc = "destination or remote reserve."] - #[doc = ""] - #[doc = "`assets` must have same reserve location and may not be teleportable to `dest`."] - #[doc = " - `assets` have local reserve: transfer assets to sovereign account of destination"] - #[doc = " chain and forward a notification XCM to `dest` to mint and deposit reserve-based"] - #[doc = " assets to `beneficiary`."] - #[doc = " - `assets` have destination reserve: burn local assets and forward a notification to"] - #[doc = " `dest` chain to withdraw the reserve assets from this chain's sovereign account and"] - #[doc = " deposit them to `beneficiary`."] - #[doc = " - `assets` have remote reserve: burn local assets, forward XCM to reserve chain to move"] - #[doc = " reserves from this chain's SA to `dest` chain's SA, and forward another XCM to `dest`"] - #[doc = " to mint and deposit reserve-based assets to `beneficiary`."] - #[doc = ""] - #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] - #[doc = "index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight"] - #[doc = "is needed than `weight_limit`, then the operation will fail and the assets send may be"] - #[doc = "at risk."] - #[doc = ""] - #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] - #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] - #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] - #[doc = " relay to parachain."] - #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] - #[doc = " generally be an `AccountId32` value."] - #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] - #[doc = " fee on the `dest` (and possibly reserve) chains."] - #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] - #[doc = " fees."] - #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] + #[doc = "See [`Pallet::limited_reserve_transfer_assets`]."] limited_reserve_transfer_assets { - dest: ::std::boxed::Box, - beneficiary: ::std::boxed::Box, - assets: ::std::boxed::Box, + dest: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::xcm::VersionedMultiLocation, + >, + beneficiary: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::xcm::VersionedMultiLocation, + >, + assets: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::xcm::VersionedMultiAssets, + >, fee_asset_item: ::core::primitive::u32, weight_limit: runtime_types::xcm::v3::WeightLimit, }, #[codec(index = 9)] - #[doc = "Teleport some assets from the local chain to some destination chain."] - #[doc = ""] - #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] - #[doc = "index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight"] - #[doc = "is needed than `weight_limit`, then the operation will fail and the assets send may be"] - #[doc = "at risk."] - #[doc = ""] - #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] - #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] - #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] - #[doc = " relay to parachain."] - #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] - #[doc = " generally be an `AccountId32` value."] - #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] - #[doc = " fee on the `dest` chain."] - #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] - #[doc = " fees."] - #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] + #[doc = "See [`Pallet::limited_teleport_assets`]."] limited_teleport_assets { - dest: ::std::boxed::Box, - beneficiary: ::std::boxed::Box, - assets: ::std::boxed::Box, + dest: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::xcm::VersionedMultiLocation, + >, + beneficiary: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::xcm::VersionedMultiLocation, + >, + assets: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::xcm::VersionedMultiAssets, + >, fee_asset_item: ::core::primitive::u32, weight_limit: runtime_types::xcm::v3::WeightLimit, }, #[codec(index = 10)] - #[doc = "Set or unset the global suspension state of the XCM executor."] - #[doc = ""] - #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] - #[doc = "- `suspended`: `true` to suspend, `false` to resume."] + #[doc = "See [`Pallet::force_suspension`]."] force_suspension { suspended: ::core::primitive::bool }, - #[codec(index = 11)] - #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] - #[doc = "destination or remote reserve, or through teleports."] - #[doc = ""] - #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] - #[doc = "index `fee_asset_item` (hence referred to as `fees`), up to enough to pay for"] - #[doc = "`weight_limit` of weight. If more weight is needed than `weight_limit`, then the"] - #[doc = "operation will fail and the assets sent may be at risk."] - #[doc = ""] - #[doc = "`assets` (excluding `fees`) must have same reserve location or otherwise be teleportable"] - #[doc = "to `dest`, no limitations imposed on `fees`."] - #[doc = " - for local reserve: transfer assets to sovereign account of destination chain and"] - #[doc = " forward a notification XCM to `dest` to mint and deposit reserve-based assets to"] - #[doc = " `beneficiary`."] - #[doc = " - for destination reserve: burn local assets and forward a notification to `dest` chain"] - #[doc = " to withdraw the reserve assets from this chain's sovereign account and deposit them"] - #[doc = " to `beneficiary`."] - #[doc = " - for remote reserve: burn local assets, forward XCM to reserve chain to move reserves"] - #[doc = " from this chain's SA to `dest` chain's SA, and forward another XCM to `dest` to mint"] - #[doc = " and deposit reserve-based assets to `beneficiary`."] - #[doc = " - for teleports: burn local assets and forward XCM to `dest` chain to mint/teleport"] - #[doc = " assets and deposit them to `beneficiary`."] - #[doc = ""] - #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] - #[doc = "- `dest`: Destination context for the assets. Will typically be `X2(Parent,"] - #[doc = " Parachain(..))` to send from parachain to parachain, or `X1(Parachain(..))` to send"] - #[doc = " from relay to parachain."] - #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] - #[doc = " generally be an `AccountId32` value."] - #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] - #[doc = " fee on the `dest` (and possibly reserve) chains."] - #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] - #[doc = " fees."] - #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] - transfer_assets { - dest: ::std::boxed::Box, - beneficiary: ::std::boxed::Box, - assets: ::std::boxed::Box, - fee_asset_item: ::core::primitive::u32, - weight_limit: runtime_types::xcm::v3::WeightLimit, - }, - #[codec(index = 12)] - #[doc = "Claims assets trapped on this pallet because of leftover assets during XCM execution."] - #[doc = ""] - #[doc = "- `origin`: Anyone can call this extrinsic."] - #[doc = "- `assets`: The exact assets that were trapped. Use the version to specify what version"] - #[doc = "was the latest when they were trapped."] - #[doc = "- `beneficiary`: The location/account where the claimed assets will be deposited."] - claim_assets { - assets: ::std::boxed::Box, - beneficiary: ::std::boxed::Box, - }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -56097,7 +51590,7 @@ pub mod api { #[doc = "The message's weight could not be determined."] UnweighableMessage, #[codec(index = 4)] - #[doc = "The destination `Location` provided cannot be inverted."] + #[doc = "The destination `MultiLocation` provided cannot be inverted."] DestinationNotInvertible, #[codec(index = 5)] #[doc = "The assets to be sent are empty."] @@ -56125,8 +51618,8 @@ pub mod api { #[doc = "The location is invalid since it already has a subscription from us."] AlreadySubscribed, #[codec(index = 13)] - #[doc = "Could not check-out the assets for teleportation to the destination chain."] - CannotCheckOutTeleport, + #[doc = "Invalid asset for the operation."] + InvalidAsset, #[codec(index = 14)] #[doc = "The owner does not own (all) of the asset that they wish to do the operation on."] LowBalance, @@ -56145,45 +51638,34 @@ pub mod api { #[codec(index = 19)] #[doc = "The unlock operation cannot succeed because there are still consumers of the lock."] InUse, - #[codec(index = 20)] - #[doc = "Invalid non-concrete asset."] - InvalidAssetNotConcrete, - #[codec(index = 21)] - #[doc = "Invalid asset, reserve chain could not be determined for it."] - InvalidAssetUnknownReserve, - #[codec(index = 22)] - #[doc = "Invalid asset, do not support remote asset reserves with different fees reserves."] - InvalidAssetUnsupportedReserve, - #[codec(index = 23)] - #[doc = "Too many assets with different reserve locations have been attempted for transfer."] - TooManyReserves, - #[codec(index = 24)] - #[doc = "Local XCM execution incomplete."] - LocalExecutionIncomplete, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "Execution of an XCM message was attempted."] Attempted { - outcome: runtime_types::staging_xcm::v4::traits::Outcome, + outcome: runtime_types::xcm::v3::traits::Outcome, }, #[codec(index = 1)] #[doc = "A XCM message was sent."] Sent { - origin: runtime_types::staging_xcm::v4::location::Location, - destination: runtime_types::staging_xcm::v4::location::Location, - message: runtime_types::staging_xcm::v4::Xcm, + origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + message: runtime_types::xcm::v3::Xcm1, message_id: [::core::primitive::u8; 32usize], }, #[codec(index = 2)] @@ -56191,7 +51673,7 @@ pub mod api { #[doc = "matching query was never registered, it may be because it is a duplicate response, or"] #[doc = "because the query timed out."] UnexpectedResponse { - origin: runtime_types::staging_xcm::v4::location::Location, + origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, query_id: ::core::primitive::u64, }, #[codec(index = 3)] @@ -56199,7 +51681,7 @@ pub mod api { #[doc = "no registered notification call."] ResponseReady { query_id: ::core::primitive::u64, - response: runtime_types::staging_xcm::v4::Response, + response: runtime_types::xcm::v3::Response, }, #[codec(index = 4)] #[doc = "Query response has been received and query is removed. The registered notification has"] @@ -56242,10 +51724,10 @@ pub mod api { #[doc = "not match that expected. The query remains registered for a later, valid, response to"] #[doc = "be received and acted upon."] InvalidResponder { - origin: runtime_types::staging_xcm::v4::location::Location, + origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, query_id: ::core::primitive::u64, expected_location: ::core::option::Option< - runtime_types::staging_xcm::v4::location::Location, + runtime_types::staging_xcm::v3::multilocation::MultiLocation, >, }, #[codec(index = 9)] @@ -56257,7 +51739,7 @@ pub mod api { #[doc = "valid response will be dropped. Manual governance intervention is probably going to be"] #[doc = "needed."] InvalidResponderVersion { - origin: runtime_types::staging_xcm::v4::location::Location, + origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, query_id: ::core::primitive::u64, }, #[codec(index = 10)] @@ -56266,32 +51748,32 @@ pub mod api { #[codec(index = 11)] #[doc = "Some assets have been placed in an asset trap."] AssetsTrapped { - hash: ::subxt::utils::H256, - origin: runtime_types::staging_xcm::v4::location::Location, - assets: runtime_types::xcm::VersionedAssets, + hash: ::subxt::ext::subxt_core::utils::H256, + origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + assets: runtime_types::xcm::VersionedMultiAssets, }, #[codec(index = 12)] #[doc = "An XCM version change notification message has been attempted to be sent."] #[doc = ""] #[doc = "The cost of sending it (borne by the chain) is included."] VersionChangeNotified { - destination: runtime_types::staging_xcm::v4::location::Location, + destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, result: ::core::primitive::u32, - cost: runtime_types::staging_xcm::v4::asset::Assets, + cost: runtime_types::xcm::v3::multiasset::MultiAssets, message_id: [::core::primitive::u8; 32usize], }, #[codec(index = 13)] #[doc = "The supported version of a location has been changed. This might be through an"] #[doc = "automatic notification or a manual intervention."] SupportedVersionChanged { - location: runtime_types::staging_xcm::v4::location::Location, + location: runtime_types::staging_xcm::v3::multilocation::MultiLocation, version: ::core::primitive::u32, }, #[codec(index = 14)] #[doc = "A given location which had a version change subscription was dropped owing to an error"] #[doc = "sending the notification to it."] NotifyTargetSendFail { - location: runtime_types::staging_xcm::v4::location::Location, + location: runtime_types::staging_xcm::v3::multilocation::MultiLocation, query_id: ::core::primitive::u64, error: runtime_types::xcm::v3::traits::Error, }, @@ -56299,7 +51781,7 @@ pub mod api { #[doc = "A given location which had a version change subscription was dropped owing to an error"] #[doc = "migrating the location to our new XCM format."] NotifyTargetMigrationFail { - location: runtime_types::xcm::VersionedLocation, + location: runtime_types::xcm::VersionedMultiLocation, query_id: ::core::primitive::u64, }, #[codec(index = 16)] @@ -56311,7 +51793,7 @@ pub mod api { #[doc = "valid response will be dropped. Manual governance intervention is probably going to be"] #[doc = "needed."] InvalidQuerierVersion { - origin: runtime_types::staging_xcm::v4::location::Location, + origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, query_id: ::core::primitive::u64, }, #[codec(index = 17)] @@ -56319,92 +51801,98 @@ pub mod api { #[doc = "not match the expected. The query remains registered for a later, valid, response to"] #[doc = "be received and acted upon."] InvalidQuerier { - origin: runtime_types::staging_xcm::v4::location::Location, + origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, query_id: ::core::primitive::u64, - expected_querier: runtime_types::staging_xcm::v4::location::Location, + expected_querier: + runtime_types::staging_xcm::v3::multilocation::MultiLocation, maybe_actual_querier: ::core::option::Option< - runtime_types::staging_xcm::v4::location::Location, + runtime_types::staging_xcm::v3::multilocation::MultiLocation, >, }, #[codec(index = 18)] #[doc = "A remote has requested XCM version change notification from us and we have honored it."] #[doc = "A version information message is sent to them and its cost is included."] VersionNotifyStarted { - destination: runtime_types::staging_xcm::v4::location::Location, - cost: runtime_types::staging_xcm::v4::asset::Assets, + destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + cost: runtime_types::xcm::v3::multiasset::MultiAssets, message_id: [::core::primitive::u8; 32usize], }, #[codec(index = 19)] #[doc = "We have requested that a remote chain send us XCM version change notifications."] VersionNotifyRequested { - destination: runtime_types::staging_xcm::v4::location::Location, - cost: runtime_types::staging_xcm::v4::asset::Assets, + destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + cost: runtime_types::xcm::v3::multiasset::MultiAssets, message_id: [::core::primitive::u8; 32usize], }, #[codec(index = 20)] #[doc = "We have requested that a remote chain stops sending us XCM version change"] #[doc = "notifications."] VersionNotifyUnrequested { - destination: runtime_types::staging_xcm::v4::location::Location, - cost: runtime_types::staging_xcm::v4::asset::Assets, + destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + cost: runtime_types::xcm::v3::multiasset::MultiAssets, message_id: [::core::primitive::u8; 32usize], }, #[codec(index = 21)] #[doc = "Fees were paid from a location for an operation (often for using `SendXcm`)."] FeesPaid { - paying: runtime_types::staging_xcm::v4::location::Location, - fees: runtime_types::staging_xcm::v4::asset::Assets, + paying: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + fees: runtime_types::xcm::v3::multiasset::MultiAssets, }, #[codec(index = 22)] #[doc = "Some assets have been claimed from an asset trap"] AssetsClaimed { - hash: ::subxt::utils::H256, - origin: runtime_types::staging_xcm::v4::location::Location, - assets: runtime_types::xcm::VersionedAssets, + hash: ::subxt::ext::subxt_core::utils::H256, + origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + assets: runtime_types::xcm::VersionedMultiAssets, }, - #[codec(index = 23)] - #[doc = "A XCM version migration finished."] - VersionMigrationFinished { version: ::core::primitive::u32 }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum Origin { #[codec(index = 0)] - Xcm(runtime_types::staging_xcm::v4::location::Location), + Xcm(runtime_types::staging_xcm::v3::multilocation::MultiLocation), #[codec(index = 1)] - Response(runtime_types::staging_xcm::v4::location::Location), + Response(runtime_types::staging_xcm::v3::multilocation::MultiLocation), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum QueryStatus<_0> { #[codec(index = 0)] Pending { - responder: runtime_types::xcm::VersionedLocation, + responder: runtime_types::xcm::VersionedMultiLocation, maybe_match_querier: - ::core::option::Option, + ::core::option::Option, maybe_notify: ::core::option::Option<(::core::primitive::u8, ::core::primitive::u8)>, timeout: _0, }, #[codec(index = 1)] VersionNotifier { - origin: runtime_types::xcm::VersionedLocation, + origin: runtime_types::xcm::VersionedMultiLocation, is_active: ::core::primitive::bool, }, #[codec(index = 2)] @@ -56414,34 +51902,42 @@ pub mod api { }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct RemoteLockedFungibleRecord<_0> { pub amount: ::core::primitive::u128, - pub owner: runtime_types::xcm::VersionedLocation, - pub locker: runtime_types::xcm::VersionedLocation, - pub consumers: runtime_types::bounded_collections::bounded_vec::BoundedVec<( + pub owner: runtime_types::xcm::VersionedMultiLocation, + pub locker: runtime_types::xcm::VersionedMultiLocation, + pub consumers: runtime_types::bounded_collections::bounded_vec::BoundedVec27<( _0, ::core::primitive::u128, )>, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum VersionMigrationStage { #[codec(index = 0)] MigrateSupportedVersion, @@ -56449,7 +51945,9 @@ pub mod api { MigrateVersionNotifiers, #[codec(index = 2)] NotifyCurrentTargets( - ::core::option::Option<::std::vec::Vec<::core::primitive::u8>>, + ::core::option::Option< + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + >, ), #[codec(index = 3)] MigrateAndNotifyOldTargets, @@ -56459,57 +51957,57 @@ pub mod api { pub mod polkadot_core_primitives { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct CandidateHash(pub ::subxt::utils::H256); + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + pub struct CandidateHash(pub ::subxt::ext::subxt_core::utils::H256); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct InboundDownwardMessage<_0> { pub sent_at: _0, - pub msg: ::std::vec::Vec<::core::primitive::u8>, + pub msg: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct InboundHrmpMessage<_0> { pub sent_at: _0, - pub data: ::std::vec::Vec<::core::primitive::u8>, + pub data: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct OutboundHrmpMessage<_0> { pub recipient: _0, - pub data: ::std::vec::Vec<::core::primitive::u8>, + pub data: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, } } pub mod polkadot_parachain_primitives { @@ -56517,64 +52015,88 @@ pub mod api { pub mod primitives { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct HeadData(pub ::std::vec::Vec<::core::primitive::u8>); + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct HeadData( + pub ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + ); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct HrmpChannelId { pub sender: runtime_types::polkadot_parachain_primitives::primitives::Id, pub recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, } #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: CompactAs, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Id(pub ::core::primitive::u32); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ValidationCode(pub ::std::vec::Vec<::core::primitive::u8>); + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct ValidationCode( + pub ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + ); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ValidationCodeHash(pub ::subxt::utils::H256); + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct ValidationCodeHash(pub ::subxt::ext::subxt_core::utils::H256); } } pub mod polkadot_primitives { @@ -56584,54 +52106,70 @@ pub mod api { pub mod assignment_app { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Public(pub runtime_types::sp_core::sr25519::Public); } pub mod async_backing { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct AsyncBackingParams { pub max_candidate_depth: ::core::primitive::u32, pub allowed_ancestry_len: ::core::primitive::u32, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct BackingState < _0 , _1 > { pub constraints : runtime_types :: polkadot_primitives :: v6 :: async_backing :: Constraints < _1 > , pub pending_availability : :: std :: vec :: Vec < runtime_types :: polkadot_primitives :: v6 :: async_backing :: CandidatePendingAvailability < _0 , _1 > > , } + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BackingState < _0 , _1 > { pub constraints : runtime_types :: polkadot_primitives :: v6 :: async_backing :: Constraints < _1 > , pub pending_availability : :: subxt :: ext :: subxt_core :: alloc :: vec :: Vec < runtime_types :: polkadot_primitives :: v6 :: async_backing :: CandidatePendingAvailability < _0 , _1 > > , } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct CandidatePendingAvailability<_0, _1> { pub candidate_hash: runtime_types::polkadot_core_primitives::CandidateHash, pub descriptor: @@ -56642,39 +52180,51 @@ pub mod api { pub max_pov_size: ::core::primitive::u32, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Constraints < _0 > { pub min_relay_parent_number : _0 , pub max_pov_size : :: core :: primitive :: u32 , pub max_code_size : :: core :: primitive :: u32 , pub ump_remaining : :: core :: primitive :: u32 , pub ump_remaining_bytes : :: core :: primitive :: u32 , pub max_ump_num_per_candidate : :: core :: primitive :: u32 , pub dmp_remaining_messages : :: std :: vec :: Vec < _0 > , pub hrmp_inbound : runtime_types :: polkadot_primitives :: v6 :: async_backing :: InboundHrmpLimitations < _0 > , pub hrmp_channels_out : :: std :: vec :: Vec < (runtime_types :: polkadot_parachain_primitives :: primitives :: Id , runtime_types :: polkadot_primitives :: v6 :: async_backing :: OutboundHrmpChannelLimitations ,) > , pub max_hrmp_num_per_candidate : :: core :: primitive :: u32 , pub required_parent : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , pub validation_code_hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , pub upgrade_restriction : :: core :: option :: Option < runtime_types :: polkadot_primitives :: v6 :: UpgradeRestriction > , pub future_validation_code : :: core :: option :: Option < (_0 , runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash ,) > , } + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct Constraints < _0 > { pub min_relay_parent_number : _0 , pub max_pov_size : :: core :: primitive :: u32 , pub max_code_size : :: core :: primitive :: u32 , pub ump_remaining : :: core :: primitive :: u32 , pub ump_remaining_bytes : :: core :: primitive :: u32 , pub max_ump_num_per_candidate : :: core :: primitive :: u32 , pub dmp_remaining_messages : :: subxt :: ext :: subxt_core :: alloc :: vec :: Vec < _0 > , pub hrmp_inbound : runtime_types :: polkadot_primitives :: v6 :: async_backing :: InboundHrmpLimitations < _0 > , pub hrmp_channels_out : :: subxt :: ext :: subxt_core :: alloc :: vec :: Vec < (runtime_types :: polkadot_parachain_primitives :: primitives :: Id , runtime_types :: polkadot_primitives :: v6 :: async_backing :: OutboundHrmpChannelLimitations ,) > , pub max_hrmp_num_per_candidate : :: core :: primitive :: u32 , pub required_parent : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , pub validation_code_hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , pub upgrade_restriction : :: core :: option :: Option < runtime_types :: polkadot_primitives :: v6 :: UpgradeRestriction > , pub future_validation_code : :: core :: option :: Option < (_0 , runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash ,) > , } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct InboundHrmpLimitations<_0> { - pub valid_watermarks: ::std::vec::Vec<_0>, + pub valid_watermarks: ::subxt::ext::subxt_core::alloc::vec::Vec<_0>, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct OutboundHrmpChannelLimitations { pub bytes_remaining: ::core::primitive::u32, pub messages_remaining: ::core::primitive::u32, @@ -56683,40 +52233,52 @@ pub mod api { pub mod collator_app { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Public(pub runtime_types::sp_core::sr25519::Public); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Signature(pub runtime_types::sp_core::sr25519::Signature); } pub mod executor_params { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum ExecutorParam { #[codec(index = 1)] MaxMemoryPages(::core::primitive::u32), @@ -56728,29 +52290,33 @@ pub mod api { PrecheckingMaxMemory(::core::primitive::u64), #[codec(index = 5)] PvfPrepTimeout( - runtime_types::polkadot_primitives::v6::PvfPrepKind, + runtime_types::polkadot_primitives::v6::PvfPrepTimeoutKind, ::core::primitive::u64, ), #[codec(index = 6)] PvfExecTimeout( - runtime_types::polkadot_primitives::v6::PvfExecKind, + runtime_types::polkadot_primitives::v6::PvfExecTimeoutKind, ::core::primitive::u64, ), #[codec(index = 7)] WasmExtBulkMemory, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct ExecutorParams( - pub ::std::vec::Vec< + pub ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_primitives::v6::executor_params::ExecutorParam, >, ); @@ -56758,15 +52324,19 @@ pub mod api { pub mod signed { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct UncheckedSigned<_0, _1> { pub payload: _0, pub validator_index: runtime_types::polkadot_primitives::v6::ValidatorIndex, @@ -56779,15 +52349,19 @@ pub mod api { pub mod slashing { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct DisputeProof { pub time_slot: runtime_types::polkadot_primitives::v6::slashing::DisputesTimeSlot, @@ -56798,42 +52372,56 @@ pub mod api { runtime_types::polkadot_primitives::v6::validator_app::Public, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct DisputesTimeSlot { pub session_index: ::core::primitive::u32, pub candidate_hash: runtime_types::polkadot_core_primitives::CandidateHash, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct OpaqueKeyOwnershipProof(pub ::std::vec::Vec<::core::primitive::u8>); + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct OpaqueKeyOwnershipProof( + pub ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + ); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct PendingSlashes { - pub keys: ::subxt::utils::KeyedVec< + pub keys: ::subxt::ext::subxt_core::utils::KeyedVec< runtime_types::polkadot_primitives::v6::ValidatorIndex, runtime_types::polkadot_primitives::v6::validator_app::Public, >, @@ -56841,15 +52429,19 @@ pub mod api { runtime_types::polkadot_primitives::v6::slashing::SlashingOffenceKind, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum SlashingOffenceKind { #[codec(index = 0)] ForInvalid, @@ -56860,82 +52452,102 @@ pub mod api { pub mod validator_app { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Public(pub runtime_types::sp_core::sr25519::Public); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Signature(pub runtime_types::sp_core::sr25519::Signature); } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct AvailabilityBitfield( - pub ::subxt::utils::bits::DecodedBits< + pub ::subxt::ext::subxt_core::utils::bits::DecodedBits< ::core::primitive::u8, - ::subxt::utils::bits::Lsb0, + ::subxt::ext::subxt_core::utils::bits::Lsb0, >, ); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct BackedCandidate<_0> { pub candidate: runtime_types::polkadot_primitives::v6::CommittedCandidateReceipt<_0>, - pub validity_votes: ::std::vec::Vec< + pub validity_votes: ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_primitives::v6::ValidityAttestation, >, - pub validator_indices: ::subxt::utils::bits::DecodedBits< + pub validator_indices: ::subxt::ext::subxt_core::utils::bits::DecodedBits< ::core::primitive::u8, - ::subxt::utils::bits::Lsb0, + ::subxt::ext::subxt_core::utils::bits::Lsb0, >, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct CandidateCommitments<_0> { pub upward_messages: - runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::std::vec::Vec<::core::primitive::u8>, + runtime_types::bounded_collections::bounded_vec::BoundedVec2< + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, >, pub horizontal_messages: - runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::bounded_collections::bounded_vec::BoundedVec3< runtime_types::polkadot_core_primitives::OutboundHrmpMessage< runtime_types::polkadot_parachain_primitives::primitives::Id, >, @@ -56949,26 +52561,34 @@ pub mod api { pub hrmp_watermark: _0, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct CandidateDescriptor < _0 > { pub para_id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , pub relay_parent : _0 , pub collator : runtime_types :: polkadot_primitives :: v6 :: collator_app :: Public , pub persisted_validation_data_hash : :: subxt :: utils :: H256 , pub pov_hash : :: subxt :: utils :: H256 , pub erasure_root : :: subxt :: utils :: H256 , pub signature : runtime_types :: polkadot_primitives :: v6 :: collator_app :: Signature , pub para_head : :: subxt :: utils :: H256 , pub validation_code_hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , } + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct CandidateDescriptor < _0 > { pub para_id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , pub relay_parent : _0 , pub collator : runtime_types :: polkadot_primitives :: v6 :: collator_app :: Public , pub persisted_validation_data_hash : :: subxt :: ext :: subxt_core :: utils :: H256 , pub pov_hash : :: subxt :: ext :: subxt_core :: utils :: H256 , pub erasure_root : :: subxt :: ext :: subxt_core :: utils :: H256 , pub signature : runtime_types :: polkadot_primitives :: v6 :: collator_app :: Signature , pub para_head : :: subxt :: ext :: subxt_core :: utils :: H256 , pub validation_code_hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum CandidateEvent<_0> { #[codec(index = 0)] CandidateBacked( @@ -56992,29 +52612,37 @@ pub mod api { ), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct CandidateReceipt<_0> { pub descriptor: runtime_types::polkadot_primitives::v6::CandidateDescriptor<_0>, - pub commitments_hash: ::subxt::utils::H256, + pub commitments_hash: ::subxt::ext::subxt_core::utils::H256, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct CommittedCandidateReceipt<_0> { pub descriptor: runtime_types::polkadot_primitives::v6::CandidateDescriptor<_0>, pub commitments: runtime_types::polkadot_primitives::v6::CandidateCommitments< @@ -57022,27 +52650,35 @@ pub mod api { >, } #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: CompactAs, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct CoreIndex(pub ::core::primitive::u32); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum CoreState<_0, _1> { #[codec(index = 0)] Occupied(runtime_types::polkadot_primitives::v6::OccupiedCore<_0, _1>), @@ -57052,37 +52688,45 @@ pub mod api { Free, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct DisputeState<_0> { - pub validators_for: ::subxt::utils::bits::DecodedBits< + pub validators_for: ::subxt::ext::subxt_core::utils::bits::DecodedBits< ::core::primitive::u8, - ::subxt::utils::bits::Lsb0, + ::subxt::ext::subxt_core::utils::bits::Lsb0, >, - pub validators_against: ::subxt::utils::bits::DecodedBits< + pub validators_against: ::subxt::ext::subxt_core::utils::bits::DecodedBits< ::core::primitive::u8, - ::subxt::utils::bits::Lsb0, + ::subxt::ext::subxt_core::utils::bits::Lsb0, >, pub start: _0, pub concluded_at: ::core::option::Option<_0>, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum DisputeStatement { #[codec(index = 0)] Valid(runtime_types::polkadot_primitives::v6::ValidDisputeStatementKind), @@ -57090,116 +52734,162 @@ pub mod api { Invalid(runtime_types::polkadot_primitives::v6::InvalidDisputeStatementKind), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct DisputeStatementSet { pub candidate_hash: runtime_types::polkadot_core_primitives::CandidateHash, pub session: ::core::primitive::u32, - pub statements: ::std::vec::Vec<( + pub statements: ::subxt::ext::subxt_core::alloc::vec::Vec<( runtime_types::polkadot_primitives::v6::DisputeStatement, runtime_types::polkadot_primitives::v6::ValidatorIndex, runtime_types::polkadot_primitives::v6::validator_app::Signature, )>, } #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: CompactAs, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct GroupIndex(pub ::core::primitive::u32); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct GroupRotationInfo<_0> { pub session_start_block: _0, pub group_rotation_frequency: _0, pub now: _0, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct IndexedVec<_0, _1>( - pub ::std::vec::Vec<_1>, + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct IndexedVec1<_0, _1>( + pub ::subxt::ext::subxt_core::alloc::vec::Vec<_1>, #[codec(skip)] pub ::core::marker::PhantomData<_0>, ); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct IndexedVec2<_0, _1>( + pub ::subxt::ext::subxt_core::alloc::vec::Vec<_1>, + #[codec(skip)] pub ::core::marker::PhantomData<_0>, + ); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct InherentData<_0> { - pub bitfields: ::std::vec::Vec< + pub bitfields: ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_primitives::v6::signed::UncheckedSigned< runtime_types::polkadot_primitives::v6::AvailabilityBitfield, runtime_types::polkadot_primitives::v6::AvailabilityBitfield, >, >, - pub backed_candidates: ::std::vec::Vec< + pub backed_candidates: ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_primitives::v6::BackedCandidate< - ::subxt::utils::H256, + ::subxt::ext::subxt_core::utils::H256, >, >, - pub disputes: ::std::vec::Vec< + pub disputes: ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_primitives::v6::DisputeStatementSet, >, pub parent_header: _0, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum InvalidDisputeStatementKind { #[codec(index = 0)] Explicit, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct OccupiedCore<_0, _1> { pub next_up_on_available: ::core::option::Option< runtime_types::polkadot_primitives::v6::ScheduledCore, @@ -57209,9 +52899,9 @@ pub mod api { pub next_up_on_time_out: ::core::option::Option< runtime_types::polkadot_primitives::v6::ScheduledCore, >, - pub availability: ::subxt::utils::bits::DecodedBits< + pub availability: ::subxt::ext::subxt_core::utils::bits::DecodedBits< ::core::primitive::u8, - ::subxt::utils::bits::Lsb0, + ::subxt::ext::subxt_core::utils::bits::Lsb0, >, pub group_responsible: runtime_types::polkadot_primitives::v6::GroupIndex, pub candidate_hash: runtime_types::polkadot_core_primitives::CandidateHash, @@ -57219,15 +52909,19 @@ pub mod api { runtime_types::polkadot_primitives::v6::CandidateDescriptor<_0>, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum OccupiedCoreAssumption { #[codec(index = 0)] Included, @@ -57237,15 +52931,19 @@ pub mod api { Free, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct PersistedValidationData<_0, _1> { pub parent_head: runtime_types::polkadot_parachain_primitives::primitives::HeadData, @@ -57254,58 +52952,74 @@ pub mod api { pub max_pov_size: ::core::primitive::u32, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct PvfCheckStatement { pub accept : :: core :: primitive :: bool , pub subject : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , pub session_index : :: core :: primitive :: u32 , pub validator_index : runtime_types :: polkadot_primitives :: v6 :: ValidatorIndex , } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum PvfExecKind { + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum PvfExecTimeoutKind { #[codec(index = 0)] Backing, #[codec(index = 1)] Approval, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum PvfPrepKind { + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum PvfPrepTimeoutKind { #[codec(index = 0)] Precheck, #[codec(index = 1)] - Prepare, + Lenient, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct ScheduledCore { pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, pub collator: ::core::option::Option< @@ -57313,55 +53027,68 @@ pub mod api { >, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct ScrapedOnChainVotes<_0> { pub session: ::core::primitive::u32, - pub backing_validators_per_candidate: ::std::vec::Vec<( - runtime_types::polkadot_primitives::v6::CandidateReceipt<_0>, - ::std::vec::Vec<( - runtime_types::polkadot_primitives::v6::ValidatorIndex, - runtime_types::polkadot_primitives::v6::ValidityAttestation, + pub backing_validators_per_candidate: + ::subxt::ext::subxt_core::alloc::vec::Vec<( + runtime_types::polkadot_primitives::v6::CandidateReceipt<_0>, + ::subxt::ext::subxt_core::alloc::vec::Vec<( + runtime_types::polkadot_primitives::v6::ValidatorIndex, + runtime_types::polkadot_primitives::v6::ValidityAttestation, + )>, )>, - )>, - pub disputes: ::std::vec::Vec< + pub disputes: ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_primitives::v6::DisputeStatementSet, >, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct SessionInfo { - pub active_validator_indices: - ::std::vec::Vec, + pub active_validator_indices: ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::polkadot_primitives::v6::ValidatorIndex, + >, pub random_seed: [::core::primitive::u8; 32usize], pub dispute_period: ::core::primitive::u32, - pub validators: runtime_types::polkadot_primitives::v6::IndexedVec< + pub validators: runtime_types::polkadot_primitives::v6::IndexedVec1< runtime_types::polkadot_primitives::v6::ValidatorIndex, runtime_types::polkadot_primitives::v6::validator_app::Public, >, - pub discovery_keys: - ::std::vec::Vec, - pub assignment_keys: ::std::vec::Vec< + pub discovery_keys: ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::sp_authority_discovery::app::Public, + >, + pub assignment_keys: ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_primitives::v6::assignment_app::Public, >, - pub validator_groups: runtime_types::polkadot_primitives::v6::IndexedVec< + pub validator_groups: runtime_types::polkadot_primitives::v6::IndexedVec2< runtime_types::polkadot_primitives::v6::GroupIndex, - ::std::vec::Vec, + ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::polkadot_primitives::v6::ValidatorIndex, + >, >, pub n_cores: ::core::primitive::u32, pub zeroth_delay_tranche_width: ::core::primitive::u32, @@ -57371,15 +53098,19 @@ pub mod api { pub needed_approvals: ::core::primitive::u32, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum UpgradeGoAhead { #[codec(index = 0)] Abort, @@ -57387,65 +53118,77 @@ pub mod api { GoAhead, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum UpgradeRestriction { #[codec(index = 0)] Present, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum ValidDisputeStatementKind { #[codec(index = 0)] Explicit, #[codec(index = 1)] - BackingSeconded(::subxt::utils::H256), + BackingSeconded(::subxt::ext::subxt_core::utils::H256), #[codec(index = 2)] - BackingValid(::subxt::utils::H256), + BackingValid(::subxt::ext::subxt_core::utils::H256), #[codec(index = 3)] ApprovalChecking, - #[codec(index = 4)] - ApprovalCheckingMultipleCandidates( - ::std::vec::Vec, - ), } #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: CompactAs, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct ValidatorIndex(pub ::core::primitive::u32); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum ValidityAttestation { #[codec(index = 1)] Implicit(runtime_types::polkadot_primitives::v6::validator_app::Signature), @@ -57453,48 +53196,6 @@ pub mod api { Explicit(runtime_types::polkadot_primitives::v6::validator_app::Signature), } } - pub mod vstaging { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ApprovalVotingParams { - pub max_approval_coalesce_count: ::core::primitive::u32, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct SchedulerParams<_0> { - pub group_rotation_frequency: _0, - pub paras_availability_period: _0, - pub max_validators_per_core: ::core::option::Option<_0>, - pub lookahead: ::core::primitive::u32, - pub num_cores: ::core::primitive::u32, - pub max_availability_timeouts: ::core::primitive::u32, - pub on_demand_queue_max_size: ::core::primitive::u32, - pub on_demand_target_queue_utilization: - runtime_types::sp_arithmetic::per_things::Perbill, - pub on_demand_fee_variability: - runtime_types::sp_arithmetic::per_things::Perbill, - pub on_demand_base_fee: ::core::primitive::u128, - pub ttl: _0, - } - } } pub mod polkadot_runtime_common { use super::runtime_types; @@ -57503,28 +53204,36 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "Assign a permanent parachain slot and immediately create a lease for it."] assign_perm_parachain_slot { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 1)] # [doc = "Assign a temporary parachain slot. The function tries to create a lease for it"] # [doc = "immediately if `SlotLeasePeriodStart::Current` is specified, and if the number"] # [doc = "of currently active temporary slots is below `MaxTemporarySlotPerLeasePeriod`."] assign_temp_parachain_slot { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , lease_period_start : runtime_types :: polkadot_runtime_common :: assigned_slots :: SlotLeasePeriodStart , } , # [codec (index = 2)] # [doc = "Unassign a permanent or temporary parachain slot"] unassign_parachain_slot { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 3)] # [doc = "Sets the storage value [`MaxPermanentSlots`]."] set_max_permanent_slots { slots : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "Sets the storage value [`MaxTemporarySlots`]."] set_max_temporary_slots { slots : :: core :: primitive :: u32 , } , } + # [codec (index = 0)] # [doc = "See [`Pallet::assign_perm_parachain_slot`]."] assign_perm_parachain_slot { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 1)] # [doc = "See [`Pallet::assign_temp_parachain_slot`]."] assign_temp_parachain_slot { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , lease_period_start : runtime_types :: polkadot_runtime_common :: assigned_slots :: SlotLeasePeriodStart , } , # [codec (index = 2)] # [doc = "See [`Pallet::unassign_parachain_slot`]."] unassign_parachain_slot { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 3)] # [doc = "See [`Pallet::set_max_permanent_slots`]."] set_max_permanent_slots { slots : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "See [`Pallet::set_max_temporary_slots`]."] set_max_temporary_slots { slots : :: core :: primitive :: u32 , } , } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -57556,15 +53265,19 @@ pub mod api { MaxTemporarySlotsExceeded, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] @@ -57586,15 +53299,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct ParachainTemporarySlot<_0, _1> { pub manager: _0, pub period_begin: _1, @@ -57603,15 +53320,19 @@ pub mod api { pub lease_count: ::core::primitive::u32, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum SlotLeasePeriodStart { #[codec(index = 0)] Current, @@ -57624,23 +53345,23 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Create a new auction."] - #[doc = ""] - #[doc = "This can only happen when there isn't already an auction in progress and may only be"] - #[doc = "called by the root origin. Accepts the `duration` of this auction and the"] - #[doc = "`lease_period_index` of the initial lease period of the four that are to be auctioned."] + #[doc = "See [`Pallet::new_auction`]."] new_auction { #[codec(compact)] duration: ::core::primitive::u32, @@ -57648,22 +53369,7 @@ pub mod api { lease_period_index: ::core::primitive::u32, }, #[codec(index = 1)] - #[doc = "Make a new bid from an account (including a parachain account) for deploying a new"] - #[doc = "parachain."] - #[doc = ""] - #[doc = "Multiple simultaneous bids from the same bidder are allowed only as long as all active"] - #[doc = "bids overlap each other (i.e. are mutually exclusive). Bids cannot be redacted."] - #[doc = ""] - #[doc = "- `sub` is the sub-bidder ID, allowing for multiple competing bids to be made by (and"] - #[doc = "funded by) the same account."] - #[doc = "- `auction_index` is the index of the auction to bid on. Should just be the present"] - #[doc = "value of `AuctionCounter`."] - #[doc = "- `first_slot` is the first lease period index of the range to bid on. This is the"] - #[doc = "absolute lease period index value, not an auction-specific offset."] - #[doc = "- `last_slot` is the last lease period index of the range to bid on. This is the"] - #[doc = "absolute lease period index value, not an auction-specific offset."] - #[doc = "- `amount` is the amount to bid to be held as deposit for the parachain should the"] - #[doc = "bid win. This amount is held throughout the range."] + #[doc = "See [`Pallet::bid`]."] bid { #[codec(compact)] para: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -57677,21 +53383,23 @@ pub mod api { amount: ::core::primitive::u128, }, #[codec(index = 2)] - #[doc = "Cancel an in-progress auction."] - #[doc = ""] - #[doc = "Can only be called by Root origin."] + #[doc = "See [`Pallet::cancel_auction`]."] cancel_auction, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -57717,15 +53425,19 @@ pub mod api { AlreadyLeasedOut, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] @@ -57745,14 +53457,14 @@ pub mod api { #[doc = "Funds were reserved for a winning bid. First balance is the extra amount reserved."] #[doc = "Second is the total."] Reserved { - bidder: ::subxt::utils::AccountId32, + bidder: ::subxt::ext::subxt_core::utils::AccountId32, extra_reserved: ::core::primitive::u128, total_amount: ::core::primitive::u128, }, #[codec(index = 3)] #[doc = "Funds were unreserved since bidder is no longer active. `[bidder, amount]`"] Unreserved { - bidder: ::subxt::utils::AccountId32, + bidder: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, #[codec(index = 4)] @@ -57760,13 +53472,13 @@ pub mod api { #[doc = "reserve but no parachain slot has been leased."] ReserveConfiscated { para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, - leaser: ::subxt::utils::AccountId32, + leaser: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, #[codec(index = 5)] #[doc = "A new bid has been accepted as the current winner."] BidAccepted { - bidder: ::subxt::utils::AccountId32, + bidder: ::subxt::ext::subxt_core::utils::AccountId32, para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, amount: ::core::primitive::u128, first_slot: ::core::primitive::u32, @@ -57787,63 +53499,30 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Make a claim to collect your DOTs."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _None_."] - #[doc = ""] - #[doc = "Unsigned Validation:"] - #[doc = "A call to claim is deemed valid if the signature provided matches"] - #[doc = "the expected signed message of:"] - #[doc = ""] - #[doc = "> Ethereum Signed Message:"] - #[doc = "> (configured prefix string)(address)"] - #[doc = ""] - #[doc = "and `address` matches the `dest` account."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `dest`: The destination account to payout the claim."] - #[doc = "- `ethereum_signature`: The signature of an ethereum signed message matching the format"] - #[doc = " described above."] - #[doc = ""] - #[doc = ""] - #[doc = "The weight of this call is invariant over the input parameters."] - #[doc = "Weight includes logic to validate unsigned `claim` call."] - #[doc = ""] - #[doc = "Total Complexity: O(1)"] - #[doc = ""] + #[doc = "See [`Pallet::claim`]."] claim { - dest: ::subxt::utils::AccountId32, + dest: ::subxt::ext::subxt_core::utils::AccountId32, ethereum_signature: runtime_types::polkadot_runtime_common::claims::EcdsaSignature, }, #[codec(index = 1)] - #[doc = "Mint a new claim to collect DOTs."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _Root_."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `who`: The Ethereum address allowed to collect this claim."] - #[doc = "- `value`: The number of DOTs that will be claimed."] - #[doc = "- `vesting_schedule`: An optional vesting schedule for these DOTs."] - #[doc = ""] - #[doc = ""] - #[doc = "The weight of this call is invariant over the input parameters."] - #[doc = "We assume worst case that both vesting and statement is being inserted."] - #[doc = ""] - #[doc = "Total Complexity: O(1)"] - #[doc = ""] + #[doc = "See [`Pallet::mint_claim`]."] mint_claim { who: runtime_types::polkadot_runtime_common::claims::EthereumAddress, value: ::core::primitive::u128, @@ -57857,79 +53536,44 @@ pub mod api { >, }, #[codec(index = 2)] - #[doc = "Make a claim to collect your DOTs by signing a statement."] - #[doc = ""] - #[doc = "The dispatch origin for this call must be _None_."] - #[doc = ""] - #[doc = "Unsigned Validation:"] - #[doc = "A call to `claim_attest` is deemed valid if the signature provided matches"] - #[doc = "the expected signed message of:"] - #[doc = ""] - #[doc = "> Ethereum Signed Message:"] - #[doc = "> (configured prefix string)(address)(statement)"] - #[doc = ""] - #[doc = "and `address` matches the `dest` account; the `statement` must match that which is"] - #[doc = "expected according to your purchase arrangement."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `dest`: The destination account to payout the claim."] - #[doc = "- `ethereum_signature`: The signature of an ethereum signed message matching the format"] - #[doc = " described above."] - #[doc = "- `statement`: The identity of the statement which is being attested to in the"] - #[doc = " signature."] - #[doc = ""] - #[doc = ""] - #[doc = "The weight of this call is invariant over the input parameters."] - #[doc = "Weight includes logic to validate unsigned `claim_attest` call."] - #[doc = ""] - #[doc = "Total Complexity: O(1)"] - #[doc = ""] + #[doc = "See [`Pallet::claim_attest`]."] claim_attest { - dest: ::subxt::utils::AccountId32, + dest: ::subxt::ext::subxt_core::utils::AccountId32, ethereum_signature: runtime_types::polkadot_runtime_common::claims::EcdsaSignature, - statement: ::std::vec::Vec<::core::primitive::u8>, + statement: + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, #[codec(index = 3)] - #[doc = "Attest to a statement, needed to finalize the claims process."] - #[doc = ""] - #[doc = "WARNING: Insecure unless your chain includes `PrevalidateAttests` as a"] - #[doc = "`SignedExtension`."] - #[doc = ""] - #[doc = "Unsigned Validation:"] - #[doc = "A call to attest is deemed valid if the sender has a `Preclaim` registered"] - #[doc = "and provides a `statement` which is expected for the account."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `statement`: The identity of the statement which is being attested to in the"] - #[doc = " signature."] - #[doc = ""] - #[doc = ""] - #[doc = "The weight of this call is invariant over the input parameters."] - #[doc = "Weight includes logic to do pre-validation on `attest` call."] - #[doc = ""] - #[doc = "Total Complexity: O(1)"] - #[doc = ""] + #[doc = "See [`Pallet::attest`]."] attest { - statement: ::std::vec::Vec<::core::primitive::u8>, + statement: + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, #[codec(index = 4)] + #[doc = "See [`Pallet::move_claim`]."] move_claim { old: runtime_types::polkadot_runtime_common::claims::EthereumAddress, new: runtime_types::polkadot_runtime_common::claims::EthereumAddress, - maybe_preclaim: ::core::option::Option<::subxt::utils::AccountId32>, + maybe_preclaim: ::core::option::Option< + ::subxt::ext::subxt_core::utils::AccountId32, + >, }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -57953,21 +53597,25 @@ pub mod api { VestedBalanceExists, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "Someone claimed some DOTs."] Claimed { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, ethereum_address: runtime_types::polkadot_runtime_common::claims::EthereumAddress, amount: ::core::primitive::u128, @@ -57975,37 +53623,49 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct EcdsaSignature(pub [::core::primitive::u8; 65usize]); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct EthereumAddress(pub [::core::primitive::u8; 20usize]); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum StatementKind { #[codec(index = 0)] Regular, @@ -58018,23 +53678,23 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Create a new crowdloaning campaign for a parachain slot with the given lease period"] - #[doc = "range."] - #[doc = ""] - #[doc = "This applies a lock to your parachain configuration, ensuring that it cannot be changed"] - #[doc = "by the parachain manager."] + #[doc = "See [`Pallet::create`]."] create { #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -58050,8 +53710,7 @@ pub mod api { ::core::option::Option, }, #[codec(index = 1)] - #[doc = "Contribute to a crowd sale. This will transfer some balance over to fund a parachain"] - #[doc = "slot. It will be withdrawable when the crowdloan has ended and the funds are unused."] + #[doc = "See [`Pallet::contribute`]."] contribute { #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -58061,48 +53720,26 @@ pub mod api { ::core::option::Option, }, #[codec(index = 2)] - #[doc = "Withdraw full balance of a specific contributor."] - #[doc = ""] - #[doc = "Origin must be signed, but can come from anyone."] - #[doc = ""] - #[doc = "The fund must be either in, or ready for, retirement. For a fund to be *in* retirement,"] - #[doc = "then the retirement flag must be set. For a fund to be ready for retirement, then:"] - #[doc = "- it must not already be in retirement;"] - #[doc = "- the amount of raised funds must be bigger than the _free_ balance of the account;"] - #[doc = "- and either:"] - #[doc = " - the block number must be at least `end`; or"] - #[doc = " - the current lease period must be greater than the fund's `last_period`."] - #[doc = ""] - #[doc = "In this case, the fund's retirement flag is set and its `end` is reset to the current"] - #[doc = "block number."] - #[doc = ""] - #[doc = "- `who`: The account whose contribution should be withdrawn."] - #[doc = "- `index`: The parachain to whose crowdloan the contribution was made."] + #[doc = "See [`Pallet::withdraw`]."] withdraw { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 3)] - #[doc = "Automatically refund contributors of an ended crowdloan."] - #[doc = "Due to weight restrictions, this function may need to be called multiple"] - #[doc = "times to fully refund all users. We will refund `RemoveKeysLimit` users at a time."] - #[doc = ""] - #[doc = "Origin must be signed, but can come from anyone."] + #[doc = "See [`Pallet::refund`]."] refund { #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 4)] - #[doc = "Remove a fund after the retirement period has ended and all funds have been returned."] + #[doc = "See [`Pallet::dissolve`]."] dissolve { #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 5)] - #[doc = "Edit the configuration for an in-progress crowdloan."] - #[doc = ""] - #[doc = "Can only be called by Root origin."] + #[doc = "See [`Pallet::edit`]."] edit { #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -58118,24 +53755,18 @@ pub mod api { ::core::option::Option, }, #[codec(index = 6)] - #[doc = "Add an optional memo to an existing crowdloan contribution."] - #[doc = ""] - #[doc = "Origin must be Signed, and the user must have contributed to the crowdloan."] + #[doc = "See [`Pallet::add_memo`]."] add_memo { index: runtime_types::polkadot_parachain_primitives::primitives::Id, - memo: ::std::vec::Vec<::core::primitive::u8>, + memo: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, #[codec(index = 7)] - #[doc = "Poke the fund into `NewRaise`"] - #[doc = ""] - #[doc = "Origin must be Signed, and the fund has non-zero raise."] + #[doc = "See [`Pallet::poke`]."] poke { index: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 8)] - #[doc = "Contribute your entire balance to a crowd sale. This will transfer the entire balance of"] - #[doc = "a user over to fund a parachain slot. It will be withdrawable when the crowdloan has"] - #[doc = "ended and the funds are unused."] + #[doc = "See [`Pallet::contribute_all`]."] contribute_all { #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -58144,15 +53775,19 @@ pub mod api { }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -58227,15 +53862,19 @@ pub mod api { NoLeasePeriod, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] @@ -58246,7 +53885,7 @@ pub mod api { #[codec(index = 1)] #[doc = "Contributed to a crowd sale."] Contributed { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, fund_index: runtime_types::polkadot_parachain_primitives::primitives::Id, amount: ::core::primitive::u128, @@ -58254,7 +53893,7 @@ pub mod api { #[codec(index = 2)] #[doc = "Withdrew full balance of a contributor."] Withdrew { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, fund_index: runtime_types::polkadot_parachain_primitives::primitives::Id, amount: ::core::primitive::u128, @@ -58292,9 +53931,9 @@ pub mod api { #[codec(index = 8)] #[doc = "A memo has been updated."] MemoUpdated { - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, - memo: ::std::vec::Vec<::core::primitive::u8>, + memo: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, #[codec(index = 9)] #[doc = "A parachain has been moved to `NewRaise`"] @@ -58304,15 +53943,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct FundInfo<_0, _1, _2, _3> { pub depositor: _0, pub verifier: ::core::option::Option, @@ -58327,15 +53970,19 @@ pub mod api { pub fund_index: ::core::primitive::u32, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum LastContribution<_0> { #[codec(index = 0)] Never, @@ -58345,80 +53992,28 @@ pub mod api { Ending(_0), } } - pub mod identity_migrator { - use super::runtime_types; - pub mod pallet { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub enum Call { - #[codec(index = 0)] - #[doc = "Reap the `IdentityInfo` of `who` from the Identity pallet of `T`, unreserving any"] - #[doc = "deposits held and removing storage items associated with `who`."] - reap_identity { who: ::subxt::utils::AccountId32 }, - #[codec(index = 1)] - #[doc = "Update the deposit of `who`. Meant to be called by the system with an XCM `Transact`"] - #[doc = "Instruction."] - poke_deposit { who: ::subxt::utils::AccountId32 }, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The `Event` enum of this pallet"] - pub enum Event { - #[codec(index = 0)] - #[doc = "The identity and all sub accounts were reaped for `who`."] - IdentityReaped { who: ::subxt::utils::AccountId32 }, - #[codec(index = 1)] - #[doc = "The deposits held for `who` were updated. `identity` is the new deposit held for"] - #[doc = "identity info, and `subs` is the new deposit held for the sub-accounts."] - DepositUpdated { - who: ::subxt::utils::AccountId32, - identity: ::core::primitive::u128, - subs: ::core::primitive::u128, - }, - } - } - } pub mod impls { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum VersionedLocatableAsset { #[codec(index = 3)] V3 { location: runtime_types::staging_xcm::v3::multilocation::MultiLocation, asset_id: runtime_types::xcm::v3::multiasset::AssetId, }, - #[codec(index = 4)] - V4 { - location: runtime_types::staging_xcm::v4::location::Location, - asset_id: runtime_types::staging_xcm::v4::asset::AssetId, - }, } } pub mod paras_registrar { @@ -58426,28 +54021,36 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "Register head data and validation code for a reserved Para Id."] # [doc = ""] # [doc = "## Arguments"] # [doc = "- `origin`: Must be called by a `Signed` origin."] # [doc = "- `id`: The para ID. Must be owned/managed by the `origin` signing account."] # [doc = "- `genesis_head`: The genesis head data of the parachain/thread."] # [doc = "- `validation_code`: The initial validation code of the parachain/thread."] # [doc = ""] # [doc = "## Deposits/Fees"] # [doc = "The account with the originating signature must reserve a deposit."] # [doc = ""] # [doc = "The deposit is required to cover the costs associated with storing the genesis head"] # [doc = "data and the validation code."] # [doc = "This accounts for the potential to store validation code of a size up to the"] # [doc = "`max_code_size`, as defined in the configuration pallet"] # [doc = ""] # [doc = "Anything already reserved previously for this para ID is accounted for."] # [doc = ""] # [doc = "## Events"] # [doc = "The `Registered` event is emitted in case of success."] register { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , genesis_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 1)] # [doc = "Force the registration of a Para Id on the relay chain."] # [doc = ""] # [doc = "This function must be called by a Root origin."] # [doc = ""] # [doc = "The deposit taken can be specified for this registration. Any `ParaId`"] # [doc = "can be registered, including sub-1000 IDs which are System Parachains."] force_register { who : :: subxt :: utils :: AccountId32 , deposit : :: core :: primitive :: u128 , id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , genesis_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 2)] # [doc = "Deregister a Para Id, freeing all data and returning any deposit."] # [doc = ""] # [doc = "The caller must be Root, the `para` owner, or the `para` itself. The para must be an"] # [doc = "on-demand parachain."] deregister { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 3)] # [doc = "Swap a lease holding parachain with another parachain, either on-demand or lease"] # [doc = "holding."] # [doc = ""] # [doc = "The origin must be Root, the `para` owner, or the `para` itself."] # [doc = ""] # [doc = "The swap will happen only if there is already an opposite swap pending. If there is not,"] # [doc = "the swap will be stored in the pending swaps map, ready for a later confirmatory swap."] # [doc = ""] # [doc = "The `ParaId`s remain mapped to the same head data and code so external code can rely on"] # [doc = "`ParaId` to be a long-term identifier of a notional \"parachain\". However, their"] # [doc = "scheduling info (i.e. whether they're an on-demand parachain or lease holding"] # [doc = "parachain), auction information and the auction deposit are switched."] swap { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , other : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 4)] # [doc = "Remove a manager lock from a para. This will allow the manager of a"] # [doc = "previously locked para to deregister or swap a para without using governance."] # [doc = ""] # [doc = "Can only be called by the Root origin or the parachain."] remove_lock { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 5)] # [doc = "Reserve a Para Id on the relay chain."] # [doc = ""] # [doc = "This function will reserve a new Para Id to be owned/managed by the origin account."] # [doc = "The origin account is able to register head data and validation code using `register` to"] # [doc = "create an on-demand parachain. Using the Slots pallet, an on-demand parachain can then"] # [doc = "be upgraded to a lease holding parachain."] # [doc = ""] # [doc = "## Arguments"] # [doc = "- `origin`: Must be called by a `Signed` origin. Becomes the manager/owner of the new"] # [doc = " para ID."] # [doc = ""] # [doc = "## Deposits/Fees"] # [doc = "The origin must reserve a deposit of `ParaDeposit` for the registration."] # [doc = ""] # [doc = "## Events"] # [doc = "The `Reserved` event is emitted in case of success, which provides the ID reserved for"] # [doc = "use."] reserve , # [codec (index = 6)] # [doc = "Add a manager lock from a para. This will prevent the manager of a"] # [doc = "para to deregister or swap a para."] # [doc = ""] # [doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] # [doc = "unlocked."] add_lock { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 7)] # [doc = "Schedule a parachain upgrade."] # [doc = ""] # [doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] # [doc = "unlocked."] schedule_code_upgrade { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 8)] # [doc = "Set the parachain's current head."] # [doc = ""] # [doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] # [doc = "unlocked."] set_current_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , } + # [codec (index = 0)] # [doc = "See [`Pallet::register`]."] register { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , genesis_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 1)] # [doc = "See [`Pallet::force_register`]."] force_register { who : :: subxt :: ext :: subxt_core :: utils :: AccountId32 , deposit : :: core :: primitive :: u128 , id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , genesis_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 2)] # [doc = "See [`Pallet::deregister`]."] deregister { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 3)] # [doc = "See [`Pallet::swap`]."] swap { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , other : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 4)] # [doc = "See [`Pallet::remove_lock`]."] remove_lock { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 5)] # [doc = "See [`Pallet::reserve`]."] reserve , # [codec (index = 6)] # [doc = "See [`Pallet::add_lock`]."] add_lock { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 7)] # [doc = "See [`Pallet::schedule_code_upgrade`]."] schedule_code_upgrade { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 8)] # [doc = "See [`Pallet::set_current_head`]."] set_current_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -58488,29 +54091,33 @@ pub mod api { #[doc = "The ID given for registration has not been reserved."] NotReserved, #[codec(index = 12)] - #[doc = "The validation code is invalid."] - InvalidCode, + #[doc = "Registering parachain with empty code is not allowed."] + EmptyCode, #[codec(index = 13)] #[doc = "Cannot perform a parachain slot / lifecycle swap. Check that the state of both paras"] #[doc = "are correct for the swap to work."] CannotSwap, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] Registered { para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, - manager: ::subxt::utils::AccountId32, + manager: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 1)] Deregistered { @@ -58519,7 +54126,7 @@ pub mod api { #[codec(index = 2)] Reserved { para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, - who: ::subxt::utils::AccountId32, + who: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 3)] Swapped { @@ -58529,15 +54136,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct ParaInfo<_0, _1> { pub manager: _0, pub deposit: _1, @@ -58549,57 +54160,53 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Schedule a para to be initialized at the start of the next session."] - #[doc = ""] - #[doc = "This should only be used for TESTING and not on PRODUCTION chains. It automatically"] - #[doc = "assigns Coretime to the chain and increases the number of cores. Thus, there is no"] - #[doc = "running coretime chain required."] + #[doc = "See [`Pallet::sudo_schedule_para_initialize`]."] sudo_schedule_para_initialize { id: runtime_types::polkadot_parachain_primitives::primitives::Id, genesis: runtime_types::polkadot_runtime_parachains::paras::ParaGenesisArgs, }, #[codec(index = 1)] - #[doc = "Schedule a para to be cleaned up at the start of the next session."] + #[doc = "See [`Pallet::sudo_schedule_para_cleanup`]."] sudo_schedule_para_cleanup { id: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 2)] - #[doc = "Upgrade a parathread (on-demand parachain) to a lease holding parachain"] + #[doc = "See [`Pallet::sudo_schedule_parathread_upgrade`]."] sudo_schedule_parathread_upgrade { id: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 3)] - #[doc = "Downgrade a lease holding parachain to an on-demand parachain"] + #[doc = "See [`Pallet::sudo_schedule_parachain_downgrade`]."] sudo_schedule_parachain_downgrade { id: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 4)] - #[doc = "Send a downward XCM to the given para."] - #[doc = ""] - #[doc = "The given parachain should exist and the payload should not exceed the preconfigured"] - #[doc = "size `config.max_downward_message_size`."] + #[doc = "See [`Pallet::sudo_queue_downward_xcm`]."] sudo_queue_downward_xcm { id: runtime_types::polkadot_parachain_primitives::primitives::Id, - xcm: ::std::boxed::Box, + xcm: ::subxt::ext::subxt_core::alloc::boxed::Box< + runtime_types::xcm::VersionedXcm1, + >, }, #[codec(index = 5)] - #[doc = "Forcefully establish a channel from the sender to the recipient."] - #[doc = ""] - #[doc = "This is equivalent to sending an `Hrmp::hrmp_init_open_channel` extrinsic followed by"] - #[doc = "`Hrmp::hrmp_accept_open_channel`."] + #[doc = "See [`Pallet::sudo_establish_hrmp_channel`]."] sudo_establish_hrmp_channel { sender: runtime_types::polkadot_parachain_primitives::primitives::Id, recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -58608,15 +54215,19 @@ pub mod api { }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -58644,9 +54255,6 @@ pub mod api { #[codec(index = 7)] #[doc = "Cannot downgrade lease holding parachain to on-demand."] CannotDowngrade, - #[codec(index = 8)] - #[doc = "There are more cores than supported by the runtime."] - TooManyCores, } } } @@ -58655,58 +54263,55 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Just a connect into the `lease_out` call, in case Root wants to force some lease to"] - #[doc = "happen independently of any other on-chain mechanism to use it."] - #[doc = ""] - #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] + #[doc = "See [`Pallet::force_lease`]."] force_lease { para: runtime_types::polkadot_parachain_primitives::primitives::Id, - leaser: ::subxt::utils::AccountId32, + leaser: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, period_begin: ::core::primitive::u32, period_count: ::core::primitive::u32, }, #[codec(index = 1)] - #[doc = "Clear all leases for a Para Id, refunding any deposits back to the original owners."] - #[doc = ""] - #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] + #[doc = "See [`Pallet::clear_all_leases`]."] clear_all_leases { para: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 2)] - #[doc = "Try to onboard a parachain that has a lease for the current lease period."] - #[doc = ""] - #[doc = "This function can be useful if there was some state issue with a para that should"] - #[doc = "have onboarded, but was unable to. As long as they have a lease period, we can"] - #[doc = "let them onboard from here."] - #[doc = ""] - #[doc = "Origin must be signed, but can be called by anyone."] + #[doc = "See [`Pallet::trigger_onboard`]."] trigger_onboard { para: runtime_types::polkadot_parachain_primitives::primitives::Id, }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -58717,15 +54322,19 @@ pub mod api { LeaseError, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] @@ -58739,7 +54348,7 @@ pub mod api { #[doc = "Second balance is the total amount reserved."] Leased { para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, - leaser: ::subxt::utils::AccountId32, + leaser: ::subxt::ext::subxt_core::utils::AccountId32, period_begin: ::core::primitive::u32, period_count: ::core::primitive::u32, extra_reserved: ::core::primitive::u128, @@ -58751,194 +54360,53 @@ pub mod api { } pub mod polkadot_runtime_parachains { use super::runtime_types; - pub mod assigner_coretime { - use super::runtime_types; - pub mod pallet { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The `Error` enum of this pallet."] - pub enum Error { - #[codec(index = 0)] - AssignmentsEmpty, - #[codec(index = 1)] - #[doc = "Assignments together exceeded 57600."] - OverScheduled, - #[codec(index = 2)] - #[doc = "Assignments together less than 57600"] - UnderScheduled, - #[codec(index = 3)] - #[doc = "assign_core is only allowed to append new assignments at the end of already existing"] - #[doc = "ones."] - DisallowedInsert, - #[codec(index = 4)] - #[doc = "Tried to insert a schedule for the same core and block number as an existing schedule"] - DuplicateInsert, - #[codec(index = 5)] - #[doc = "Tried to add an unsorted set of assignments"] - AssignmentsNotSorted, - } - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct AssignmentState { - pub ratio: - runtime_types::polkadot_runtime_parachains::assigner_coretime::PartsOf57600, - pub remaining: - runtime_types::polkadot_runtime_parachains::assigner_coretime::PartsOf57600, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct CoreDescriptor < _0 > { pub queue : :: core :: option :: Option < runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: QueueDescriptor < _0 > > , pub current_work : :: core :: option :: Option < runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: WorkState < _0 > > , } - #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct PartsOf57600(pub ::core::primitive::u16); - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct QueueDescriptor<_0> { - pub first: _0, - pub last: _0, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Schedule<_0> { - pub assignments: ::std::vec::Vec<( - runtime_types::pallet_broker::coretime_interface::CoreAssignment, - runtime_types::polkadot_runtime_parachains::assigner_coretime::PartsOf57600, - )>, - pub end_hint: ::core::option::Option<_0>, - pub next_schedule: ::core::option::Option<_0>, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct WorkState < _0 > { pub assignments : :: std :: vec :: Vec < (runtime_types :: pallet_broker :: coretime_interface :: CoreAssignment , runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: AssignmentState ,) > , pub end_hint : :: core :: option :: Option < _0 > , pub pos : :: core :: primitive :: u16 , pub step : runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: PartsOf57600 , } - } pub mod assigner_on_demand { use super::runtime_types; pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Create a single on demand core order."] - #[doc = "Will use the spot price for the current block and will reap the account if needed."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `origin`: The sender of the call, funds will be withdrawn from this account."] - #[doc = "- `max_amount`: The maximum balance to withdraw from the origin to place an order."] - #[doc = "- `para_id`: A `ParaId` the origin wants to provide blockspace for."] - #[doc = ""] - #[doc = "Errors:"] - #[doc = "- `InsufficientBalance`: from the Currency implementation"] - #[doc = "- `InvalidParaId`"] - #[doc = "- `QueueFull`"] - #[doc = "- `SpotPriceHigherThanMaxAmount`"] - #[doc = ""] - #[doc = "Events:"] - #[doc = "- `SpotOrderPlaced`"] + #[doc = "See [`Pallet::place_order_allow_death`]."] place_order_allow_death { max_amount: ::core::primitive::u128, para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 1)] - #[doc = "Same as the [`place_order_allow_death`](Self::place_order_allow_death) call , but with a"] - #[doc = "check that placing the order will not reap the account."] - #[doc = ""] - #[doc = "Parameters:"] - #[doc = "- `origin`: The sender of the call, funds will be withdrawn from this account."] - #[doc = "- `max_amount`: The maximum balance to withdraw from the origin to place an order."] - #[doc = "- `para_id`: A `ParaId` the origin wants to provide blockspace for."] - #[doc = ""] - #[doc = "Errors:"] - #[doc = "- `InsufficientBalance`: from the Currency implementation"] - #[doc = "- `InvalidParaId`"] - #[doc = "- `QueueFull`"] - #[doc = "- `SpotPriceHigherThanMaxAmount`"] - #[doc = ""] - #[doc = "Events:"] - #[doc = "- `SpotOrderPlaced`"] + #[doc = "See [`Pallet::place_order_keep_alive`]."] place_order_keep_alive { max_amount: ::core::primitive::u128, para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -58952,17 +54420,25 @@ pub mod api { #[doc = "The current spot price is higher than the max amount specified in the `place_order`"] #[doc = "call, making it invalid."] SpotPriceHigherThanMaxAmount, + #[codec(index = 3)] + #[doc = "There are no on demand cores available. `place_order` will not add anything to the"] + #[doc = "queue."] + NoOnDemandCores, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] @@ -58979,60 +54455,59 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct CoreAffinityCount { pub core_idx: runtime_types::polkadot_primitives::v6::CoreIndex, pub count: ::core::primitive::u32, } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct EnqueuedOrder { - pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, - } } pub mod configuration { use super::runtime_types; pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "Set the validation upgrade cooldown."] set_validation_upgrade_cooldown { new : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "Set the validation upgrade delay."] set_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 2)] # [doc = "Set the acceptance period for an included candidate."] set_code_retention_period { new : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "Set the max validation code size for incoming upgrades."] set_max_code_size { new : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "Set the max POV block size for incoming upgrades."] set_max_pov_size { new : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "Set the max head data size for paras."] set_max_head_data_size { new : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "Set the number of coretime execution cores."] # [doc = ""] # [doc = "Note that this configuration is managed by the coretime chain. Only manually change"] # [doc = "this, if you really know what you are doing!"] set_coretime_cores { new : :: core :: primitive :: u32 , } , # [codec (index = 7)] # [doc = "Set the max number of times a claim may timeout on a core before it is abandoned"] set_max_availability_timeouts { new : :: core :: primitive :: u32 , } , # [codec (index = 8)] # [doc = "Set the parachain validator-group rotation frequency"] set_group_rotation_frequency { new : :: core :: primitive :: u32 , } , # [codec (index = 9)] # [doc = "Set the availability period for paras."] set_paras_availability_period { new : :: core :: primitive :: u32 , } , # [codec (index = 11)] # [doc = "Set the scheduling lookahead, in expected number of blocks at peak throughput."] set_scheduling_lookahead { new : :: core :: primitive :: u32 , } , # [codec (index = 12)] # [doc = "Set the maximum number of validators to assign to any core."] set_max_validators_per_core { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 13)] # [doc = "Set the maximum number of validators to use in parachain consensus."] set_max_validators { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 14)] # [doc = "Set the dispute period, in number of sessions to keep for disputes."] set_dispute_period { new : :: core :: primitive :: u32 , } , # [codec (index = 15)] # [doc = "Set the dispute post conclusion acceptance period."] set_dispute_post_conclusion_acceptance_period { new : :: core :: primitive :: u32 , } , # [codec (index = 18)] # [doc = "Set the no show slots, in number of number of consensus slots."] # [doc = "Must be at least 1."] set_no_show_slots { new : :: core :: primitive :: u32 , } , # [codec (index = 19)] # [doc = "Set the total number of delay tranches."] set_n_delay_tranches { new : :: core :: primitive :: u32 , } , # [codec (index = 20)] # [doc = "Set the zeroth delay tranche width."] set_zeroth_delay_tranche_width { new : :: core :: primitive :: u32 , } , # [codec (index = 21)] # [doc = "Set the number of validators needed to approve a block."] set_needed_approvals { new : :: core :: primitive :: u32 , } , # [codec (index = 22)] # [doc = "Set the number of samples to do of the `RelayVRFModulo` approval assignment criterion."] set_relay_vrf_modulo_samples { new : :: core :: primitive :: u32 , } , # [codec (index = 23)] # [doc = "Sets the maximum items that can present in a upward dispatch queue at once."] set_max_upward_queue_count { new : :: core :: primitive :: u32 , } , # [codec (index = 24)] # [doc = "Sets the maximum total size of items that can present in a upward dispatch queue at"] # [doc = "once."] set_max_upward_queue_size { new : :: core :: primitive :: u32 , } , # [codec (index = 25)] # [doc = "Set the critical downward message size."] set_max_downward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 27)] # [doc = "Sets the maximum size of an upward message that can be sent by a candidate."] set_max_upward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 28)] # [doc = "Sets the maximum number of messages that a candidate can contain."] set_max_upward_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 29)] # [doc = "Sets the number of sessions after which an HRMP open channel request expires."] set_hrmp_open_request_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 30)] # [doc = "Sets the amount of funds that the sender should provide for opening an HRMP channel."] set_hrmp_sender_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 31)] # [doc = "Sets the amount of funds that the recipient should provide for accepting opening an HRMP"] # [doc = "channel."] set_hrmp_recipient_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 32)] # [doc = "Sets the maximum number of messages allowed in an HRMP channel at once."] set_hrmp_channel_max_capacity { new : :: core :: primitive :: u32 , } , # [codec (index = 33)] # [doc = "Sets the maximum total size of messages in bytes allowed in an HRMP channel at once."] set_hrmp_channel_max_total_size { new : :: core :: primitive :: u32 , } , # [codec (index = 34)] # [doc = "Sets the maximum number of inbound HRMP channels a parachain is allowed to accept."] set_hrmp_max_parachain_inbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 36)] # [doc = "Sets the maximum size of a message that could ever be put into an HRMP channel."] set_hrmp_channel_max_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 37)] # [doc = "Sets the maximum number of outbound HRMP channels a parachain is allowed to open."] set_hrmp_max_parachain_outbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 39)] # [doc = "Sets the maximum number of outbound HRMP messages can be sent by a candidate."] set_hrmp_max_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 42)] # [doc = "Set the number of session changes after which a PVF pre-checking voting is rejected."] set_pvf_voting_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 43)] # [doc = "Sets the minimum delay between announcing the upgrade block for a parachain until the"] # [doc = "upgrade taking place."] # [doc = ""] # [doc = "See the field documentation for information and constraints for the new value."] set_minimum_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 44)] # [doc = "Setting this to true will disable consistency checks for the configuration setters."] # [doc = "Use with caution."] set_bypass_consistency_check { new : :: core :: primitive :: bool , } , # [codec (index = 45)] # [doc = "Set the asynchronous backing parameters."] set_async_backing_params { new : runtime_types :: polkadot_primitives :: v6 :: async_backing :: AsyncBackingParams , } , # [codec (index = 46)] # [doc = "Set PVF executor parameters."] set_executor_params { new : runtime_types :: polkadot_primitives :: v6 :: executor_params :: ExecutorParams , } , # [codec (index = 47)] # [doc = "Set the on demand (parathreads) base fee."] set_on_demand_base_fee { new : :: core :: primitive :: u128 , } , # [codec (index = 48)] # [doc = "Set the on demand (parathreads) fee variability."] set_on_demand_fee_variability { new : runtime_types :: sp_arithmetic :: per_things :: Perbill , } , # [codec (index = 49)] # [doc = "Set the on demand (parathreads) queue max size."] set_on_demand_queue_max_size { new : :: core :: primitive :: u32 , } , # [codec (index = 50)] # [doc = "Set the on demand (parathreads) fee variability."] set_on_demand_target_queue_utilization { new : runtime_types :: sp_arithmetic :: per_things :: Perbill , } , # [codec (index = 51)] # [doc = "Set the on demand (parathreads) ttl in the claimqueue."] set_on_demand_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 52)] # [doc = "Set the minimum backing votes threshold."] set_minimum_backing_votes { new : :: core :: primitive :: u32 , } , # [codec (index = 53)] # [doc = "Set/Unset a node feature."] set_node_feature { index : :: core :: primitive :: u8 , value : :: core :: primitive :: bool , } , # [codec (index = 54)] # [doc = "Set approval-voting-params."] set_approval_voting_params { new : runtime_types :: polkadot_primitives :: vstaging :: ApprovalVotingParams , } , # [codec (index = 55)] # [doc = "Set scheduler-params."] set_scheduler_params { new : runtime_types :: polkadot_primitives :: vstaging :: SchedulerParams < :: core :: primitive :: u32 > , } , } + # [codec (index = 0)] # [doc = "See [`Pallet::set_validation_upgrade_cooldown`]."] set_validation_upgrade_cooldown { new : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "See [`Pallet::set_validation_upgrade_delay`]."] set_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 2)] # [doc = "See [`Pallet::set_code_retention_period`]."] set_code_retention_period { new : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "See [`Pallet::set_max_code_size`]."] set_max_code_size { new : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "See [`Pallet::set_max_pov_size`]."] set_max_pov_size { new : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "See [`Pallet::set_max_head_data_size`]."] set_max_head_data_size { new : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "See [`Pallet::set_on_demand_cores`]."] set_on_demand_cores { new : :: core :: primitive :: u32 , } , # [codec (index = 7)] # [doc = "See [`Pallet::set_on_demand_retries`]."] set_on_demand_retries { new : :: core :: primitive :: u32 , } , # [codec (index = 8)] # [doc = "See [`Pallet::set_group_rotation_frequency`]."] set_group_rotation_frequency { new : :: core :: primitive :: u32 , } , # [codec (index = 9)] # [doc = "See [`Pallet::set_paras_availability_period`]."] set_paras_availability_period { new : :: core :: primitive :: u32 , } , # [codec (index = 11)] # [doc = "See [`Pallet::set_scheduling_lookahead`]."] set_scheduling_lookahead { new : :: core :: primitive :: u32 , } , # [codec (index = 12)] # [doc = "See [`Pallet::set_max_validators_per_core`]."] set_max_validators_per_core { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 13)] # [doc = "See [`Pallet::set_max_validators`]."] set_max_validators { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 14)] # [doc = "See [`Pallet::set_dispute_period`]."] set_dispute_period { new : :: core :: primitive :: u32 , } , # [codec (index = 15)] # [doc = "See [`Pallet::set_dispute_post_conclusion_acceptance_period`]."] set_dispute_post_conclusion_acceptance_period { new : :: core :: primitive :: u32 , } , # [codec (index = 18)] # [doc = "See [`Pallet::set_no_show_slots`]."] set_no_show_slots { new : :: core :: primitive :: u32 , } , # [codec (index = 19)] # [doc = "See [`Pallet::set_n_delay_tranches`]."] set_n_delay_tranches { new : :: core :: primitive :: u32 , } , # [codec (index = 20)] # [doc = "See [`Pallet::set_zeroth_delay_tranche_width`]."] set_zeroth_delay_tranche_width { new : :: core :: primitive :: u32 , } , # [codec (index = 21)] # [doc = "See [`Pallet::set_needed_approvals`]."] set_needed_approvals { new : :: core :: primitive :: u32 , } , # [codec (index = 22)] # [doc = "See [`Pallet::set_relay_vrf_modulo_samples`]."] set_relay_vrf_modulo_samples { new : :: core :: primitive :: u32 , } , # [codec (index = 23)] # [doc = "See [`Pallet::set_max_upward_queue_count`]."] set_max_upward_queue_count { new : :: core :: primitive :: u32 , } , # [codec (index = 24)] # [doc = "See [`Pallet::set_max_upward_queue_size`]."] set_max_upward_queue_size { new : :: core :: primitive :: u32 , } , # [codec (index = 25)] # [doc = "See [`Pallet::set_max_downward_message_size`]."] set_max_downward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 27)] # [doc = "See [`Pallet::set_max_upward_message_size`]."] set_max_upward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 28)] # [doc = "See [`Pallet::set_max_upward_message_num_per_candidate`]."] set_max_upward_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 29)] # [doc = "See [`Pallet::set_hrmp_open_request_ttl`]."] set_hrmp_open_request_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 30)] # [doc = "See [`Pallet::set_hrmp_sender_deposit`]."] set_hrmp_sender_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 31)] # [doc = "See [`Pallet::set_hrmp_recipient_deposit`]."] set_hrmp_recipient_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 32)] # [doc = "See [`Pallet::set_hrmp_channel_max_capacity`]."] set_hrmp_channel_max_capacity { new : :: core :: primitive :: u32 , } , # [codec (index = 33)] # [doc = "See [`Pallet::set_hrmp_channel_max_total_size`]."] set_hrmp_channel_max_total_size { new : :: core :: primitive :: u32 , } , # [codec (index = 34)] # [doc = "See [`Pallet::set_hrmp_max_parachain_inbound_channels`]."] set_hrmp_max_parachain_inbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 36)] # [doc = "See [`Pallet::set_hrmp_channel_max_message_size`]."] set_hrmp_channel_max_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 37)] # [doc = "See [`Pallet::set_hrmp_max_parachain_outbound_channels`]."] set_hrmp_max_parachain_outbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 39)] # [doc = "See [`Pallet::set_hrmp_max_message_num_per_candidate`]."] set_hrmp_max_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 42)] # [doc = "See [`Pallet::set_pvf_voting_ttl`]."] set_pvf_voting_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 43)] # [doc = "See [`Pallet::set_minimum_validation_upgrade_delay`]."] set_minimum_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 44)] # [doc = "See [`Pallet::set_bypass_consistency_check`]."] set_bypass_consistency_check { new : :: core :: primitive :: bool , } , # [codec (index = 45)] # [doc = "See [`Pallet::set_async_backing_params`]."] set_async_backing_params { new : runtime_types :: polkadot_primitives :: v6 :: async_backing :: AsyncBackingParams , } , # [codec (index = 46)] # [doc = "See [`Pallet::set_executor_params`]."] set_executor_params { new : runtime_types :: polkadot_primitives :: v6 :: executor_params :: ExecutorParams , } , # [codec (index = 47)] # [doc = "See [`Pallet::set_on_demand_base_fee`]."] set_on_demand_base_fee { new : :: core :: primitive :: u128 , } , # [codec (index = 48)] # [doc = "See [`Pallet::set_on_demand_fee_variability`]."] set_on_demand_fee_variability { new : runtime_types :: sp_arithmetic :: per_things :: Perbill , } , # [codec (index = 49)] # [doc = "See [`Pallet::set_on_demand_queue_max_size`]."] set_on_demand_queue_max_size { new : :: core :: primitive :: u32 , } , # [codec (index = 50)] # [doc = "See [`Pallet::set_on_demand_target_queue_utilization`]."] set_on_demand_target_queue_utilization { new : runtime_types :: sp_arithmetic :: per_things :: Perbill , } , # [codec (index = 51)] # [doc = "See [`Pallet::set_on_demand_ttl`]."] set_on_demand_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 52)] # [doc = "See [`Pallet::set_minimum_backing_votes`]."] set_minimum_backing_votes { new : :: core :: primitive :: u32 , } , } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -59041,15 +54516,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct HostConfiguration<_0> { pub max_code_size: ::core::primitive::u32, pub max_head_data_size: ::core::primitive::u32, @@ -59074,6 +54553,19 @@ pub mod api { pub executor_params: runtime_types::polkadot_primitives::v6::executor_params::ExecutorParams, pub code_retention_period: _0, + pub on_demand_cores: ::core::primitive::u32, + pub on_demand_retries: ::core::primitive::u32, + pub on_demand_queue_max_size: ::core::primitive::u32, + pub on_demand_target_queue_utilization: + runtime_types::sp_arithmetic::per_things::Perbill, + pub on_demand_fee_variability: + runtime_types::sp_arithmetic::per_things::Perbill, + pub on_demand_base_fee: ::core::primitive::u128, + pub on_demand_ttl: _0, + pub group_rotation_frequency: _0, + pub paras_availability_period: _0, + pub scheduling_lookahead: ::core::primitive::u32, + pub max_validators_per_core: ::core::option::Option<_0>, pub max_validators: ::core::option::Option<_0>, pub dispute_period: ::core::primitive::u32, pub dispute_post_conclusion_acceptance_period: _0, @@ -59085,70 +54577,6 @@ pub mod api { pub pvf_voting_ttl: ::core::primitive::u32, pub minimum_validation_upgrade_delay: _0, pub minimum_backing_votes: ::core::primitive::u32, - pub node_features: ::subxt::utils::bits::DecodedBits< - ::core::primitive::u8, - ::subxt::utils::bits::Lsb0, - >, - pub approval_voting_params: - runtime_types::polkadot_primitives::vstaging::ApprovalVotingParams, - pub scheduler_params: - runtime_types::polkadot_primitives::vstaging::SchedulerParams<_0>, - } - } - pub mod coretime { - use super::runtime_types; - pub mod pallet { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub enum Call { - # [codec (index = 1)] request_core_count { count : :: core :: primitive :: u16 , } , # [codec (index = 4)] # [doc = "Receive instructions from the `ExternalBrokerOrigin`, detailing how a specific core is"] # [doc = "to be used."] # [doc = ""] # [doc = "Parameters:"] # [doc = "-`origin`: The `ExternalBrokerOrigin`, assumed to be the Broker system parachain."] # [doc = "-`core`: The core that should be scheduled."] # [doc = "-`begin`: The starting blockheight of the instruction."] # [doc = "-`assignment`: How the blockspace should be utilised."] # [doc = "-`end_hint`: An optional hint as to when this particular set of instructions will end."] assign_core { core : :: core :: primitive :: u16 , begin : :: core :: primitive :: u32 , assignment : :: std :: vec :: Vec < (runtime_types :: pallet_broker :: coretime_interface :: CoreAssignment , runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: PartsOf57600 ,) > , end_hint : :: core :: option :: Option < :: core :: primitive :: u32 > , } , } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The `Error` enum of this pallet."] - pub enum Error { - #[codec(index = 0)] - #[doc = "The paraid making the call is not the coretime brokerage system parachain."] - NotBroker, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The `Event` enum of this pallet"] - pub enum Event { - #[codec(index = 0)] - #[doc = "The broker chain has asked for revenue information for a specific block."] - RevenueInfoRequested { when: ::core::primitive::u32 }, - #[codec(index = 1)] - #[doc = "A core has received a new assignment from the broker chain."] - CoreAssigned { - core: runtime_types::polkadot_primitives::v6::CoreIndex, - }, - } } } pub mod disputes { @@ -59156,30 +54584,39 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] + #[doc = "See [`Pallet::force_unfreeze`]."] force_unfreeze, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -59211,15 +54648,19 @@ pub mod api { UnconfirmedDispute, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] @@ -59248,35 +54689,44 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] + #[doc = "See [`Pallet::report_dispute_lost_unsigned`]."] report_dispute_lost_unsigned { - dispute_proof: ::std::boxed::Box< + dispute_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::polkadot_primitives::v6::slashing::DisputeProof, >, key_owner_proof: runtime_types::sp_session::MembershipProof, }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -59302,15 +54752,19 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum DisputeLocation { #[codec(index = 0)] Local, @@ -59318,15 +54772,19 @@ pub mod api { Remote, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum DisputeResult { #[codec(index = 0)] Valid, @@ -59339,28 +54797,36 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "Initiate opening a channel from a parachain to a given recipient with given channel"] # [doc = "parameters."] # [doc = ""] # [doc = "- `proposed_max_capacity` - specifies how many messages can be in the channel at once."] # [doc = "- `proposed_max_message_size` - specifies the maximum size of the messages."] # [doc = ""] # [doc = "These numbers are a subject to the relay-chain configuration limits."] # [doc = ""] # [doc = "The channel can be opened only after the recipient confirms it and only on a session"] # [doc = "change."] hrmp_init_open_channel { recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , proposed_max_capacity : :: core :: primitive :: u32 , proposed_max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "Accept a pending open channel request from the given sender."] # [doc = ""] # [doc = "The channel will be opened only on the next session boundary."] hrmp_accept_open_channel { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 2)] # [doc = "Initiate unilateral closing of a channel. The origin must be either the sender or the"] # [doc = "recipient in the channel being closed."] # [doc = ""] # [doc = "The closure can only happen on a session change."] hrmp_close_channel { channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , } , # [codec (index = 3)] # [doc = "This extrinsic triggers the cleanup of all the HRMP storage items that a para may have."] # [doc = "Normally this happens once per session, but this allows you to trigger the cleanup"] # [doc = "immediately for a specific parachain."] # [doc = ""] # [doc = "Number of inbound and outbound channels for `para` must be provided as witness data."] # [doc = ""] # [doc = "Origin must be the `ChannelManager`."] force_clean_hrmp { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , num_inbound : :: core :: primitive :: u32 , num_outbound : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "Force process HRMP open channel requests."] # [doc = ""] # [doc = "If there are pending HRMP open channel requests, you can use this function to process"] # [doc = "all of those requests immediately."] # [doc = ""] # [doc = "Total number of opening channels must be provided as witness data."] # [doc = ""] # [doc = "Origin must be the `ChannelManager`."] force_process_hrmp_open { channels : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "Force process HRMP close channel requests."] # [doc = ""] # [doc = "If there are pending HRMP close channel requests, you can use this function to process"] # [doc = "all of those requests immediately."] # [doc = ""] # [doc = "Total number of closing channels must be provided as witness data."] # [doc = ""] # [doc = "Origin must be the `ChannelManager`."] force_process_hrmp_close { channels : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "This cancels a pending open channel request. It can be canceled by either of the sender"] # [doc = "or the recipient for that request. The origin must be either of those."] # [doc = ""] # [doc = "The cancellation happens immediately. It is not possible to cancel the request if it is"] # [doc = "already accepted."] # [doc = ""] # [doc = "Total number of open requests (i.e. `HrmpOpenChannelRequestsList`) must be provided as"] # [doc = "witness data."] hrmp_cancel_open_request { channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , open_requests : :: core :: primitive :: u32 , } , # [codec (index = 7)] # [doc = "Open a channel from a `sender` to a `recipient` `ParaId`. Although opened by governance,"] # [doc = "the `max_capacity` and `max_message_size` are still subject to the Relay Chain's"] # [doc = "configured limits."] # [doc = ""] # [doc = "Expected use is when one (and only one) of the `ParaId`s involved in the channel is"] # [doc = "governed by the system, e.g. a system parachain."] # [doc = ""] # [doc = "Origin must be the `ChannelManager`."] force_open_hrmp_channel { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , max_capacity : :: core :: primitive :: u32 , max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 8)] # [doc = "Establish an HRMP channel between two system chains. If the channel does not already"] # [doc = "exist, the transaction fees will be refunded to the caller. The system does not take"] # [doc = "deposits for channels between system chains, and automatically sets the message number"] # [doc = "and size limits to the maximum allowed by the network's configuration."] # [doc = ""] # [doc = "Arguments:"] # [doc = ""] # [doc = "- `sender`: A system chain, `ParaId`."] # [doc = "- `recipient`: A system chain, `ParaId`."] # [doc = ""] # [doc = "Any signed origin can call this function, but _both_ inputs MUST be system chains. If"] # [doc = "the channel does not exist yet, there is no fee."] establish_system_channel { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 9)] # [doc = "Update the deposits held for an HRMP channel to the latest `Configuration`. Channels"] # [doc = "with system chains do not require a deposit."] # [doc = ""] # [doc = "Arguments:"] # [doc = ""] # [doc = "- `sender`: A chain, `ParaId`."] # [doc = "- `recipient`: A chain, `ParaId`."] # [doc = ""] # [doc = "Any signed origin can call this function."] poke_channel_deposits { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , } + # [codec (index = 0)] # [doc = "See [`Pallet::hrmp_init_open_channel`]."] hrmp_init_open_channel { recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , proposed_max_capacity : :: core :: primitive :: u32 , proposed_max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "See [`Pallet::hrmp_accept_open_channel`]."] hrmp_accept_open_channel { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 2)] # [doc = "See [`Pallet::hrmp_close_channel`]."] hrmp_close_channel { channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , } , # [codec (index = 3)] # [doc = "See [`Pallet::force_clean_hrmp`]."] force_clean_hrmp { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , num_inbound : :: core :: primitive :: u32 , num_outbound : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "See [`Pallet::force_process_hrmp_open`]."] force_process_hrmp_open { channels : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "See [`Pallet::force_process_hrmp_close`]."] force_process_hrmp_close { channels : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "See [`Pallet::hrmp_cancel_open_request`]."] hrmp_cancel_open_request { channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , open_requests : :: core :: primitive :: u32 , } , # [codec (index = 7)] # [doc = "See [`Pallet::force_open_hrmp_channel`]."] force_open_hrmp_channel { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , max_capacity : :: core :: primitive :: u32 , max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 8)] # [doc = "See [`Pallet::establish_system_channel`]."] establish_system_channel { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 9)] # [doc = "See [`Pallet::poke_channel_deposits`]."] poke_channel_deposits { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -59425,49 +54891,61 @@ pub mod api { ChannelCreationNotAuthorized, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { # [codec (index = 0)] # [doc = "Open HRMP channel requested."] OpenChannelRequested { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , proposed_max_capacity : :: core :: primitive :: u32 , proposed_max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "An HRMP channel request sent by the receiver was canceled by either party."] OpenChannelCanceled { by_parachain : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , } , # [codec (index = 2)] # [doc = "Open HRMP channel accepted."] OpenChannelAccepted { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 3)] # [doc = "HRMP channel closed."] ChannelClosed { by_parachain : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , } , # [codec (index = 4)] # [doc = "An HRMP channel was opened via Root origin."] HrmpChannelForceOpened { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , proposed_max_capacity : :: core :: primitive :: u32 , proposed_max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "An HRMP channel was opened between two system chains."] HrmpSystemChannelOpened { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , proposed_max_capacity : :: core :: primitive :: u32 , proposed_max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "An HRMP channel's deposits were updated."] OpenChannelDepositsUpdated { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct HrmpChannel { pub max_capacity: ::core::primitive::u32, pub max_total_size: ::core::primitive::u32, pub max_message_size: ::core::primitive::u32, pub msg_count: ::core::primitive::u32, pub total_size: ::core::primitive::u32, - pub mqc_head: ::core::option::Option<::subxt::utils::H256>, + pub mqc_head: ::core::option::Option<::subxt::ext::subxt_core::utils::H256>, pub sender_deposit: ::core::primitive::u128, pub recipient_deposit: ::core::primitive::u128, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct HrmpOpenChannelRequest { pub confirmed: ::core::primitive::bool, pub _age: ::core::primitive::u32, @@ -59482,27 +54960,35 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call {} #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -59599,22 +55085,26 @@ pub mod api { BitfieldReferencesFreedCore, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "A candidate was backed. `[candidate, head_data]`"] CandidateBacked( runtime_types::polkadot_primitives::v6::CandidateReceipt< - ::subxt::utils::H256, + ::subxt::ext::subxt_core::utils::H256, >, runtime_types::polkadot_parachain_primitives::primitives::HeadData, runtime_types::polkadot_primitives::v6::CoreIndex, @@ -59624,7 +55114,7 @@ pub mod api { #[doc = "A candidate was included. `[candidate, head_data]`"] CandidateIncluded( runtime_types::polkadot_primitives::v6::CandidateReceipt< - ::subxt::utils::H256, + ::subxt::ext::subxt_core::utils::H256, >, runtime_types::polkadot_parachain_primitives::primitives::HeadData, runtime_types::polkadot_primitives::v6::CoreIndex, @@ -59634,7 +55124,7 @@ pub mod api { #[doc = "A candidate timed out. `[candidate, head_data]`"] CandidateTimedOut( runtime_types::polkadot_primitives::v6::CandidateReceipt< - ::subxt::utils::H256, + ::subxt::ext::subxt_core::utils::H256, >, runtime_types::polkadot_parachain_primitives::primitives::HeadData, runtime_types::polkadot_primitives::v6::CoreIndex, @@ -59648,69 +55138,85 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum AggregateMessageOrigin { #[codec(index = 0)] Ump(runtime_types::polkadot_runtime_parachains::inclusion::UmpQueueId), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct AvailabilityBitfieldRecord<_0> { pub bitfield: runtime_types::polkadot_primitives::v6::AvailabilityBitfield, pub submitted_at: _0, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct CandidatePendingAvailability<_0, _1> { pub core: runtime_types::polkadot_primitives::v6::CoreIndex, pub hash: runtime_types::polkadot_core_primitives::CandidateHash, pub descriptor: runtime_types::polkadot_primitives::v6::CandidateDescriptor<_0>, - pub availability_votes: ::subxt::utils::bits::DecodedBits< + pub availability_votes: ::subxt::ext::subxt_core::utils::bits::DecodedBits< ::core::primitive::u8, - ::subxt::utils::bits::Lsb0, + ::subxt::ext::subxt_core::utils::bits::Lsb0, >, - pub backers: ::subxt::utils::bits::DecodedBits< + pub backers: ::subxt::ext::subxt_core::utils::bits::DecodedBits< ::core::primitive::u8, - ::subxt::utils::bits::Lsb0, + ::subxt::ext::subxt_core::utils::bits::Lsb0, >, pub relay_parent_number: _1, pub backed_in_number: _1, pub backing_group: runtime_types::polkadot_primitives::v6::GroupIndex, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum UmpQueueId { #[codec(index = 0)] Para(runtime_types::polkadot_parachain_primitives::primitives::Id), @@ -59721,39 +55227,45 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Issue a signal to the consensus engine to forcibly act as though all parachain"] - #[doc = "blocks in all relay chain blocks up to and including the given number in the current"] - #[doc = "chain are valid and should be finalized."] + #[doc = "See [`Pallet::force_approve`]."] force_approve { up_to: ::core::primitive::u32 }, } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct BufferedSessionChange { - pub validators: ::std::vec::Vec< + pub validators: ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_primitives::v6::validator_app::Public, >, - pub queued: ::std::vec::Vec< + pub queued: ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_primitives::v6::validator_app::Public, >, pub session_index: ::core::primitive::u32, @@ -59764,15 +55276,19 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum Origin { #[codec(index = 0)] Parachain(runtime_types::polkadot_parachain_primitives::primitives::Id), @@ -59784,28 +55300,36 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "Set the storage for the parachain validation code immediately."] force_set_current_code { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 1)] # [doc = "Set the storage for the current parachain head data immediately."] force_set_current_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , # [codec (index = 2)] # [doc = "Schedule an upgrade as if it was scheduled in the given relay parent block."] force_schedule_code_upgrade { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , relay_parent_number : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "Note a new block head for para within the context of the current block."] force_note_new_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , # [codec (index = 4)] # [doc = "Put a parachain directly into the next session's action queue."] # [doc = "We can't queue it any sooner than this without going into the"] # [doc = "initializer..."] force_queue_action { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 5)] # [doc = "Adds the validation code to the storage."] # [doc = ""] # [doc = "The code will not be added if it is already present. Additionally, if PVF pre-checking"] # [doc = "is running for that code, it will be instantly accepted."] # [doc = ""] # [doc = "Otherwise, the code will be added into the storage. Note that the code will be added"] # [doc = "into storage with reference count 0. This is to account the fact that there are no users"] # [doc = "for this code yet. The caller will have to make sure that this code eventually gets"] # [doc = "used by some parachain or removed from the storage to avoid storage leaks. For the"] # [doc = "latter prefer to use the `poke_unused_validation_code` dispatchable to raw storage"] # [doc = "manipulation."] # [doc = ""] # [doc = "This function is mainly meant to be used for upgrading parachains that do not follow"] # [doc = "the go-ahead signal while the PVF pre-checking feature is enabled."] add_trusted_validation_code { validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 6)] # [doc = "Remove the validation code from the storage iff the reference count is 0."] # [doc = ""] # [doc = "This is better than removing the storage directly, because it will not remove the code"] # [doc = "that was suddenly got used by some parachain while this dispatchable was pending"] # [doc = "dispatching."] poke_unused_validation_code { validation_code_hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , } , # [codec (index = 7)] # [doc = "Includes a statement for a PVF pre-checking vote. Potentially, finalizes the vote and"] # [doc = "enacts the results if that was the last vote before achieving the supermajority."] include_pvf_check_statement { stmt : runtime_types :: polkadot_primitives :: v6 :: PvfCheckStatement , signature : runtime_types :: polkadot_primitives :: v6 :: validator_app :: Signature , } , # [codec (index = 8)] # [doc = "Set the storage for the current parachain head data immediately."] force_set_most_recent_context { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , context : :: core :: primitive :: u32 , } , } + # [codec (index = 0)] # [doc = "See [`Pallet::force_set_current_code`]."] force_set_current_code { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 1)] # [doc = "See [`Pallet::force_set_current_head`]."] force_set_current_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , # [codec (index = 2)] # [doc = "See [`Pallet::force_schedule_code_upgrade`]."] force_schedule_code_upgrade { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , relay_parent_number : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "See [`Pallet::force_note_new_head`]."] force_note_new_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , # [codec (index = 4)] # [doc = "See [`Pallet::force_queue_action`]."] force_queue_action { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 5)] # [doc = "See [`Pallet::add_trusted_validation_code`]."] add_trusted_validation_code { validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 6)] # [doc = "See [`Pallet::poke_unused_validation_code`]."] poke_unused_validation_code { validation_code_hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , } , # [codec (index = 7)] # [doc = "See [`Pallet::include_pvf_check_statement`]."] include_pvf_check_statement { stmt : runtime_types :: polkadot_primitives :: v6 :: PvfCheckStatement , signature : runtime_types :: polkadot_primitives :: v6 :: validator_app :: Signature , } , # [codec (index = 8)] # [doc = "See [`Pallet::force_set_most_recent_context`]."] force_set_most_recent_context { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , context : :: core :: primitive :: u32 , } , } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -59844,34 +55368,39 @@ pub mod api { #[codec(index = 11)] #[doc = "Parachain cannot currently schedule a code upgrade."] CannotUpgradeCode, - #[codec(index = 12)] - #[doc = "Invalid validation code size."] - InvalidCode, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { # [codec (index = 0)] # [doc = "Current code has been updated for a Para. `para_id`"] CurrentCodeUpdated (runtime_types :: polkadot_parachain_primitives :: primitives :: Id ,) , # [codec (index = 1)] # [doc = "Current head has been updated for a Para. `para_id`"] CurrentHeadUpdated (runtime_types :: polkadot_parachain_primitives :: primitives :: Id ,) , # [codec (index = 2)] # [doc = "A code upgrade has been scheduled for a Para. `para_id`"] CodeUpgradeScheduled (runtime_types :: polkadot_parachain_primitives :: primitives :: Id ,) , # [codec (index = 3)] # [doc = "A new head has been noted for a Para. `para_id`"] NewHeadNoted (runtime_types :: polkadot_parachain_primitives :: primitives :: Id ,) , # [codec (index = 4)] # [doc = "A para has been queued to execute pending actions. `para_id`"] ActionQueued (runtime_types :: polkadot_parachain_primitives :: primitives :: Id , :: core :: primitive :: u32 ,) , # [codec (index = 5)] # [doc = "The given para either initiated or subscribed to a PVF check for the given validation"] # [doc = "code. `code_hash` `para_id`"] PvfCheckStarted (runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , runtime_types :: polkadot_parachain_primitives :: primitives :: Id ,) , # [codec (index = 6)] # [doc = "The given validation code was accepted by the PVF pre-checking vote."] # [doc = "`code_hash` `para_id`"] PvfCheckAccepted (runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , runtime_types :: polkadot_parachain_primitives :: primitives :: Id ,) , # [codec (index = 7)] # [doc = "The given validation code was rejected by the PVF pre-checking vote."] # [doc = "`code_hash` `para_id`"] PvfCheckRejected (runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , runtime_types :: polkadot_parachain_primitives :: primitives :: Id ,) , } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct ParaGenesisArgs { pub genesis_head: runtime_types::polkadot_parachain_primitives::primitives::HeadData, @@ -59880,15 +55409,19 @@ pub mod api { pub para_kind: ::core::primitive::bool, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum ParaLifecycle { #[codec(index = 0)] Onboarding, @@ -59906,56 +55439,68 @@ pub mod api { OffboardingParachain, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct ParaPastCodeMeta<_0> { - pub upgrade_times: ::std::vec::Vec< + pub upgrade_times: ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_runtime_parachains::paras::ReplacementTimes<_0>, >, pub last_pruned: ::core::option::Option<_0>, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct PvfCheckActiveVoteState<_0> { - pub votes_accept: ::subxt::utils::bits::DecodedBits< + pub votes_accept: ::subxt::ext::subxt_core::utils::bits::DecodedBits< ::core::primitive::u8, - ::subxt::utils::bits::Lsb0, + ::subxt::ext::subxt_core::utils::bits::Lsb0, >, - pub votes_reject: ::subxt::utils::bits::DecodedBits< + pub votes_reject: ::subxt::ext::subxt_core::utils::bits::DecodedBits< ::core::primitive::u8, - ::subxt::utils::bits::Lsb0, + ::subxt::ext::subxt_core::utils::bits::Lsb0, >, pub age: ::core::primitive::u32, pub created_at: _0, - pub causes: ::std::vec::Vec< + pub causes: ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::polkadot_runtime_parachains::paras::PvfCheckCause<_0>, >, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum PvfCheckCause<_0> { #[codec(index = 0)] Onboarding(runtime_types::polkadot_parachain_primitives::primitives::Id), @@ -59967,29 +55512,37 @@ pub mod api { }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct ReplacementTimes<_0> { pub expected_at: _0, pub activated_at: _0, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum SetGoAhead { #[codec(index = 0)] Yes, @@ -60002,19 +55555,23 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Enter the paras inherent. This will process bitfields and backed candidates."] + #[doc = "See [`Pallet::enter`]."] enter { data: runtime_types::polkadot_primitives::v6::InherentData< runtime_types::sp_runtime::generic::header::Header< @@ -60024,15 +55581,19 @@ pub mod api { }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] @@ -60054,15 +55615,6 @@ pub mod api { #[codec(index = 5)] #[doc = "A dispute statement was invalid."] DisputeInvalid, - #[codec(index = 6)] - #[doc = "A candidate was backed by a disabled validator"] - BackedByDisabled, - #[codec(index = 7)] - #[doc = "A candidate was backed even though the paraid was not scheduled."] - BackedOnUnscheduledCore, - #[codec(index = 8)] - #[doc = "Too many candidates supplied."] - UnscheduledCandidate, } } } @@ -60071,49 +55623,55 @@ pub mod api { pub mod common { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum Assignment { - #[codec(index = 0)] - Pool { - para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, - core_index: runtime_types::polkadot_primitives::v6::CoreIndex, - }, - #[codec(index = 1)] - Bulk(runtime_types::polkadot_parachain_primitives::primitives::Id), + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct Assignment { + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, } } pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum CoreOccupied<_0> { # [codec (index = 0)] Free , # [codec (index = 1)] Paras (runtime_types :: polkadot_runtime_parachains :: scheduler :: pallet :: ParasEntry < _0 > ,) , } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct ParasEntry < _0 > { pub assignment : runtime_types :: polkadot_runtime_parachains :: scheduler :: common :: Assignment , pub availability_timeouts : :: core :: primitive :: u32 , pub ttl : _0 , } } } @@ -60122,30 +55680,38 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call {} } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct AllowedRelayParentsTracker<_0, _1> { - pub buffer: ::std::vec::Vec<(_0, _0)>, + pub buffer: ::subxt::ext::subxt_core::alloc::vec::Vec<(_0, _0)>, pub latest_number: _1, } } @@ -60159,15 +55725,19 @@ pub mod api { pub mod pallet_custom_origins { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum Origin { #[codec(index = 0)] StakingAdmin, @@ -60232,75 +55802,91 @@ pub mod api { pub mod pallet { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "Add new validators to the set."] - #[doc = ""] - #[doc = "The new validators will be active from current session + 2."] + #[doc = "See [`Pallet::register_validators`]."] register_validators { - validators: ::std::vec::Vec<::subxt::utils::AccountId32>, + validators: ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >, }, #[codec(index = 1)] - #[doc = "Remove validators from the set."] - #[doc = ""] - #[doc = "The removed validators will be deactivated from current session + 2."] + #[doc = "See [`Pallet::deregister_validators`]."] deregister_validators { - validators: ::std::vec::Vec<::subxt::utils::AccountId32>, + validators: ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >, }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] #[doc = "New validators were added to the set."] - ValidatorsRegistered(::std::vec::Vec<::subxt::utils::AccountId32>), + ValidatorsRegistered( + ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >, + ), #[codec(index = 1)] #[doc = "Validators were removed from the set."] - ValidatorsDeregistered(::std::vec::Vec<::subxt::utils::AccountId32>), + ValidatorsDeregistered( + ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::utils::AccountId32, + >, + ), } } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum OriginCaller { - # [codec (index = 0)] system (runtime_types :: frame_support :: dispatch :: RawOrigin < :: subxt :: utils :: AccountId32 > ,) , # [codec (index = 43)] Origins (runtime_types :: rococo_runtime :: governance :: origins :: pallet_custom_origins :: Origin ,) , # [codec (index = 50)] ParachainsOrigin (runtime_types :: polkadot_runtime_parachains :: origin :: pallet :: Origin ,) , # [codec (index = 99)] XcmPallet (runtime_types :: pallet_xcm :: pallet :: Origin ,) , # [codec (index = 4)] Void (runtime_types :: sp_core :: Void ,) , } + # [codec (index = 0)] system (runtime_types :: frame_support :: dispatch :: RawOrigin < :: subxt :: ext :: subxt_core :: utils :: AccountId32 > ,) , # [codec (index = 43)] Origins (runtime_types :: rococo_runtime :: governance :: origins :: pallet_custom_origins :: Origin ,) , # [codec (index = 50)] ParachainsOrigin (runtime_types :: polkadot_runtime_parachains :: origin :: pallet :: Origin ,) , # [codec (index = 99)] XcmPallet (runtime_types :: pallet_xcm :: pallet :: Origin ,) , # [codec (index = 4)] Void (runtime_types :: sp_core :: Void ,) , } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum ProxyType { #[codec(index = 0)] Any, @@ -60320,26 +55906,26 @@ pub mod api { OnDemandOrdering, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct Runtime; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum RuntimeCall { #[codec(index = 0)] System(runtime_types::frame_system::pallet::Call), @@ -60351,10 +55937,14 @@ pub mod api { Indices(runtime_types::pallet_indices::pallet::Call), #[codec(index = 4)] Balances(runtime_types::pallet_balances::pallet::Call), + #[codec(index = 240)] + Beefy(runtime_types::pallet_beefy::pallet::Call), #[codec(index = 8)] Session(runtime_types::pallet_session::pallet::Call), #[codec(index = 10)] Grandpa(runtime_types::pallet_grandpa::pallet::Call), + #[codec(index = 11)] + ImOnline(runtime_types::pallet_im_online::pallet::Call), #[codec(index = 18)] Treasury(runtime_types::pallet_treasury::pallet::Call), #[codec(index = 20)] @@ -60364,7 +55954,7 @@ pub mod api { #[codec(index = 22)] FellowshipCollective(runtime_types::pallet_ranked_collective::pallet::Call), #[codec(index = 23)] - FellowshipReferenda(runtime_types::pallet_referenda::pallet::Call2), + FellowshipReferenda(runtime_types::pallet_referenda::pallet::Call), #[codec(index = 44)] Whitelist(runtime_types::pallet_whitelist::pallet::Call), #[codec(index = 19)] @@ -60396,7 +55986,7 @@ pub mod api { #[codec(index = 38)] Nis(runtime_types::pallet_nis::pallet::Call), #[codec(index = 45)] - NisCounterpartBalances(runtime_types::pallet_balances::pallet::Call2), + NisCounterpartBalances(runtime_types::pallet_balances::pallet::Call), #[codec(index = 51)] Configuration( runtime_types::polkadot_runtime_parachains::configuration::pallet::Call, @@ -60435,16 +56025,8 @@ pub mod api { Auctions(runtime_types::polkadot_runtime_common::auctions::pallet::Call), #[codec(index = 73)] Crowdloan(runtime_types::polkadot_runtime_common::crowdloan::pallet::Call), - #[codec(index = 74)] - Coretime(runtime_types::polkadot_runtime_parachains::coretime::pallet::Call), #[codec(index = 99)] XcmPallet(runtime_types::pallet_xcm::pallet::Call), - #[codec(index = 240)] - Beefy(runtime_types::pallet_beefy::pallet::Call), - #[codec(index = 248)] - IdentityMigrator( - runtime_types::polkadot_runtime_common::identity_migrator::pallet::Call, - ), #[codec(index = 250)] ParasSudoWrapper( runtime_types::polkadot_runtime_common::paras_sudo_wrapper::pallet::Call, @@ -60455,21 +56037,19 @@ pub mod api { ValidatorManager(runtime_types::rococo_runtime::validator_manager::pallet::Call), #[codec(index = 254)] StateTrieMigration(runtime_types::pallet_state_trie_migration::pallet::Call), - #[codec(index = 249)] - RootTesting(runtime_types::pallet_root_testing::pallet::Call), #[codec(index = 255)] Sudo(runtime_types::pallet_sudo::pallet::Call), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum RuntimeError { #[codec(index = 0)] System(runtime_types::frame_system::pallet::Error), @@ -60479,10 +56059,14 @@ pub mod api { Indices(runtime_types::pallet_indices::pallet::Error), #[codec(index = 4)] Balances(runtime_types::pallet_balances::pallet::Error), + #[codec(index = 240)] + Beefy(runtime_types::pallet_beefy::pallet::Error), #[codec(index = 8)] Session(runtime_types::pallet_session::pallet::Error), #[codec(index = 10)] Grandpa(runtime_types::pallet_grandpa::pallet::Error), + #[codec(index = 11)] + ImOnline(runtime_types::pallet_im_online::pallet::Error), #[codec(index = 18)] Treasury(runtime_types::pallet_treasury::pallet::Error), #[codec(index = 20)] @@ -60492,7 +56076,7 @@ pub mod api { #[codec(index = 22)] FellowshipCollective(runtime_types::pallet_ranked_collective::pallet::Error), #[codec(index = 23)] - FellowshipReferenda(runtime_types::pallet_referenda::pallet::Error2), + FellowshipReferenda(runtime_types::pallet_referenda::pallet::Error), #[codec(index = 44)] Whitelist(runtime_types::pallet_whitelist::pallet::Error), #[codec(index = 19)] @@ -60524,7 +56108,7 @@ pub mod api { #[codec(index = 38)] Nis(runtime_types::pallet_nis::pallet::Error), #[codec(index = 45)] - NisCounterpartBalances(runtime_types::pallet_balances::pallet::Error2), + NisCounterpartBalances(runtime_types::pallet_balances::pallet::Error), #[codec(index = 51)] Configuration( runtime_types::polkadot_runtime_parachains::configuration::pallet::Error, @@ -60551,10 +56135,6 @@ pub mod api { OnDemandAssignmentProvider( runtime_types::polkadot_runtime_parachains::assigner_on_demand::pallet::Error, ), - #[codec(index = 68)] - CoretimeAssignmentProvider( - runtime_types::polkadot_runtime_parachains::assigner_coretime::pallet::Error, - ), #[codec(index = 70)] Registrar(runtime_types::polkadot_runtime_common::paras_registrar::pallet::Error), #[codec(index = 71)] @@ -60563,12 +56143,8 @@ pub mod api { Auctions(runtime_types::polkadot_runtime_common::auctions::pallet::Error), #[codec(index = 73)] Crowdloan(runtime_types::polkadot_runtime_common::crowdloan::pallet::Error), - #[codec(index = 74)] - Coretime(runtime_types::polkadot_runtime_parachains::coretime::pallet::Error), #[codec(index = 99)] XcmPallet(runtime_types::pallet_xcm::pallet::Error), - #[codec(index = 240)] - Beefy(runtime_types::pallet_beefy::pallet::Error), #[codec(index = 250)] ParasSudoWrapper( runtime_types::polkadot_runtime_common::paras_sudo_wrapper::pallet::Error, @@ -60583,15 +56159,15 @@ pub mod api { Sudo(runtime_types::pallet_sudo::pallet::Error), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum RuntimeEvent { #[codec(index = 0)] System(runtime_types::frame_system::pallet::Event), @@ -60607,12 +56183,14 @@ pub mod api { Session(runtime_types::pallet_session::pallet::Event), #[codec(index = 10)] Grandpa(runtime_types::pallet_grandpa::pallet::Event), + #[codec(index = 11)] + ImOnline(runtime_types::pallet_im_online::pallet::Event), #[codec(index = 18)] Treasury(runtime_types::pallet_treasury::pallet::Event), #[codec(index = 20)] ConvictionVoting(runtime_types::pallet_conviction_voting::pallet::Event), #[codec(index = 21)] - Referenda(runtime_types::pallet_referenda::pallet::Event), + Referenda(runtime_types::pallet_referenda::pallet::Event1), #[codec(index = 22)] FellowshipCollective(runtime_types::pallet_ranked_collective::pallet::Event), #[codec(index = 23)] @@ -60648,7 +56226,7 @@ pub mod api { #[codec(index = 38)] Nis(runtime_types::pallet_nis::pallet::Event), #[codec(index = 45)] - NisCounterpartBalances(runtime_types::pallet_balances::pallet::Event2), + NisCounterpartBalances(runtime_types::pallet_balances::pallet::Event), #[codec(index = 53)] ParaInclusion(runtime_types::polkadot_runtime_parachains::inclusion::pallet::Event), #[codec(index = 56)] @@ -60671,14 +56249,8 @@ pub mod api { Auctions(runtime_types::polkadot_runtime_common::auctions::pallet::Event), #[codec(index = 73)] Crowdloan(runtime_types::polkadot_runtime_common::crowdloan::pallet::Event), - #[codec(index = 74)] - Coretime(runtime_types::polkadot_runtime_parachains::coretime::pallet::Event), #[codec(index = 99)] XcmPallet(runtime_types::pallet_xcm::pallet::Event), - #[codec(index = 248)] - IdentityMigrator( - runtime_types::polkadot_runtime_common::identity_migrator::pallet::Event, - ), #[codec(index = 251)] AssignedSlots( runtime_types::polkadot_runtime_common::assigned_slots::pallet::Event, @@ -60687,42 +56259,39 @@ pub mod api { ValidatorManager(runtime_types::rococo_runtime::validator_manager::pallet::Event), #[codec(index = 254)] StateTrieMigration(runtime_types::pallet_state_trie_migration::pallet::Event), - #[codec(index = 249)] - RootTesting(runtime_types::pallet_root_testing::pallet::Event), #[codec(index = 255)] Sudo(runtime_types::pallet_sudo::pallet::Event), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum RuntimeHoldReason { #[codec(index = 32)] Preimage(runtime_types::pallet_preimage::pallet::HoldReason), #[codec(index = 38)] Nis(runtime_types::pallet_nis::pallet::HoldReason), - #[codec(index = 254)] - StateTrieMigration(runtime_types::pallet_state_trie_migration::pallet::HoldReason), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct SessionKeys { pub grandpa: runtime_types::sp_consensus_grandpa::app::Public, pub babe: runtime_types::sp_consensus_babe::app::Public, + pub im_online: runtime_types::pallet_im_online::sr25519::app_sr25519::Public, pub para_validator: runtime_types::polkadot_primitives::v6::validator_app::Public, pub para_assignment: runtime_types::polkadot_primitives::v6::assignment_app::Public, pub authority_discovery: runtime_types::sp_authority_discovery::app::Public, @@ -60734,78 +56303,98 @@ pub mod api { pub mod fixed_point { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct FixedI64(pub ::core::primitive::i64); #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: CompactAs, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct FixedU128(pub ::core::primitive::u128); } pub mod per_things { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: CompactAs, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Perbill(pub ::core::primitive::u32); #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: CompactAs, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Permill(pub ::core::primitive::u32); #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: CompactAs, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Perquintill(pub ::core::primitive::u64); } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum ArithmeticError { #[codec(index = 0)] Underflow, @@ -60820,15 +56409,19 @@ pub mod api { pub mod app { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Public(pub runtime_types::sp_core::sr25519::Public); } } @@ -60837,29 +56430,37 @@ pub mod api { pub mod app { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Public(pub runtime_types::sp_core::sr25519::Public); } pub mod digests { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum NextConfigDescriptor { #[codec(index = 1)] V1 { @@ -60868,15 +56469,19 @@ pub mod api { }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum PreDigest { #[codec(index = 1)] Primary(runtime_types::sp_consensus_babe::digests::PrimaryPreDigest), @@ -60888,44 +56493,56 @@ pub mod api { SecondaryVRF(runtime_types::sp_consensus_babe::digests::SecondaryVRFPreDigest), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct PrimaryPreDigest { pub authority_index: ::core::primitive::u32, pub slot: runtime_types::sp_consensus_slots::Slot, pub vrf_signature: runtime_types::sp_core::sr25519::vrf::VrfSignature, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct SecondaryPlainPreDigest { pub authority_index: ::core::primitive::u32, pub slot: runtime_types::sp_consensus_slots::Slot, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct SecondaryVRFPreDigest { pub authority_index: ::core::primitive::u32, pub slot: runtime_types::sp_consensus_slots::Slot, @@ -60933,15 +56550,15 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum AllowedSlots { #[codec(index = 0)] PrimarySlots, @@ -60951,20 +56568,20 @@ pub mod api { PrimaryAndSecondaryVRFSlots, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct BabeConfiguration { pub slot_duration: ::core::primitive::u64, pub epoch_length: ::core::primitive::u64, pub c: (::core::primitive::u64, ::core::primitive::u64), - pub authorities: ::std::vec::Vec<( + pub authorities: ::subxt::ext::subxt_core::alloc::vec::Vec<( runtime_types::sp_consensus_babe::app::Public, ::core::primitive::u64, )>, @@ -60972,34 +56589,34 @@ pub mod api { pub allowed_slots: runtime_types::sp_consensus_babe::AllowedSlots, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct BabeEpochConfiguration { pub c: (::core::primitive::u64, ::core::primitive::u64), pub allowed_slots: runtime_types::sp_consensus_babe::AllowedSlots, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct Epoch { pub epoch_index: ::core::primitive::u64, pub start_slot: runtime_types::sp_consensus_slots::Slot, pub duration: ::core::primitive::u64, - pub authorities: ::std::vec::Vec<( + pub authorities: ::subxt::ext::subxt_core::alloc::vec::Vec<( runtime_types::sp_consensus_babe::app::Public, ::core::primitive::u64, )>, @@ -61007,31 +56624,37 @@ pub mod api { pub config: runtime_types::sp_consensus_babe::BabeEpochConfiguration, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct OpaqueKeyOwnershipProof(pub ::std::vec::Vec<::core::primitive::u8>); + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + pub struct OpaqueKeyOwnershipProof( + pub ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + ); } pub mod sp_consensus_beefy { use super::runtime_types; pub mod commitment { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Commitment<_0> { pub payload: runtime_types::sp_consensus_beefy::payload::Payload, pub block_number: _0, @@ -61041,40 +56664,52 @@ pub mod api { pub mod ecdsa_crypto { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Public(pub runtime_types::sp_core::ecdsa::Public); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Signature(pub runtime_types::sp_core::ecdsa::Signature); } pub mod mmr { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct BeefyAuthoritySet<_0> { pub id: ::core::primitive::u64, pub len: ::core::primitive::u32, @@ -61084,71 +56719,77 @@ pub mod api { pub mod payload { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Payload( - pub ::std::vec::Vec<( + pub ::subxt::ext::subxt_core::alloc::vec::Vec<( [::core::primitive::u8; 2usize], - ::std::vec::Vec<::core::primitive::u8>, + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, )>, ); } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct EquivocationProof<_0, _1, _2> { pub first: runtime_types::sp_consensus_beefy::VoteMessage<_0, _1, _2>, pub second: runtime_types::sp_consensus_beefy::VoteMessage<_0, _1, _2>, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct OpaqueKeyOwnershipProof(pub ::std::vec::Vec<::core::primitive::u8>); + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + pub struct OpaqueKeyOwnershipProof( + pub ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + ); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct ValidatorSet<_0> { - pub validators: ::std::vec::Vec<_0>, + pub validators: ::subxt::ext::subxt_core::alloc::vec::Vec<_0>, pub id: ::core::primitive::u64, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct VoteMessage<_0, _1, _2> { pub commitment: runtime_types::sp_consensus_beefy::commitment::Commitment<_0>, pub id: _1, @@ -61160,42 +56801,50 @@ pub mod api { pub mod app { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Public(pub runtime_types::sp_core::ed25519::Public); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Signature(pub runtime_types::sp_core::ed25519::Signature); } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum Equivocation<_0, _1> { #[codec(index = 0)] Prevote( - runtime_types::finality_grandpa::Equivocation< + runtime_types::finality_grandpa::Equivocation1< runtime_types::sp_consensus_grandpa::app::Public, runtime_types::finality_grandpa::Prevote<_0, _1>, runtime_types::sp_consensus_grandpa::app::Signature, @@ -61203,7 +56852,7 @@ pub mod api { ), #[codec(index = 1)] Precommit( - runtime_types::finality_grandpa::Equivocation< + runtime_types::finality_grandpa::Equivocation2< runtime_types::sp_consensus_grandpa::app::Public, runtime_types::finality_grandpa::Precommit<_0, _1>, runtime_types::sp_consensus_grandpa::app::Signature, @@ -61211,43 +56860,45 @@ pub mod api { ), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct EquivocationProof<_0, _1> { pub set_id: ::core::primitive::u64, pub equivocation: runtime_types::sp_consensus_grandpa::Equivocation<_0, _1>, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct OpaqueKeyOwnershipProof(pub ::std::vec::Vec<::core::primitive::u8>); + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + pub struct OpaqueKeyOwnershipProof( + pub ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + ); } pub mod sp_consensus_slots { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct EquivocationProof<_0, _1> { pub offender: _1, pub slot: runtime_types::sp_consensus_slots::Slot, @@ -61255,16 +56906,16 @@ pub mod api { pub second_header: _0, } #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: CompactAs, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct Slot(pub ::core::primitive::u64); } pub mod sp_core { @@ -61272,65 +56923,85 @@ pub mod api { pub mod crypto { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct KeyTypeId(pub [::core::primitive::u8; 4usize]); } pub mod ecdsa { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Public(pub [::core::primitive::u8; 33usize]); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Signature(pub [::core::primitive::u8; 65usize]); } pub mod ed25519 { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Public(pub [::core::primitive::u8; 32usize]); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Signature(pub [::core::primitive::u8; 64usize]); } pub mod sr25519 { @@ -61338,123 +57009,139 @@ pub mod api { pub mod vrf { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct VrfSignature { - pub pre_output: [::core::primitive::u8; 32usize], + pub output: [::core::primitive::u8; 32usize], pub proof: [::core::primitive::u8; 64usize], } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Public(pub [::core::primitive::u8; 32usize]); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Signature(pub [::core::primitive::u8; 64usize]); } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct OpaqueMetadata(pub ::std::vec::Vec<::core::primitive::u8>); + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + pub struct OpaqueMetadata( + pub ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + ); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum Void {} } pub mod sp_inherents { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct CheckInherentsResult { pub okay: ::core::primitive::bool, pub fatal_error: ::core::primitive::bool, pub errors: runtime_types::sp_inherents::InherentData, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct InherentData { - pub data: ::subxt::utils::KeyedVec< + pub data: ::subxt::ext::subxt_core::utils::KeyedVec< [::core::primitive::u8; 8usize], - ::std::vec::Vec<::core::primitive::u8>, + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, >, } } pub mod sp_mmr_primitives { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct EncodableOpaqueLeaf(pub ::std::vec::Vec<::core::primitive::u8>); + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + pub struct EncodableOpaqueLeaf( + pub ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + ); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum Error { #[codec(index = 0)] InvalidNumericOp, @@ -61478,19 +57165,19 @@ pub mod api { InvalidBestKnownBlock, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct Proof<_0> { - pub leaf_indices: ::std::vec::Vec<::core::primitive::u64>, + pub leaf_indices: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u64>, pub leaf_count: ::core::primitive::u64, - pub items: ::std::vec::Vec<_0>, + pub items: ::subxt::ext::subxt_core::alloc::vec::Vec<_0>, } } pub mod sp_runtime { @@ -61500,64 +57187,77 @@ pub mod api { pub mod block { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Block<_0, _1> { pub header: _0, - pub extrinsics: ::std::vec::Vec<_1>, + pub extrinsics: ::subxt::ext::subxt_core::alloc::vec::Vec<_1>, } } pub mod digest { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Digest { - pub logs: - ::std::vec::Vec, + pub logs: ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::sp_runtime::generic::digest::DigestItem, + >, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum DigestItem { #[codec(index = 6)] PreRuntime( [::core::primitive::u8; 4usize], - ::std::vec::Vec<::core::primitive::u8>, + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, ), #[codec(index = 4)] Consensus( [::core::primitive::u8; 4usize], - ::std::vec::Vec<::core::primitive::u8>, + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, ), #[codec(index = 5)] Seal( [::core::primitive::u8; 4usize], - ::std::vec::Vec<::core::primitive::u8>, + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, ), #[codec(index = 0)] - Other(::std::vec::Vec<::core::primitive::u8>), + Other(::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>), #[codec(index = 8)] RuntimeEnvironmentUpdated, } @@ -61565,15 +57265,19 @@ pub mod api { pub mod era { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum Era { #[codec(index = 0)] Immortal, @@ -62092,21 +57796,25 @@ pub mod api { pub mod header { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Header<_0> { - pub parent_hash: ::subxt::utils::H256, + pub parent_hash: ::subxt::ext::subxt_core::utils::H256, #[codec(compact)] pub number: _0, - pub state_root: ::subxt::utils::H256, - pub extrinsics_root: ::subxt::utils::H256, + pub state_root: ::subxt::ext::subxt_core::utils::H256, + pub extrinsics_root: ::subxt::ext::subxt_core::utils::H256, pub digest: runtime_types::sp_runtime::generic::digest::Digest, } } @@ -62114,29 +57822,37 @@ pub mod api { pub mod traits { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct BlakeTwo256; } pub mod transaction_validity { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum InvalidTransaction { #[codec(index = 0)] Call, @@ -62162,15 +57878,19 @@ pub mod api { BadSigner, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum TransactionSource { #[codec(index = 0)] InBlock, @@ -62180,15 +57900,19 @@ pub mod api { External, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum TransactionValidityError { #[codec(index = 0)] Invalid(runtime_types::sp_runtime::transaction_validity::InvalidTransaction), @@ -62196,15 +57920,19 @@ pub mod api { Unknown(runtime_types::sp_runtime::transaction_validity::UnknownTransaction), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum UnknownTransaction { #[codec(index = 0)] CannotLookup, @@ -62214,33 +57942,41 @@ pub mod api { Custom(::core::primitive::u8), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct ValidTransaction { pub priority: ::core::primitive::u64, - pub requires: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, - pub provides: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, + pub requires: ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + >, + pub provides: ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + >, pub longevity: ::core::primitive::u64, pub propagate: ::core::primitive::bool, } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum DispatchError { #[codec(index = 0)] Other, @@ -62272,59 +58008,43 @@ pub mod api { RootNotAllowed, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct DispatchErrorWithPostInfo<_0> { pub post_info: _0, pub error: runtime_types::sp_runtime::DispatchError, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum ExtrinsicInclusionMode { - #[codec(index = 0)] - AllExtrinsics, - #[codec(index = 1)] - OnlyInherents, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct ModuleError { pub index: ::core::primitive::u8, pub error: [::core::primitive::u8; 4usize], } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum MultiSignature { #[codec(index = 0)] Ed25519(runtime_types::sp_core::ed25519::Signature), @@ -62334,15 +58054,15 @@ pub mod api { Ecdsa(runtime_types::sp_core::ecdsa::Signature), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum MultiSigner { #[codec(index = 0)] Ed25519(runtime_types::sp_core::ed25519::Public), @@ -62352,15 +58072,15 @@ pub mod api { Ecdsa(runtime_types::sp_core::ecdsa::Public), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum TokenError { #[codec(index = 0)] FundsUnavailable, @@ -62384,15 +58104,15 @@ pub mod api { Blocked, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum TransactionalError { #[codec(index = 0)] LimitReached, @@ -62403,18 +58123,20 @@ pub mod api { pub mod sp_session { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct MembershipProof { pub session: ::core::primitive::u32, - pub trie_nodes: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, + pub trie_nodes: ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + >, pub validator_count: ::core::primitive::u32, } } @@ -62423,41 +58145,47 @@ pub mod api { pub mod offence { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct OffenceDetails<_0, _1> { pub offender: _1, - pub reporters: ::std::vec::Vec<_0>, + pub reporters: ::subxt::ext::subxt_core::alloc::vec::Vec<_0>, } } } pub mod sp_version { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct RuntimeVersion { - pub spec_name: ::std::string::String, - pub impl_name: ::std::string::String, + pub spec_name: ::subxt::ext::subxt_core::alloc::string::String, + pub impl_name: ::subxt::ext::subxt_core::alloc::string::String, pub authoring_version: ::core::primitive::u32, pub spec_version: ::core::primitive::u32, pub impl_version: ::core::primitive::u32, - pub apis: - ::std::vec::Vec<([::core::primitive::u8; 8usize], ::core::primitive::u32)>, + pub apis: ::subxt::ext::subxt_core::alloc::vec::Vec<( + [::core::primitive::u8; 8usize], + ::core::primitive::u32, + )>, pub transaction_version: ::core::primitive::u32, pub state_version: ::core::primitive::u8, } @@ -62467,15 +58195,19 @@ pub mod api { pub mod weight_v2 { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct Weight { #[codec(compact)] pub ref_time: ::core::primitive::u64, @@ -62484,15 +58216,15 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct RuntimeDbWeight { pub read: ::core::primitive::u64, pub write: ::core::primitive::u64, @@ -62505,903 +58237,46 @@ pub mod api { pub mod multilocation { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct MultiLocation { pub parents: ::core::primitive::u8, pub interior: runtime_types::xcm::v3::junctions::Junctions, } } } - pub mod v4 { - use super::runtime_types; - pub mod asset { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Asset { - pub id: runtime_types::staging_xcm::v4::asset::AssetId, - pub fun: runtime_types::staging_xcm::v4::asset::Fungibility, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum AssetFilter { - #[codec(index = 0)] - Definite(runtime_types::staging_xcm::v4::asset::Assets), - #[codec(index = 1)] - Wild(runtime_types::staging_xcm::v4::asset::WildAsset), - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct AssetId(pub runtime_types::staging_xcm::v4::location::Location); - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum AssetInstance { - #[codec(index = 0)] - Undefined, - #[codec(index = 1)] - Index(#[codec(compact)] ::core::primitive::u128), - #[codec(index = 2)] - Array4([::core::primitive::u8; 4usize]), - #[codec(index = 3)] - Array8([::core::primitive::u8; 8usize]), - #[codec(index = 4)] - Array16([::core::primitive::u8; 16usize]), - #[codec(index = 5)] - Array32([::core::primitive::u8; 32usize]), - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Assets( - pub ::std::vec::Vec, - ); - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum Fungibility { - #[codec(index = 0)] - Fungible(#[codec(compact)] ::core::primitive::u128), - #[codec(index = 1)] - NonFungible(runtime_types::staging_xcm::v4::asset::AssetInstance), - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum WildAsset { - #[codec(index = 0)] - All, - #[codec(index = 1)] - AllOf { - id: runtime_types::staging_xcm::v4::asset::AssetId, - fun: runtime_types::staging_xcm::v4::asset::WildFungibility, - }, - #[codec(index = 2)] - AllCounted(#[codec(compact)] ::core::primitive::u32), - #[codec(index = 3)] - AllOfCounted { - id: runtime_types::staging_xcm::v4::asset::AssetId, - fun: runtime_types::staging_xcm::v4::asset::WildFungibility, - #[codec(compact)] - count: ::core::primitive::u32, - }, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum WildFungibility { - #[codec(index = 0)] - Fungible, - #[codec(index = 1)] - NonFungible, - } - } - pub mod junction { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum Junction { - #[codec(index = 0)] - Parachain(#[codec(compact)] ::core::primitive::u32), - #[codec(index = 1)] - AccountId32 { - network: ::core::option::Option< - runtime_types::staging_xcm::v4::junction::NetworkId, - >, - id: [::core::primitive::u8; 32usize], - }, - #[codec(index = 2)] - AccountIndex64 { - network: ::core::option::Option< - runtime_types::staging_xcm::v4::junction::NetworkId, - >, - #[codec(compact)] - index: ::core::primitive::u64, - }, - #[codec(index = 3)] - AccountKey20 { - network: ::core::option::Option< - runtime_types::staging_xcm::v4::junction::NetworkId, - >, - key: [::core::primitive::u8; 20usize], - }, - #[codec(index = 4)] - PalletInstance(::core::primitive::u8), - #[codec(index = 5)] - GeneralIndex(#[codec(compact)] ::core::primitive::u128), - #[codec(index = 6)] - GeneralKey { - length: ::core::primitive::u8, - data: [::core::primitive::u8; 32usize], - }, - #[codec(index = 7)] - OnlyChild, - #[codec(index = 8)] - Plurality { - id: runtime_types::xcm::v3::junction::BodyId, - part: runtime_types::xcm::v3::junction::BodyPart, - }, - #[codec(index = 9)] - GlobalConsensus(runtime_types::staging_xcm::v4::junction::NetworkId), - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum NetworkId { - #[codec(index = 0)] - ByGenesis([::core::primitive::u8; 32usize]), - #[codec(index = 1)] - ByFork { - block_number: ::core::primitive::u64, - block_hash: [::core::primitive::u8; 32usize], - }, - #[codec(index = 2)] - Polkadot, - #[codec(index = 3)] - Kusama, - #[codec(index = 4)] - Westend, - #[codec(index = 5)] - Rococo, - #[codec(index = 6)] - Wococo, - #[codec(index = 7)] - Ethereum { - #[codec(compact)] - chain_id: ::core::primitive::u64, - }, - #[codec(index = 8)] - BitcoinCore, - #[codec(index = 9)] - BitcoinCash, - #[codec(index = 10)] - PolkadotBulletin, - } - } - pub mod junctions { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum Junctions { - #[codec(index = 0)] - Here, - #[codec(index = 1)] - X1([runtime_types::staging_xcm::v4::junction::Junction; 1usize]), - #[codec(index = 2)] - X2([runtime_types::staging_xcm::v4::junction::Junction; 2usize]), - #[codec(index = 3)] - X3([runtime_types::staging_xcm::v4::junction::Junction; 3usize]), - #[codec(index = 4)] - X4([runtime_types::staging_xcm::v4::junction::Junction; 4usize]), - #[codec(index = 5)] - X5([runtime_types::staging_xcm::v4::junction::Junction; 5usize]), - #[codec(index = 6)] - X6([runtime_types::staging_xcm::v4::junction::Junction; 6usize]), - #[codec(index = 7)] - X7([runtime_types::staging_xcm::v4::junction::Junction; 7usize]), - #[codec(index = 8)] - X8([runtime_types::staging_xcm::v4::junction::Junction; 8usize]), - } - } - pub mod location { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Location { - pub parents: ::core::primitive::u8, - pub interior: runtime_types::staging_xcm::v4::junctions::Junctions, - } - } - pub mod traits { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum Outcome { - #[codec(index = 0)] - Complete { - used: runtime_types::sp_weights::weight_v2::Weight, - }, - #[codec(index = 1)] - Incomplete { - used: runtime_types::sp_weights::weight_v2::Weight, - error: runtime_types::xcm::v3::traits::Error, - }, - #[codec(index = 2)] - Error { - error: runtime_types::xcm::v3::traits::Error, - }, - } - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum Instruction { - #[codec(index = 0)] - WithdrawAsset(runtime_types::staging_xcm::v4::asset::Assets), - #[codec(index = 1)] - ReserveAssetDeposited(runtime_types::staging_xcm::v4::asset::Assets), - #[codec(index = 2)] - ReceiveTeleportedAsset(runtime_types::staging_xcm::v4::asset::Assets), - #[codec(index = 3)] - QueryResponse { - #[codec(compact)] - query_id: ::core::primitive::u64, - response: runtime_types::staging_xcm::v4::Response, - max_weight: runtime_types::sp_weights::weight_v2::Weight, - querier: ::core::option::Option< - runtime_types::staging_xcm::v4::location::Location, - >, - }, - #[codec(index = 4)] - TransferAsset { - assets: runtime_types::staging_xcm::v4::asset::Assets, - beneficiary: runtime_types::staging_xcm::v4::location::Location, - }, - #[codec(index = 5)] - TransferReserveAsset { - assets: runtime_types::staging_xcm::v4::asset::Assets, - dest: runtime_types::staging_xcm::v4::location::Location, - xcm: runtime_types::staging_xcm::v4::Xcm, - }, - #[codec(index = 6)] - Transact { - origin_kind: runtime_types::xcm::v2::OriginKind, - require_weight_at_most: runtime_types::sp_weights::weight_v2::Weight, - call: runtime_types::xcm::double_encoded::DoubleEncoded, - }, - #[codec(index = 7)] - HrmpNewChannelOpenRequest { - #[codec(compact)] - sender: ::core::primitive::u32, - #[codec(compact)] - max_message_size: ::core::primitive::u32, - #[codec(compact)] - max_capacity: ::core::primitive::u32, - }, - #[codec(index = 8)] - HrmpChannelAccepted { - #[codec(compact)] - recipient: ::core::primitive::u32, - }, - #[codec(index = 9)] - HrmpChannelClosing { - #[codec(compact)] - initiator: ::core::primitive::u32, - #[codec(compact)] - sender: ::core::primitive::u32, - #[codec(compact)] - recipient: ::core::primitive::u32, - }, - #[codec(index = 10)] - ClearOrigin, - #[codec(index = 11)] - DescendOrigin(runtime_types::staging_xcm::v4::junctions::Junctions), - #[codec(index = 12)] - ReportError(runtime_types::staging_xcm::v4::QueryResponseInfo), - #[codec(index = 13)] - DepositAsset { - assets: runtime_types::staging_xcm::v4::asset::AssetFilter, - beneficiary: runtime_types::staging_xcm::v4::location::Location, - }, - #[codec(index = 14)] - DepositReserveAsset { - assets: runtime_types::staging_xcm::v4::asset::AssetFilter, - dest: runtime_types::staging_xcm::v4::location::Location, - xcm: runtime_types::staging_xcm::v4::Xcm, - }, - #[codec(index = 15)] - ExchangeAsset { - give: runtime_types::staging_xcm::v4::asset::AssetFilter, - want: runtime_types::staging_xcm::v4::asset::Assets, - maximal: ::core::primitive::bool, - }, - #[codec(index = 16)] - InitiateReserveWithdraw { - assets: runtime_types::staging_xcm::v4::asset::AssetFilter, - reserve: runtime_types::staging_xcm::v4::location::Location, - xcm: runtime_types::staging_xcm::v4::Xcm, - }, - #[codec(index = 17)] - InitiateTeleport { - assets: runtime_types::staging_xcm::v4::asset::AssetFilter, - dest: runtime_types::staging_xcm::v4::location::Location, - xcm: runtime_types::staging_xcm::v4::Xcm, - }, - #[codec(index = 18)] - ReportHolding { - response_info: runtime_types::staging_xcm::v4::QueryResponseInfo, - assets: runtime_types::staging_xcm::v4::asset::AssetFilter, - }, - #[codec(index = 19)] - BuyExecution { - fees: runtime_types::staging_xcm::v4::asset::Asset, - weight_limit: runtime_types::xcm::v3::WeightLimit, - }, - #[codec(index = 20)] - RefundSurplus, - #[codec(index = 21)] - SetErrorHandler(runtime_types::staging_xcm::v4::Xcm), - #[codec(index = 22)] - SetAppendix(runtime_types::staging_xcm::v4::Xcm), - #[codec(index = 23)] - ClearError, - #[codec(index = 24)] - ClaimAsset { - assets: runtime_types::staging_xcm::v4::asset::Assets, - ticket: runtime_types::staging_xcm::v4::location::Location, - }, - #[codec(index = 25)] - Trap(#[codec(compact)] ::core::primitive::u64), - #[codec(index = 26)] - SubscribeVersion { - #[codec(compact)] - query_id: ::core::primitive::u64, - max_response_weight: runtime_types::sp_weights::weight_v2::Weight, - }, - #[codec(index = 27)] - UnsubscribeVersion, - #[codec(index = 28)] - BurnAsset(runtime_types::staging_xcm::v4::asset::Assets), - #[codec(index = 29)] - ExpectAsset(runtime_types::staging_xcm::v4::asset::Assets), - #[codec(index = 30)] - ExpectOrigin( - ::core::option::Option, - ), - #[codec(index = 31)] - ExpectError( - ::core::option::Option<( - ::core::primitive::u32, - runtime_types::xcm::v3::traits::Error, - )>, - ), - #[codec(index = 32)] - ExpectTransactStatus(runtime_types::xcm::v3::MaybeErrorCode), - #[codec(index = 33)] - QueryPallet { - module_name: ::std::vec::Vec<::core::primitive::u8>, - response_info: runtime_types::staging_xcm::v4::QueryResponseInfo, - }, - #[codec(index = 34)] - ExpectPallet { - #[codec(compact)] - index: ::core::primitive::u32, - name: ::std::vec::Vec<::core::primitive::u8>, - module_name: ::std::vec::Vec<::core::primitive::u8>, - #[codec(compact)] - crate_major: ::core::primitive::u32, - #[codec(compact)] - min_crate_minor: ::core::primitive::u32, - }, - #[codec(index = 35)] - ReportTransactStatus(runtime_types::staging_xcm::v4::QueryResponseInfo), - #[codec(index = 36)] - ClearTransactStatus, - #[codec(index = 37)] - UniversalOrigin(runtime_types::staging_xcm::v4::junction::Junction), - #[codec(index = 38)] - ExportMessage { - network: runtime_types::staging_xcm::v4::junction::NetworkId, - destination: runtime_types::staging_xcm::v4::junctions::Junctions, - xcm: runtime_types::staging_xcm::v4::Xcm, - }, - #[codec(index = 39)] - LockAsset { - asset: runtime_types::staging_xcm::v4::asset::Asset, - unlocker: runtime_types::staging_xcm::v4::location::Location, - }, - #[codec(index = 40)] - UnlockAsset { - asset: runtime_types::staging_xcm::v4::asset::Asset, - target: runtime_types::staging_xcm::v4::location::Location, - }, - #[codec(index = 41)] - NoteUnlockable { - asset: runtime_types::staging_xcm::v4::asset::Asset, - owner: runtime_types::staging_xcm::v4::location::Location, - }, - #[codec(index = 42)] - RequestUnlock { - asset: runtime_types::staging_xcm::v4::asset::Asset, - locker: runtime_types::staging_xcm::v4::location::Location, - }, - #[codec(index = 43)] - SetFeesMode { - jit_withdraw: ::core::primitive::bool, - }, - #[codec(index = 44)] - SetTopic([::core::primitive::u8; 32usize]), - #[codec(index = 45)] - ClearTopic, - #[codec(index = 46)] - AliasOrigin(runtime_types::staging_xcm::v4::location::Location), - #[codec(index = 47)] - UnpaidExecution { - weight_limit: runtime_types::xcm::v3::WeightLimit, - check_origin: ::core::option::Option< - runtime_types::staging_xcm::v4::location::Location, - >, - }, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum Instruction2 { - #[codec(index = 0)] - WithdrawAsset(runtime_types::staging_xcm::v4::asset::Assets), - #[codec(index = 1)] - ReserveAssetDeposited(runtime_types::staging_xcm::v4::asset::Assets), - #[codec(index = 2)] - ReceiveTeleportedAsset(runtime_types::staging_xcm::v4::asset::Assets), - #[codec(index = 3)] - QueryResponse { - #[codec(compact)] - query_id: ::core::primitive::u64, - response: runtime_types::staging_xcm::v4::Response, - max_weight: runtime_types::sp_weights::weight_v2::Weight, - querier: ::core::option::Option< - runtime_types::staging_xcm::v4::location::Location, - >, - }, - #[codec(index = 4)] - TransferAsset { - assets: runtime_types::staging_xcm::v4::asset::Assets, - beneficiary: runtime_types::staging_xcm::v4::location::Location, - }, - #[codec(index = 5)] - TransferReserveAsset { - assets: runtime_types::staging_xcm::v4::asset::Assets, - dest: runtime_types::staging_xcm::v4::location::Location, - xcm: runtime_types::staging_xcm::v4::Xcm, - }, - #[codec(index = 6)] - Transact { - origin_kind: runtime_types::xcm::v2::OriginKind, - require_weight_at_most: runtime_types::sp_weights::weight_v2::Weight, - call: runtime_types::xcm::double_encoded::DoubleEncoded2, - }, - #[codec(index = 7)] - HrmpNewChannelOpenRequest { - #[codec(compact)] - sender: ::core::primitive::u32, - #[codec(compact)] - max_message_size: ::core::primitive::u32, - #[codec(compact)] - max_capacity: ::core::primitive::u32, - }, - #[codec(index = 8)] - HrmpChannelAccepted { - #[codec(compact)] - recipient: ::core::primitive::u32, - }, - #[codec(index = 9)] - HrmpChannelClosing { - #[codec(compact)] - initiator: ::core::primitive::u32, - #[codec(compact)] - sender: ::core::primitive::u32, - #[codec(compact)] - recipient: ::core::primitive::u32, - }, - #[codec(index = 10)] - ClearOrigin, - #[codec(index = 11)] - DescendOrigin(runtime_types::staging_xcm::v4::junctions::Junctions), - #[codec(index = 12)] - ReportError(runtime_types::staging_xcm::v4::QueryResponseInfo), - #[codec(index = 13)] - DepositAsset { - assets: runtime_types::staging_xcm::v4::asset::AssetFilter, - beneficiary: runtime_types::staging_xcm::v4::location::Location, - }, - #[codec(index = 14)] - DepositReserveAsset { - assets: runtime_types::staging_xcm::v4::asset::AssetFilter, - dest: runtime_types::staging_xcm::v4::location::Location, - xcm: runtime_types::staging_xcm::v4::Xcm, - }, - #[codec(index = 15)] - ExchangeAsset { - give: runtime_types::staging_xcm::v4::asset::AssetFilter, - want: runtime_types::staging_xcm::v4::asset::Assets, - maximal: ::core::primitive::bool, - }, - #[codec(index = 16)] - InitiateReserveWithdraw { - assets: runtime_types::staging_xcm::v4::asset::AssetFilter, - reserve: runtime_types::staging_xcm::v4::location::Location, - xcm: runtime_types::staging_xcm::v4::Xcm, - }, - #[codec(index = 17)] - InitiateTeleport { - assets: runtime_types::staging_xcm::v4::asset::AssetFilter, - dest: runtime_types::staging_xcm::v4::location::Location, - xcm: runtime_types::staging_xcm::v4::Xcm, - }, - #[codec(index = 18)] - ReportHolding { - response_info: runtime_types::staging_xcm::v4::QueryResponseInfo, - assets: runtime_types::staging_xcm::v4::asset::AssetFilter, - }, - #[codec(index = 19)] - BuyExecution { - fees: runtime_types::staging_xcm::v4::asset::Asset, - weight_limit: runtime_types::xcm::v3::WeightLimit, - }, - #[codec(index = 20)] - RefundSurplus, - #[codec(index = 21)] - SetErrorHandler(runtime_types::staging_xcm::v4::Xcm2), - #[codec(index = 22)] - SetAppendix(runtime_types::staging_xcm::v4::Xcm2), - #[codec(index = 23)] - ClearError, - #[codec(index = 24)] - ClaimAsset { - assets: runtime_types::staging_xcm::v4::asset::Assets, - ticket: runtime_types::staging_xcm::v4::location::Location, - }, - #[codec(index = 25)] - Trap(#[codec(compact)] ::core::primitive::u64), - #[codec(index = 26)] - SubscribeVersion { - #[codec(compact)] - query_id: ::core::primitive::u64, - max_response_weight: runtime_types::sp_weights::weight_v2::Weight, - }, - #[codec(index = 27)] - UnsubscribeVersion, - #[codec(index = 28)] - BurnAsset(runtime_types::staging_xcm::v4::asset::Assets), - #[codec(index = 29)] - ExpectAsset(runtime_types::staging_xcm::v4::asset::Assets), - #[codec(index = 30)] - ExpectOrigin( - ::core::option::Option, - ), - #[codec(index = 31)] - ExpectError( - ::core::option::Option<( - ::core::primitive::u32, - runtime_types::xcm::v3::traits::Error, - )>, - ), - #[codec(index = 32)] - ExpectTransactStatus(runtime_types::xcm::v3::MaybeErrorCode), - #[codec(index = 33)] - QueryPallet { - module_name: ::std::vec::Vec<::core::primitive::u8>, - response_info: runtime_types::staging_xcm::v4::QueryResponseInfo, - }, - #[codec(index = 34)] - ExpectPallet { - #[codec(compact)] - index: ::core::primitive::u32, - name: ::std::vec::Vec<::core::primitive::u8>, - module_name: ::std::vec::Vec<::core::primitive::u8>, - #[codec(compact)] - crate_major: ::core::primitive::u32, - #[codec(compact)] - min_crate_minor: ::core::primitive::u32, - }, - #[codec(index = 35)] - ReportTransactStatus(runtime_types::staging_xcm::v4::QueryResponseInfo), - #[codec(index = 36)] - ClearTransactStatus, - #[codec(index = 37)] - UniversalOrigin(runtime_types::staging_xcm::v4::junction::Junction), - #[codec(index = 38)] - ExportMessage { - network: runtime_types::staging_xcm::v4::junction::NetworkId, - destination: runtime_types::staging_xcm::v4::junctions::Junctions, - xcm: runtime_types::staging_xcm::v4::Xcm, - }, - #[codec(index = 39)] - LockAsset { - asset: runtime_types::staging_xcm::v4::asset::Asset, - unlocker: runtime_types::staging_xcm::v4::location::Location, - }, - #[codec(index = 40)] - UnlockAsset { - asset: runtime_types::staging_xcm::v4::asset::Asset, - target: runtime_types::staging_xcm::v4::location::Location, - }, - #[codec(index = 41)] - NoteUnlockable { - asset: runtime_types::staging_xcm::v4::asset::Asset, - owner: runtime_types::staging_xcm::v4::location::Location, - }, - #[codec(index = 42)] - RequestUnlock { - asset: runtime_types::staging_xcm::v4::asset::Asset, - locker: runtime_types::staging_xcm::v4::location::Location, - }, - #[codec(index = 43)] - SetFeesMode { - jit_withdraw: ::core::primitive::bool, - }, - #[codec(index = 44)] - SetTopic([::core::primitive::u8; 32usize]), - #[codec(index = 45)] - ClearTopic, - #[codec(index = 46)] - AliasOrigin(runtime_types::staging_xcm::v4::location::Location), - #[codec(index = 47)] - UnpaidExecution { - weight_limit: runtime_types::xcm::v3::WeightLimit, - check_origin: ::core::option::Option< - runtime_types::staging_xcm::v4::location::Location, - >, - }, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct PalletInfo { - #[codec(compact)] - pub index: ::core::primitive::u32, - pub name: runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::core::primitive::u8, - >, - pub module_name: runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::core::primitive::u8, - >, - #[codec(compact)] - pub major: ::core::primitive::u32, - #[codec(compact)] - pub minor: ::core::primitive::u32, - #[codec(compact)] - pub patch: ::core::primitive::u32, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct QueryResponseInfo { - pub destination: runtime_types::staging_xcm::v4::location::Location, - #[codec(compact)] - pub query_id: ::core::primitive::u64, - pub max_weight: runtime_types::sp_weights::weight_v2::Weight, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum Response { - #[codec(index = 0)] - Null, - #[codec(index = 1)] - Assets(runtime_types::staging_xcm::v4::asset::Assets), - #[codec(index = 2)] - ExecutionResult( - ::core::option::Option<( - ::core::primitive::u32, - runtime_types::xcm::v3::traits::Error, - )>, - ), - #[codec(index = 3)] - Version(::core::primitive::u32), - #[codec(index = 4)] - PalletsInfo( - runtime_types::bounded_collections::bounded_vec::BoundedVec< - runtime_types::staging_xcm::v4::PalletInfo, - >, - ), - #[codec(index = 5)] - DispatchResult(runtime_types::xcm::v3::MaybeErrorCode), - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Xcm(pub ::std::vec::Vec); - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Xcm2(pub ::std::vec::Vec); - } } pub mod xcm { use super::runtime_types; pub mod double_encoded { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct DoubleEncoded { - pub encoded: ::std::vec::Vec<::core::primitive::u8>, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct DoubleEncoded2 { - pub encoded: ::std::vec::Vec<::core::primitive::u8>, + pub encoded: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, } } pub mod v2 { @@ -63409,15 +58284,19 @@ pub mod api { pub mod junction { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum Junction { #[codec(index = 0)] Parachain(#[codec(compact)] ::core::primitive::u32), @@ -63443,7 +58322,7 @@ pub mod api { GeneralIndex(#[codec(compact)] ::core::primitive::u128), #[codec(index = 6)] GeneralKey( - runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec1< ::core::primitive::u8, >, ), @@ -63459,31 +58338,39 @@ pub mod api { pub mod multiasset { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum AssetId { #[codec(index = 0)] Concrete(runtime_types::xcm::v2::multilocation::MultiLocation), #[codec(index = 1)] - Abstract(::std::vec::Vec<::core::primitive::u8>), + Abstract(::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum AssetInstance { #[codec(index = 0)] Undefined, @@ -63498,18 +58385,22 @@ pub mod api { #[codec(index = 5)] Array32([::core::primitive::u8; 32usize]), #[codec(index = 6)] - Blob(::std::vec::Vec<::core::primitive::u8>), + Blob(::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum Fungibility { #[codec(index = 0)] Fungible(#[codec(compact)] ::core::primitive::u128), @@ -63517,29 +58408,37 @@ pub mod api { NonFungible(runtime_types::xcm::v2::multiasset::AssetInstance), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct MultiAsset { pub id: runtime_types::xcm::v2::multiasset::AssetId, pub fun: runtime_types::xcm::v2::multiasset::Fungibility, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum MultiAssetFilter { #[codec(index = 0)] Definite(runtime_types::xcm::v2::multiasset::MultiAssets), @@ -63547,28 +58446,38 @@ pub mod api { Wild(runtime_types::xcm::v2::multiasset::WildMultiAsset), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct MultiAssets( - pub ::std::vec::Vec, + pub ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::xcm::v2::multiasset::MultiAsset, + >, ); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum WildFungibility { #[codec(index = 0)] Fungible, @@ -63576,15 +58485,19 @@ pub mod api { NonFungible, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum WildMultiAsset { #[codec(index = 0)] All, @@ -63598,15 +58511,19 @@ pub mod api { pub mod multilocation { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum Junctions { #[codec(index = 0)] Here, @@ -63670,15 +58587,19 @@ pub mod api { ), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct MultiLocation { pub parents: ::core::primitive::u8, pub interior: runtime_types::xcm::v2::multilocation::Junctions, @@ -63687,15 +58608,19 @@ pub mod api { pub mod traits { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum Error { #[codec(index = 0)] Overflow, @@ -63752,21 +58677,25 @@ pub mod api { } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum BodyId { #[codec(index = 0)] Unit, #[codec(index = 1)] Named( - runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec1< ::core::primitive::u8, >, ), @@ -63788,15 +58717,19 @@ pub mod api { Treasury, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum BodyPart { #[codec(index = 0)] Voice, @@ -63828,16 +58761,20 @@ pub mod api { }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum Instruction { + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum Instruction1 { #[codec(index = 0)] WithdrawAsset(runtime_types::xcm::v2::multiasset::MultiAssets), #[codec(index = 1)] @@ -63861,7 +58798,7 @@ pub mod api { TransferReserveAsset { assets: runtime_types::xcm::v2::multiasset::MultiAssets, dest: runtime_types::xcm::v2::multilocation::MultiLocation, - xcm: runtime_types::xcm::v2::Xcm, + xcm: runtime_types::xcm::v2::Xcm1, }, #[codec(index = 6)] Transact { @@ -63918,7 +58855,7 @@ pub mod api { #[codec(compact)] max_assets: ::core::primitive::u32, dest: runtime_types::xcm::v2::multilocation::MultiLocation, - xcm: runtime_types::xcm::v2::Xcm, + xcm: runtime_types::xcm::v2::Xcm1, }, #[codec(index = 15)] ExchangeAsset { @@ -63929,13 +58866,13 @@ pub mod api { InitiateReserveWithdraw { assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter, reserve: runtime_types::xcm::v2::multilocation::MultiLocation, - xcm: runtime_types::xcm::v2::Xcm, + xcm: runtime_types::xcm::v2::Xcm1, }, #[codec(index = 17)] InitiateTeleport { assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter, dest: runtime_types::xcm::v2::multilocation::MultiLocation, - xcm: runtime_types::xcm::v2::Xcm, + xcm: runtime_types::xcm::v2::Xcm1, }, #[codec(index = 18)] QueryHolding { @@ -63954,9 +58891,9 @@ pub mod api { #[codec(index = 20)] RefundSurplus, #[codec(index = 21)] - SetErrorHandler(runtime_types::xcm::v2::Xcm), + SetErrorHandler(runtime_types::xcm::v2::Xcm1), #[codec(index = 22)] - SetAppendix(runtime_types::xcm::v2::Xcm), + SetAppendix(runtime_types::xcm::v2::Xcm1), #[codec(index = 23)] ClearError, #[codec(index = 24)] @@ -63977,15 +58914,19 @@ pub mod api { UnsubscribeVersion, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum Instruction2 { #[codec(index = 0)] WithdrawAsset(runtime_types::xcm::v2::multiasset::MultiAssets), @@ -64010,14 +58951,14 @@ pub mod api { TransferReserveAsset { assets: runtime_types::xcm::v2::multiasset::MultiAssets, dest: runtime_types::xcm::v2::multilocation::MultiLocation, - xcm: runtime_types::xcm::v2::Xcm, + xcm: runtime_types::xcm::v2::Xcm1, }, #[codec(index = 6)] Transact { origin_type: runtime_types::xcm::v2::OriginKind, #[codec(compact)] require_weight_at_most: ::core::primitive::u64, - call: runtime_types::xcm::double_encoded::DoubleEncoded2, + call: runtime_types::xcm::double_encoded::DoubleEncoded, }, #[codec(index = 7)] HrmpNewChannelOpenRequest { @@ -64067,7 +59008,7 @@ pub mod api { #[codec(compact)] max_assets: ::core::primitive::u32, dest: runtime_types::xcm::v2::multilocation::MultiLocation, - xcm: runtime_types::xcm::v2::Xcm, + xcm: runtime_types::xcm::v2::Xcm1, }, #[codec(index = 15)] ExchangeAsset { @@ -64078,13 +59019,13 @@ pub mod api { InitiateReserveWithdraw { assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter, reserve: runtime_types::xcm::v2::multilocation::MultiLocation, - xcm: runtime_types::xcm::v2::Xcm, + xcm: runtime_types::xcm::v2::Xcm1, }, #[codec(index = 17)] InitiateTeleport { assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter, dest: runtime_types::xcm::v2::multilocation::MultiLocation, - xcm: runtime_types::xcm::v2::Xcm, + xcm: runtime_types::xcm::v2::Xcm1, }, #[codec(index = 18)] QueryHolding { @@ -64126,21 +59067,25 @@ pub mod api { UnsubscribeVersion, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum NetworkId { #[codec(index = 0)] Any, #[codec(index = 1)] Named( - runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec1< ::core::primitive::u8, >, ), @@ -64150,15 +59095,19 @@ pub mod api { Kusama, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum OriginKind { #[codec(index = 0)] Native, @@ -64170,15 +59119,19 @@ pub mod api { Xcm, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum Response { #[codec(index = 0)] Null, @@ -64195,15 +59148,19 @@ pub mod api { Version(::core::primitive::u32), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum WeightLimit { #[codec(index = 0)] Unlimited, @@ -64211,42 +59168,62 @@ pub mod api { Limited(#[codec(compact)] ::core::primitive::u64), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Xcm(pub ::std::vec::Vec); + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct Xcm1( + pub ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::xcm::v2::Instruction1, + >, + ); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Xcm2(pub ::std::vec::Vec); + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct Xcm2( + pub ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::xcm::v2::Instruction2, + >, + ); } pub mod v3 { use super::runtime_types; pub mod junction { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum BodyId { #[codec(index = 0)] Unit, @@ -64270,15 +59247,19 @@ pub mod api { Treasury, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum BodyPart { #[codec(index = 0)] Voice, @@ -64310,15 +59291,19 @@ pub mod api { }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum Junction { #[codec(index = 0)] Parachain(#[codec(compact)] ::core::primitive::u32), @@ -64361,15 +59346,19 @@ pub mod api { GlobalConsensus(runtime_types::xcm::v3::junction::NetworkId), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum NetworkId { #[codec(index = 0)] ByGenesis([::core::primitive::u8; 32usize]), @@ -64397,22 +59386,24 @@ pub mod api { BitcoinCore, #[codec(index = 9)] BitcoinCash, - #[codec(index = 10)] - PolkadotBulletin, } } pub mod junctions { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum Junctions { #[codec(index = 0)] Here, @@ -64479,15 +59470,19 @@ pub mod api { pub mod multiasset { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum AssetId { #[codec(index = 0)] Concrete(runtime_types::staging_xcm::v3::multilocation::MultiLocation), @@ -64495,15 +59490,19 @@ pub mod api { Abstract([::core::primitive::u8; 32usize]), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum AssetInstance { #[codec(index = 0)] Undefined, @@ -64519,15 +59518,19 @@ pub mod api { Array32([::core::primitive::u8; 32usize]), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum Fungibility { #[codec(index = 0)] Fungible(#[codec(compact)] ::core::primitive::u128), @@ -64535,29 +59538,37 @@ pub mod api { NonFungible(runtime_types::xcm::v3::multiasset::AssetInstance), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct MultiAsset { pub id: runtime_types::xcm::v3::multiasset::AssetId, pub fun: runtime_types::xcm::v3::multiasset::Fungibility, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum MultiAssetFilter { #[codec(index = 0)] Definite(runtime_types::xcm::v3::multiasset::MultiAssets), @@ -64565,28 +59576,38 @@ pub mod api { Wild(runtime_types::xcm::v3::multiasset::WildMultiAsset), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct MultiAssets( - pub ::std::vec::Vec, + pub ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::xcm::v3::multiasset::MultiAsset, + >, ); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum WildFungibility { #[codec(index = 0)] Fungible, @@ -64594,15 +59615,19 @@ pub mod api { NonFungible, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum WildMultiAsset { #[codec(index = 0)] All, @@ -64625,15 +59650,19 @@ pub mod api { pub mod traits { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum Error { #[codec(index = 0)] Overflow, @@ -64716,18 +59745,47 @@ pub mod api { #[codec(index = 39)] ExceedsStackLimit, } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum Outcome { + #[codec(index = 0)] + Complete(runtime_types::sp_weights::weight_v2::Weight), + #[codec(index = 1)] + Incomplete( + runtime_types::sp_weights::weight_v2::Weight, + runtime_types::xcm::v3::traits::Error, + ), + #[codec(index = 2)] + Error(runtime_types::xcm::v3::traits::Error), + } } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum Instruction { + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum Instruction1 { #[codec(index = 0)] WithdrawAsset(runtime_types::xcm::v3::multiasset::MultiAssets), #[codec(index = 1)] @@ -64753,7 +59811,7 @@ pub mod api { TransferReserveAsset { assets: runtime_types::xcm::v3::multiasset::MultiAssets, dest: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - xcm: runtime_types::xcm::v3::Xcm, + xcm: runtime_types::xcm::v3::Xcm1, }, #[codec(index = 6)] Transact { @@ -64799,7 +59857,7 @@ pub mod api { DepositReserveAsset { assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter, dest: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - xcm: runtime_types::xcm::v3::Xcm, + xcm: runtime_types::xcm::v3::Xcm1, }, #[codec(index = 15)] ExchangeAsset { @@ -64811,13 +59869,13 @@ pub mod api { InitiateReserveWithdraw { assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter, reserve: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - xcm: runtime_types::xcm::v3::Xcm, + xcm: runtime_types::xcm::v3::Xcm1, }, #[codec(index = 17)] InitiateTeleport { assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter, dest: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - xcm: runtime_types::xcm::v3::Xcm, + xcm: runtime_types::xcm::v3::Xcm1, }, #[codec(index = 18)] ReportHolding { @@ -64832,9 +59890,9 @@ pub mod api { #[codec(index = 20)] RefundSurplus, #[codec(index = 21)] - SetErrorHandler(runtime_types::xcm::v3::Xcm), + SetErrorHandler(runtime_types::xcm::v3::Xcm1), #[codec(index = 22)] - SetAppendix(runtime_types::xcm::v3::Xcm), + SetAppendix(runtime_types::xcm::v3::Xcm1), #[codec(index = 23)] ClearError, #[codec(index = 24)] @@ -64873,15 +59931,17 @@ pub mod api { ExpectTransactStatus(runtime_types::xcm::v3::MaybeErrorCode), #[codec(index = 33)] QueryPallet { - module_name: ::std::vec::Vec<::core::primitive::u8>, + module_name: + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, response_info: runtime_types::xcm::v3::QueryResponseInfo, }, #[codec(index = 34)] ExpectPallet { #[codec(compact)] index: ::core::primitive::u32, - name: ::std::vec::Vec<::core::primitive::u8>, - module_name: ::std::vec::Vec<::core::primitive::u8>, + name: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + module_name: + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, #[codec(compact)] crate_major: ::core::primitive::u32, #[codec(compact)] @@ -64897,7 +59957,7 @@ pub mod api { ExportMessage { network: runtime_types::xcm::v3::junction::NetworkId, destination: runtime_types::xcm::v3::junctions::Junctions, - xcm: runtime_types::xcm::v3::Xcm, + xcm: runtime_types::xcm::v3::Xcm1, }, #[codec(index = 39)] LockAsset { @@ -64938,15 +59998,19 @@ pub mod api { }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum Instruction2 { #[codec(index = 0)] WithdrawAsset(runtime_types::xcm::v3::multiasset::MultiAssets), @@ -64973,13 +60037,13 @@ pub mod api { TransferReserveAsset { assets: runtime_types::xcm::v3::multiasset::MultiAssets, dest: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - xcm: runtime_types::xcm::v3::Xcm, + xcm: runtime_types::xcm::v3::Xcm1, }, #[codec(index = 6)] Transact { origin_kind: runtime_types::xcm::v2::OriginKind, require_weight_at_most: runtime_types::sp_weights::weight_v2::Weight, - call: runtime_types::xcm::double_encoded::DoubleEncoded2, + call: runtime_types::xcm::double_encoded::DoubleEncoded, }, #[codec(index = 7)] HrmpNewChannelOpenRequest { @@ -65019,7 +60083,7 @@ pub mod api { DepositReserveAsset { assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter, dest: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - xcm: runtime_types::xcm::v3::Xcm, + xcm: runtime_types::xcm::v3::Xcm1, }, #[codec(index = 15)] ExchangeAsset { @@ -65031,13 +60095,13 @@ pub mod api { InitiateReserveWithdraw { assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter, reserve: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - xcm: runtime_types::xcm::v3::Xcm, + xcm: runtime_types::xcm::v3::Xcm1, }, #[codec(index = 17)] InitiateTeleport { assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter, dest: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - xcm: runtime_types::xcm::v3::Xcm, + xcm: runtime_types::xcm::v3::Xcm1, }, #[codec(index = 18)] ReportHolding { @@ -65093,15 +60157,17 @@ pub mod api { ExpectTransactStatus(runtime_types::xcm::v3::MaybeErrorCode), #[codec(index = 33)] QueryPallet { - module_name: ::std::vec::Vec<::core::primitive::u8>, + module_name: + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, response_info: runtime_types::xcm::v3::QueryResponseInfo, }, #[codec(index = 34)] ExpectPallet { #[codec(compact)] index: ::core::primitive::u32, - name: ::std::vec::Vec<::core::primitive::u8>, - module_name: ::std::vec::Vec<::core::primitive::u8>, + name: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + module_name: + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, #[codec(compact)] crate_major: ::core::primitive::u32, #[codec(compact)] @@ -65117,7 +60183,7 @@ pub mod api { ExportMessage { network: runtime_types::xcm::v3::junction::NetworkId, destination: runtime_types::xcm::v3::junctions::Junctions, - xcm: runtime_types::xcm::v3::Xcm, + xcm: runtime_types::xcm::v3::Xcm1, }, #[codec(index = 39)] LockAsset { @@ -65158,48 +60224,56 @@ pub mod api { }, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum MaybeErrorCode { #[codec(index = 0)] Success, #[codec(index = 1)] Error( - runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::bounded_collections::bounded_vec::BoundedVec5< ::core::primitive::u8, >, ), #[codec(index = 2)] TruncatedError( - runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::bounded_collections::bounded_vec::BoundedVec5< ::core::primitive::u8, >, ), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct PalletInfo { #[codec(compact)] pub index: ::core::primitive::u32, - pub name: runtime_types::bounded_collections::bounded_vec::BoundedVec< + pub name: runtime_types::bounded_collections::bounded_vec::BoundedVec5< ::core::primitive::u8, >, - pub module_name: runtime_types::bounded_collections::bounded_vec::BoundedVec< + pub module_name: runtime_types::bounded_collections::bounded_vec::BoundedVec5< ::core::primitive::u8, >, #[codec(compact)] @@ -65210,15 +60284,19 @@ pub mod api { pub patch: ::core::primitive::u32, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct QueryResponseInfo { pub destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, #[codec(compact)] @@ -65226,15 +60304,19 @@ pub mod api { pub max_weight: runtime_types::sp_weights::weight_v2::Weight, } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum Response { #[codec(index = 0)] Null, @@ -65251,7 +60333,7 @@ pub mod api { Version(::core::primitive::u32), #[codec(index = 4)] PalletsInfo( - runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::bounded_collections::bounded_vec::BoundedVec4< runtime_types::xcm::v3::PalletInfo, >, ), @@ -65259,15 +60341,19 @@ pub mod api { DispatchResult(runtime_types::xcm::v3::MaybeErrorCode), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum WeightLimit { #[codec(index = 0)] Unlimited, @@ -65275,133 +60361,137 @@ pub mod api { Limited(runtime_types::sp_weights::weight_v2::Weight), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Xcm(pub ::std::vec::Vec); + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct Xcm1( + pub ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::xcm::v3::Instruction1, + >, + ); #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Xcm2(pub ::std::vec::Vec); + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct Xcm2( + pub ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::xcm::v3::Instruction2, + >, + ); } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum VersionedAssetId { #[codec(index = 3)] V3(runtime_types::xcm::v3::multiasset::AssetId), - #[codec(index = 4)] - V4(runtime_types::staging_xcm::v4::asset::AssetId), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum VersionedAssets { + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + pub enum VersionedMultiAssets { #[codec(index = 1)] V2(runtime_types::xcm::v2::multiasset::MultiAssets), #[codec(index = 3)] V3(runtime_types::xcm::v3::multiasset::MultiAssets), - #[codec(index = 4)] - V4(runtime_types::staging_xcm::v4::asset::Assets), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum VersionedLocation { + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + pub enum VersionedMultiLocation { #[codec(index = 1)] V2(runtime_types::xcm::v2::multilocation::MultiLocation), #[codec(index = 3)] V3(runtime_types::staging_xcm::v3::multilocation::MultiLocation), - #[codec(index = 4)] - V4(runtime_types::staging_xcm::v4::location::Location), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum VersionedResponse { #[codec(index = 2)] V2(runtime_types::xcm::v2::Response), #[codec(index = 3)] V3(runtime_types::xcm::v3::Response), - #[codec(index = 4)] - V4(runtime_types::staging_xcm::v4::Response), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum VersionedXcm { + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + pub enum VersionedXcm1 { #[codec(index = 2)] - V2(runtime_types::xcm::v2::Xcm), + V2(runtime_types::xcm::v2::Xcm1), #[codec(index = 3)] - V3(runtime_types::xcm::v3::Xcm), - #[codec(index = 4)] - V4(runtime_types::staging_xcm::v4::Xcm), + V3(runtime_types::xcm::v3::Xcm1), } #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, Debug, )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum VersionedXcm2 { #[codec(index = 2)] V2(runtime_types::xcm::v2::Xcm2), #[codec(index = 3)] V3(runtime_types::xcm::v3::Xcm2), - #[codec(index = 4)] - V4(runtime_types::staging_xcm::v4::Xcm2), } } } diff --git a/testing/integration-tests/src/full_client/frame/contracts.rs b/testing/integration-tests/src/full_client/frame/contracts.rs index 080c456ebb..a91732ead4 100644 --- a/testing/integration-tests/src/full_client/frame/contracts.rs +++ b/testing/integration-tests/src/full_client/frame/contracts.rs @@ -102,7 +102,6 @@ impl ContractsTestContext { .find_first::()? .ok_or_else(|| Error::Other("Failed to find a ExtrinsicSuccess event".into()))?; - tracing::info!(" Block hash: {:?}", events.block_hash()); tracing::info!(" Code hash: {:?}", code_stored.code_hash); tracing::info!(" Contract address: {:?}", instantiated.contract); Ok((code_stored.code_hash, instantiated.contract)) diff --git a/testing/no-std-tests/Cargo.lock b/testing/no-std-tests/Cargo.lock index 5414290a17..108c640517 100644 --- a/testing/no-std-tests/Cargo.lock +++ b/testing/no-std-tests/Cargo.lock @@ -3,10 +3,25 @@ version = 3 [[package]] -name = "ahash" -version = "0.8.7" +name = "addr2line" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "once_cell", @@ -20,6 +35,12 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" +[[package]] +name = "anyhow" +version = "1.0.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247" + [[package]] name = "arrayref" version = "0.3.7" @@ -32,6 +53,76 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +[[package]] +name = "async-lock" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-trait" +version = "0.1.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "461abc97219de0eaaf81fe3ef974a540158f3d079c2ab200f891f1a2ef201e85" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "backtrace" +version = "0.3.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95d8e92cac0961e91dbd517496b00f7e9b92363dbe6d42c3198268323798860c" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base58" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6107fe1be6682a68940da878d9e9f5e90ca5745b3dec9fd1bb393c8777d4f581" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "beef" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" +dependencies = [ + "serde", +] + [[package]] name = "bip39" version = "2.0.0" @@ -47,6 +138,33 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90064b8dee6815a6470d60bad07bbbaee885c0e12d04177138fa3291a01b7bc4" +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest 0.10.7", +] + [[package]] name = "blake2b_simd" version = "1.0.2" @@ -58,6 +176,15 @@ dependencies = [ "constant_time_eq", ] +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -79,12 +206,33 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +[[package]] +name = "bytes" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" + +[[package]] +name = "cc" +version = "1.0.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" + [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "concurrent-queue" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "constant_time_eq" version = "0.3.0" @@ -97,6 +245,22 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + [[package]] name = "cpufeatures" version = "0.2.12" @@ -106,6 +270,18 @@ dependencies = [ "libc", ] +[[package]] +name = "crossbeam-utils" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + [[package]] name = "crypto-common" version = "0.1.6" @@ -125,7 +301,7 @@ dependencies = [ "cfg-if", "cpufeatures", "curve25519-dalek-derive", - "digest", + "digest 0.10.7", "fiat-crypto", "platforms", "rustc_version", @@ -141,7 +317,88 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.53", +] + +[[package]] +name = "darling" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" +dependencies = [ + "darling_core 0.14.4", + "darling_macro 0.14.4", +] + +[[package]] +name = "darling" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" +dependencies = [ + "darling_core 0.20.8", + "darling_macro 0.20.8", +] + +[[package]] +name = "darling_core" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 1.0.109", +] + +[[package]] +name = "darling_core" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.53", +] + +[[package]] +name = "darling_macro" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" +dependencies = [ + "darling_core 0.14.4", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "darling_macro" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" +dependencies = [ + "darling_core 0.20.8", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] @@ -157,17 +414,32 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + [[package]] name = "digest" version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer", + "block-buffer 0.10.4", "crypto-common", "subtle", ] +[[package]] +name = "either" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" + [[package]] name = "equivalent" version = "1.0.1" @@ -175,10 +447,66 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] -name = "fiat-crypto" -version = "0.2.6" +name = "event-listener" +version = "4.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1676f435fc1dadde4d03e43f5d62b259e1ce5f40bd4ffb21db2b42ebe59c1382" +checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" +dependencies = [ + "event-listener", + "pin-project-lite", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c007b1ae3abe1cb6f85a16305acd418b7ca6343b953633fee2b76d8f108b830f" + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "static_assertions", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "frame-metadata" +version = "15.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "878babb0b136e731cc77ec2fd883ff02745ff21e6fb662729953d44923df009c" +dependencies = [ + "cfg-if", + "parity-scale-codec", + "scale-info", +] [[package]] name = "frame-metadata" @@ -191,6 +519,83 @@ dependencies = [ "scale-info", ] +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-timer" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -201,6 +606,17 @@ dependencies = [ "version_check", ] +[[package]] +name = "getrandom" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + [[package]] name = "getrandom_or_panic" version = "0.0.3" @@ -210,6 +626,31 @@ dependencies = [ "rand_core", ] +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "h2" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fbd2820c5e49886948654ab546d0688ff24530286bdcf8fca3cefb16d4618eb" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "hashbrown" version = "0.14.3" @@ -220,6 +661,18 @@ dependencies = [ "allocator-api2", ] +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + [[package]] name = "hex" version = "0.4.3" @@ -232,7 +685,115 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest", + "digest 0.10.7", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "0.14.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +dependencies = [ + "futures-util", + "http", + "hyper", + "log", + "rustls 0.21.10", + "rustls-native-certs 0.6.3", + "tokio", + "tokio-rustls 0.24.1", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-serde" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +dependencies = [ + "serde", ] [[package]] @@ -248,14 +809,110 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.1.0" +version = "2.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4" dependencies = [ "equivalent", "hashbrown", ] +[[package]] +name = "itoa" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" + +[[package]] +name = "jsonrpsee" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cdbb7cb6f3ba28f5b212dd250ab4483105efc3e381f5c8bb90340f14f0a2cc3" +dependencies = [ + "jsonrpsee-client-transport", + "jsonrpsee-core", + "jsonrpsee-http-client", + "jsonrpsee-types", +] + +[[package]] +name = "jsonrpsee-client-transport" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ab2e14e727d2faf388c99d9ca5210566ed3b044f07d92c29c3611718d178380" +dependencies = [ + "futures-util", + "http", + "jsonrpsee-core", + "pin-project", + "rustls-native-certs 0.7.0", + "rustls-pki-types", + "soketto", + "thiserror", + "tokio", + "tokio-rustls 0.25.0", + "tokio-util", + "tracing", + "url", +] + +[[package]] +name = "jsonrpsee-core" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71962a1c49af43adf81d337e4ebc93f3c915faf6eccaa14d74e255107dfd7723" +dependencies = [ + "anyhow", + "async-lock", + "async-trait", + "beef", + "futures-timer", + "futures-util", + "hyper", + "jsonrpsee-types", + "pin-project", + "rustc-hash", + "serde", + "serde_json", + "thiserror", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "jsonrpsee-http-client" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c13987da51270bda2c1c9b40c19be0fe9b225c7a0553963d8f17e683a50ce84" +dependencies = [ + "async-trait", + "hyper", + "hyper-rustls", + "jsonrpsee-core", + "jsonrpsee-types", + "serde", + "serde_json", + "thiserror", + "tokio", + "tower", + "tracing", + "url", +] + +[[package]] +name = "jsonrpsee-types" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e53c72de6cd2ad6ac1aa6e848206ef8b736f92ed02354959130373dfa5b3cbd" +dependencies = [ + "anyhow", + "beef", + "serde", + "serde_json", + "thiserror", +] + [[package]] name = "keccak" version = "0.1.5" @@ -267,15 +924,21 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.152" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "libc_alloc" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a835c038b748123287f9fb1743d565e7c635879997f43c345a18a026690364e" +checksum = "7581282928bc99698341d1de7590964c28db747c164eaac9409432a3eaed098a" + +[[package]] +name = "log" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "memchr" @@ -295,12 +958,63 @@ dependencies = [ "zeroize", ] +[[package]] +name = "miniz_oxide" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.48.0", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "object" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + [[package]] name = "once_cell" version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + [[package]] name = "parity-scale-codec" version = "3.6.9" @@ -308,9 +1022,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "881331e34fa842a2fb61cc2db9643a8fedc615e47cfcc52597d1af0db9a7e8fe" dependencies = [ "arrayvec", + "bitvec", "byte-slice-cast", "impl-trait-for-tuples", "parity-scale-codec-derive", + "serde", ] [[package]] @@ -319,27 +1035,90 @@ version = "3.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be30eaf4b0a9fba5336683b38de57bb86d179a35862ba6bfcf57625d006bde5b" dependencies = [ - "proc-macro-crate 2.0.1", + "proc-macro-crate 2.0.2", "proc-macro2", "quote", "syn 1.0.109", ] +[[package]] +name = "parking" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" + [[package]] name = "pbkdf2" version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" dependencies = [ - "digest", + "digest 0.10.7", ] +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + [[package]] name = "platforms" version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "626dec3cac7cc0e1577a2ec3fc496277ec2baa084bebad95bb6fdbfae235f84c" +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec", + "impl-serde", + "scale-info", + "uint", +] + [[package]] name = "proc-macro-crate" version = "1.3.1" @@ -352,19 +1131,43 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97dc5fea232fc28d2f597b37c4876b348a40e33f3b02cc975c8d006d78d94b1a" +checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" dependencies = [ "toml_datetime", "toml_edit 0.20.2", ] [[package]] -name = "proc-macro2" -version = "1.0.78" +name = "proc-macro-error" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" dependencies = [ "unicode-ident", ] @@ -378,11 +1181,41 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + [[package]] name = "rand_core" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] [[package]] name = "regex" @@ -409,6 +1242,33 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + [[package]] name = "rustc_version" version = "0.4.0" @@ -418,23 +1278,195 @@ dependencies = [ "semver", ] +[[package]] +name = "rustls" +version = "0.21.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" +dependencies = [ + "log", + "ring", + "rustls-webpki 0.101.7", + "sct", +] + +[[package]] +name = "rustls" +version = "0.22.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e87c9956bd9807afa1f77e0f7594af32566e830e088a5576d27c5b6f30f49d41" +dependencies = [ + "log", + "ring", + "rustls-pki-types", + "rustls-webpki 0.102.2", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile 1.0.4", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-native-certs" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fb85efa936c42c6d5fc28d2629bb51e4b2f4b8a5211e297d599cc5a093792" +dependencies = [ + "openssl-probe", + "rustls-pemfile 2.1.1", + "rustls-pki-types", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-pemfile" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f48172685e6ff52a556baa527774f61fcaa884f59daf3375c62a3f1cd2549dab" +dependencies = [ + "base64 0.21.7", + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ede67b28608b4c60685c7d54122d4400d90f62b40caee7700e700380a390fa8" + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "rustls-webpki" +version = "0.102.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "ryu" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" + +[[package]] +name = "scale-bits" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "662d10dcd57b1c2a3c41c9cf68f71fb09747ada1ea932ad961aca7e2ca28315f" +dependencies = [ + "parity-scale-codec", + "scale-info", + "scale-type-resolver", + "serde", +] + +[[package]] +name = "scale-decode" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afc79ba56a1c742f5aeeed1f1801f3edf51f7e818f0a54582cac6f131364ea7b" +dependencies = [ + "derive_more", + "parity-scale-codec", + "primitive-types", + "scale-bits", + "scale-decode-derive", + "scale-type-resolver", + "smallvec", +] + +[[package]] +name = "scale-decode-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5398fdb3c7bea3cb419bac4983aadacae93fe1a7b5f693f4ebd98c3821aad7a5" +dependencies = [ + "darling 0.14.4", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "scale-encode" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "628800925a33794fb5387781b883b5e14d130fece9af5a63613867b8de07c5c7" +dependencies = [ + "derive_more", + "parity-scale-codec", + "primitive-types", + "scale-bits", + "scale-encode-derive", + "scale-type-resolver", + "smallvec", +] + +[[package]] +name = "scale-encode-derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a304e1af7cdfbe7a24e08b012721456cc8cecdedadc14b3d10513eada63233c" +dependencies = [ + "darling 0.14.4", + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "scale-info" version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2ef2175c2907e7c8bc0a9c3f86aeb5ec1f3b275300ad58a44d0c3ae379a5e52e" dependencies = [ + "bitvec", "cfg-if", "derive_more", "parity-scale-codec", "scale-info-derive", + "serde", ] [[package]] name = "scale-info-derive" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abf2c68b89cafb3b8d918dd07b42be0da66ff202cf1155c5739a4e0c1ea0dc19" +checksum = "634d9b8eb8fd61c5cdd3390d9b2132300a7e7618955b98b8416f118c1b4e144f" dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", @@ -442,6 +1474,56 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "scale-type-resolver" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10b800069bfd43374e0f96f653e0d46882a2cb16d6d961ac43bea80f26c76843" +dependencies = [ + "scale-info", + "smallvec", +] + +[[package]] +name = "scale-typegen" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5959feb200786ea66e6357d4da008486ef46e7c5a49af0f2fc4c6ce92a3f420e" +dependencies = [ + "proc-macro2", + "quote", + "scale-info", + "smallvec", + "syn 2.0.53", + "thiserror", +] + +[[package]] +name = "scale-value" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c07ccfee963104335c971aaf8b7b0e749be8569116322df23f1f75c4ca9e4a28" +dependencies = [ + "derive_more", + "either", + "frame-metadata 15.1.0", + "parity-scale-codec", + "scale-bits", + "scale-decode", + "scale-encode", + "scale-info", + "scale-type-resolver", +] + +[[package]] +name = "schannel" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +dependencies = [ + "windows-sys 0.52.0", +] + [[package]] name = "schnorrkel" version = "0.11.4" @@ -459,6 +1541,16 @@ dependencies = [ "zeroize", ] +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "secrecy" version = "0.8.0" @@ -469,10 +1561,77 @@ dependencies = [ ] [[package]] -name = "semver" -version = "1.0.21" +name = "security-framework" +version = "2.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" + +[[package]] +name = "serde" +version = "1.0.197" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.197" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "serde_json" +version = "1.0.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha-1" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] [[package]] name = "sha2" @@ -482,7 +1641,7 @@ checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", - "digest", + "digest 0.10.7", ] [[package]] @@ -491,10 +1650,50 @@ version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" dependencies = [ - "digest", + "digest 0.10.7", "keccak", ] +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "socket2" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "soketto" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" +dependencies = [ + "base64 0.13.1", + "bytes", + "futures", + "httparse", + "log", + "rand", + "sha-1", +] + [[package]] name = "sp-crypto-hashing" version = "0.1.0" @@ -503,40 +1702,112 @@ checksum = "bc9927a7f81334ed5b8a98a4a978c81324d12bd9713ec76b5c68fd410174c5eb" dependencies = [ "blake2b_simd", "byteorder", - "digest", + "digest 0.10.7", "sha2", "sha3", "twox-hash", ] +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + [[package]] name = "static_assertions" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + [[package]] name = "subtle" version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +[[package]] +name = "subxt-codegen" +version = "0.35.0" +dependencies = [ + "frame-metadata 16.0.0", + "heck", + "hex", + "jsonrpsee", + "parity-scale-codec", + "proc-macro2", + "quote", + "scale-info", + "scale-typegen", + "subxt-metadata", + "syn 2.0.53", + "thiserror", + "tokio", +] + +[[package]] +name = "subxt-core" +version = "0.35.0" +dependencies = [ + "base58", + "blake2", + "derivative", + "derive_more", + "frame-metadata 16.0.0", + "hashbrown", + "hex", + "impl-serde", + "parity-scale-codec", + "primitive-types", + "scale-bits", + "scale-decode", + "scale-encode", + "scale-info", + "scale-value", + "serde", + "serde_json", + "sp-crypto-hashing", + "subxt-metadata", + "tracing", +] + [[package]] name = "subxt-core-no-std-tests" version = "0.0.0" dependencies = [ "libc_alloc", "parity-scale-codec", + "subxt-core", + "subxt-macro", "subxt-metadata", "subxt-signer", ] +[[package]] +name = "subxt-macro" +version = "0.35.0" +dependencies = [ + "darling 0.20.8", + "parity-scale-codec", + "proc-macro-error", + "quote", + "scale-typegen", + "subxt-codegen", + "syn 2.0.53", +] + [[package]] name = "subxt-metadata" version = "0.35.0" dependencies = [ "derive_more", - "frame-metadata", + "frame-metadata 16.0.0", "hashbrown", "parity-scale-codec", "scale-info", @@ -559,6 +1830,7 @@ dependencies = [ "secrecy", "sha2", "sp-crypto-hashing", + "subxt-core", "zeroize", ] @@ -575,15 +1847,131 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.48" +version = "2.0.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "thiserror" +version = "1.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "pin-project-lite", + "socket2", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls 0.21.10", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" +dependencies = [ + "rustls 0.22.2", + "rustls-pki-types", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +dependencies = [ + "bytes", + "futures-core", + "futures-io", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + [[package]] name = "toml_datetime" version = "0.6.3" @@ -612,6 +2000,71 @@ dependencies = [ "winnow", ] +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + [[package]] name = "twox-hash" version = "1.6.3" @@ -619,7 +2072,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" dependencies = [ "cfg-if", - "digest", + "digest 0.10.7", "static_assertions", ] @@ -629,12 +2082,56 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + [[package]] name = "unicode-ident" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + [[package]] name = "version_check" version = "0.9.4" @@ -642,14 +2139,170 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] -name = "winnow" -version = "0.5.34" +name = "want" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7cf47b659b318dccbd69cc4797a39ae128f533dce7902a1096044d1967b9c16" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.4", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +dependencies = [ + "windows_aarch64_gnullvm 0.52.4", + "windows_aarch64_msvc 0.52.4", + "windows_i686_gnu 0.52.4", + "windows_i686_msvc 0.52.4", + "windows_x86_64_gnu 0.52.4", + "windows_x86_64_gnullvm 0.52.4", + "windows_x86_64_msvc 0.52.4", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" dependencies = [ "memchr", ] +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + [[package]] name = "zerocopy" version = "0.7.32" @@ -667,7 +2320,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.53", ] [[package]] @@ -687,5 +2340,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.53", ] diff --git a/testing/no-std-tests/Cargo.toml b/testing/no-std-tests/Cargo.toml index 8e53afbb0a..a4c2e7f130 100644 --- a/testing/no-std-tests/Cargo.toml +++ b/testing/no-std-tests/Cargo.toml @@ -7,7 +7,9 @@ resolver = "2" [dependencies] subxt-metadata = { path = "../../metadata", default-features = false } -subxt-signer = { path = "../../signer", default-features = false, features = ["sr25519"] } +subxt-core = { path = "../../core", default-features = false } +subxt-signer = { path = "../../signer", default-features = false, features = ["subxt", "sr25519"] } +subxt-macro = { path = "../../macro" } codec = { package = "parity-scale-codec", version = "3.6.9", default-features = false, features = ["derive"] } libc_alloc = { version = "1.0.6" } diff --git a/testing/no-std-tests/src/main.rs b/testing/no-std-tests/src/main.rs index 479ff581b3..292b1b9576 100644 --- a/testing/no-std-tests/src/main.rs +++ b/testing/no-std-tests/src/main.rs @@ -57,4 +57,14 @@ fn compile_test() { // let _signature = keypair.sign(message); // let _public_key = keypair.public_key(); // + + // Subxt Core compiles: + let _era = subxt_core::utils::Era::Immortal; + } + +#[subxt_macro::subxt( + runtime_metadata_path = "../../artifacts/polkadot_metadata_full.scale", + crate="::subxt_core" +)] +pub mod polkadot{} \ No newline at end of file diff --git a/testing/ui-tests/src/correct/custom_values.rs b/testing/ui-tests/src/correct/custom_values.rs index ae7a70323a..65487f7ee9 100644 --- a/testing/ui-tests/src/correct/custom_values.rs +++ b/testing/ui-tests/src/correct/custom_values.rs @@ -35,10 +35,8 @@ fn construct_offline_client() -> OfflineClient { let bytes = hex::decode(h).unwrap(); H256::from_slice(&bytes) }; - let runtime_version = subxt::backend::RuntimeVersion { - spec_version: 9370, - transaction_version: 20, - }; + let runtime_version = subxt::client::RuntimeVersion::new(9370, 20); + let metadata = { let bytes = std::fs::read("../../../../artifacts/metadata_with_custom_values.scale").unwrap(); Metadata::decode(&mut &*bytes).unwrap() diff --git a/testing/ui-tests/src/lib.rs b/testing/ui-tests/src/lib.rs index 06522ff9b0..9e2619f18f 100644 --- a/testing/ui-tests/src/lib.rs +++ b/testing/ui-tests/src/lib.rs @@ -84,7 +84,7 @@ fn ui_tests() { } // Validation should succeed when metadata we codegen from is stripped and - // client metadata is full: + // client state is full: { let mut metadata = MetadataTestRunner::load_metadata(); metadata.retain(