From 98cffea22d67043ce043868b4423769a8ef928dd Mon Sep 17 00:00:00 2001 From: Stefanie Doll Date: Mon, 22 Jul 2019 22:58:21 +0200 Subject: [PATCH] Add tests for latest polkadot metadata v6 encoding (#1159) * Added tests for polkadot metadata v6 encoding * added rpc access & ports to docker-compose --- docker-compose.yml | 14 +- .../types/src/Metadata/v6/Metadata.spec.ts | 10 + .../src/Metadata/v6/latest.polkadot.v6.json | 4086 +++++++++++++++++ .../types/src/Metadata/v6/static.polkadot.ts | 7 + 4 files changed, 4115 insertions(+), 2 deletions(-) create mode 100644 packages/types/src/Metadata/v6/latest.polkadot.v6.json create mode 100644 packages/types/src/Metadata/v6/static.polkadot.ts diff --git a/docker-compose.yml b/docker-compose.yml index 830f99cc0d..d97f5b07db 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,7 +8,7 @@ # Please follow the steps described here (including the prerequisites): https://docs.docker.com/compose/install/ # # Usage: -# 1. BUILD: Run `docker-compose up -d` to run docker-compose in detached mode. This will run the substrate and polkadot containers in the background. +# 1. BUILD: Run `docker-compose pull && docker-compose up -d` to pull the latest docker imaged and run docker-compose in detached mode. This will run the substrate and polkadot containers in the background. # 2. INFO: Run `docker ps` to get a list of Docker containers running in the background including their mapped ports on localhost # 3. TEST: Run `docker-compose logs -f js-api-tests` to run the API tests and print the logs # 4. QUIT: Run `docker-compose down` to stop and remove all running containers. @@ -30,51 +30,61 @@ services: image: parity/substrate:latest ports: - "9945:9944" + - "9935:9933" networks: - internet command: - "--dev" - "--ws-external" + - "--rpc-external" substrate-1.0: - image: parity/substrate:v1.0.0 + image: parity/substrate:v1.0.0 ports: - "9946:9944" + - "9936:9933" networks: - internet command: - "--dev" - "--ws-external" + - "--rpc-external" substrate-2.0: image: parity/substrate:2.0.0-b65c315a1 ports: - "9947:9944" + - "9937:9933" networks: - internet command: - "--dev" - "--ws-external" + - "--rpc-external" pokadot-master: image: parity/polkadot:latest ports: - "9948:9944" + - "9938:9933" networks: - internet command: - "--dev" - "--ws-external" + - "--rpc-external" pokadot-alexander: image: parity/polkadot:v0.4.4 ports: - "9949:9944" + - "9939:9933" networks: - internet command: - "--dev" - "--ws-external" + - "--rpc-external" # This is the container running the API tests js-api-tests: diff --git a/packages/types/src/Metadata/v6/Metadata.spec.ts b/packages/types/src/Metadata/v6/Metadata.spec.ts index 24cbbd2012..9b495f0ce4 100644 --- a/packages/types/src/Metadata/v6/Metadata.spec.ts +++ b/packages/types/src/Metadata/v6/Metadata.spec.ts @@ -2,7 +2,9 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. +import polkadotJson from './latest.polkadot.v6.json'; import substrateJson from './latest.substrate.v6.json'; +import polkadotData from './static.polkadot'; import substrateData from './static'; import { decodeLatestSubstrate, defaultValues, toV6 } from '../util/testUtil'; @@ -13,3 +15,11 @@ describe('MetadataV6 (substrate)', (): void => { defaultValues(substrateData); }); + +describe('MetadataV6 (polkadot)', (): void => { + decodeLatestSubstrate(6, polkadotData, polkadotJson); + + toV6(6, polkadotData); + + defaultValues(polkadotData); +}); diff --git a/packages/types/src/Metadata/v6/latest.polkadot.v6.json b/packages/types/src/Metadata/v6/latest.polkadot.v6.json new file mode 100644 index 0000000000..55a2fa73bf --- /dev/null +++ b/packages/types/src/Metadata/v6/latest.polkadot.v6.json @@ -0,0 +1,4086 @@ +{ + "magicNumber": 1635018093, + "metadata": { + "MetadataV6": { + "modules": [ + { + "name": "system", + "prefix": "System", + "storage": [ + { + "name": "AccountNonce", + "modifier": "Default", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "AccountId", + "value": "Index", + "isLinked": false + } + }, + "fallback": "0x0000000000000000", + "documentation": [ + " Extrinsics nonce for accounts." + ] + }, + { + "name": "ExtrinsicCount", + "modifier": "Optional", + "type": { + "PlainType": "u32" + }, + "fallback": "0x00", + "documentation": [ + " Total extrinsics count for the current block." + ] + }, + { + "name": "AllExtrinsicsWeight", + "modifier": "Optional", + "type": { + "PlainType": "u32" + }, + "fallback": "0x00", + "documentation": [ + " Total weight for all extrinsics put together, for the current block." + ] + }, + { + "name": "BlockHash", + "modifier": "Default", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "BlockNumber", + "value": "Hash", + "isLinked": false + } + }, + "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", + "documentation": [ + " Map of block numbers to block hashes." + ] + }, + { + "name": "ExtrinsicData", + "modifier": "Default", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "u32", + "value": "Bytes", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " Extrinsics data for the current block (maps an extrinsic's index to its data)." + ] + }, + { + "name": "RandomMaterial", + "modifier": "Default", + "type": { + "PlainType": "(i8,Vec)" + }, + "fallback": "0x0000", + "documentation": [ + " Series of block headers from the last 81 blocks that acts as random seed material. This is arranged as a", + " ring buffer with the `i8` prefix being the index into the `Vec` of the oldest hash." + ] + }, + { + "name": "Number", + "modifier": "Default", + "type": { + "PlainType": "BlockNumber" + }, + "fallback": "0x0000000000000000", + "documentation": [ + " The current block number being processed. Set by `execute_block`." + ] + }, + { + "name": "ParentHash", + "modifier": "Default", + "type": { + "PlainType": "Hash" + }, + "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", + "documentation": [ + " Hash of the previous block." + ] + }, + { + "name": "ExtrinsicsRoot", + "modifier": "Default", + "type": { + "PlainType": "Hash" + }, + "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", + "documentation": [ + " Extrinsics root of the current block, also part of the block header." + ] + }, + { + "name": "Digest", + "modifier": "Default", + "type": { + "PlainType": "DigestOf" + }, + "fallback": "0x00", + "documentation": [ + " Digest of the current block, also part of the block header." + ] + }, + { + "name": "Events", + "modifier": "Default", + "type": { + "PlainType": "Vec" + }, + "fallback": "0x00", + "documentation": [ + " Events deposited for the current block." + ] + }, + { + "name": "EventCount", + "modifier": "Default", + "type": { + "PlainType": "EventIndex" + }, + "fallback": "0x00000000", + "documentation": [ + " The number of events in the `Events` list." + ] + }, + { + "name": "EventTopics", + "modifier": "Default", + "type": { + "DoubleMapType": { + "hasher": "Blake2_256", + "key1": "Null", + "key2": "Hash", + "value": "Vec<(BlockNumber,EventIndex)>", + "key2Hasher": "Blake2_256" + } + }, + "fallback": "0x00", + "documentation": [ + " Mapping between a topic (represented by T::Hash) and a vector of indexes", + " of events in the `>` list.", + "", + " The first key serves no purpose. This field is declared as double_map just", + " for convenience of using `remove_prefix`.", + "", + " All topic vectors have deterministic storage locations depending on the topic. This", + " allows light-clients to leverage the changes trie storage tracking mechanism and", + " in case of changes fetch the list of events of interest.", + "", + " The value has the type `(T::BlockNumber, EventIndex)` because if we used only just", + " the `EventIndex` then in case if the topic has the same contents on the next block", + " no notification will be triggered thus the event might be lost." + ] + } + ], + "calls": [ + { + "name": "remark", + "args": [ + { + "name": "_remark", + "type": "Bytes" + } + ], + "documentation": [ + " Make some on-chain remark." + ] + }, + { + "name": "set_heap_pages", + "args": [ + { + "name": "pages", + "type": "u64" + } + ], + "documentation": [ + " Set the number of pages in the WebAssembly environment's heap." + ] + }, + { + "name": "set_code", + "args": [ + { + "name": "new", + "type": "Bytes" + } + ], + "documentation": [ + " Set the new code." + ] + }, + { + "name": "set_storage", + "args": [ + { + "name": "items", + "type": "Vec" + } + ], + "documentation": [ + " Set some items of storage." + ] + }, + { + "name": "kill_storage", + "args": [ + { + "name": "keys", + "type": "Vec" + } + ], + "documentation": [ + " Kill some items from storage." + ] + } + ], + "events": [ + { + "name": "ExtrinsicSuccess", + "args": [], + "documentation": [ + " An extrinsic completed successfully." + ] + }, + { + "name": "ExtrinsicFailed", + "args": [], + "documentation": [ + " An extrinsic failed." + ] + } + ], + "constants": [] + }, + { + "name": "aura", + "prefix": "", + "storage": null, + "calls": null, + "events": null, + "constants": [] + }, + { + "name": "timestamp", + "prefix": "Timestamp", + "storage": [ + { + "name": "Now", + "modifier": "Default", + "type": { + "PlainType": "Moment" + }, + "fallback": "0x0000000000000000", + "documentation": [ + " Current time for the current block." + ] + }, + { + "name": "DidUpdate", + "modifier": "Default", + "type": { + "PlainType": "bool" + }, + "fallback": "0x00", + "documentation": [ + " Did the timestamp get updated in this block?" + ] + } + ], + "calls": [ + { + "name": "set", + "args": [ + { + "name": "now", + "type": "Compact" + } + ], + "documentation": [ + " Set the current time.", + "", + " This call should be invoked exactly once per block. It will panic at the finalization", + " phase, if this call hasn't been invoked by that time.", + "", + " The timestamp should be greater than the previous one by the amount specified by", + " `MinimumPeriod`.", + "", + " The dispatch origin for this call must be `Inherent`." + ] + } + ], + "events": null, + "constants": [ + { + "name": "MinimumPeriod", + "type": "Moment", + "value": "0x0300000000000000", + "documentation": [ + " The minimum period between blocks. Beware that this is different to the *expected* period", + " that the block production apparatus provides. Your chosen consensus system will generally", + " work with this to determine a sensible block time. e.g. For Aura, it will be double this", + " period on default settings." + ] + } + ] + }, + { + "name": "authorship", + "prefix": "Authorship", + "storage": [ + { + "name": "Uncles", + "modifier": "Default", + "type": { + "PlainType": "Vec" + }, + "fallback": "0x00", + "documentation": [ + " Uncles" + ] + }, + { + "name": "Author", + "modifier": "Optional", + "type": { + "PlainType": "AccountId" + }, + "fallback": "0x00", + "documentation": [ + " Author of current block." + ] + }, + { + "name": "DidSetUncles", + "modifier": "Default", + "type": { + "PlainType": "bool" + }, + "fallback": "0x00", + "documentation": [ + " Whether uncles were already set in this block." + ] + } + ], + "calls": [ + { + "name": "set_uncles", + "args": [ + { + "name": "new_uncles", + "type": "Vec
" + } + ], + "documentation": [ + " Provide a set of uncles." + ] + } + ], + "events": null, + "constants": [] + }, + { + "name": "indices", + "prefix": "Indices", + "storage": [ + { + "name": "NextEnumSet", + "modifier": "Default", + "type": { + "PlainType": "AccountIndex" + }, + "fallback": "0x00000000", + "documentation": [ + " The next free enumeration set." + ] + }, + { + "name": "EnumSet", + "modifier": "Default", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "AccountIndex", + "value": "Vec", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " The enumeration sets." + ] + } + ], + "calls": [], + "events": [ + { + "name": "NewAccountIndex", + "args": [ + "AccountId", + "AccountIndex" + ], + "documentation": [ + " A new account index was assigned.", + "", + " This event is not triggered when an existing index is reassigned", + " to another `AccountId`." + ] + } + ], + "constants": [] + }, + { + "name": "balances", + "prefix": "Balances", + "storage": [ + { + "name": "TotalIssuance", + "modifier": "Default", + "type": { + "PlainType": "Balance" + }, + "fallback": "0x00000000000000000000000000000000", + "documentation": [ + " The total units issued in the system." + ] + }, + { + "name": "Vesting", + "modifier": "Optional", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "AccountId", + "value": "VestingSchedule", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " Information regarding the vesting of a given account." + ] + }, + { + "name": "FreeBalance", + "modifier": "Default", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "AccountId", + "value": "Balance", + "isLinked": false + } + }, + "fallback": "0x00000000000000000000000000000000", + "documentation": [ + " The 'free' balance of a given account.", + "", + " This is the only balance that matters in terms of most operations on tokens. It", + " alone is used to determine the balance when in the contract execution environment. When this", + " balance falls below the value of `ExistentialDeposit`, then the 'current account' is", + " deleted: specifically `FreeBalance`. Further, the `OnFreeBalanceZero` callback", + " is invoked, giving a chance to external modules to clean up data associated with", + " the deleted account.", + "", + " `system::AccountNonce` is also deleted if `ReservedBalance` is also zero (it also gets", + " collapsed to zero if it ever becomes less than `ExistentialDeposit`." + ] + }, + { + "name": "ReservedBalance", + "modifier": "Default", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "AccountId", + "value": "Balance", + "isLinked": false + } + }, + "fallback": "0x00000000000000000000000000000000", + "documentation": [ + " The amount of the balance of a given account that is externally reserved; this can still get", + " slashed, but gets slashed last of all.", + "", + " This balance is a 'reserve' balance that other subsystems use in order to set aside tokens", + " that are still 'owned' by the account holder, but which are suspendable.", + "", + " When this balance falls below the value of `ExistentialDeposit`, then this 'reserve account'", + " is deleted: specifically, `ReservedBalance`.", + "", + " `system::AccountNonce` is also deleted if `FreeBalance` is also zero (it also gets", + " collapsed to zero if it ever becomes less than `ExistentialDeposit`.)" + ] + }, + { + "name": "Locks", + "modifier": "Default", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "AccountId", + "value": "Vec", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " Any liquidity locks on some account balances." + ] + } + ], + "calls": [ + { + "name": "transfer", + "args": [ + { + "name": "dest", + "type": "Address" + }, + { + "name": "value", + "type": "Compact" + } + ], + "documentation": [ + " Transfer some liquid free balance to another account.", + "", + " `transfer` will set the `FreeBalance` of the sender and receiver.", + " It will decrease the total issuance of the system by the `TransferFee`.", + " If the sender's account is below the existential deposit as a result", + " of the transfer, the account will be reaped.", + "", + " The dispatch origin for this call must be `Signed` by the transactor.", + "", + " # ", + " - Dependent on arguments but not critical, given proper implementations for", + " input config types. See related functions below.", + " - It contains a limited number of reads and writes internally and no complex computation.", + "", + " Related functions:", + "", + " - `ensure_can_withdraw` is always called internally but has a bounded complexity.", + " - Transferring balances to accounts that did not exist before will cause", + " `T::OnNewAccount::on_new_account` to be called.", + " - Removing enough funds from an account will trigger", + " `T::DustRemoval::on_unbalanced` and `T::OnFreeBalanceZero::on_free_balance_zero`.", + "", + " # " + ] + }, + { + "name": "set_balance", + "args": [ + { + "name": "who", + "type": "Address" + }, + { + "name": "new_free", + "type": "Compact" + }, + { + "name": "new_reserved", + "type": "Compact" + } + ], + "documentation": [ + " Set the balances of a given account.", + "", + " This will alter `FreeBalance` and `ReservedBalance` in storage. it will", + " also decrease the total issuance of the system (`TotalIssuance`).", + " If the new free or reserved balance is below the existential deposit,", + " it will reset the account nonce (`system::AccountNonce`).", + "", + " The dispatch origin for this call is `root`.", + "", + " # ", + " - Independent of the arguments.", + " - Contains a limited number of reads and writes.", + " # " + ] + } + ], + "events": [ + { + "name": "NewAccount", + "args": [ + "AccountId", + "Balance" + ], + "documentation": [ + " A new account was created." + ] + }, + { + "name": "ReapedAccount", + "args": [ + "AccountId" + ], + "documentation": [ + " An account was reaped." + ] + }, + { + "name": "Transfer", + "args": [ + "AccountId", + "AccountId", + "Balance", + "Balance" + ], + "documentation": [ + " Transfer succeeded (from, to, value, fees)." + ] + } + ], + "constants": [ + { + "name": "ExistentialDeposit", + "type": "Balance", + "value": "0x00e40b54020000000000000000000000", + "documentation": [ + " The minimum amount required to keep an account open." + ] + }, + { + "name": "TransferFee", + "type": "Balance", + "value": "0x00e1f505000000000000000000000000", + "documentation": [ + " The fee required to make a transfer." + ] + }, + { + "name": "CreationFee", + "type": "Balance", + "value": "0x00e1f505000000000000000000000000", + "documentation": [ + " The fee required to create an account." + ] + }, + { + "name": "TransactionBaseFee", + "type": "Balance", + "value": "0x00e1f505000000000000000000000000", + "documentation": [ + " The fee to be paid for making a transaction; the base." + ] + }, + { + "name": "TransactionByteFee", + "type": "Balance", + "value": "0x40420f00000000000000000000000000", + "documentation": [ + " The fee to be paid for making a transaction; the per-byte portion." + ] + } + ] + }, + { + "name": "staking", + "prefix": "Staking", + "storage": [ + { + "name": "ValidatorCount", + "modifier": "Default", + "type": { + "PlainType": "u32" + }, + "fallback": "0x00000000", + "documentation": [ + " The ideal number of staking participants." + ] + }, + { + "name": "MinimumValidatorCount", + "modifier": "Default", + "type": { + "PlainType": "u32" + }, + "fallback": "0x04000000", + "documentation": [ + " Minimum number of staking participants before emergency conditions are imposed." + ] + }, + { + "name": "SessionReward", + "modifier": "Default", + "type": { + "PlainType": "Perbill" + }, + "fallback": "0x3c000000", + "documentation": [ + " Maximum reward, per validator, that is provided per acceptable session." + ] + }, + { + "name": "OfflineSlash", + "modifier": "Default", + "type": { + "PlainType": "Perbill" + }, + "fallback": "0x40420f00", + "documentation": [ + " Slash, per validator that is taken for the first time they are found to be offline." + ] + }, + { + "name": "OfflineSlashGrace", + "modifier": "Default", + "type": { + "PlainType": "u32" + }, + "fallback": "0x00000000", + "documentation": [ + " Number of instances of offline reports before slashing begins for validators." + ] + }, + { + "name": "Invulnerables", + "modifier": "Default", + "type": { + "PlainType": "Vec" + }, + "fallback": "0x00", + "documentation": [ + " Any validators that may never be slashed or forcibly kicked. It's a Vec since they're", + " easy to initialize and the performance hit is minimal (we expect no more than four", + " invulnerables) and restricted to testnets." + ] + }, + { + "name": "Bonded", + "modifier": "Optional", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "AccountId", + "value": "AccountId", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " Map from all locked \"stash\" accounts to the controller account." + ] + }, + { + "name": "Ledger", + "modifier": "Optional", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "AccountId", + "value": "StakingLedger", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " Map from all (unlocked) \"controller\" accounts to the info regarding the staking." + ] + }, + { + "name": "Payee", + "modifier": "Default", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "AccountId", + "value": "RewardDestination", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " Where the reward payment should be made. Keyed by stash." + ] + }, + { + "name": "Validators", + "modifier": "Default", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "AccountId", + "value": "ValidatorPrefs", + "isLinked": true + } + }, + "fallback": "0x0c00", + "documentation": [ + " The map from (wannabe) validator stash key to the preferences of that validator." + ] + }, + { + "name": "Nominators", + "modifier": "Default", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "AccountId", + "value": "Vec", + "isLinked": true + } + }, + "fallback": "0x00", + "documentation": [ + " The map from nominator stash key to the set of stash keys of all validators to nominate." + ] + }, + { + "name": "Stakers", + "modifier": "Default", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "AccountId", + "value": "Exposure", + "isLinked": false + } + }, + "fallback": "0x000000", + "documentation": [ + " Nominators for a particular account that is in action right now. You can't iterate", + " through validators here, but you can find them in the Session module.", + "", + " This is keyed by the stash account." + ] + }, + { + "name": "CurrentElected", + "modifier": "Default", + "type": { + "PlainType": "Vec" + }, + "fallback": "0x00", + "documentation": [ + " The currently elected validator set keyed by stash account ID." + ] + }, + { + "name": "CurrentEra", + "modifier": "Default", + "type": { + "PlainType": "EraIndex" + }, + "fallback": "0x00000000", + "documentation": [ + " The current era index." + ] + }, + { + "name": "CurrentSessionReward", + "modifier": "Default", + "type": { + "PlainType": "BalanceOf" + }, + "fallback": "0x00000000000000000000000000000000", + "documentation": [ + " Maximum reward, per validator, that is provided per acceptable session." + ] + }, + { + "name": "CurrentEraReward", + "modifier": "Default", + "type": { + "PlainType": "BalanceOf" + }, + "fallback": "0x00000000000000000000000000000000", + "documentation": [ + " The accumulated reward for the current era. Reset to zero at the beginning of the era", + " and increased for every successfully finished session." + ] + }, + { + "name": "SlotStake", + "modifier": "Default", + "type": { + "PlainType": "BalanceOf" + }, + "fallback": "0x00000000000000000000000000000000", + "documentation": [ + " The amount of balance actively at stake for each validator slot, currently.", + "", + " This is used to derive rewards and punishments." + ] + }, + { + "name": "SlashCount", + "modifier": "Default", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "AccountId", + "value": "u32", + "isLinked": false + } + }, + "fallback": "0x00000000", + "documentation": [ + " The number of times a given validator has been reported offline. This gets decremented", + " by one each era that passes." + ] + }, + { + "name": "RecentlyOffline", + "modifier": "Default", + "type": { + "PlainType": "Vec<(AccountId,BlockNumber,u32)>" + }, + "fallback": "0x00", + "documentation": [ + " Most recent `RECENT_OFFLINE_COUNT` instances. (Who it was, when it was reported, how", + " many instances they were offline for)." + ] + }, + { + "name": "ForceNewEra", + "modifier": "Default", + "type": { + "PlainType": "bool" + }, + "fallback": "0x00", + "documentation": [ + " True if the next session change will be a new era regardless of index." + ] + }, + { + "name": "BondedEras", + "modifier": "Default", + "type": { + "PlainType": "Vec<(EraIndex,SessionIndex)>" + }, + "fallback": "0x00", + "documentation": [ + " A mapping from still-bonded eras to the first session index of that era." + ] + } + ], + "calls": [ + { + "name": "bond", + "args": [ + { + "name": "controller", + "type": "Address" + }, + { + "name": "value", + "type": "Compact" + }, + { + "name": "payee", + "type": "RewardDestination" + } + ], + "documentation": [ + " Take the origin account as a stash and lock up `value` of its balance. `controller` will", + " be the account that controls it.", + "", + " `value` must be more than the `existential_deposit` defined in the Balances module.", + "", + " The dispatch origin for this call must be _Signed_ by the stash account.", + "", + " # ", + " - Independent of the arguments. Moderate complexity.", + " - O(1).", + " - Three extra DB entries.", + "", + " NOTE: Two of the storage writes (`Self::bonded`, `Self::payee`) are _never_ cleaned unless", + " the `origin` falls below _existential deposit_ and gets removed as dust.", + " # " + ] + }, + { + "name": "bond_extra", + "args": [ + { + "name": "max_additional", + "type": "Compact" + } + ], + "documentation": [ + " Add some extra amount that have appeared in the stash `free_balance` into the balance up", + " for staking.", + "", + " Use this if there are additional funds in your stash account that you wish to bond.", + " Unlike [`bond`] or [`unbond`] this function does not impose any limitation on the amount", + " that can be added.", + "", + " The dispatch origin for this call must be _Signed_ by the stash, not the controller.", + "", + " # ", + " - Independent of the arguments. Insignificant complexity.", + " - O(1).", + " - One DB entry.", + " # " + ] + }, + { + "name": "unbond", + "args": [ + { + "name": "value", + "type": "Compact" + } + ], + "documentation": [ + " Schedule a portion of the stash to be unlocked ready for transfer out after the bond", + " period ends. If this leaves an amount actively bonded less than", + " T::Currency::existential_deposit(), then it is increased to the full amount.", + "", + " Once the unlock period is done, you can call `withdraw_unbonded` to actually move", + " the funds out of management ready for transfer.", + "", + " No more than a limited number of unlocking chunks (see `MAX_UNLOCKING_CHUNKS`)", + " can co-exists at the same time. In that case, [`Call::withdraw_unbonded`] need", + " to be called first to remove some of the chunks (if possible).", + "", + " The dispatch origin for this call must be _Signed_ by the controller, not the stash.", + "", + " See also [`Call::withdraw_unbonded`].", + "", + " # ", + " - Independent of the arguments. Limited but potentially exploitable complexity.", + " - Contains a limited number of reads.", + " - Each call (requires the remainder of the bonded balance to be above `minimum_balance`)", + " will cause a new entry to be inserted into a vector (`Ledger.unlocking`) kept in storage.", + " The only way to clean the aforementioned storage item is also user-controlled via `withdraw_unbonded`.", + " - One DB entry.", + " " + ] + }, + { + "name": "withdraw_unbonded", + "args": [], + "documentation": [ + " Remove any unlocked chunks from the `unlocking` queue from our management.", + "", + " This essentially frees up that balance to be used by the stash account to do", + " whatever it wants.", + "", + " The dispatch origin for this call must be _Signed_ by the controller, not the stash.", + "", + " See also [`Call::unbond`].", + "", + " # ", + " - Could be dependent on the `origin` argument and how much `unlocking` chunks exist.", + " It implies `consolidate_unlocked` which loops over `Ledger.unlocking`, which is", + " indirectly user-controlled. See [`unbond`] for more detail.", + " - Contains a limited number of reads, yet the size of which could be large based on `ledger`.", + " - Writes are limited to the `origin` account key.", + " # " + ] + }, + { + "name": "validate", + "args": [ + { + "name": "prefs", + "type": "ValidatorPrefs" + } + ], + "documentation": [ + " Declare the desire to validate for the origin controller.", + "", + " Effects will be felt at the beginning of the next era.", + "", + " The dispatch origin for this call must be _Signed_ by the controller, not the stash.", + "", + " # ", + " - Independent of the arguments. Insignificant complexity.", + " - Contains a limited number of reads.", + " - Writes are limited to the `origin` account key.", + " # " + ] + }, + { + "name": "nominate", + "args": [ + { + "name": "targets", + "type": "Vec
" + } + ], + "documentation": [ + " Declare the desire to nominate `targets` for the origin controller.", + "", + " Effects will be felt at the beginning of the next era.", + "", + " The dispatch origin for this call must be _Signed_ by the controller, not the stash.", + "", + " # ", + " - The transaction's complexity is proportional to the size of `targets`,", + " which is capped at `MAX_NOMINATIONS`.", + " - Both the reads and writes follow a similar pattern.", + " # " + ] + }, + { + "name": "chill", + "args": [], + "documentation": [ + " Declare no desire to either validate or nominate.", + "", + " Effects will be felt at the beginning of the next era.", + "", + " The dispatch origin for this call must be _Signed_ by the controller, not the stash.", + "", + " # ", + " - Independent of the arguments. Insignificant complexity.", + " - Contains one read.", + " - Writes are limited to the `origin` account key.", + " # " + ] + }, + { + "name": "set_payee", + "args": [ + { + "name": "payee", + "type": "RewardDestination" + } + ], + "documentation": [ + " (Re-)set the payment target for a controller.", + "", + " Effects will be felt at the beginning of the next era.", + "", + " The dispatch origin for this call must be _Signed_ by the controller, not the stash.", + "", + " # ", + " - Independent of the arguments. Insignificant complexity.", + " - Contains a limited number of reads.", + " - Writes are limited to the `origin` account key.", + " # " + ] + }, + { + "name": "set_controller", + "args": [ + { + "name": "controller", + "type": "Address" + } + ], + "documentation": [ + " (Re-)set the payment target for a controller.", + "", + " Effects will be felt at the beginning of the next era.", + "", + " The dispatch origin for this call must be _Signed_ by the stash, not the controller.", + "", + " # ", + " - Independent of the arguments. Insignificant complexity.", + " - Contains a limited number of reads.", + " - Writes are limited to the `origin` account key.", + " # " + ] + }, + { + "name": "set_validator_count", + "args": [ + { + "name": "new", + "type": "Compact" + } + ], + "documentation": [ + " The ideal number of validators." + ] + }, + { + "name": "force_new_era", + "args": [], + "documentation": [ + " Force there to be a new era. This also forces a new session immediately after.", + " `apply_rewards` should be true for validators to get the session reward.", + "", + " # ", + " - Independent of the arguments.", + " - Triggers the Phragmen election. Expensive but not user-controlled.", + " - Depends on state: `O(|edges| * |validators|)`.", + " # " + ] + }, + { + "name": "set_offline_slash_grace", + "args": [ + { + "name": "new", + "type": "Compact" + } + ], + "documentation": [ + " Set the offline slash grace period." + ] + }, + { + "name": "set_invulnerables", + "args": [ + { + "name": "validators", + "type": "Vec" + } + ], + "documentation": [ + " Set the validators who cannot be slashed (if any)." + ] + } + ], + "events": [ + { + "name": "Reward", + "args": [ + "Balance" + ], + "documentation": [ + " All validators have been rewarded by the given balance." + ] + }, + { + "name": "OfflineWarning", + "args": [ + "AccountId", + "u32" + ], + "documentation": [ + " One validator (and its nominators) has been given an offline-warning (it is still", + " within its grace). The accrued number of slashes is recorded, too." + ] + }, + { + "name": "OfflineSlash", + "args": [ + "AccountId", + "Balance" + ], + "documentation": [ + " One validator (and its nominators) has been slashed by the given amount." + ] + } + ], + "constants": [ + { + "name": "SessionsPerEra", + "type": "SessionIndex", + "value": "0x06000000", + "documentation": [ + " Number of sessions per era." + ] + }, + { + "name": "BondingDuration", + "type": "EraIndex", + "value": "0xa0020000", + "documentation": [ + " Number of eras that staked funds must remain bonded for." + ] + } + ] + }, + { + "name": "session", + "prefix": "Session", + "storage": [ + { + "name": "Validators", + "modifier": "Default", + "type": { + "PlainType": "Vec" + }, + "fallback": "0x00", + "documentation": [ + " The current set of validators." + ] + }, + { + "name": "CurrentIndex", + "modifier": "Default", + "type": { + "PlainType": "SessionIndex" + }, + "fallback": "0x00000000", + "documentation": [ + " Current index of the session." + ] + }, + { + "name": "Changed", + "modifier": "Default", + "type": { + "PlainType": "bool" + }, + "fallback": "0x00", + "documentation": [ + " True if anything has changed in this session." + ] + }, + { + "name": "QueuedChanged", + "modifier": "Default", + "type": { + "PlainType": "bool" + }, + "fallback": "0x00", + "documentation": [ + " Queued keys changed." + ] + }, + { + "name": "QueuedKeys", + "modifier": "Default", + "type": { + "PlainType": "Vec<(ValidatorId,Keys)>" + }, + "fallback": "0x00", + "documentation": [ + " The queued keys for the next session. When the next session begins, these keys", + " will be used to determine the validator's session keys." + ] + } + ], + "calls": [ + { + "name": "set_keys", + "args": [ + { + "name": "keys", + "type": "Keys" + }, + { + "name": "proof", + "type": "Bytes" + } + ], + "documentation": [ + " Sets the session key(s) of the function caller to `key`.", + " Allows an account to set its session key prior to becoming a validator.", + " This doesn't take effect until the next session.", + "", + " The dispatch origin of this function must be signed.", + "", + " # ", + " - O(log n) in number of accounts.", + " - One extra DB entry.", + " # " + ] + } + ], + "events": [ + { + "name": "NewSession", + "args": [ + "SessionIndex" + ], + "documentation": [ + " New session has happened. Note that the argument is the session index, not the block", + " number as the type might suggest." + ] + } + ], + "constants": [] + }, + { + "name": "democracy", + "prefix": "Democracy", + "storage": [ + { + "name": "PublicPropCount", + "modifier": "Default", + "type": { + "PlainType": "PropIndex" + }, + "fallback": "0x00000000", + "documentation": [ + " The number of (public) proposals that have been made so far." + ] + }, + { + "name": "PublicProps", + "modifier": "Default", + "type": { + "PlainType": "Vec<(PropIndex,Proposal,AccountId)>" + }, + "fallback": "0x00", + "documentation": [ + " The public proposals. Unsorted." + ] + }, + { + "name": "DepositOf", + "modifier": "Optional", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "PropIndex", + "value": "(BalanceOf,Vec)", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " Those who have locked a deposit." + ] + }, + { + "name": "ReferendumCount", + "modifier": "Default", + "type": { + "PlainType": "ReferendumIndex" + }, + "fallback": "0x00000000", + "documentation": [ + " The next free referendum index, aka the number of referenda started so far." + ] + }, + { + "name": "NextTally", + "modifier": "Default", + "type": { + "PlainType": "ReferendumIndex" + }, + "fallback": "0x00000000", + "documentation": [ + " The next referendum index that should be tallied." + ] + }, + { + "name": "ReferendumInfoOf", + "modifier": "Optional", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "ReferendumIndex", + "value": "ReferendumInfo", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " Information concerning any given referendum." + ] + }, + { + "name": "DispatchQueue", + "modifier": "Default", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "BlockNumber", + "value": "Vec>", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " Queue of successful referenda to be dispatched." + ] + }, + { + "name": "VotersFor", + "modifier": "Default", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "ReferendumIndex", + "value": "Vec", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " Get the voters for the current proposal." + ] + }, + { + "name": "VoteOf", + "modifier": "Default", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "(ReferendumIndex,AccountId)", + "value": "Vote", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " Get the vote in a given referendum of a particular voter. The result is meaningful only", + " if `voters_for` includes the voter when called with the referendum (you'll get the", + " default `Vote` value otherwise). If you don't want to check `voters_for`, then you can", + " also check for simple existence with `VoteOf::exists` first." + ] + }, + { + "name": "Proxy", + "modifier": "Optional", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "AccountId", + "value": "AccountId", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " Who is able to vote for whom. Value is the fund-holding account, key is the", + " vote-transaction-sending account." + ] + }, + { + "name": "Delegations", + "modifier": "Default", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "AccountId", + "value": "(AccountId,Conviction)", + "isLinked": true + } + }, + "fallback": "0x000000000000000000000000000000000000000000000000000000000000000000", + "documentation": [ + " Get the account (and lock periods) to which another account is delegating vote." + ] + }, + { + "name": "LastTabledWasExternal", + "modifier": "Default", + "type": { + "PlainType": "bool" + }, + "fallback": "0x00", + "documentation": [ + " True if the last referendum tabled was submitted externally. False if it was a public", + " proposal." + ] + }, + { + "name": "NextExternal", + "modifier": "Optional", + "type": { + "PlainType": "(Proposal,VoteThreshold)" + }, + "fallback": "0x00", + "documentation": [ + " The referendum to be tabled whenever it would be valid to table an external proposal.", + " This happens when a referendum needs to be tabled and one of two conditions are met:", + " - `LastTabledWasExternal` is `false`; or", + " - `PublicProps` is empty." + ] + }, + { + "name": "Blacklist", + "modifier": "Optional", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "Hash", + "value": "(BlockNumber,Vec)", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " A record of who vetoed what. Maps proposal hash to a possible existent block number", + " (until when it may not be resubmitted) and who vetoed it." + ] + }, + { + "name": "Cancellations", + "modifier": "Default", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "Hash", + "value": "bool", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " Record of all proposals that have been subject to emergency cancellation." + ] + } + ], + "calls": [ + { + "name": "propose", + "args": [ + { + "name": "proposal", + "type": "Proposal" + }, + { + "name": "value", + "type": "Compact" + } + ], + "documentation": [ + " Propose a sensitive action to be taken.", + "", + " # ", + " - O(1).", + " - Two DB changes, one DB entry.", + " # " + ] + }, + { + "name": "second", + "args": [ + { + "name": "proposal", + "type": "Compact" + } + ], + "documentation": [ + " Propose a sensitive action to be taken.", + "", + " # ", + " - O(1).", + " - One DB entry.", + " # " + ] + }, + { + "name": "vote", + "args": [ + { + "name": "ref_index", + "type": "Compact" + }, + { + "name": "vote", + "type": "Vote" + } + ], + "documentation": [ + " Vote in a referendum. If `vote.is_aye()`, the vote is to enact the proposal;", + " otherwise it is a vote to keep the status quo.", + "", + " # ", + " - O(1).", + " - One DB change, one DB entry.", + " # " + ] + }, + { + "name": "proxy_vote", + "args": [ + { + "name": "ref_index", + "type": "Compact" + }, + { + "name": "vote", + "type": "Vote" + } + ], + "documentation": [ + " Vote in a referendum on behalf of a stash. If `vote.is_aye()`, the vote is to enact", + " the proposal; otherwise it is a vote to keep the status quo.", + "", + " # ", + " - O(1).", + " - One DB change, one DB entry.", + " # " + ] + }, + { + "name": "emergency_propose", + "args": [ + { + "name": "proposal", + "type": "Proposal" + }, + { + "name": "threshold", + "type": "VoteThreshold" + }, + { + "name": "voting_period", + "type": "BlockNumber" + }, + { + "name": "delay", + "type": "BlockNumber" + } + ], + "documentation": [ + " Schedule an emergency referendum.", + "", + " This will create a new referendum for the `proposal`, approved as long as counted votes", + " exceed `threshold` and, if approved, enacted after the given `delay`.", + "", + " It may be called from either the Root or the Emergency origin." + ] + }, + { + "name": "emergency_cancel", + "args": [ + { + "name": "ref_index", + "type": "ReferendumIndex" + } + ], + "documentation": [ + " Schedule an emergency cancellation of a referendum. Cannot happen twice to the same", + " referendum." + ] + }, + { + "name": "external_propose", + "args": [ + { + "name": "proposal", + "type": "Proposal" + } + ], + "documentation": [ + " Schedule a referendum to be tabled once it is legal to schedule an external", + " referendum." + ] + }, + { + "name": "external_propose_majority", + "args": [ + { + "name": "proposal", + "type": "Proposal" + } + ], + "documentation": [ + " Schedule a majority-carries referendum to be tabled next once it is legal to schedule", + " an external referendum." + ] + }, + { + "name": "external_push", + "args": [ + { + "name": "proposal_hash", + "type": "Hash" + }, + { + "name": "voting_period", + "type": "BlockNumber" + }, + { + "name": "delay", + "type": "BlockNumber" + } + ], + "documentation": [ + " Schedule the currently externally-proposed majority-carries referendum to be tabled", + " immediately. If there is no externally-proposed referendum currently, or if there is one", + " but it is not a majority-carries referendum then it fails.", + "", + " - `proposal_hash`: The hash of the current external proposal.", + " - `voting_period`: The period that is allowed for voting on this proposal.", + " - `delay`: The number of block after voting has ended in approval and this should be", + " enacted. Increased to `EmergencyVotingPeriod` if too low." + ] + }, + { + "name": "veto_external", + "args": [ + { + "name": "proposal_hash", + "type": "Hash" + } + ], + "documentation": [ + " Veto and blacklist the external proposal hash." + ] + }, + { + "name": "cancel_referendum", + "args": [ + { + "name": "ref_index", + "type": "Compact" + } + ], + "documentation": [ + " Remove a referendum." + ] + }, + { + "name": "cancel_queued", + "args": [ + { + "name": "when", + "type": "Compact" + }, + { + "name": "which", + "type": "Compact" + }, + { + "name": "what", + "type": "Compact" + } + ], + "documentation": [ + " Cancel a proposal queued for enactment." + ] + }, + { + "name": "set_proxy", + "args": [ + { + "name": "proxy", + "type": "AccountId" + } + ], + "documentation": [ + " Specify a proxy. Called by the stash.", + "", + " # ", + " - One extra DB entry.", + " # " + ] + }, + { + "name": "resign_proxy", + "args": [], + "documentation": [ + " Clear the proxy. Called by the proxy.", + "", + " # ", + " - One DB clear.", + " # " + ] + }, + { + "name": "remove_proxy", + "args": [ + { + "name": "proxy", + "type": "AccountId" + } + ], + "documentation": [ + " Clear the proxy. Called by the stash.", + "", + " # ", + " - One DB clear.", + " # " + ] + }, + { + "name": "delegate", + "args": [ + { + "name": "to", + "type": "AccountId" + }, + { + "name": "conviction", + "type": "Conviction" + } + ], + "documentation": [ + " Delegate vote.", + "", + " # ", + " - One extra DB entry.", + " # " + ] + }, + { + "name": "undelegate", + "args": [], + "documentation": [ + " Undelegate vote.", + "", + " # ", + " - O(1).", + " # " + ] + } + ], + "events": [ + { + "name": "Proposed", + "args": [ + "PropIndex", + "Balance" + ], + "documentation": [] + }, + { + "name": "Tabled", + "args": [ + "PropIndex", + "Balance", + "Vec" + ], + "documentation": [] + }, + { + "name": "ExternalTabled", + "args": [], + "documentation": [] + }, + { + "name": "Started", + "args": [ + "ReferendumIndex", + "VoteThreshold" + ], + "documentation": [] + }, + { + "name": "Passed", + "args": [ + "ReferendumIndex" + ], + "documentation": [] + }, + { + "name": "NotPassed", + "args": [ + "ReferendumIndex" + ], + "documentation": [] + }, + { + "name": "Cancelled", + "args": [ + "ReferendumIndex" + ], + "documentation": [] + }, + { + "name": "Executed", + "args": [ + "ReferendumIndex", + "bool" + ], + "documentation": [] + }, + { + "name": "Delegated", + "args": [ + "AccountId", + "AccountId" + ], + "documentation": [] + }, + { + "name": "Undelegated", + "args": [ + "AccountId" + ], + "documentation": [] + }, + { + "name": "Vetoed", + "args": [ + "AccountId", + "Hash", + "BlockNumber" + ], + "documentation": [] + } + ], + "constants": [ + { + "name": "EnactmentPeriod", + "type": "BlockNumber", + "value": "0x8097060000000000", + "documentation": [ + " The minimum period of locking and the period between a proposal being approved and enacted.", + "", + " It should generally be a little more than the unstake period to ensure that", + " voting stakers have an opportunity to remove themselves from the system in the case where", + " they are on the losing side of a vote." + ] + }, + { + "name": "LaunchPeriod", + "type": "BlockNumber", + "value": "0x0027060000000000", + "documentation": [ + " How often (in blocks) new public referenda are launched." + ] + }, + { + "name": "VotingPeriod", + "type": "BlockNumber", + "value": "0x0027060000000000", + "documentation": [ + " How often (in blocks) to check for new votes." + ] + }, + { + "name": "MinimumDeposit", + "type": "BalanceOf", + "value": "0x0010a5d4e80000000000000000000000", + "documentation": [ + " The minimum amount to be used as a deposit for a public referendum proposal." + ] + }, + { + "name": "EmergencyVotingPeriod", + "type": "BlockNumber", + "value": "0xc0a8000000000000", + "documentation": [ + " Minimum voting period allowed for an emergency referendum." + ] + }, + { + "name": "CooloffPeriod", + "type": "BlockNumber", + "value": "0x8097060000000000", + "documentation": [ + " Period in blocks where an external proposal may not be re-submitted after being vetoed." + ] + } + ] + }, + { + "name": "collective", + "prefix": "Collective", + "storage": [ + { + "name": "Proposals", + "modifier": "Default", + "type": { + "PlainType": "Vec" + }, + "fallback": "0x00", + "documentation": [ + " The hashes of the active proposals." + ] + }, + { + "name": "ProposalOf", + "modifier": "Optional", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "Hash", + "value": "Proposal", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " Actual proposal for a given hash, if it's current." + ] + }, + { + "name": "Voting", + "modifier": "Optional", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "Hash", + "value": "Votes", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " Votes on a given proposal, if it is ongoing." + ] + }, + { + "name": "ProposalCount", + "modifier": "Default", + "type": { + "PlainType": "u32" + }, + "fallback": "0x00000000", + "documentation": [ + " Proposals so far." + ] + }, + { + "name": "Members", + "modifier": "Default", + "type": { + "PlainType": "Vec" + }, + "fallback": "0x00", + "documentation": [ + " The current members of the collective. This is stored sorted (just by value)." + ] + } + ], + "calls": [ + { + "name": "set_members", + "args": [ + { + "name": "new_members", + "type": "Vec" + } + ], + "documentation": [ + " Set the collective's membership manually to `new_members`. Be nice to the chain and", + " provide it pre-sorted.", + "", + " Requires root origin." + ] + }, + { + "name": "execute", + "args": [ + { + "name": "proposal", + "type": "Proposal" + } + ], + "documentation": [ + " Dispatch a proposal from a member using the `Member` origin.", + "", + " Origin must be a member of the collective." + ] + }, + { + "name": "propose", + "args": [ + { + "name": "threshold", + "type": "Compact" + }, + { + "name": "proposal", + "type": "Proposal" + } + ], + "documentation": [ + " # ", + " - Bounded storage reads and writes.", + " - Argument `threshold` has bearing on weight.", + " # " + ] + }, + { + "name": "vote", + "args": [ + { + "name": "proposal", + "type": "Hash" + }, + { + "name": "index", + "type": "Compact" + }, + { + "name": "approve", + "type": "bool" + } + ], + "documentation": [ + " # ", + " - Bounded storage read and writes.", + " - Will be slightly heavier if the proposal is approved / disapproved after the vote.", + " # " + ] + } + ], + "events": [ + { + "name": "_Phantom", + "args": [ + "Phantom" + ], + "documentation": [ + " Dummy to manage the fact we have instancing." + ] + }, + { + "name": "Proposed", + "args": [ + "AccountId", + "ProposalIndex", + "Hash", + "MemberCount" + ], + "documentation": [ + " A motion (given hash) has been proposed (by given account) with a threshold (given", + " `MemberCount`)." + ] + }, + { + "name": "Voted", + "args": [ + "AccountId", + "Hash", + "bool", + "MemberCount", + "MemberCount" + ], + "documentation": [ + " A motion (given hash) has been voted on by given account, leaving", + " a tally (yes votes and no votes given respectively as `MemberCount`)." + ] + }, + { + "name": "Approved", + "args": [ + "Hash" + ], + "documentation": [ + " A motion was approved by the required threshold." + ] + }, + { + "name": "Disapproved", + "args": [ + "Hash" + ], + "documentation": [ + " A motion was not approved by the required threshold." + ] + }, + { + "name": "Executed", + "args": [ + "Hash", + "bool" + ], + "documentation": [ + " A motion was executed; `bool` is true if returned without error." + ] + }, + { + "name": "MemberExecuted", + "args": [ + "Hash", + "bool" + ], + "documentation": [ + " A single member did some action; `bool` is true if returned without error." + ] + } + ], + "constants": [] + }, + { + "name": "collective", + "prefix": "Collective", + "storage": [ + { + "name": "Proposals", + "modifier": "Default", + "type": { + "PlainType": "Vec" + }, + "fallback": "0x00", + "documentation": [ + " The hashes of the active proposals." + ] + }, + { + "name": "ProposalOf", + "modifier": "Optional", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "Hash", + "value": "Proposal", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " Actual proposal for a given hash, if it's current." + ] + }, + { + "name": "Voting", + "modifier": "Optional", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "Hash", + "value": "Votes", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " Votes on a given proposal, if it is ongoing." + ] + }, + { + "name": "ProposalCount", + "modifier": "Default", + "type": { + "PlainType": "u32" + }, + "fallback": "0x00000000", + "documentation": [ + " Proposals so far." + ] + }, + { + "name": "Members", + "modifier": "Default", + "type": { + "PlainType": "Vec" + }, + "fallback": "0x00", + "documentation": [ + " The current members of the collective. This is stored sorted (just by value)." + ] + } + ], + "calls": [ + { + "name": "set_members", + "args": [ + { + "name": "new_members", + "type": "Vec" + } + ], + "documentation": [ + " Set the collective's membership manually to `new_members`. Be nice to the chain and", + " provide it pre-sorted.", + "", + " Requires root origin." + ] + }, + { + "name": "execute", + "args": [ + { + "name": "proposal", + "type": "Proposal" + } + ], + "documentation": [ + " Dispatch a proposal from a member using the `Member` origin.", + "", + " Origin must be a member of the collective." + ] + }, + { + "name": "propose", + "args": [ + { + "name": "threshold", + "type": "Compact" + }, + { + "name": "proposal", + "type": "Proposal" + } + ], + "documentation": [ + " # ", + " - Bounded storage reads and writes.", + " - Argument `threshold` has bearing on weight.", + " # " + ] + }, + { + "name": "vote", + "args": [ + { + "name": "proposal", + "type": "Hash" + }, + { + "name": "index", + "type": "Compact" + }, + { + "name": "approve", + "type": "bool" + } + ], + "documentation": [ + " # ", + " - Bounded storage read and writes.", + " - Will be slightly heavier if the proposal is approved / disapproved after the vote.", + " # " + ] + } + ], + "events": [ + { + "name": "_Phantom", + "args": [ + "Phantom" + ], + "documentation": [ + " Dummy to manage the fact we have instancing." + ] + }, + { + "name": "Proposed", + "args": [ + "AccountId", + "ProposalIndex", + "Hash", + "MemberCount" + ], + "documentation": [ + " A motion (given hash) has been proposed (by given account) with a threshold (given", + " `MemberCount`)." + ] + }, + { + "name": "Voted", + "args": [ + "AccountId", + "Hash", + "bool", + "MemberCount", + "MemberCount" + ], + "documentation": [ + " A motion (given hash) has been voted on by given account, leaving", + " a tally (yes votes and no votes given respectively as `MemberCount`)." + ] + }, + { + "name": "Approved", + "args": [ + "Hash" + ], + "documentation": [ + " A motion was approved by the required threshold." + ] + }, + { + "name": "Disapproved", + "args": [ + "Hash" + ], + "documentation": [ + " A motion was not approved by the required threshold." + ] + }, + { + "name": "Executed", + "args": [ + "Hash", + "bool" + ], + "documentation": [ + " A motion was executed; `bool` is true if returned without error." + ] + }, + { + "name": "MemberExecuted", + "args": [ + "Hash", + "bool" + ], + "documentation": [ + " A single member did some action; `bool` is true if returned without error." + ] + } + ], + "constants": [] + }, + { + "name": "elections", + "prefix": "Council", + "storage": [ + { + "name": "PresentationDuration", + "modifier": "Default", + "type": { + "PlainType": "BlockNumber" + }, + "fallback": "0x0000000000000000", + "documentation": [ + " How long to give each top candidate to present themselves after the vote ends." + ] + }, + { + "name": "TermDuration", + "modifier": "Default", + "type": { + "PlainType": "BlockNumber" + }, + "fallback": "0x0000000000000000", + "documentation": [ + " How long each position is active for." + ] + }, + { + "name": "DesiredSeats", + "modifier": "Default", + "type": { + "PlainType": "u32" + }, + "fallback": "0x00000000", + "documentation": [ + " Number of accounts that should constitute the collective." + ] + }, + { + "name": "Members", + "modifier": "Default", + "type": { + "PlainType": "Vec<(AccountId,BlockNumber)>" + }, + "fallback": "0x00", + "documentation": [ + " The current membership. When there's a vote going on, this should still be used for executive", + " matters. The block number (second element in the tuple) is the block that their position is", + " active until (calculated by the sum of the block number when the member was elected", + " and their term duration)." + ] + }, + { + "name": "VoteCount", + "modifier": "Default", + "type": { + "PlainType": "VoteIndex" + }, + "fallback": "0x00000000", + "documentation": [ + " The total number of vote rounds that have happened or are in progress." + ] + }, + { + "name": "ApprovalsOf", + "modifier": "Default", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "(AccountId,SetIndex)", + "value": "Vec", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " A list of votes for each voter. The votes are stored as numeric values and parsed in a bit-wise manner.", + "", + " In order to get a human-readable representation (`Vec`), use [`all_approvals_of`].", + "", + " Furthermore, each vector of scalars is chunked with the cap of `APPROVAL_SET_SIZE`." + ] + }, + { + "name": "RegisterInfoOf", + "modifier": "Optional", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "AccountId", + "value": "(VoteIndex,u32)", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " The vote index and list slot that the candidate `who` was registered or `None` if they are not", + " currently registered." + ] + }, + { + "name": "VoterInfoOf", + "modifier": "Optional", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "AccountId", + "value": "VoterInfo", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " Basic information about a voter." + ] + }, + { + "name": "Voters", + "modifier": "Default", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "SetIndex", + "value": "Vec>", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " The present voter list (chunked and capped at [`VOTER_SET_SIZE`])." + ] + }, + { + "name": "NextVoterSet", + "modifier": "Default", + "type": { + "PlainType": "SetIndex" + }, + "fallback": "0x00000000", + "documentation": [ + " the next free set to store a voter in. This will keep growing." + ] + }, + { + "name": "VoterCount", + "modifier": "Default", + "type": { + "PlainType": "SetIndex" + }, + "fallback": "0x00000000", + "documentation": [ + " Current number of Voters." + ] + }, + { + "name": "Candidates", + "modifier": "Default", + "type": { + "PlainType": "Vec" + }, + "fallback": "0x00", + "documentation": [ + " The present candidate list." + ] + }, + { + "name": "CandidateCount", + "modifier": "Default", + "type": { + "PlainType": "u32" + }, + "fallback": "0x00000000", + "documentation": [ + " Current number of active candidates" + ] + }, + { + "name": "NextFinalize", + "modifier": "Optional", + "type": { + "PlainType": "(BlockNumber,u32,Vec)" + }, + "fallback": "0x00", + "documentation": [ + " The accounts holding the seats that will become free on the next tally." + ] + }, + { + "name": "Leaderboard", + "modifier": "Optional", + "type": { + "PlainType": "Vec<(BalanceOf,AccountId)>" + }, + "fallback": "0x00", + "documentation": [ + " Get the leaderboard if we're in the presentation phase. The first element is the weight of each entry;", + " It may be the direct summed approval stakes, or a weighted version of it." + ] + }, + { + "name": "Proxy", + "modifier": "Optional", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "AccountId", + "value": "AccountId", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " Who is able to vote for whom. Value is the fund-holding account, key is the", + " vote-transaction-sending account." + ] + } + ], + "calls": [ + { + "name": "set_approvals", + "args": [ + { + "name": "votes", + "type": "Vec" + }, + { + "name": "index", + "type": "Compact" + }, + { + "name": "hint", + "type": "SetIndex" + } + ], + "documentation": [ + " Set candidate approvals. Approval slots stay valid as long as candidates in those slots", + " are registered.", + "", + " Locks the total balance of caller indefinitely.", + " Only [`retract_voter`] or [`reap_inactive_voter`] can unlock the balance.", + "", + " `hint` argument is interpreted differently based on:", + " - if `origin` is setting approvals for the first time: The index will be checked", + " for being a valid _hole_ in the voter list.", + " - if the hint is correctly pointing to a hole, no fee is deducted from `origin`.", + " - Otherwise, the call will succeed but the index is ignored and simply a push to the last chunk", + " with free space happens. If the new push causes a new chunk to be created, a fee indicated by", + " [`VotingFee`] is deducted.", + " - if `origin` is already a voter: the index __must__ be valid and point to the correct", + " position of the `origin` in the current voters list.", + "", + " Note that any trailing `false` votes in `votes` is ignored; In approval voting, not voting for a candidate", + " and voting false, are equal.", + "", + " # ", + " - O(1).", + " - Two extra DB entries, one DB change.", + " - Argument `votes` is limited in length to number of candidates.", + " # " + ] + }, + { + "name": "proxy_set_approvals", + "args": [ + { + "name": "votes", + "type": "Vec" + }, + { + "name": "index", + "type": "Compact" + }, + { + "name": "hint", + "type": "SetIndex" + } + ], + "documentation": [ + " Set candidate approvals from a proxy. Approval slots stay valid as long as candidates in those slots", + " are registered.", + "", + " # ", + " - Same as `set_approvals` with one additional storage read.", + " # " + ] + }, + { + "name": "reap_inactive_voter", + "args": [ + { + "name": "reporter_index", + "type": "Compact" + }, + { + "name": "who", + "type": "Address" + }, + { + "name": "who_index", + "type": "Compact" + }, + { + "name": "assumed_vote_index", + "type": "Compact" + } + ], + "documentation": [ + " Remove a voter. For it not to be a bond-consuming no-op, all approved candidate indices", + " must now be either unregistered or registered to a candidate that registered the slot after", + " the voter gave their last approval set.", + "", + " Both indices must be provided as explained in [`voter_at`] function.", + "", + " May be called by anyone. Returns the voter deposit to `signed`.", + "", + " # ", + " - O(1).", + " - Two fewer DB entries, one DB change.", + " # " + ] + }, + { + "name": "retract_voter", + "args": [ + { + "name": "index", + "type": "Compact" + } + ], + "documentation": [ + " Remove a voter. All votes are cancelled and the voter deposit is returned.", + "", + " The index must be provided as explained in [`voter_at`] function.", + "", + " Also removes the lock on the balance of the voter. See [`do_set_approvals()`].", + "", + " # ", + " - O(1).", + " - Two fewer DB entries, one DB change.", + " # " + ] + }, + { + "name": "submit_candidacy", + "args": [ + { + "name": "slot", + "type": "Compact" + } + ], + "documentation": [ + " Submit oneself for candidacy.", + "", + " Account must have enough transferrable funds in it to pay the bond.", + "", + " NOTE: if `origin` has already assigned approvals via [`set_approvals`],", + " it will NOT have any usable funds to pass candidacy bond and must first retract.", + " Note that setting approvals will lock the entire balance of the voter until", + " retraction or being reported.", + "", + " # ", + " - Independent of input.", + " - Three DB changes.", + " # " + ] + }, + { + "name": "present_winner", + "args": [ + { + "name": "candidate", + "type": "Address" + }, + { + "name": "total", + "type": "Compact" + }, + { + "name": "index", + "type": "Compact" + } + ], + "documentation": [ + " Claim that `signed` is one of the top Self::carry_count() + current_vote().1 candidates.", + " Only works if the `block_number >= current_vote().0` and `< current_vote().0 + presentation_duration()`", + " `signed` should have at least", + "", + " # ", + " - O(voters) compute.", + " - One DB change.", + " # " + ] + }, + { + "name": "set_desired_seats", + "args": [ + { + "name": "count", + "type": "Compact" + } + ], + "documentation": [ + " Set the desired member count; if lower than the current count, then seats will not be up", + " election when they expire. If more, then a new vote will be started if one is not", + " already in progress." + ] + }, + { + "name": "remove_member", + "args": [ + { + "name": "who", + "type": "Address" + } + ], + "documentation": [ + " Remove a particular member from the set. This is effective immediately.", + "", + " Note: A tally should happen instantly (if not already in a presentation", + " period) to fill the seat if removal means that the desired members are not met." + ] + }, + { + "name": "set_presentation_duration", + "args": [ + { + "name": "count", + "type": "Compact" + } + ], + "documentation": [ + " Set the presentation duration. If there is currently a vote being presented for, will", + " invoke `finalize_vote`." + ] + }, + { + "name": "set_term_duration", + "args": [ + { + "name": "count", + "type": "Compact" + } + ], + "documentation": [ + " Set the presentation duration. If there is current a vote being presented for, will", + " invoke `finalize_vote`." + ] + } + ], + "events": [ + { + "name": "VoterReaped", + "args": [ + "AccountId", + "AccountId" + ], + "documentation": [ + " reaped voter, reaper" + ] + }, + { + "name": "BadReaperSlashed", + "args": [ + "AccountId" + ], + "documentation": [ + " slashed reaper" + ] + }, + { + "name": "TallyStarted", + "args": [ + "u32" + ], + "documentation": [ + " A tally (for approval votes of seat(s)) has started." + ] + }, + { + "name": "TallyFinalized", + "args": [ + "Vec", + "Vec" + ], + "documentation": [ + " A tally (for approval votes of seat(s)) has ended (with one or more new members)." + ] + } + ], + "constants": [ + { + "name": "CandidacyBond", + "type": "BalanceOf", + "value": "0x00e87648170000000000000000000000", + "documentation": [ + " How much should be locked up in order to submit one's candidacy. A reasonable", + " default value is 9." + ] + }, + { + "name": "VotingBond", + "type": "BalanceOf", + "value": "0x00e40b54020000000000000000000000", + "documentation": [ + " How much should be locked up in order to be able to submit votes." + ] + }, + { + "name": "VotingFee", + "type": "BalanceOf", + "value": "0x00c817a8040000000000000000000000", + "documentation": [ + " The amount of fee paid upon each vote submission, unless if they submit a", + " _hole_ index and replace it." + ] + }, + { + "name": "PresentSlashPerVoter", + "type": "BalanceOf", + "value": "0x00e1f505000000000000000000000000", + "documentation": [ + " The punishment, per voter, if you provide an invalid presentation. A", + " reasonable default value is 1." + ] + }, + { + "name": "CarryCount", + "type": "u32", + "value": "0x06000000", + "documentation": [ + " How many runners-up should have their approvals persist until the next", + " vote. A reasonable default value is 2." + ] + }, + { + "name": "InactiveGracePeriod", + "type": "VoteIndex", + "value": "0x01000000", + "documentation": [ + " How many vote indices need to go by after a target voter's last vote before", + " they can be reaped if their approvals are moot. A reasonable default value", + " is 1." + ] + }, + { + "name": "VotingPeriod", + "type": "BlockNumber", + "value": "0x8070000000000000", + "documentation": [ + " How often (in blocks) to check for new votes. A reasonable default value", + " is 1000." + ] + }, + { + "name": "DecayRatio", + "type": "u32", + "value": "0x00000000", + "documentation": [ + " Decay factor of weight when being accumulated. It should typically be set to", + " __at least__ `membership_size -1` to keep the collective secure.", + " When set to `N`, it indicates `(1/N)^t` of staked is decayed at weight", + " increment step `t`. 0 will result in no weight being added at all (normal", + " approval voting). A reasonable default value is 24." + ] + } + ] + }, + { + "name": "finality_tracker", + "prefix": "", + "storage": null, + "calls": [ + { + "name": "final_hint", + "args": [ + { + "name": "hint", + "type": "Compact" + } + ], + "documentation": [ + " Hint that the author of this block thinks the best finalized", + " block is the given number." + ] + } + ], + "events": null, + "constants": [ + { + "name": "WindowSize", + "type": "BlockNumber", + "value": "0x6500000000000000", + "documentation": [ + " The number of recent samples to keep from this chain. Default is 101." + ] + }, + { + "name": "ReportLatency", + "type": "BlockNumber", + "value": "0xe803000000000000", + "documentation": [ + " The delay after which point things become suspicious. Default is 1000." + ] + } + ] + }, + { + "name": "grandpa", + "prefix": "GrandpaFinality", + "storage": [ + { + "name": "Authorities", + "modifier": "Default", + "type": { + "PlainType": "Vec<(AuthorityId,AuthorityWeight)>" + }, + "fallback": "0x00", + "documentation": [ + " The current authority set." + ] + }, + { + "name": "PendingChange", + "modifier": "Optional", + "type": { + "PlainType": "StoredPendingChange" + }, + "fallback": "0x00", + "documentation": [ + " Pending change: (signaled at, scheduled change)." + ] + }, + { + "name": "NextForced", + "modifier": "Optional", + "type": { + "PlainType": "BlockNumber" + }, + "fallback": "0x00", + "documentation": [ + " next block number where we can force a change." + ] + }, + { + "name": "Stalled", + "modifier": "Optional", + "type": { + "PlainType": "(BlockNumber,BlockNumber)" + }, + "fallback": "0x00", + "documentation": [ + " `true` if we are currently stalled." + ] + } + ], + "calls": [ + { + "name": "report_misbehavior", + "args": [ + { + "name": "_report", + "type": "Bytes" + } + ], + "documentation": [ + " Report some misbehavior." + ] + } + ], + "events": [ + { + "name": "NewAuthorities", + "args": [ + "Vec<(AuthorityId,u64)>" + ], + "documentation": [ + " New authority set has been applied." + ] + } + ], + "constants": [] + }, + { + "name": "curated_grandpa", + "prefix": "CuratedGrandpa", + "storage": [ + { + "name": "ShufflePeriod", + "modifier": "Default", + "type": { + "PlainType": "BlockNumber" + }, + "fallback": "0x0000000000000000", + "documentation": [ + " How often to shuffle the GRANDPA sets.", + "", + " 0 means never." + ] + } + ], + "calls": [ + { + "name": "set_voters", + "args": [ + { + "name": "voters", + "type": "Vec<(AuthorityId,u64)>" + } + ], + "documentation": [ + " Changes the GRANDPA voter set." + ] + } + ], + "events": null, + "constants": [] + }, + { + "name": "treasury", + "prefix": "Treasury", + "storage": [ + { + "name": "ProposalCount", + "modifier": "Default", + "type": { + "PlainType": "ProposalIndex" + }, + "fallback": "0x00000000", + "documentation": [ + " Number of proposals that have been made." + ] + }, + { + "name": "Proposals", + "modifier": "Optional", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "ProposalIndex", + "value": "TreasuryProposal", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " Proposals that have been made." + ] + }, + { + "name": "Approvals", + "modifier": "Default", + "type": { + "PlainType": "Vec" + }, + "fallback": "0x00", + "documentation": [ + " Proposal indices that have been approved but not yet awarded." + ] + } + ], + "calls": [ + { + "name": "propose_spend", + "args": [ + { + "name": "value", + "type": "Compact" + }, + { + "name": "beneficiary", + "type": "Address" + } + ], + "documentation": [ + " Put forward a suggestion for spending. A deposit proportional to the value", + " is reserved and slashed if the proposal is rejected. It is returned once the", + " proposal is awarded.", + "", + " # ", + " - O(1).", + " - Limited storage reads.", + " - One DB change, one extra DB entry.", + " # " + ] + }, + { + "name": "reject_proposal", + "args": [ + { + "name": "proposal_id", + "type": "Compact" + } + ], + "documentation": [ + " Reject a proposed spend. The original deposit will be slashed.", + "", + " # ", + " - O(1).", + " - Limited storage reads.", + " - One DB clear.", + " # " + ] + }, + { + "name": "approve_proposal", + "args": [ + { + "name": "proposal_id", + "type": "Compact" + } + ], + "documentation": [ + " Approve a proposal. At a later time, the proposal will be allocated to the beneficiary", + " and the original deposit will be returned.", + "", + " # ", + " - O(1).", + " - Limited storage reads.", + " - One DB change.", + " # " + ] + } + ], + "events": [ + { + "name": "Proposed", + "args": [ + "ProposalIndex" + ], + "documentation": [ + " New proposal." + ] + }, + { + "name": "Spending", + "args": [ + "Balance" + ], + "documentation": [ + " We have ended a spend period and will now allocate funds." + ] + }, + { + "name": "Awarded", + "args": [ + "ProposalIndex", + "Balance", + "AccountId" + ], + "documentation": [ + " Some funds have been allocated." + ] + }, + { + "name": "Burnt", + "args": [ + "Balance" + ], + "documentation": [ + " Some of our funds have been burnt." + ] + }, + { + "name": "Rollover", + "args": [ + "Balance" + ], + "documentation": [ + " Spending has finished; this is the amount that rolls over until next spend." + ] + } + ], + "constants": [ + { + "name": "ProposalBond", + "type": "Permill", + "value": "0x50c30000", + "documentation": [ + " Fraction of a proposal's value that should be bonded in order to place the proposal.", + " An accepted proposal gets these back. A rejected proposal does not." + ] + }, + { + "name": "ProposalBondMinimum", + "type": "BalanceOf", + "value": "0x00e40b54020000000000000000000000", + "documentation": [ + " Minimum amount of funds that should be placed in a deposit for making a proposal." + ] + }, + { + "name": "SpendPeriod", + "type": "BlockNumber", + "value": "0x4038000000000000", + "documentation": [ + " Period between successive spends." + ] + }, + { + "name": "Burn", + "type": "Permill", + "value": "0x20a10700", + "documentation": [ + " Percentage of spare funds (if any) that are burnt per spend period." + ] + } + ] + }, + { + "name": "parachains", + "prefix": "Parachains", + "storage": [ + { + "name": "Parachains", + "modifier": "Default", + "type": { + "PlainType": "Vec" + }, + "fallback": "0x00", + "documentation": [] + }, + { + "name": "Code", + "modifier": "Optional", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "ParaId", + "value": "Bytes", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [] + }, + { + "name": "Heads", + "modifier": "Optional", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "ParaId", + "value": "Bytes", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [] + }, + { + "name": "Watermarks", + "modifier": "Optional", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "ParaId", + "value": "BlockNumber", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [] + }, + { + "name": "UnroutedIngress", + "modifier": "Optional", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "(BlockNumber,ParaId)", + "value": "Vec<(ParaId,Hash)>", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " Unrouted ingress. Maps (BlockNumber, to_chain) pairs to [(from_chain, egress_root)].", + "", + " There may be an entry under (i, p) in this map for every i between the parachain's", + " watermark and the current block." + ] + }, + { + "name": "RelayDispatchQueue", + "modifier": "Default", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "ParaId", + "value": "Vec", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " Messages ready to be dispatched onto the relay chain. It is subject to", + " `MAX_MESSAGE_COUNT` and `WATERMARK_MESSAGE_SIZE`." + ] + }, + { + "name": "RelayDispatchQueueSize", + "modifier": "Default", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "ParaId", + "value": "(u32,u32)", + "isLinked": false + } + }, + "fallback": "0x0000000000000000", + "documentation": [ + " Size of the dispatch queues. Separated from actual data in order to avoid costly", + " decoding when checking receipt validity. First item in tuple is the count of messages" + ] + }, + { + "name": "DidUpdate", + "modifier": "Default", + "type": { + "PlainType": "bool" + }, + "fallback": "0x00", + "documentation": [] + }, + { + "name": "NextFreeId", + "modifier": "Default", + "type": { + "PlainType": "ParaId" + }, + "fallback": "0x00000000", + "documentation": [ + " The next unused ParaId value." + ] + } + ], + "calls": [ + { + "name": "set_heads", + "args": [ + { + "name": "heads", + "type": "Vec" + } + ], + "documentation": [ + " Provide candidate receipts for parachains, in ascending order by id." + ] + }, + { + "name": "register_parachain", + "args": [ + { + "name": "id", + "type": "ParaId" + }, + { + "name": "code", + "type": "Bytes" + }, + { + "name": "initial_head_data", + "type": "Bytes" + } + ], + "documentation": [ + " Register a parachain with given code.", + " Fails if given ID is already used." + ] + }, + { + "name": "deregister_parachain", + "args": [ + { + "name": "id", + "type": "ParaId" + } + ], + "documentation": [ + " Deregister a parachain with given id" + ] + } + ], + "events": null, + "constants": [] + }, + { + "name": "slots", + "prefix": "Slots", + "storage": [ + { + "name": "AuctionCounter", + "modifier": "Default", + "type": { + "PlainType": "AuctionIndex" + }, + "fallback": "0x00000000", + "documentation": [ + " The number of auctions that been started so far." + ] + }, + { + "name": "ManagedIds", + "modifier": "Default", + "type": { + "PlainType": "Vec" + }, + "fallback": "0x00", + "documentation": [ + " All `ParaId` values that are managed by this module. This includes chains that are not", + " yet deployed (but have won an auction in the future)." + ] + }, + { + "name": "Deposits", + "modifier": "Default", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "ParaIdOf", + "value": "Vec", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " Various amounts on deposit for each parachain. An entry in `ManagedIds` implies a non-", + " default entry here.", + "", + " The actual amount locked on its behalf at any time is the maximum item in this list. The", + " first item in the list is the amount locked for the current Lease Period. Following", + " items are for the subsequent lease periods.", + "", + " The default value (an empty list) implies that the parachain no longer exists (or never", + " existed) as far as this module is concerned.", + "", + " If a parachain doesn't exist *yet* but is scheduled to exist in the future, then it", + " will be left-padded with one or more zeroes to denote the fact that nothing is held on", + " deposit for the non-existent chain currently, but is held at some point in the future." + ] + }, + { + "name": "AuctionInfo", + "modifier": "Optional", + "type": { + "PlainType": "(LeasePeriodOf,BlockNumber)" + }, + "fallback": "0x00", + "documentation": [ + " Information relating to the current auction, if there is one.", + "", + " The first item in the tuple is the lease period index that the first of the four", + " contiguous lease periods on auction is for. The second is the block number when the", + " auction will \"begin to end\", i.e. the first block of the Ending Period of the auction." + ] + }, + { + "name": "Winning", + "modifier": "Optional", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "BlockNumber", + "value": "WinningData", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " The winning bids for each of the 10 ranges at each block in the final Ending Period of", + " the current auction. The map's key is the 0-based index into the Ending Period. The", + " first block of the ending period is 0; the last is `EndingPeriod - 1`." + ] + }, + { + "name": "ReservedAmounts", + "modifier": "Optional", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "Bidder", + "value": "BalanceOf", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " Amounts currently reserved in the accounts of the bidders currently winning", + " (sub-)ranges." + ] + }, + { + "name": "OnboardQueue", + "modifier": "Default", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "LeasePeriodOf", + "value": "Vec", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " The set of Para IDs that have won and need to be on-boarded at an upcoming lease-period.", + " This is cleared out on the first block of the lease period." + ] + }, + { + "name": "Onboarding", + "modifier": "Optional", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "ParaIdOf", + "value": "(LeasePeriodOf,IncomingParachain)", + "isLinked": false + } + }, + "fallback": "0x00", + "documentation": [ + " The actual on-boarding information. Only exists when one of the following is true:", + " - It is before the lease period that the parachain should be on-boarded.", + " - The full on-boarding information has not yet been provided and the parachain is not", + " yet due to be off-boarded." + ] + }, + { + "name": "Offboarding", + "modifier": "Default", + "type": { + "MapType": { + "hasher": "Blake2_256", + "key": "ParaIdOf", + "value": "AccountId", + "isLinked": false + } + }, + "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", + "documentation": [ + " Off-boarding account; currency held on deposit for the parachain gets placed here if the", + " parachain gets off-boarded; i.e. its lease period is up and it isn't renewed." + ] + } + ], + "calls": [ + { + "name": "new_auction", + "args": [ + { + "name": "duration", + "type": "Compact" + }, + { + "name": "lease_period_index", + "type": "Compact" + } + ], + "documentation": [ + " Create a new auction.", + "", + " This can only happen when there isn't already an auction in progress and may only be", + " called by the root origin. Accepts the `duration` of this auction and the", + " `lease_period_index` of the initial lease period of the four that are to be auctioned." + ] + }, + { + "name": "bid", + "args": [ + { + "name": "sub", + "type": "Compact" + }, + { + "name": "auction_index", + "type": "Compact" + }, + { + "name": "first_slot", + "type": "Compact" + }, + { + "name": "last_slot", + "type": "Compact" + }, + { + "name": "amount", + "type": "Compact" + } + ], + "documentation": [ + " Make a new bid from an account (including a parachain account) for deploying a new", + " parachain.", + "", + " Multiple simultaneous bids from the same bidder are allowed only as long as all active", + " bids overlap each other (i.e. are mutually exclusive). Bids cannot be redacted.", + "", + " - `sub` is the sub-bidder ID, allowing for multiple competing bids to be made by (and", + " funded by) the same account.", + " - `auction_index` is the index of the auction to bid on. Should just be the present", + " value of `AuctionCounter`.", + " - `first_slot` is the first lease period index of the range to bid on. This is the", + " absolute lease period index value, not an auction-specific offset.", + " - `last_slot` is the last lease period index of the range to bid on. This is the", + " absolute lease period index value, not an auction-specific offset.", + " - `amount` is the amount to bid to be held as deposit for the parachain should the", + " bid win. This amount is held throughout the range." + ] + }, + { + "name": "bid_renew", + "args": [ + { + "name": "auction_index", + "type": "Compact" + }, + { + "name": "first_slot", + "type": "Compact" + }, + { + "name": "last_slot", + "type": "Compact" + }, + { + "name": "amount", + "type": "Compact" + } + ], + "documentation": [ + " Make a new bid from a parachain account for renewing that (pre-existing) parachain.", + "", + " The origin *must* be a parachain account.", + "", + " Multiple simultaneous bids from the same bidder are allowed only as long as all active", + " bids overlap each other (i.e. are mutually exclusive). Bids cannot be redacted.", + "", + " - `auction_index` is the index of the auction to bid on. Should just be the present", + " value of `AuctionCounter`.", + " - `first_slot` is the first lease period index of the range to bid on. This is the", + " absolute lease period index value, not an auction-specific offset.", + " - `last_slot` is the last lease period index of the range to bid on. This is the", + " absolute lease period index value, not an auction-specific offset.", + " - `amount` is the amount to bid to be held as deposit for the parachain should the", + " bid win. This amount is held throughout the range." + ] + }, + { + "name": "set_offboarding", + "args": [ + { + "name": "dest", + "type": "Address" + } + ], + "documentation": [ + " Set the off-boarding information for a parachain.", + "", + " The origin *must* be a parachain account.", + "", + " - `dest` is the destination account to receive the parachain's deposit." + ] + }, + { + "name": "fix_deploy_data", + "args": [ + { + "name": "sub", + "type": "Compact" + }, + { + "name": "para_id", + "type": "Compact" + }, + { + "name": "code_hash", + "type": "Hash" + }, + { + "name": "initial_head_data", + "type": "Bytes" + } + ], + "documentation": [ + " Set the deploy information for a successful bid to deploy a new parachain.", + "", + " - `origin` must be the successful bidder account.", + " - `sub` is the sub-bidder ID of the bidder.", + " - `para_id` is the parachain ID allotted to the winning bidder.", + " - `code_hash` is the hash of the parachain's Wasm validation function.", + " - `initial_head_data` is the parachain's initial head data." + ] + }, + { + "name": "elaborate_deploy_data", + "args": [ + { + "name": "para_id", + "type": "Compact" + }, + { + "name": "code", + "type": "Bytes" + } + ], + "documentation": [ + " Note a new parachain's code.", + "", + " This must be called after `fix_deploy_data` and `code` must be the preimage of the", + " `code_hash` passed there for the same `para_id`.", + "", + " This may be called before or after the beginning of the parachain's first lease period.", + " If called before then the parachain will become active at the first block of its", + " starting lease period. If after, then it will become active immediately after this call.", + "", + " - `_origin` is irrelevant.", + " - `para_id` is the parachain ID whose code will be elaborated.", + " - `code` is the preimage of the registered `code_hash` of `para_id`." + ] + } + ], + "events": [ + { + "name": "NewLeasePeriod", + "args": [ + "LeasePeriod" + ], + "documentation": [ + " A new lease period is beginning." + ] + }, + { + "name": "AuctionStarted", + "args": [ + "AuctionIndex", + "LeasePeriod", + "BlockNumber" + ], + "documentation": [ + " An auction started. Provides its index and the block number where it will begin to", + " close and the first lease period of the quadruplet that is auctioned." + ] + }, + { + "name": "AuctionClosed", + "args": [ + "AuctionIndex" + ], + "documentation": [ + " An auction ended. All funds become unreserved." + ] + }, + { + "name": "WonDeploy", + "args": [ + "NewBidder", + "SlotRange", + "ParaId", + "Balance" + ], + "documentation": [ + " Someone won the right to deploy a parachain. Balance amount is deducted for deposit." + ] + }, + { + "name": "WonRenewal", + "args": [ + "ParaId", + "SlotRange", + "Balance", + "Balance" + ], + "documentation": [ + " An existing parachain won the right to continue." + ] + }, + { + "name": "Reserved", + "args": [ + "AccountId", + "Balance", + "Balance" + ], + "documentation": [ + " Funds were reserved for a winning bid. First balance is the extra amount reserved.", + " Second is the total." + ] + }, + { + "name": "Unreserved", + "args": [ + "AccountId", + "Balance" + ], + "documentation": [ + " Funds were unreserved since bidder is no longer active." + ] + } + ], + "constants": [] + }, + { + "name": "sudo", + "prefix": "Sudo", + "storage": [ + { + "name": "Key", + "modifier": "Default", + "type": { + "PlainType": "AccountId" + }, + "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", + "documentation": [ + " The `AccountId` of the sudo key." + ] + } + ], + "calls": [ + { + "name": "sudo", + "args": [ + { + "name": "proposal", + "type": "Proposal" + } + ], + "documentation": [ + " Authenticates the sudo key and dispatches a function call with `Root` origin.", + "", + " The dispatch origin for this call must be _Signed_.", + "", + " # ", + " - O(1).", + " - Limited storage reads.", + " - No DB writes.", + " # " + ] + }, + { + "name": "set_key", + "args": [ + { + "name": "new", + "type": "Address" + } + ], + "documentation": [ + " Authenticates the current sudo key and sets the given AccountId (`new`) as the new sudo key.", + "", + " The dispatch origin for this call must be _Signed_.", + "", + " # ", + " - O(1).", + " - Limited storage reads.", + " - One DB change.", + " # " + ] + } + ], + "events": [ + { + "name": "Sudid", + "args": [ + "bool" + ], + "documentation": [ + " A sudo just took place." + ] + }, + { + "name": "KeyChanged", + "args": [ + "AccountId" + ], + "documentation": [ + " The sudoer just switched identity; the old key is supplied." + ] + } + ], + "constants": [] + } + ] + } + } +} \ No newline at end of file diff --git a/packages/types/src/Metadata/v6/static.polkadot.ts b/packages/types/src/Metadata/v6/static.polkadot.ts new file mode 100644 index 0000000000..70ca068d77 --- /dev/null +++ b/packages/types/src/Metadata/v6/static.polkadot.ts @@ -0,0 +1,7 @@ +// Copyright 2017-2019 @polkadot/types authors & contributors +// This software may be modified and distributed under the terms +// of the Apache-2.0 license. See the LICENSE file for details. + +const meta = '0x6d657461064c1873797374656d1853797374656d0134304163636f756e744e6f6e636501010130543a3a4163636f756e74496420543a3a496e64657800200000000000000000047c2045787472696e73696373206e6f6e636520666f72206163636f756e74732e3845787472696e736963436f756e7400000c753332040004b820546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e4c416c6c45787472696e7369637357656967687400000c753332040004150120546f74616c2077656967687420666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e24426c6f636b4861736801010138543a3a426c6f636b4e756d6265721c543a3a48617368008000000000000000000000000000000000000000000000000000000000000000000498204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e3445787472696e736963446174610101010c7533321c5665633c75383e000400043d012045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e3852616e646f6d4d6174657269616c0100482869382c205665633c543a3a486173683e2908000008a50120536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e205468697320697320617272616e676564206173206151012072696e6720627566666572207769746820746865206069386020707265666978206265696e672074686520696e64657820696e746f20746865206056656360206f6620746865206f6c6465737420686173682e184e756d626572010038543a3a426c6f636b4e756d626572200000000000000000040901205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e28506172656e744861736801001c543a3a4861736880000000000000000000000000000000000000000000000000000000000000000004702048617368206f66207468652070726576696f757320626c6f636b2e3845787472696e73696373526f6f7401001c543a3a486173688000000000000000000000000000000000000000000000000000000000000000000415012045787472696e7369637320726f6f74206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e1844696765737401002c4469676573744f663c543e040004f020446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e184576656e747301008c5665633c4576656e745265636f72643c543a3a4576656e742c20543a3a486173683e3e040004a0204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e284576656e74436f756e740100284576656e74496e646578100000000004b820546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e2c4576656e74546f706963730102010828291c543a3a48617368845665633c28543a3a426c6f636b4e756d6265722c204576656e74496e646578293e010400342501204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e646578657394206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e002d0120546865206669727374206b657920736572766573206e6f20707572706f73652e2054686973206669656c64206973206465636c6172656420617320646f75626c655f6d6170206a757374a820666f7220636f6e76656e69656e6365206f66207573696e67206072656d6f76655f707265666978602e00510120416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e2054686973450120616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e64e420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e004d01205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573744d012074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b0101206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e01141872656d61726b041c5f72656d61726b1c5665633c75383e046c204d616b6520736f6d65206f6e2d636861696e2072656d61726b2e387365745f686561705f7061676573041470616765730c75363404fc2053657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e207365745f636f6465040c6e65771c5665633c75383e04482053657420746865206e657720636f64652e2c7365745f73746f7261676504146974656d73345665633c4b657956616c75653e046c2053657420736f6d65206974656d73206f662073746f726167652e306b696c6c5f73746f7261676504106b657973205665633c4b65793e0478204b696c6c20736f6d65206974656d732066726f6d2073746f726167652e01084045787472696e7369635375636365737300049420416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e3c45787472696e7369634661696c656400045420416e2065787472696e736963206661696c65642e00106175726100000000002474696d657374616d702454696d657374616d7001080c4e6f77010024543a3a4d6f6d656e7420000000000000000004902043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e24446964557064617465010010626f6f6c040004b420446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f01040c736574040c6e6f7748436f6d706163743c543a3a4d6f6d656e743e245820536574207468652063757272656e742074696d652e00590120546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6ed82070686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e004501205468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e74207370656369666965642062794420604d696e696d756d506572696f64602e00d820546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e0004344d696e696d756d506572696f6424543a3a4d6f6d656e7420030000000000000010690120546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a20706572696f64690120746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c2067656e6572616c6c79650120776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c20626520646f75626c6520746869737020706572696f64206f6e2064656661756c742073657474696e67732e28617574686f727368697028417574686f7273686970010c18556e636c65730100e85665633c556e636c65456e7472794974656d3c543a3a426c6f636b4e756d6265722c20543a3a486173682c20543a3a4163636f756e7449643e3e0400041c20556e636c657318417574686f72000030543a3a4163636f756e7449640400046420417574686f72206f662063757272656e7420626c6f636b2e30446964536574556e636c6573010010626f6f6c040004bc205768657468657220756e636c6573207765726520616c72656164792073657420696e207468697320626c6f636b2e0104287365745f756e636c657304286e65775f756e636c6573385665633c543a3a4865616465723e04642050726f76696465206120736574206f6620756e636c65732e00001c696e64696365731c496e646963657301082c4e657874456e756d53657401003c543a3a4163636f756e74496e6465781000000000047c20546865206e657874206672656520656e756d65726174696f6e207365742e1c456e756d5365740101013c543a3a4163636f756e74496e646578445665633c543a3a4163636f756e7449643e00040004582054686520656e756d65726174696f6e20736574732e010001043c4e65774163636f756e74496e64657808244163636f756e744964304163636f756e74496e64657810882041206e6577206163636f756e7420696e646578207761732061737369676e65642e0005012054686973206576656e74206973206e6f7420747269676765726564207768656e20616e206578697374696e6720696e64657820697320726561737369676e65646020746f20616e6f7468657220604163636f756e744964602e002062616c616e6365732042616c616e636573011434546f74616c49737375616e6365010028543a3a42616c616e6365400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e1c56657374696e6700010130543a3a4163636f756e744964ac56657374696e675363686564756c653c543a3a42616c616e63652c20543a3a426c6f636b4e756d6265723e00040004d820496e666f726d6174696f6e20726567617264696e67207468652076657374696e67206f66206120676976656e206163636f756e742e2c4672656542616c616e636501010130543a3a4163636f756e74496428543a3a42616c616e63650040000000000000000000000000000000002c9c20546865202766726565272062616c616e6365206f66206120676976656e206163636f756e742e004101205468697320697320746865206f6e6c792062616c616e63652074686174206d61747465727320696e207465726d73206f66206d6f7374206f7065726174696f6e73206f6e20746f6b656e732e204974750120616c6f6e65206973207573656420746f2064657465726d696e65207468652062616c616e6365207768656e20696e2074686520636f6e747261637420657865637574696f6e20656e7669726f6e6d656e742e205768656e207468697355012062616c616e63652066616c6c732062656c6f77207468652076616c7565206f6620604578697374656e7469616c4465706f736974602c207468656e20746865202763757272656e74206163636f756e74272069733d012064656c657465643a207370656369666963616c6c7920604672656542616c616e6365602e20467572746865722c2074686520604f6e4672656542616c616e63655a65726f602063616c6c6261636b450120697320696e766f6b65642c20676976696e672061206368616e636520746f2065787465726e616c206d6f64756c657320746f20636c65616e2075702064617461206173736f636961746564207769746854207468652064656c65746564206163636f756e742e005d01206073797374656d3a3a4163636f756e744e6f6e63656020697320616c736f2064656c657465642069662060526573657276656442616c616e63656020697320616c736f207a65726f2028697420616c736f2067657473150120636f6c6c617073656420746f207a65726f2069662069742065766572206265636f6d6573206c657373207468616e20604578697374656e7469616c4465706f736974602e3c526573657276656442616c616e636501010130543a3a4163636f756e74496428543a3a42616c616e63650040000000000000000000000000000000002c75012054686520616d6f756e74206f66207468652062616c616e6365206f66206120676976656e206163636f756e7420746861742069732065787465726e616c6c792072657365727665643b20746869732063616e207374696c6c206765749c20736c61736865642c20627574206765747320736c6173686564206c617374206f6620616c6c2e006d0120546869732062616c616e63652069732061202772657365727665272062616c616e63652074686174206f746865722073756273797374656d732075736520696e206f7264657220746f2073657420617369646520746f6b656e732501207468617420617265207374696c6c20276f776e65642720627920746865206163636f756e7420686f6c6465722c20627574207768696368206172652073757370656e6461626c652e007501205768656e20746869732062616c616e63652066616c6c732062656c6f77207468652076616c7565206f6620604578697374656e7469616c4465706f736974602c207468656e2074686973202772657365727665206163636f756e7427b42069732064656c657465643a207370656369666963616c6c792c2060526573657276656442616c616e6365602e004d01206073797374656d3a3a4163636f756e744e6f6e63656020697320616c736f2064656c6574656420696620604672656542616c616e63656020697320616c736f207a65726f2028697420616c736f2067657473190120636f6c6c617073656420746f207a65726f2069662069742065766572206265636f6d6573206c657373207468616e20604578697374656e7469616c4465706f736974602e29144c6f636b7301010130543a3a4163636f756e744964b05665633c42616c616e63654c6f636b3c543a3a42616c616e63652c20543a3a426c6f636b4e756d6265723e3e00040004b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e0108207472616e736665720810646573748c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263651476616c75654c436f6d706163743c543a3a42616c616e63653e5cd8205472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e00090120607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e21012049742077696c6c2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d2062792074686520605472616e73666572466565602e1501204966207468652073656e6465722773206163636f756e742069732062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c74b4206f6620746865207472616e736665722c20746865206163636f756e742077696c6c206265207265617065642e00190120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e002c2023203c7765696768743e3101202d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f72cc202020696e70757420636f6e6669672074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e6901202d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c657820636f6d7075746174696f6e2e004c2052656c617465642066756e6374696f6e733a0051012020202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e2d012020202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c206361757365d420202020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642edc2020202d2052656d6f76696e6720656e6f7567682066756e64732066726f6d20616e206163636f756e742077696c6c20747269676765725901202020202060543a3a4475737452656d6f76616c3a3a6f6e5f756e62616c616e6365646020616e642060543a3a4f6e4672656542616c616e63655a65726f3a3a6f6e5f667265655f62616c616e63655f7a65726f602e00302023203c2f7765696768743e2c7365745f62616c616e63650c0c77686f8c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365206e65775f667265654c436f6d706163743c543a3a42616c616e63653e306e65775f72657365727665644c436f6d706163743c543a3a42616c616e63653e349420536574207468652062616c616e636573206f66206120676976656e206163636f756e742e00210120546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c090120616c736f2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e636560292e190120496620746865206e65772066726565206f722072657365727665642062616c616e63652069732062656c6f7720746865206578697374656e7469616c206465706f7369742ce82069742077696c6c20726573657420746865206163636f756e74206e6f6e636520286073797374656d3a3a4163636f756e744e6f6e636560292e00b420546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e002c2023203c7765696768743e80202d20496e646570656e64656e74206f662074686520617267756d656e74732ec4202d20436f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e64207772697465732e302023203c2f7765696768743e010c284e65774163636f756e7408244163636f756e7449641c42616c616e6365046c2041206e6577206163636f756e742077617320637265617465642e345265617065644163636f756e7404244163636f756e744964045c20416e206163636f756e7420776173207265617065642e205472616e7366657210244163636f756e744964244163636f756e7449641c42616c616e63651c42616c616e636504b0205472616e7366657220737563636565646564202866726f6d2c20746f2c2076616c75652c2066656573292e14484578697374656e7469616c4465706f73697428543a3a42616c616e63654000e40b5402000000000000000000000004d420546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e2c5472616e7366657246656528543a3a42616c616e63654000e1f5050000000000000000000000000494205468652066656520726571756972656420746f206d616b652061207472616e736665722e2c4372656174696f6e46656528543a3a42616c616e63654000e1f505000000000000000000000000049c205468652066656520726571756972656420746f2063726561746520616e206163636f756e742e485472616e73616374696f6e4261736546656528543a3a42616c616e63654000e1f50500000000000000000000000004dc205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b2074686520626173652e485472616e73616374696f6e4279746546656528543a3a42616c616e63654040420f00000000000000000000000000040d01205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e1c7374616b696e671c5374616b696e6701543856616c696461746f72436f756e7401000c753332100000000004a82054686520696465616c206e756d626572206f66207374616b696e67207061727469636970616e74732e544d696e696d756d56616c696461746f72436f756e7401000c7533321004000000044101204d696e696d756d206e756d626572206f66207374616b696e67207061727469636970616e7473206265666f726520656d657267656e637920636f6e646974696f6e732061726520696d706f7365642e3453657373696f6e52657761726401001c50657262696c6c103c000000042101204d6178696d756d207265776172642c207065722076616c696461746f722c20746861742069732070726f7669646564207065722061636365707461626c652073657373696f6e2e304f66666c696e65536c61736801001c50657262696c6c1040420f0004510120536c6173682c207065722076616c696461746f7220746861742069732074616b656e20666f72207468652066697273742074696d6520746865792061726520666f756e6420746f206265206f66666c696e652e444f66666c696e65536c617368477261636501000c7533321000000000043901204e756d626572206f6620696e7374616e636573206f66206f66666c696e65207265706f727473206265666f726520736c617368696e6720626567696e7320666f722076616c696461746f72732e34496e76756c6e657261626c65730100445665633c543a3a4163636f756e7449643e04000c590120416e792076616c696461746f72732074686174206d6179206e6576657220626520736c6173686564206f7220666f726369626c79206b69636b65642e20497427732061205665632073696e636520746865792772654d01206561737920746f20696e697469616c697a6520616e642074686520706572666f726d616e636520686974206973206d696e696d616c2028776520657870656374206e6f206d6f7265207468616e20666f7572ac20696e76756c6e657261626c65732920616e64207265737472696374656420746f20746573746e6574732e18426f6e64656400010130543a3a4163636f756e74496430543a3a4163636f756e744964000400040101204d61702066726f6d20616c6c206c6f636b65642022737461736822206163636f756e747320746f2074686520636f6e74726f6c6c6572206163636f756e742e184c656467657200010130543a3a4163636f756e744964a45374616b696e674c65646765723c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e000400044501204d61702066726f6d20616c6c2028756e6c6f636b6564292022636f6e74726f6c6c657222206163636f756e747320746f2074686520696e666f20726567617264696e6720746865207374616b696e672e14506179656501010130543a3a4163636f756e7449644452657761726444657374696e6174696f6e00040004e42057686572652074686520726577617264207061796d656e742073686f756c64206265206d6164652e204b657965642062792073746173682e2856616c696461746f727301010130543a3a4163636f756e7449647056616c696461746f7250726566733c42616c616e63654f663c543e3e01080c0004450120546865206d61702066726f6d202877616e6e616265292076616c696461746f72207374617368206b657920746f2074686520707265666572656e636573206f6620746861742076616c696461746f722e284e6f6d696e61746f727301010130543a3a4163636f756e744964445665633c543a3a4163636f756e7449643e01040004650120546865206d61702066726f6d206e6f6d696e61746f72207374617368206b657920746f2074686520736574206f66207374617368206b657973206f6620616c6c2076616c696461746f727320746f206e6f6d696e6174652e1c5374616b65727301010130543a3a4163636f756e744964904578706f737572653c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e000c000000104d01204e6f6d696e61746f727320666f72206120706172746963756c6172206163636f756e74207468617420697320696e20616374696f6e207269676874206e6f772e20596f752063616e277420697465726174651901207468726f7567682076616c696461746f727320686572652c2062757420796f752063616e2066696e64207468656d20696e207468652053657373696f6e206d6f64756c652e00902054686973206973206b6579656420627920746865207374617368206163636f756e742e3843757272656e74456c65637465640100445665633c543a3a4163636f756e7449643e040004fc205468652063757272656e746c7920656c65637465642076616c696461746f7220736574206b65796564206279207374617368206163636f756e742049442e2843757272656e74457261010020457261496e6465781000000000045c205468652063757272656e742065726120696e6465782e5043757272656e7453657373696f6e52657761726401003042616c616e63654f663c543e4000000000000000000000000000000000042101204d6178696d756d207265776172642c207065722076616c696461746f722c20746861742069732070726f7669646564207065722061636365707461626c652073657373696f6e2e4043757272656e7445726152657761726401003042616c616e63654f663c543e40000000000000000000000000000000000859012054686520616363756d756c617465642072657761726420666f72207468652063757272656e74206572612e20526573657420746f207a65726f2061742074686520626567696e6e696e67206f662074686520657261dc20616e6420696e6372656173656420666f72206576657279207375636365737366756c6c792066696e69736865642073657373696f6e2e24536c6f745374616b6501003042616c616e63654f663c543e40000000000000000000000000000000000c31012054686520616d6f756e74206f662062616c616e6365206163746976656c79206174207374616b6520666f7220656163682076616c696461746f7220736c6f742c2063757272656e746c792e00c02054686973206973207573656420746f20646572697665207265776172647320616e642070756e6973686d656e74732e28536c617368436f756e7401010130543a3a4163636f756e7449640c753332001000000000085d0120546865206e756d626572206f662074696d6573206120676976656e2076616c696461746f7220686173206265656e207265706f72746564206f66666c696e652e205468697320676574732064656372656d656e74656474206279206f6e652065616368206572612074686174207061737365732e3c526563656e746c794f66666c696e650100a05665633c28543a3a4163636f756e7449642c20543a3a426c6f636b4e756d6265722c20753332293e0400085501204d6f737420726563656e742060524543454e545f4f46464c494e455f434f554e546020696e7374616e6365732e202857686f206974207761732c207768656e20697420776173207265706f727465642c20686f779c206d616e7920696e7374616e63657320746865792077657265206f66666c696e6520666f72292e2c466f7263654e6577457261010010626f6f6c0400041d01205472756520696620746865206e6578742073657373696f6e206368616e67652077696c6c2062652061206e657720657261207265676172646c657373206f6620696e6465782e28426f6e646564457261730100745665633c28457261496e6465782c2053657373696f6e496e646578293e04000425012041206d617070696e672066726f6d207374696c6c2d626f6e646564206572617320746f207468652066697273742073657373696f6e20696e646578206f662074686174206572612e013410626f6e640c28636f6e74726f6c6c65728c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263651476616c756554436f6d706163743c42616c616e63654f663c543e3e1470617965654452657761726444657374696e6174696f6e3c65012054616b6520746865206f726967696e206163636f756e74206173206120737461736820616e64206c6f636b207570206076616c756560206f66206974732062616c616e63652e2060636f6e74726f6c6c6572602077696c6c8420626520746865206163636f756e74207468617420636f6e74726f6c732069742e005101206076616c756560206d757374206265206d6f7265207468616e2074686520606578697374656e7469616c5f6465706f7369746020646566696e656420696e207468652042616c616e636573206d6f64756c652e00250120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20627920746865207374617368206163636f756e742e002c2023203c7765696768743ed4202d20496e646570656e64656e74206f662074686520617267756d656e74732e204d6f64657261746520636f6d706c65786974792e20202d204f2831292e68202d20546872656520657874726120444220656e74726965732e006d01204e4f54453a2054776f206f66207468652073746f726167652077726974657320286053656c663a3a626f6e646564602c206053656c663a3a7061796565602920617265205f6e657665725f20636c65616e656420756e6c65737325012074686520606f726967696e602066616c6c732062656c6f77205f6578697374656e7469616c206465706f7369745f20616e6420676574732072656d6f76656420617320647573742e302023203c2f7765696768743e28626f6e645f657874726104386d61785f6164646974696f6e616c54436f6d706163743c42616c616e63654f663c543e3e3865012041646420736f6d6520657874726120616d6f756e742074686174206861766520617070656172656420696e207468652073746173682060667265655f62616c616e63656020696e746f207468652062616c616e63652075703420666f72207374616b696e672e00510120557365207468697320696620746865726520617265206164646974696f6e616c2066756e647320696e20796f7572207374617368206163636f756e74207468617420796f75207769736820746f20626f6e642e650120556e6c696b65205b60626f6e64605d206f72205b60756e626f6e64605d20746869732066756e6374696f6e20646f6573206e6f7420696d706f736520616e79206c696d69746174696f6e206f6e2074686520616d6f756e744c20746861742063616e2062652061646465642e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e002c2023203c7765696768743ee8202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e20202d204f2831292e40202d204f6e6520444220656e7472792e302023203c2f7765696768743e18756e626f6e64041476616c756554436f6d706163743c42616c616e63654f663c543e3e5c5501205363686564756c65206120706f7274696f6e206f662074686520737461736820746f20626520756e6c6f636b656420726561647920666f72207472616e73666572206f75742061667465722074686520626f6e64010120706572696f6420656e64732e2049662074686973206c656176657320616e20616d6f756e74206163746976656c7920626f6e646564206c657373207468616e350120543a3a43757272656e63793a3a6578697374656e7469616c5f6465706f73697428292c207468656e20697420697320696e6372656173656420746f207468652066756c6c20616d6f756e742e004901204f6e63652074686520756e6c6f636b20706572696f6420697320646f6e652c20796f752063616e2063616c6c206077697468647261775f756e626f6e6465646020746f2061637475616c6c79206d6f7665c0207468652066756e6473206f7574206f66206d616e6167656d656e7420726561647920666f72207472616e736665722e003d01204e6f206d6f7265207468616e2061206c696d69746564206e756d626572206f6620756e6c6f636b696e67206368756e6b73202873656520604d41585f554e4c4f434b494e475f4348554e4b5360293d012063616e20636f2d657869737473206174207468652073616d652074696d652e20496e207468617420636173652c205b6043616c6c3a3a77697468647261775f756e626f6e646564605d206e656564fc20746f2062652063616c6c656420666972737420746f2072656d6f766520736f6d65206f6620746865206368756e6b732028696620706f737369626c65292e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e00982053656520616c736f205b6043616c6c3a3a77697468647261775f756e626f6e646564605d2e002c2023203c7765696768743e4101202d20496e646570656e64656e74206f662074686520617267756d656e74732e204c696d697465642062757420706f74656e7469616c6c79206578706c6f697461626c6520636f6d706c65786974792e98202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732e6501202d20456163682063616c6c20287265717569726573207468652072656d61696e646572206f662074686520626f6e6465642062616c616e636520746f2062652061626f766520606d696e696d756d5f62616c616e63656029710120202077696c6c2063617573652061206e657720656e74727920746f20626520696e73657274656420696e746f206120766563746f722028604c65646765722e756e6c6f636b696e676029206b65707420696e2073746f726167652ea501202020546865206f6e6c792077617920746f20636c65616e207468652061666f72656d656e74696f6e65642073746f72616765206974656d20697320616c736f20757365722d636f6e74726f6c6c656420766961206077697468647261775f756e626f6e646564602e40202d204f6e6520444220656e7472792e28203c2f7765696768743e4477697468647261775f756e626f6e64656400402d012052656d6f766520616e7920756e6c6f636b6564206368756e6b732066726f6d207468652060756e6c6f636b696e67602071756575652066726f6d206f7572206d616e6167656d656e742e003501205468697320657373656e7469616c6c7920667265657320757020746861742062616c616e636520746f206265207573656420627920746865207374617368206163636f756e7420746f20646f4c2077686174657665722069742077616e74732e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e006c2053656520616c736f205b6043616c6c3a3a756e626f6e64605d2e002c2023203c7765696768743e5501202d20436f756c6420626520646570656e64656e74206f6e2074686520606f726967696e6020617267756d656e7420616e6420686f77206d7563682060756e6c6f636b696e6760206368756e6b732065786973742e45012020497420696d706c6965732060636f6e736f6c69646174655f756e6c6f636b656460207768696368206c6f6f7073206f76657220604c65646765722e756e6c6f636b696e67602c207768696368206973f42020696e6469726563746c7920757365722d636f6e74726f6c6c65642e20536565205b60756e626f6e64605d20666f72206d6f72652064657461696c2e7901202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732c20796574207468652073697a65206f6620776869636820636f756c64206265206c61726765206261736564206f6e20606c6564676572602ec8202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e302023203c2f7765696768743e2076616c6964617465041470726566737056616c696461746f7250726566733c42616c616e63654f663c543e3e2ce8204465636c617265207468652064657369726520746f2076616c696461746520666f7220746865206f726967696e20636f6e74726f6c6c65722e00dc20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e002c2023203c7765696768743ee8202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e98202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec8202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e302023203c2f7765696768743e206e6f6d696e617465041c74617267657473a05665633c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263653e2c1101204465636c617265207468652064657369726520746f206e6f6d696e6174652060746172676574736020666f7220746865206f726967696e20636f6e74726f6c6c65722e00dc20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e002c2023203c7765696768743e2501202d20546865207472616e73616374696f6e277320636f6d706c65786974792069732070726f706f7274696f6e616c20746f207468652073697a65206f66206074617267657473602c982077686963682069732063617070656420617420604d41585f4e4f4d494e4154494f4e53602ed8202d20426f74682074686520726561647320616e642077726974657320666f6c6c6f7720612073696d696c6172207061747465726e2e302023203c2f7765696768743e146368696c6c002cc8204465636c617265206e6f2064657369726520746f206569746865722076616c6964617465206f72206e6f6d696e6174652e00dc20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e002c2023203c7765696768743ee8202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e54202d20436f6e7461696e73206f6e6520726561642ec8202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e302023203c2f7765696768743e247365745f7061796565041470617965654452657761726444657374696e6174696f6e2cb8202852652d2973657420746865207061796d656e742074617267657420666f72206120636f6e74726f6c6c65722e00dc20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e002c2023203c7765696768743ee8202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e98202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec8202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e302023203c2f7765696768743e387365745f636f6e74726f6c6c65720428636f6e74726f6c6c65728c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263652cb8202852652d2973657420746865207061796d656e742074617267657420666f72206120636f6e74726f6c6c65722e00dc20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e002c2023203c7765696768743ee8202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e98202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec8202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e302023203c2f7765696768743e4c7365745f76616c696461746f725f636f756e74040c6e657730436f6d706163743c7533323e04802054686520696465616c206e756d626572206f662076616c696461746f72732e34666f7263655f6e65775f65726100203d0120466f72636520746865726520746f2062652061206e6577206572612e205468697320616c736f20666f726365732061206e65772073657373696f6e20696d6d6564696174656c792061667465722e250120606170706c795f72657761726473602073686f756c64206265207472756520666f722076616c696461746f727320746f20676574207468652073657373696f6e207265776172642e002c2023203c7765696768743e80202d20496e646570656e64656e74206f662074686520617267756d656e74732e1501202d205472696767657273207468652050687261676d656e20656c656374696f6e2e20457870656e7369766520627574206e6f7420757365722d636f6e74726f6c6c65642ec4202d20446570656e6473206f6e2073746174653a20604f287c65646765737c202a207c76616c696461746f72737c29602e302023203c2f7765696768743e5c7365745f6f66666c696e655f736c6173685f6772616365040c6e657730436f6d706163743c7533323e04902053657420746865206f66666c696e6520736c61736820677261636520706572696f642e447365745f696e76756c6e657261626c6573042876616c696461746f7273445665633c543a3a4163636f756e7449643e04cc20536574207468652076616c696461746f72732077686f2063616e6e6f7420626520736c61736865642028696620616e79292e010c18526577617264041c42616c616e636504e020416c6c2076616c696461746f72732068617665206265656e2072657761726465642062792074686520676976656e2062616c616e63652e384f66666c696e655761726e696e6708244163636f756e7449640c753332084901204f6e652076616c696461746f722028616e6420697473206e6f6d696e61746f72732920686173206265656e20676976656e20616e206f66666c696e652d7761726e696e6720286974206973207374696c6c0d012077697468696e20697473206772616365292e205468652061636372756564206e756d626572206f6620736c6173686573206973207265636f726465642c20746f6f2e304f66666c696e65536c61736808244163636f756e7449641c42616c616e6365042501204f6e652076616c696461746f722028616e6420697473206e6f6d696e61746f72732920686173206265656e20736c61736865642062792074686520676976656e20616d6f756e742e083853657373696f6e735065724572613053657373696f6e496e64657810060000000470204e756d626572206f662073657373696f6e7320706572206572612e3c426f6e64696e674475726174696f6e20457261496e64657810a002000004e4204e756d626572206f6620657261732074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e1c73657373696f6e1c53657373696f6e01142856616c696461746f727301004c5665633c543a3a56616c696461746f7249643e0400047c205468652063757272656e7420736574206f662076616c696461746f72732e3043757272656e74496e64657801003053657373696f6e496e646578100000000004782043757272656e7420696e646578206f66207468652073657373696f6e2e1c4368616e676564010010626f6f6c040004b8205472756520696620616e797468696e6720686173206368616e67656420696e20746869732073657373696f6e2e345175657565644368616e676564010010626f6f6c0400045420517565756564206b657973206368616e6765642e285175657565644b6579730100785665633c28543a3a56616c696461746f7249642c20543a3a4b657973293e0400083d012054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b657973e02077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e0104207365745f6b65797308106b6579731c543a3a4b6579731470726f6f661c5665633c75383e28e42053657473207468652073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c657220746f20606b6579602e210120416c6c6f777320616e206163636f756e7420746f20736574206974732073657373696f6e206b6579207072696f7220746f206265636f6d696e6720612076616c696461746f722ec4205468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e00d420546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e002c2023203c7765696768743e88202d204f286c6f67206e2920696e206e756d626572206f66206163636f756e74732e58202d204f6e6520657874726120444220656e7472792e302023203c2f7765696768743e0104284e657753657373696f6e043053657373696f6e496e646578085501204e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e74206973207468652073657373696f6e20696e6465782c206e6f742074686520626c6f636b88206e756d626572206173207468652074797065206d6967687420737567676573742e002464656d6f63726163792444656d6f6372616379013c3c5075626c696350726f70436f756e7401002450726f70496e646578100000000004f420546865206e756d626572206f6620287075626c6963292070726f706f73616c7320746861742068617665206265656e206d61646520736f206661722e2c5075626c696350726f70730100ac5665633c2850726f70496e6465782c20543a3a50726f706f73616c2c20543a3a4163636f756e744964293e0400048020546865207075626c69632070726f706f73616c732e20556e736f727465642e244465706f7369744f660001012450726f70496e646578842842616c616e63654f663c543e2c205665633c543a3a4163636f756e7449643e2900040004842054686f73652077686f2068617665206c6f636b65642061206465706f7369742e3c5265666572656e64756d436f756e7401003c5265666572656e64756d496e646578100000000004310120546865206e6578742066726565207265666572656e64756d20696e6465782c20616b6120746865206e756d626572206f66207265666572656e6461207374617274656420736f206661722e244e65787454616c6c7901003c5265666572656e64756d496e646578100000000004c820546865206e657874207265666572656e64756d20696e64657820746861742073686f756c642062652074616c6c6965642e405265666572656e64756d496e666f4f660001013c5265666572656e64756d496e646578b4285265666572656e64756d496e666f3c543a3a426c6f636b4e756d6265722c20543a3a50726f706f73616c3e2900040004b420496e666f726d6174696f6e20636f6e6365726e696e6720616e7920676976656e207265666572656e64756d2e344469737061746368517565756501010138543a3a426c6f636b4e756d626572ac5665633c4f7074696f6e3c28543a3a50726f706f73616c2c205265666572656e64756d496e646578293e3e00040004c0205175657565206f66207375636365737366756c207265666572656e646120746f20626520646973706174636865642e24566f74657273466f720101013c5265666572656e64756d496e646578445665633c543a3a4163636f756e7449643e00040004a4204765742074686520766f7465727320666f72207468652063757272656e742070726f706f73616c2e18566f74654f660101017c285265666572656e64756d496e6465782c20543a3a4163636f756e7449642910566f7465000400106101204765742074686520766f746520696e206120676976656e207265666572656e64756d206f66206120706172746963756c617220766f7465722e2054686520726573756c74206973206d65616e696e6766756c206f6e6c794d012069662060766f746572735f666f726020696e636c756465732074686520766f746572207768656e2063616c6c6564207769746820746865207265666572656e64756d2028796f75276c6c20676574207468655d012064656661756c742060566f7465602076616c7565206f7468657277697365292e20496620796f7520646f6e27742077616e7420746f20636865636b2060766f746572735f666f72602c207468656e20796f752063616ef420616c736f20636865636b20666f722073696d706c65206578697374656e636520776974682060566f74654f663a3a657869737473602066697273742e1450726f787900010130543a3a4163636f756e74496430543a3a4163636f756e7449640004000831012057686f2069732061626c6520746f20766f746520666f722077686f6d2e2056616c7565206973207468652066756e642d686f6c64696e67206163636f756e742c206b6579206973207468658820766f74652d7472616e73616374696f6e2d73656e64696e67206163636f756e742e2c44656c65676174696f6e7301010130543a3a4163636f756e7449646828543a3a4163636f756e7449642c20436f6e76696374696f6e2901840000000000000000000000000000000000000000000000000000000000000000000441012047657420746865206163636f756e742028616e64206c6f636b20706572696f64732920746f20776869636820616e6f74686572206163636f756e742069732064656c65676174696e6720766f74652e544c6173745461626c656457617345787465726e616c010010626f6f6c0400085901205472756520696620746865206c617374207265666572656e64756d207461626c656420776173207375626d69747465642065787465726e616c6c792e2046616c7365206966206974207761732061207075626c6963282070726f706f73616c2e304e65787445787465726e616c00007028543a3a50726f706f73616c2c20566f74655468726573686f6c6429040010590120546865207265666572656e64756d20746f206265207461626c6564207768656e6576657220697420776f756c642062652076616c696420746f207461626c6520616e2065787465726e616c2070726f706f73616c2e550120546869732068617070656e73207768656e2061207265666572656e64756d206e6565647320746f206265207461626c656420616e64206f6e65206f662074776f20636f6e646974696f6e7320617265206d65743aa4202d20604c6173745461626c656457617345787465726e616c60206973206066616c7365603b206f7268202d20605075626c696350726f70736020697320656d7074792e24426c61636b6c6973740001011c543a3a486173688c28543a3a426c6f636b4e756d6265722c205665633c543a3a4163636f756e7449643e290004000851012041207265636f7264206f662077686f207665746f656420776861742e204d6170732070726f706f73616c206861736820746f206120706f737369626c65206578697374656e7420626c6f636b206e756d626572e82028756e74696c207768656e206974206d6179206e6f742062652072657375626d69747465642920616e642077686f207665746f65642069742e3443616e63656c6c6174696f6e730101011c543a3a4861736810626f6f6c000400042901205265636f7264206f6620616c6c2070726f706f73616c7320746861742068617665206265656e207375626a65637420746f20656d657267656e63792063616e63656c6c6174696f6e2e01441c70726f706f7365082070726f706f73616c40426f783c543a3a50726f706f73616c3e1476616c756554436f6d706163743c42616c616e63654f663c543e3e18a02050726f706f736520612073656e73697469766520616374696f6e20746f2062652074616b656e2e002c2023203c7765696768743e20202d204f2831292e80202d2054776f204442206368616e6765732c206f6e6520444220656e7472792e302023203c2f7765696768743e187365636f6e64042070726f706f73616c48436f6d706163743c50726f70496e6465783e18a02050726f706f736520612073656e73697469766520616374696f6e20746f2062652074616b656e2e002c2023203c7765696768743e20202d204f2831292e40202d204f6e6520444220656e7472792e302023203c2f7765696768743e10766f746508247265665f696e64657860436f6d706163743c5265666572656e64756d496e6465783e10766f746510566f74651c350120566f746520696e2061207265666572656e64756d2e2049662060766f74652e69735f6179652829602c2074686520766f746520697320746f20656e616374207468652070726f706f73616c3bbc206f7468657277697365206974206973206120766f746520746f206b65657020746865207374617475732071756f2e002c2023203c7765696768743e20202d204f2831292e7c202d204f6e65204442206368616e67652c206f6e6520444220656e7472792e302023203c2f7765696768743e2870726f78795f766f746508247265665f696e64657860436f6d706163743c5265666572656e64756d496e6465783e10766f746510566f74651c510120566f746520696e2061207265666572656e64756d206f6e20626568616c66206f6620612073746173682e2049662060766f74652e69735f6179652829602c2074686520766f746520697320746f20656e616374f8207468652070726f706f73616c3b20206f7468657277697365206974206973206120766f746520746f206b65657020746865207374617475732071756f2e002c2023203c7765696768743e20202d204f2831292e7c202d204f6e65204442206368616e67652c206f6e6520444220656e7472792e302023203c2f7765696768743e44656d657267656e63795f70726f706f7365102070726f706f73616c40426f783c543a3a50726f706f73616c3e247468726573686f6c6434566f74655468726573686f6c6434766f74696e675f706572696f6438543a3a426c6f636b4e756d6265721464656c617938543a3a426c6f636b4e756d6265721888205363686564756c6520616e20656d657267656e6379207265666572656e64756d2e00610120546869732077696c6c206372656174652061206e6577207265666572656e64756d20666f7220746865206070726f706f73616c602c20617070726f766564206173206c6f6e6720617320636f756e74656420766f74657319012065786365656420607468726573686f6c646020616e642c20696620617070726f7665642c20656e61637465642061667465722074686520676976656e206064656c6179602e00fc204974206d61792062652063616c6c65642066726f6d206569746865722074686520526f6f74206f722074686520456d657267656e6379206f726967696e2e40656d657267656e63795f63616e63656c04247265665f696e6465783c5265666572656e64756d496e646578085101205363686564756c6520616e20656d657267656e63792063616e63656c6c6174696f6e206f662061207265666572656e64756d2e2043616e6e6f742068617070656e20747769636520746f207468652073616d6530207265666572656e64756d2e4065787465726e616c5f70726f706f7365042070726f706f73616c40426f783c543a3a50726f706f73616c3e083101205363686564756c652061207265666572656e64756d20746f206265207461626c6564206f6e6365206974206973206c6567616c20746f207363686564756c6520616e2065787465726e616c30207265666572656e64756d2e6465787465726e616c5f70726f706f73655f6d616a6f72697479042070726f706f73616c40426f783c543a3a50726f706f73616c3e085901205363686564756c652061206d616a6f726974792d63617272696573207265666572656e64756d20746f206265207461626c6564206e657874206f6e6365206974206973206c6567616c20746f207363686564756c656020616e2065787465726e616c207265666572656e64756d2e3465787465726e616c5f707573680c3470726f706f73616c5f686173681c543a3a4861736834766f74696e675f706572696f6438543a3a426c6f636b4e756d6265721464656c617938543a3a426c6f636b4e756d626572205101205363686564756c65207468652063757272656e746c792065787465726e616c6c792d70726f706f736564206d616a6f726974792d63617272696573207265666572656e64756d20746f206265207461626c6564650120696d6d6564696174656c792e204966207468657265206973206e6f2065787465726e616c6c792d70726f706f736564207265666572656e64756d2063757272656e746c792c206f72206966207468657265206973206f6e65ec20627574206974206973206e6f742061206d616a6f726974792d63617272696573207265666572656e64756d207468656e206974206661696c732e00f8202d206070726f706f73616c5f68617368603a205468652068617368206f66207468652063757272656e742065787465726e616c2070726f706f73616c2e2d01202d2060766f74696e675f706572696f64603a2054686520706572696f64207468617420697320616c6c6f77656420666f7220766f74696e67206f6e20746869732070726f706f73616c2e5501202d206064656c6179603a20546865206e756d626572206f6620626c6f636b20616674657220766f74696e672068617320656e64656420696e20617070726f76616c20616e6420746869732073686f756c64206265f0202020656e61637465642e20496e6372656173656420746f2060456d657267656e6379566f74696e67506572696f646020696620746f6f206c6f772e347665746f5f65787465726e616c043470726f706f73616c5f686173681c543a3a4861736804bc205665746f20616e6420626c61636b6c697374207468652065787465726e616c2070726f706f73616c20686173682e4463616e63656c5f7265666572656e64756d04247265665f696e64657860436f6d706163743c5265666572656e64756d496e6465783e04542052656d6f76652061207265666572656e64756d2e3463616e63656c5f7175657565640c107768656e5c436f6d706163743c543a3a426c6f636b4e756d6265723e14776869636830436f6d706163743c7533323e107768617460436f6d706163743c5265666572656e64756d496e6465783e04a02043616e63656c20612070726f706f73616c2071756575656420666f7220656e6163746d656e742e247365745f70726f7879041470726f787930543a3a4163636f756e7449641498205370656369667920612070726f78792e2043616c6c6564206279207468652073746173682e002c2023203c7765696768743e58202d204f6e6520657874726120444220656e7472792e302023203c2f7765696768743e3072657369676e5f70726f787900149820436c656172207468652070726f78792e2043616c6c6564206279207468652070726f78792e002c2023203c7765696768743e40202d204f6e6520444220636c6561722e302023203c2f7765696768743e3072656d6f76655f70726f7879041470726f787930543a3a4163636f756e744964149820436c656172207468652070726f78792e2043616c6c6564206279207468652073746173682e002c2023203c7765696768743e40202d204f6e6520444220636c6561722e302023203c2f7765696768743e2064656c65676174650808746f30543a3a4163636f756e74496428636f6e76696374696f6e28436f6e76696374696f6e143c2044656c656761746520766f74652e002c2023203c7765696768743e58202d204f6e6520657874726120444220656e7472792e302023203c2f7765696768743e28756e64656c656761746500144420556e64656c656761746520766f74652e002c2023203c7765696768743e20202d204f2831292e302023203c2f7765696768743e012c2050726f706f736564082450726f70496e6465781c42616c616e636500185461626c65640c2450726f70496e6465781c42616c616e6365385665633c4163636f756e7449643e003845787465726e616c5461626c656400001c53746172746564083c5265666572656e64756d496e64657834566f74655468726573686f6c640018506173736564043c5265666572656e64756d496e64657800244e6f74506173736564043c5265666572656e64756d496e646578002443616e63656c6c6564043c5265666572656e64756d496e64657800204578656375746564083c5265666572656e64756d496e64657810626f6f6c002444656c65676174656408244163636f756e744964244163636f756e744964002c556e64656c65676174656404244163636f756e74496400185665746f65640c244163636f756e74496410486173682c426c6f636b4e756d62657200183c456e6163746d656e74506572696f6438543a3a426c6f636b4e756d62657220809706000000000014710120546865206d696e696d756d20706572696f64206f66206c6f636b696e6720616e642074686520706572696f64206265747765656e20612070726f706f73616c206265696e6720617070726f76656420616e6420656e61637465642e0031012049742073686f756c642067656e6572616c6c792062652061206c6974746c65206d6f7265207468616e2074686520756e7374616b6520706572696f6420746f20656e737572652074686174690120766f74696e67207374616b657273206861766520616e206f70706f7274756e69747920746f2072656d6f7665207468656d73656c7665732066726f6d207468652073797374656d20696e2074686520636173652077686572659c207468657920617265206f6e20746865206c6f73696e672073696465206f66206120766f74652e304c61756e6368506572696f6438543a3a426c6f636b4e756d62657220002706000000000004e420486f77206f6674656e2028696e20626c6f636b7329206e6577207075626c6963207265666572656e646120617265206c61756e636865642e30566f74696e67506572696f6438543a3a426c6f636b4e756d62657220002706000000000004b820486f77206f6674656e2028696e20626c6f636b732920746f20636865636b20666f72206e657720766f7465732e384d696e696d756d4465706f7369743042616c616e63654f663c543e400010a5d4e8000000000000000000000004350120546865206d696e696d756d20616d6f756e7420746f20626520757365642061732061206465706f73697420666f722061207075626c6963207265666572656e64756d2070726f706f73616c2e54456d657267656e6379566f74696e67506572696f6438543a3a426c6f636b4e756d62657220c0a800000000000004ec204d696e696d756d20766f74696e6720706572696f6420616c6c6f77656420666f7220616e20656d657267656e6379207265666572656e64756d2e34436f6f6c6f6666506572696f6438543a3a426c6f636b4e756d62657220809706000000000004610120506572696f6420696e20626c6f636b7320776865726520616e2065787465726e616c2070726f706f73616c206d6179206e6f742062652072652d7375626d6974746564206166746572206265696e67207665746f65642e28636f6c6c65637469766528436f6c6c65637469766501142450726f706f73616c730100305665633c543a3a486173683e040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001011c543a3a48617368643c542061732054726169743c493e3e3a3a50726f706f73616c00040004cc2041637475616c2070726f706f73616c20666f72206120676976656e20686173682c20696620697427732063757272656e742e18566f74696e670001011c543a3a486173684c566f7465733c543a3a4163636f756e7449643e00040004b420566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e7401000c753332100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100445665633c543a3a4163636f756e7449643e0400043901205468652063757272656e74206d656d62657273206f662074686520636f6c6c6563746976652e20546869732069732073746f72656420736f7274656420286a7573742062792076616c7565292e01102c7365745f6d656d62657273042c6e65775f6d656d62657273445665633c543a3a4163636f756e7449643e105101205365742074686520636f6c6c6563746976652773206d656d62657273686970206d616e75616c6c7920746f20606e65775f6d656d62657273602e204265206e69636520746f2074686520636861696e20616e645c2070726f76696465206974207072652d736f727465642e005820526571756972657320726f6f74206f726967696e2e1c65786563757465042070726f706f73616c78426f783c3c542061732054726169743c493e3e3a3a50726f706f73616c3e0cf420446973706174636820612070726f706f73616c2066726f6d2061206d656d626572207573696e672074686520604d656d62657260206f726967696e2e00ac204f726967696e206d7573742062652061206d656d626572206f662074686520636f6c6c6563746976652e1c70726f706f736508247468726573686f6c6450436f6d706163743c4d656d626572436f756e743e2070726f706f73616c78426f783c3c542061732054726169743c493e3e3a3a50726f706f73616c3e102c2023203c7765696768743e90202d20426f756e6465642073746f7261676520726561647320616e64207772697465732eb8202d20417267756d656e7420607468726573686f6c6460206861732062656172696e67206f6e207765696768742e302023203c2f7765696768743e10766f74650c2070726f706f73616c1c543a3a4861736814696e64657858436f6d706163743c50726f706f73616c496e6465783e1c617070726f766510626f6f6c102c2023203c7765696768743e8c202d20426f756e6465642073746f72616765207265616420616e64207772697465732e5501202d2057696c6c20626520736c696768746c792068656176696572206966207468652070726f706f73616c20697320617070726f766564202f20646973617070726f7665642061667465722074686520766f74652e302023203c2f7765696768743e011c205f5068616e746f6d041c5068616e746f6d04b42044756d6d7920746f206d616e616765207468652066616374207765206861766520696e7374616e63696e672e2050726f706f73656410244163636f756e7449643450726f706f73616c496e64657810486173682c4d656d626572436f756e74084d012041206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e4020604d656d626572436f756e7460292e14566f74656414244163636f756e744964104861736810626f6f6c2c4d656d626572436f756e742c4d656d626572436f756e740809012041206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e67190120612074616c6c79202879657320766f74657320616e64206e6f20766f74657320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e20417070726f76656404104861736804c42041206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c642e2c446973617070726f76656404104861736804d42041206d6f74696f6e20776173206e6f7420617070726f76656420627920746865207265717569726564207468726573686f6c642e20457865637574656408104861736810626f6f6c0405012041206d6f74696f6e207761732065786563757465643b2060626f6f6c6020697320747275652069662072657475726e656420776974686f7574206572726f722e384d656d626572457865637574656408104861736810626f6f6c042d0120412073696e676c65206d656d6265722064696420736f6d6520616374696f6e3b2060626f6f6c6020697320747275652069662072657475726e656420776974686f7574206572726f722e0028636f6c6c65637469766528436f6c6c65637469766501142450726f706f73616c730100305665633c543a3a486173683e040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001011c543a3a48617368643c542061732054726169743c493e3e3a3a50726f706f73616c00040004cc2041637475616c2070726f706f73616c20666f72206120676976656e20686173682c20696620697427732063757272656e742e18566f74696e670001011c543a3a486173684c566f7465733c543a3a4163636f756e7449643e00040004b420566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e7401000c753332100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100445665633c543a3a4163636f756e7449643e0400043901205468652063757272656e74206d656d62657273206f662074686520636f6c6c6563746976652e20546869732069732073746f72656420736f7274656420286a7573742062792076616c7565292e01102c7365745f6d656d62657273042c6e65775f6d656d62657273445665633c543a3a4163636f756e7449643e105101205365742074686520636f6c6c6563746976652773206d656d62657273686970206d616e75616c6c7920746f20606e65775f6d656d62657273602e204265206e69636520746f2074686520636861696e20616e645c2070726f76696465206974207072652d736f727465642e005820526571756972657320726f6f74206f726967696e2e1c65786563757465042070726f706f73616c78426f783c3c542061732054726169743c493e3e3a3a50726f706f73616c3e0cf420446973706174636820612070726f706f73616c2066726f6d2061206d656d626572207573696e672074686520604d656d62657260206f726967696e2e00ac204f726967696e206d7573742062652061206d656d626572206f662074686520636f6c6c6563746976652e1c70726f706f736508247468726573686f6c6450436f6d706163743c4d656d626572436f756e743e2070726f706f73616c78426f783c3c542061732054726169743c493e3e3a3a50726f706f73616c3e102c2023203c7765696768743e90202d20426f756e6465642073746f7261676520726561647320616e64207772697465732eb8202d20417267756d656e7420607468726573686f6c6460206861732062656172696e67206f6e207765696768742e302023203c2f7765696768743e10766f74650c2070726f706f73616c1c543a3a4861736814696e64657858436f6d706163743c50726f706f73616c496e6465783e1c617070726f766510626f6f6c102c2023203c7765696768743e8c202d20426f756e6465642073746f72616765207265616420616e64207772697465732e5501202d2057696c6c20626520736c696768746c792068656176696572206966207468652070726f706f73616c20697320617070726f766564202f20646973617070726f7665642061667465722074686520766f74652e302023203c2f7765696768743e011c205f5068616e746f6d041c5068616e746f6d04b42044756d6d7920746f206d616e616765207468652066616374207765206861766520696e7374616e63696e672e2050726f706f73656410244163636f756e7449643450726f706f73616c496e64657810486173682c4d656d626572436f756e74084d012041206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e4020604d656d626572436f756e7460292e14566f74656414244163636f756e744964104861736810626f6f6c2c4d656d626572436f756e742c4d656d626572436f756e740809012041206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e67190120612074616c6c79202879657320766f74657320616e64206e6f20766f74657320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e20417070726f76656404104861736804c42041206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c642e2c446973617070726f76656404104861736804d42041206d6f74696f6e20776173206e6f7420617070726f76656420627920746865207265717569726564207468726573686f6c642e20457865637574656408104861736810626f6f6c0405012041206d6f74696f6e207761732065786563757465643b2060626f6f6c6020697320747275652069662072657475726e656420776974686f7574206572726f722e384d656d626572457865637574656408104861736810626f6f6c042d0120412073696e676c65206d656d6265722064696420736f6d6520616374696f6e3b2060626f6f6c6020697320747275652069662072657475726e656420776974686f7574206572726f722e0024656c656374696f6e731c436f756e63696c01405050726573656e746174696f6e4475726174696f6e010038543a3a426c6f636b4e756d626572200000000000000000043d0120486f77206c6f6e6720746f2067697665206561636820746f702063616e64696461746520746f2070726573656e74207468656d73656c7665732061667465722074686520766f746520656e64732e305465726d4475726174696f6e010038543a3a426c6f636b4e756d626572200000000000000000049820486f77206c6f6e67206561636820706f736974696f6e2069732061637469766520666f722e3044657369726564536561747301000c753332100000000004e8204e756d626572206f66206163636f756e747320746861742073686f756c6420636f6e737469747574652074686520636f6c6c6563746976652e1c4d656d6265727301008c5665633c28543a3a4163636f756e7449642c20543a3a426c6f636b4e756d626572293e0400107901205468652063757272656e74206d656d626572736869702e205768656e2074686572652773206120766f746520676f696e67206f6e2c20746869732073686f756c64207374696c6c206265207573656420666f72206578656375746976657101206d6174746572732e2054686520626c6f636b206e756d62657220287365636f6e6420656c656d656e7420696e20746865207475706c65292069732074686520626c6f636b207468617420746865697220706f736974696f6e20697351012061637469766520756e74696c202863616c63756c61746564206279207468652073756d206f662074686520626c6f636b206e756d626572207768656e20746865206d656d6265722077617320656c65637465646820616e64207468656972207465726d206475726174696f6e292e24566f7465436f756e74010024566f7465496e6465781000000000041d012054686520746f74616c206e756d626572206f6620766f746520726f756e6473207468617420686176652068617070656e6564206f722061726520696e2070726f67726573732e2c417070726f76616c734f660101016028543a3a4163636f756e7449642c20536574496e64657829445665633c417070726f76616c466c61673e00040014a1012041206c697374206f6620766f74657320666f72206561636820766f7465722e2054686520766f746573206172652073746f726564206173206e756d657269632076616c75657320616e642070617273656420696e2061206269742d77697365206d616e6e65722e00650120496e206f7264657220746f2067657420612068756d616e2d7265616461626c6520726570726573656e746174696f6e2028605665633c626f6f6c3e60292c20757365205b60616c6c5f617070726f76616c735f6f66605d2e00510120467572746865726d6f72652c206561636820766563746f72206f66207363616c617273206973206368756e6b656420776974682074686520636170206f662060415050524f56414c5f5345545f53495a45602e385265676973746572496e666f4f6600010130543a3a4163636f756e7449644028566f7465496e6465782c2075333229000400087d012054686520766f746520696e64657820616e64206c69737420736c6f742074686174207468652063616e646964617465206077686f60207761732072656769737465726564206f7220604e6f6e6560206966207468657920617265206e6f74582063757272656e746c7920726567697374657265642e2c566f746572496e666f4f6600010130543a3a4163636f756e7449645c566f746572496e666f3c42616c616e63654f663c543e3e000400048420426173696320696e666f726d6174696f6e2061626f7574206120766f7465722e18566f7465727301010120536574496e646578645665633c4f7074696f6e3c543a3a4163636f756e7449643e3e000400040d01205468652070726573656e7420766f746572206c69737420286368756e6b656420616e6420636170706564206174205b60564f5445525f5345545f53495a45605d292e304e657874566f746572536574010020536574496e646578100000000004fc20746865206e65787420667265652073657420746f2073746f7265206120766f74657220696e2e20546869732077696c6c206b6565702067726f77696e672e28566f746572436f756e74010020536574496e646578100000000004682043757272656e74206e756d626572206f6620566f746572732e2843616e646964617465730100445665633c543a3a4163636f756e7449643e04000470205468652070726573656e742063616e646964617465206c6973742e3843616e646964617465436f756e7401000c753332100000000004902043757272656e74206e756d626572206f66206163746976652063616e64696461746573304e65787446696e616c697a650000a028543a3a426c6f636b4e756d6265722c207533322c205665633c543a3a4163636f756e7449643e29040004210120546865206163636f756e747320686f6c64696e672074686520736561747320746861742077696c6c206265636f6d652066726565206f6e20746865206e6578742074616c6c792e2c4c6561646572626f6172640000845665633c2842616c616e63654f663c543e2c20543a3a4163636f756e744964293e0400089d012047657420746865206c6561646572626f61726420696620776527726520696e207468652070726573656e746174696f6e2070686173652e2054686520666972737420656c656d656e742069732074686520776569676874206f66206561636820656e7472793b2901204974206d617920626520746865206469726563742073756d6d656420617070726f76616c207374616b65732c206f7220612077656967687465642076657273696f6e206f662069742e1450726f787900010130543a3a4163636f756e74496430543a3a4163636f756e7449640004000831012057686f2069732061626c6520746f20766f746520666f722077686f6d2e2056616c7565206973207468652066756e642d686f6c64696e67206163636f756e742c206b6579206973207468658820766f74652d7472616e73616374696f6e2d73656e64696e67206163636f756e742e0128347365745f617070726f76616c730c14766f746573245665633c626f6f6c3e14696e64657848436f6d706163743c566f7465496e6465783e1068696e7420536574496e646578606101205365742063616e64696461746520617070726f76616c732e20417070726f76616c20736c6f747320737461792076616c6964206173206c6f6e672061732063616e6469646174657320696e2074686f736520736c6f7473402061726520726567697374657265642e00c0204c6f636b732074686520746f74616c2062616c616e6365206f662063616c6c657220696e646566696e6974656c792e2901204f6e6c79205b60726574726163745f766f746572605d206f72205b60726561705f696e6163746976655f766f746572605d2063616e20756e6c6f636b207468652062616c616e63652e00d4206068696e746020617267756d656e7420697320696e74657270726574656420646966666572656e746c79206261736564206f6e3a4501202d20696620606f726967696e602069732073657474696e6720617070726f76616c7320666f72207468652066697273742074696d653a2054686520696e6465782077696c6c20626520636865636b6564b020666f72206265696e6720612076616c6964205f686f6c655f20696e2074686520766f746572206c6973742e4d012020202d206966207468652068696e7420697320636f72726563746c7920706f696e74696e6720746f206120686f6c652c206e6f206665652069732064656475637465642066726f6d20606f726967696e602e89012020202d204f74686572776973652c207468652063616c6c2077696c6c2073756363656564206275742074686520696e6465782069732069676e6f72656420616e642073696d706c792061207075736820746f20746865206c617374206368756e6b81012020207769746820667265652073706163652068617070656e732e20496620746865206e65772070757368206361757365732061206e6577206368756e6b20746f20626520637265617465642c20612066656520696e64696361746564206279742020205b60566f74696e67466565605d2069732064656475637465642e5d01202d20696620606f726967696e6020697320616c7265616479206120766f7465723a2074686520696e646578205f5f6d7573745f5f2062652076616c696420616e6420706f696e7420746f2074686520636f7272656374d420706f736974696f6e206f662074686520606f726967696e6020696e207468652063757272656e7420766f74657273206c6973742e00ad01204e6f7465207468617420616e7920747261696c696e67206066616c73656020766f74657320696e2060766f746573602069732069676e6f7265643b20496e20617070726f76616c20766f74696e672c206e6f7420766f74696e6720666f7220612063616e6469646174657420616e6420766f74696e672066616c73652c2061726520657175616c2e002c2023203c7765696768743e20202d204f2831292e9c202d2054776f20657874726120444220656e74726965732c206f6e65204442206368616e67652e0501202d20417267756d656e742060766f74657360206973206c696d6974656420696e206c656e67746820746f206e756d626572206f662063616e646964617465732e302023203c2f7765696768743e4c70726f78795f7365745f617070726f76616c730c14766f746573245665633c626f6f6c3e14696e64657848436f6d706163743c566f7465496e6465783e1068696e7420536574496e646578189501205365742063616e64696461746520617070726f76616c732066726f6d20612070726f78792e20417070726f76616c20736c6f747320737461792076616c6964206173206c6f6e672061732063616e6469646174657320696e2074686f736520736c6f7473402061726520726567697374657265642e002c2023203c7765696768743ef0202d2053616d6520617320607365745f617070726f76616c73602077697468206f6e65206164646974696f6e616c2073746f7261676520726561642e302023203c2f7765696768743e4c726561705f696e6163746976655f766f74657210387265706f727465725f696e64657830436f6d706163743c7533323e0c77686f8c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263652477686f5f696e64657830436f6d706163743c7533323e48617373756d65645f766f74655f696e64657848436f6d706163743c566f7465496e6465783e3061012052656d6f7665206120766f7465722e20466f72206974206e6f7420746f206265206120626f6e642d636f6e73756d696e67206e6f2d6f702c20616c6c20617070726f7665642063616e64696461746520696e64696365737101206d757374206e6f772062652065697468657220756e72656769737465726564206f72207265676973746572656420746f20612063616e646964617465207468617420726567697374657265642074686520736c6f74206166746572a02074686520766f7465722067617665207468656972206c61737420617070726f76616c207365742e00150120426f746820696e6469636573206d7573742062652070726f7669646564206173206578706c61696e656420696e205b60766f7465725f6174605d2066756e6374696f6e2e000101204d61792062652063616c6c656420627920616e796f6e652e2052657475726e732074686520766f746572206465706f73697420746f20607369676e6564602e002c2023203c7765696768743e20202d204f2831292e9c202d2054776f20666577657220444220656e74726965732c206f6e65204442206368616e67652e302023203c2f7765696768743e34726574726163745f766f7465720414696e64657830436f6d706163743c7533323e282d012052656d6f7665206120766f7465722e20416c6c20766f746573206172652063616e63656c6c656420616e642074686520766f746572206465706f7369742069732072657475726e65642e0009012054686520696e646578206d7573742062652070726f7669646564206173206578706c61696e656420696e205b60766f7465725f6174605d2066756e6374696f6e2e003d0120416c736f2072656d6f76657320746865206c6f636b206f6e207468652062616c616e6365206f662074686520766f7465722e20536565205b60646f5f7365745f617070726f76616c732829605d2e002c2023203c7765696768743e20202d204f2831292e9c202d2054776f20666577657220444220656e74726965732c206f6e65204442206368616e67652e302023203c2f7765696768743e407375626d69745f63616e6469646163790410736c6f7430436f6d706163743c7533323e3478205375626d6974206f6e6573656c6620666f722063616e6469646163792e001101204163636f756e74206d757374206861766520656e6f756768207472616e736665727261626c652066756e647320696e20697420746f207061792074686520626f6e642e002101204e4f54453a20696620606f726967696e602068617320616c72656164792061737369676e656420617070726f76616c7320766961205b607365745f617070726f76616c73605d2c45012069742077696c6c204e4f54206861766520616e7920757361626c652066756e647320746f20706173732063616e64696461637920626f6e6420616e64206d75737420666972737420726574726163742e3101204e6f746520746861742073657474696e6720617070726f76616c732077696c6c206c6f636b2074686520656e746972652062616c616e6365206f662074686520766f74657220756e74696c782072657472616374696f6e206f72206265696e67207265706f727465642e002c2023203c7765696768743e60202d20496e646570656e64656e74206f6620696e7075742e50202d205468726565204442206368616e6765732e302023203c2f7765696768743e3870726573656e745f77696e6e65720c2463616e6469646174658c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636514746f74616c54436f6d706163743c42616c616e63654f663c543e3e14696e64657848436f6d706163743c566f7465496e6465783e20650120436c61696d207468617420607369676e656460206973206f6e65206f662074686520746f702053656c663a3a63617272795f636f756e742829202b2063757272656e745f766f746528292e312063616e646964617465732ea101204f6e6c7920776f726b73206966207468652060626c6f636b5f6e756d626572203e3d2063757272656e745f766f746528292e306020616e6420603c2063757272656e745f766f746528292e30202b2070726573656e746174696f6e5f6475726174696f6e2829607820607369676e6564602073686f756c642068617665206174206c65617374002c2023203c7765696768743e54202d204f28766f746572732920636f6d707574652e44202d204f6e65204442206368616e67652e302023203c2f7765696768743e447365745f646573697265645f73656174730414636f756e7430436f6d706163743c7533323e0c650120536574207468652064657369726564206d656d62657220636f756e743b206966206c6f776572207468616e207468652063757272656e7420636f756e742c207468656e2073656174732077696c6c206e6f74206265207570490120656c656374696f6e207768656e2074686579206578706972652e204966206d6f72652c207468656e2061206e657720766f74652077696c6c2062652073746172746564206966206f6e65206973206e6f745420616c726561647920696e2070726f67726573732e3472656d6f76655f6d656d626572040c77686f8c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263651021012052656d6f7665206120706172746963756c6172206d656d6265722066726f6d20746865207365742e20546869732069732065666665637469766520696d6d6564696174656c792e002101204e6f74653a20412074616c6c792073686f756c642068617070656e20696e7374616e746c7920286966206e6f7420616c726561647920696e20612070726573656e746174696f6e410120706572696f642920746f2066696c6c2074686520736561742069662072656d6f76616c206d65616e732074686174207468652064657369726564206d656d6265727320617265206e6f74206d65742e647365745f70726573656e746174696f6e5f6475726174696f6e0414636f756e745c436f6d706163743c543a3a426c6f636b4e756d6265723e08590120536574207468652070726573656e746174696f6e206475726174696f6e2e2049662074686572652069732063757272656e746c79206120766f7465206265696e672070726573656e74656420666f722c2077696c6c6020696e766f6b65206066696e616c697a655f766f7465602e447365745f7465726d5f6475726174696f6e0414636f756e745c436f6d706163743c543a3a426c6f636b4e756d6265723e08510120536574207468652070726573656e746174696f6e206475726174696f6e2e2049662074686572652069732063757272656e74206120766f7465206265696e672070726573656e74656420666f722c2077696c6c6020696e766f6b65206066696e616c697a655f766f7465602e01102c566f74657252656170656408244163636f756e744964244163636f756e74496404542072656170656420766f7465722c2072656170657240426164526561706572536c617368656404244163636f756e744964043c20736c6173686564207265617065723054616c6c7953746172746564040c75333204d420412074616c6c792028666f7220617070726f76616c20766f746573206f662073656174287329292068617320737461727465642e3854616c6c7946696e616c697a656408385665633c4163636f756e7449643e385665633c4163636f756e7449643e04490120412074616c6c792028666f7220617070726f76616c20766f746573206f662073656174287329292068617320656e646564202877697468206f6e65206f72206d6f7265206e6577206d656d62657273292e203443616e646964616379426f6e643042616c616e63654f663c543e4000e8764817000000000000000000000008390120486f77206d7563682073686f756c64206265206c6f636b656420757020696e206f7264657220746f207375626d6974206f6e6527732063616e6469646163792e204120726561736f6e61626c65502064656661756c742076616c756520697320392e28566f74696e67426f6e643042616c616e63654f663c543e4000e40b5402000000000000000000000004090120486f77206d7563682073686f756c64206265206c6f636b656420757020696e206f7264657220746f2062652061626c6520746f207375626d697420766f7465732e24566f74696e674665653042616c616e63654f663c543e4000c817a80400000000000000000000000829012054686520616d6f756e74206f662066656520706169642075706f6e206561636820766f7465207375626d697373696f6e2c20756e6c6573732069662074686579207375626d6974206174205f686f6c655f20696e64657820616e64207265706c6163652069742e5050726573656e74536c617368506572566f7465723042616c616e63654f663c543e4000e1f505000000000000000000000000081501205468652070756e6973686d656e742c2070657220766f7465722c20696620796f752070726f7669646520616e20696e76616c69642070726573656e746174696f6e2e20417c20726561736f6e61626c652064656661756c742076616c756520697320312e284361727279436f756e740c7533321006000000081d0120486f77206d616e792072756e6e6572732d75702073686f756c64206861766520746865697220617070726f76616c73207065727369737420756e74696c20746865206e6578749c20766f74652e204120726561736f6e61626c652064656661756c742076616c756520697320322e4c496e6163746976654772616365506572696f6424566f7465496e64657810010000000c310120486f77206d616e7920766f746520696e6469636573206e65656420746f20676f20627920616674657220612074617267657420766f7465722773206c61737420766f7465206265666f72652d0120746865792063616e2062652072656170656420696620746865697220617070726f76616c7320617265206d6f6f742e204120726561736f6e61626c652064656661756c742076616c75651820697320312e30566f74696e67506572696f6438543a3a426c6f636b4e756d62657220807000000000000008250120486f77206f6674656e2028696e20626c6f636b732920746f20636865636b20666f72206e657720766f7465732e204120726561736f6e61626c652064656661756c742076616c75652420697320313030302e284465636179526174696f0c753332100000000014350120446563617920666163746f72206f6620776569676874207768656e206265696e6720616363756d756c617465642e2049742073686f756c64207479706963616c6c792062652073657420746f0501205f5f6174206c656173745f5f20606d656d626572736869705f73697a65202d316020746f206b6565702074686520636f6c6c656374697665207365637572652e1d01205768656e2073657420746f20604e602c20697420696e64696361746573206028312f4e295e7460206f66207374616b6564206973206465636179656420617420776569676874290120696e6372656d656e742073746570206074602e20302077696c6c20726573756c7420696e206e6f20776569676874206265696e6720616464656420617420616c6c20286e6f726d616cd020617070726f76616c20766f74696e67292e204120726561736f6e61626c652064656661756c742076616c75652069732032342e4066696e616c6974795f747261636b6572000001042866696e616c5f68696e74041068696e745c436f6d706163743c543a3a426c6f636b4e756d6265723e08f42048696e7420746861742074686520617574686f72206f66207468697320626c6f636b207468696e6b732074686520626573742066696e616c697a65646c20626c6f636b2069732074686520676976656e206e756d6265722e00082857696e646f7753697a6538543a3a426c6f636b4e756d62657220650000000000000004190120546865206e756d626572206f6620726563656e742073616d706c657320746f206b6565702066726f6d207468697320636861696e2e2044656661756c74206973203130312e345265706f72744c6174656e637938543a3a426c6f636b4e756d62657220e803000000000000041d01205468652064656c617920616674657220776869636820706f696e74207468696e6773206265636f6d6520737573706963696f75732e2044656661756c7420697320313030302e1c6772616e6470613c4772616e64706146696e616c69747901102c417574686f72697469657301008c5665633c28417574686f7269747949642c20417574686f72697479576569676874293e0400046c205468652063757272656e7420617574686f72697479207365742e3450656e64696e674368616e676500008c53746f72656450656e64696e674368616e67653c543a3a426c6f636b4e756d6265723e040004c42050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e284e657874466f72636564000038543a3a426c6f636b4e756d626572040004bc206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e1c5374616c6c656400008028543a3a426c6f636b4e756d6265722c20543a3a426c6f636b4e756d626572290400049020607472756560206966207765206172652063757272656e746c79207374616c6c65642e0104487265706f72745f6d69736265686176696f72041c5f7265706f72741c5665633c75383e0464205265706f727420736f6d65206d69736265686176696f722e0104384e6577417574686f726974696573045c5665633c28417574686f7269747949642c20753634293e0490204e657720617574686f726974792073657420686173206265656e206170706c6965642e003c637572617465645f6772616e64706138437572617465644772616e64706101043453687566666c65506572696f64010038543a3a426c6f636b4e756d6265722000000000000000000c9c20486f77206f6674656e20746f2073687566666c6520746865204752414e44504120736574732e003c2030206d65616e73206e657665722e0104287365745f766f746572730418766f74657273805665633c286772616e6470613a3a417574686f7269747949642c20753634293e047c204368616e67657320746865204752414e44504120766f746572207365742e0000207472656173757279205472656173757279010c3450726f706f73616c436f756e7401003450726f706f73616c496e646578100000000004a4204e756d626572206f662070726f706f73616c7320746861742068617665206265656e206d6164652e2450726f706f73616c730001013450726f706f73616c496e6465789050726f706f73616c3c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e000400047c2050726f706f73616c7320746861742068617665206265656e206d6164652e24417070726f76616c730100485665633c50726f706f73616c496e6465783e040004f82050726f706f73616c20696e646963657320746861742068617665206265656e20617070726f76656420627574206e6f742079657420617761726465642e010c3470726f706f73655f7370656e64081476616c756554436f6d706163743c42616c616e63654f663c543e3e2c62656e65666963696172798c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365242d012050757420666f727761726420612073756767657374696f6e20666f72207370656e64696e672e2041206465706f7369742070726f706f7274696f6e616c20746f207468652076616c7565350120697320726573657276656420616e6420736c6173686564206966207468652070726f706f73616c2069732072656a65637465642e2049742069732072657475726e6564206f6e636520746865542070726f706f73616c20697320617761726465642e002c2023203c7765696768743e20202d204f2831292e64202d204c696d697465642073746f726167652072656164732e94202d204f6e65204442206368616e67652c206f6e6520657874726120444220656e7472792e302023203c2f7765696768743e3c72656a6563745f70726f706f73616c042c70726f706f73616c5f696458436f6d706163743c50726f706f73616c496e6465783e1cfc2052656a65637420612070726f706f736564207370656e642e20546865206f726967696e616c206465706f7369742077696c6c20626520736c61736865642e002c2023203c7765696768743e20202d204f2831292e64202d204c696d697465642073746f726167652072656164732e40202d204f6e6520444220636c6561722e302023203c2f7765696768743e40617070726f76655f70726f706f73616c042c70726f706f73616c5f696458436f6d706163743c50726f706f73616c496e6465783e205d0120417070726f766520612070726f706f73616c2e2041742061206c617465722074696d652c207468652070726f706f73616c2077696c6c20626520616c6c6f636174656420746f207468652062656e6566696369617279ac20616e6420746865206f726967696e616c206465706f7369742077696c6c2062652072657475726e65642e002c2023203c7765696768743e20202d204f2831292e64202d204c696d697465642073746f726167652072656164732e44202d204f6e65204442206368616e67652e302023203c2f7765696768743e01142050726f706f736564043450726f706f73616c496e6465780438204e65772070726f706f73616c2e205370656e64696e67041c42616c616e636504e8205765206861766520656e6465642061207370656e6420706572696f6420616e642077696c6c206e6f7720616c6c6f636174652066756e64732e1c417761726465640c3450726f706f73616c496e6465781c42616c616e6365244163636f756e744964048020536f6d652066756e64732068617665206265656e20616c6c6f63617465642e144275726e74041c42616c616e6365048c20536f6d65206f66206f75722066756e64732068617665206265656e206275726e742e20526f6c6c6f766572041c42616c616e6365043101205370656e64696e67206861732066696e69736865643b20746869732069732074686520616d6f756e74207468617420726f6c6c73206f76657220756e74696c206e657874207370656e642e103050726f706f73616c426f6e641c5065726d696c6c1050c30000085501204672616374696f6e206f6620612070726f706f73616c27732076616c756520746861742073686f756c6420626520626f6e64656420696e206f7264657220746f20706c616365207468652070726f706f73616c2e110120416e2061636365707465642070726f706f73616c2067657473207468657365206261636b2e20412072656a65637465642070726f706f73616c20646f6573206e6f742e4c50726f706f73616c426f6e644d696e696d756d3042616c616e63654f663c543e4000e40b54020000000000000000000000044901204d696e696d756d20616d6f756e74206f662066756e647320746861742073686f756c6420626520706c6163656420696e2061206465706f73697420666f72206d616b696e6720612070726f706f73616c2e2c5370656e64506572696f6438543a3a426c6f636b4e756d626572204038000000000000048820506572696f64206265747765656e2073756363657373697665207370656e64732e104275726e1c5065726d696c6c1020a107000411012050657263656e74616765206f662073706172652066756e64732028696620616e7929207468617420617265206275726e7420706572207370656e6420706572696f642e2870617261636861696e732850617261636861696e7301242850617261636861696e7301002c5665633c5061726149643e04000010436f6465000101185061726149641c5665633c75383e00040000144865616473000101185061726149641c5665633c75383e000400002857617465726d61726b730001011850617261496438543a3a426c6f636b4e756d626572000400003c556e726f75746564496e67726573730001016028543a3a426c6f636b4e756d6265722c20506172614964294c5665633c285061726149642c2048617368293e00040010550120556e726f7574656420696e67726573732e204d6170732028426c6f636b4e756d6265722c20746f5f636861696e2920706169727320746f205b2866726f6d5f636861696e2c206567726573735f726f6f74295d2e004d01205468657265206d617920626520616e20656e74727920756e6465722028692c20702920696e2074686973206d617020666f722065766572792069206265747765656e207468652070617261636861696e2773842077617465726d61726b20616e64207468652063757272656e7420626c6f636b2e4852656c61794469737061746368517565756501010118506172614964485665633c5570776172644d6573736167653e000400081d01204d6573736167657320726561647920746f2062652064697370617463686564206f6e746f207468652072656c617920636861696e2e204974206973207375626a65637420746fc820604d41585f4d4553534147455f434f554e546020616e64206057415445524d41524b5f4d4553534147455f53495a45602e5852656c61794469737061746368517565756553697a650101011850617261496428287533322c2075333229002000000000000000000845012053697a65206f6620746865206469737061746368207175657565732e205365706172617465642066726f6d2061637475616c206461746120696e206f7264657220746f2061766f696420636f73746c795901206465636f64696e67207768656e20636865636b696e6720726563656970742076616c69646974792e204669727374206974656d20696e207475706c652069732074686520636f756e74206f66206d6573736167657324446964557064617465010010626f6f6c040000284e6578744672656549640100185061726149641000000000047820546865206e65787420756e75736564205061726149642076616c75652e010c247365745f686561647304146865616473585665633c417474657374656443616e6469646174653e0415012050726f766964652063616e64696461746520726563656970747320666f722070617261636861696e732c20696e20617363656e64696e67206f726465722062792069642e4872656769737465725f70617261636861696e0c0869641850617261496410636f64651c5665633c75383e44696e697469616c5f686561645f646174611c5665633c75383e089820526567697374657220612070617261636861696e207769746820676976656e20636f64652e8c204661696c7320696620676976656e20494420697320616c726561647920757365642e50646572656769737465725f70617261636861696e04086964185061726149640494204465726567697374657220612070617261636861696e207769746820676976656e206964000014736c6f747314536c6f747301243841756374696f6e436f756e74657201003041756374696f6e496e646578100000000004c420546865206e756d626572206f662061756374696f6e732074686174206265656e207374617274656420736f206661722e284d616e616765644964730100405665633c5061726149644f663c543e3e0400085d0120416c6c2060506172614964602076616c756573207468617420617265206d616e616765642062792074686973206d6f64756c652e205468697320696e636c7564657320636861696e73207468617420617265206e6f74d820796574206465706c6f7965642028627574206861766520776f6e20616e2061756374696f6e20696e2074686520667574757265292e204465706f736974730101012c5061726149644f663c543e445665633c42616c616e63654f663c543e3e000400345d0120566172696f757320616d6f756e7473206f6e206465706f73697420666f7220656163682070617261636861696e2e20416e20656e74727920696e20604d616e616765644964736020696d706c6965732061206e6f6e2d502064656661756c7420656e74727920686572652e006501205468652061637475616c20616d6f756e74206c6f636b6564206f6e2069747320626568616c6620617420616e792074696d6520697320746865206d6178696d756d206974656d20696e2074686973206c6973742e205468655101206669727374206974656d20696e20746865206c6973742069732074686520616d6f756e74206c6f636b656420666f72207468652063757272656e74204c6561736520506572696f642e20466f6c6c6f77696e67b0206974656d732061726520666f72207468652073756273657175656e74206c6561736520706572696f64732e006101205468652064656661756c742076616c75652028616e20656d707479206c6973742920696d706c6965732074686174207468652070617261636861696e206e6f206c6f6e6765722065786973747320286f72206e65766572b4206578697374656429206173206661722061732074686973206d6f64756c6520697320636f6e6365726e65642e00510120496620612070617261636861696e20646f65736e2774206578697374202a7965742a20627574206973207363686564756c656420746f20657869737420696e20746865206675747572652c207468656e2069745d012077696c6c206265206c6566742d7061646465642077697468206f6e65206f72206d6f7265207a65726f657320746f2064656e6f74652074686520666163742074686174206e6f7468696e672069732068656c64206f6e5d01206465706f73697420666f7220746865206e6f6e2d6578697374656e7420636861696e2063757272656e746c792c206275742069732068656c6420617420736f6d6520706f696e7420696e20746865206675747572652e2c41756374696f6e496e666f000088284c65617365506572696f644f663c543e2c20543a3a426c6f636b4e756d62657229040014f820496e666f726d6174696f6e2072656c6174696e6720746f207468652063757272656e742061756374696f6e2c206966207468657265206973206f6e652e00450120546865206669727374206974656d20696e20746865207475706c6520697320746865206c6561736520706572696f6420696e646578207468617420746865206669727374206f662074686520666f7572510120636f6e746967756f7573206c6561736520706572696f6473206f6e2061756374696f6e20697320666f722e20546865207365636f6e642069732074686520626c6f636b206e756d626572207768656e207468655d012061756374696f6e2077696c6c2022626567696e20746f20656e64222c20692e652e2074686520666972737420626c6f636b206f662074686520456e64696e6720506572696f64206f66207468652061756374696f6e2e1c57696e6e696e6700010138543a3a426c6f636b4e756d6265723857696e6e696e67446174613c543e0004000c5d01205468652077696e6e696e67206269647320666f722065616368206f66207468652031302072616e676573206174206561636820626c6f636b20696e207468652066696e616c20456e64696e6720506572696f64206f665101207468652063757272656e742061756374696f6e2e20546865206d61702773206b65792069732074686520302d626173656420696e64657820696e746f2074686520456e64696e6720506572696f642e205468651d0120666972737420626c6f636b206f662074686520656e64696e6720706572696f6420697320303b20746865206c6173742069732060456e64696e67506572696f64202d2031602e3c5265736572766564416d6f756e7473000101844269646465723c543a3a4163636f756e7449642c205061726149644f663c543e3e3042616c616e63654f663c543e00040008310120416d6f756e74732063757272656e746c7920726573657276656420696e20746865206163636f756e7473206f662074686520626964646572732063757272656e746c792077696e6e696e673820287375622d2972616e6765732e304f6e626f6172645175657565010101404c65617365506572696f644f663c543e405665633c5061726149644f663c543e3e0004000865012054686520736574206f662050617261204944732074686174206861766520776f6e20616e64206e65656420746f206265206f6e2d626f617264656420617420616e207570636f6d696e67206c656173652d706572696f642ef0205468697320697320636c6561726564206f7574206f6e2074686520666972737420626c6f636b206f6620746865206c6561736520706572696f642e284f6e626f617264696e670001012c5061726149644f663c543ef0284c65617365506572696f644f663c543e2c20496e636f6d696e6750617261636861696e3c543a3a4163636f756e7449642c20543a3a486173683e29000400104d01205468652061637475616c206f6e2d626f617264696e6720696e666f726d6174696f6e2e204f6e6c7920657869737473207768656e206f6e65206f662074686520666f6c6c6f77696e6720697320747275653a2501202d204974206973206265666f726520746865206c6561736520706572696f642074686174207468652070617261636861696e2073686f756c64206265206f6e2d626f61726465642e5901202d205468652066756c6c206f6e2d626f617264696e6720696e666f726d6174696f6e20686173206e6f7420796574206265656e2070726f766964656420616e64207468652070617261636861696e206973206e6f746c207965742064756520746f206265206f66662d626f61726465642e2c4f6666626f617264696e670101012c5061726149644f663c543e30543a3a4163636f756e74496400800000000000000000000000000000000000000000000000000000000000000000086501204f66662d626f617264696e67206163636f756e743b2063757272656e63792068656c64206f6e206465706f73697420666f72207468652070617261636861696e206765747320706c6163656420686572652069662074686539012070617261636861696e2067657473206f66662d626f61726465643b20692e652e20697473206c6561736520706572696f6420697320757020616e642069742069736e27742072656e657765642e01182c6e65775f61756374696f6e08206475726174696f6e5c436f6d706163743c543a3a426c6f636b4e756d6265723e486c656173655f706572696f645f696e64657864436f6d706163743c4c65617365506572696f644f663c543e3e1458204372656174652061206e65772061756374696f6e2e00550120546869732063616e206f6e6c792068617070656e207768656e2074686572652069736e277420616c726561647920616e2061756374696f6e20696e2070726f677265737320616e64206d6179206f6e6c7920626529012063616c6c65642062792074686520726f6f74206f726967696e2e20416363657074732074686520606475726174696f6e60206f6620746869732061756374696f6e20616e64207468655d0120606c656173655f706572696f645f696e64657860206f662074686520696e697469616c206c6561736520706572696f64206f662074686520666f757220746861742061726520746f2062652061756374696f6e65642e0c626964140c73756238436f6d706163743c53756249643e3461756374696f6e5f696e64657854436f6d706163743c41756374696f6e496e6465783e2866697273745f736c6f7464436f6d706163743c4c65617365506572696f644f663c543e3e246c6173745f736c6f7464436f6d706163743c4c65617365506572696f644f663c543e3e18616d6f756e7454436f6d706163743c42616c616e63654f663c543e3e404d01204d616b652061206e6577206269642066726f6d20616e206163636f756e742028696e636c7564696e6720612070617261636861696e206163636f756e742920666f72206465706c6f79696e672061206e65772c2070617261636861696e2e005d01204d756c7469706c652073696d756c74616e656f757320626964732066726f6d207468652073616d65206269646465722061726520616c6c6f776564206f6e6c79206173206c6f6e6720617320616c6c2061637469766541012062696473206f7665726c61702065616368206f746865722028692e652e20617265206d757475616c6c79206578636c7573697665292e20426964732063616e6e6f742062652072656461637465642e005901202d20607375626020697320746865207375622d6269646465722049442c20616c6c6f77696e6720666f72206d756c7469706c6520636f6d706574696e67206269647320746f206265206d6164652062792028616e64742066756e64656420627929207468652073616d65206163636f756e742e5101202d206061756374696f6e5f696e646578602069732074686520696e646578206f66207468652061756374696f6e20746f20626964206f6e2e2053686f756c64206a757374206265207468652070726573656e746c2076616c7565206f66206041756374696f6e436f756e746572602e4d01202d206066697273745f736c6f746020697320746865206669727374206c6561736520706572696f6420696e646578206f66207468652072616e676520746f20626964206f6e2e2054686973206973207468650d01206162736f6c757465206c6561736520706572696f6420696e6465782076616c75652c206e6f7420616e2061756374696f6e2d7370656369666963206f66667365742e4501202d20606c6173745f736c6f746020697320746865206c617374206c6561736520706572696f6420696e646578206f66207468652072616e676520746f20626964206f6e2e2054686973206973207468650d01206162736f6c757465206c6561736520706572696f6420696e6465782076616c75652c206e6f7420616e2061756374696f6e2d7370656369666963206f66667365742e4d01202d2060616d6f756e74602069732074686520616d6f756e7420746f2062696420746f2062652068656c64206173206465706f73697420666f72207468652070617261636861696e2073686f756c6420746865cc206269642077696e2e205468697320616d6f756e742069732068656c64207468726f7567686f7574207468652072616e67652e246269645f72656e6577103461756374696f6e5f696e64657854436f6d706163743c41756374696f6e496e6465783e2866697273745f736c6f7464436f6d706163743c4c65617365506572696f644f663c543e3e246c6173745f736c6f7464436f6d706163743c4c65617365506572696f644f663c543e3e18616d6f756e7454436f6d706163743c42616c616e63654f663c543e3e3c5101204d616b652061206e6577206269642066726f6d20612070617261636861696e206163636f756e7420666f722072656e6577696e67207468617420287072652d6578697374696e67292070617261636861696e2e00a820546865206f726967696e202a6d7573742a20626520612070617261636861696e206163636f756e742e005d01204d756c7469706c652073696d756c74616e656f757320626964732066726f6d207468652073616d65206269646465722061726520616c6c6f776564206f6e6c79206173206c6f6e6720617320616c6c2061637469766541012062696473206f7665726c61702065616368206f746865722028692e652e20617265206d757475616c6c79206578636c7573697665292e20426964732063616e6e6f742062652072656461637465642e005101202d206061756374696f6e5f696e646578602069732074686520696e646578206f66207468652061756374696f6e20746f20626964206f6e2e2053686f756c64206a757374206265207468652070726573656e746c2076616c7565206f66206041756374696f6e436f756e746572602e4d01202d206066697273745f736c6f746020697320746865206669727374206c6561736520706572696f6420696e646578206f66207468652072616e676520746f20626964206f6e2e2054686973206973207468650d01206162736f6c757465206c6561736520706572696f6420696e6465782076616c75652c206e6f7420616e2061756374696f6e2d7370656369666963206f66667365742e4501202d20606c6173745f736c6f746020697320746865206c617374206c6561736520706572696f6420696e646578206f66207468652072616e676520746f20626964206f6e2e2054686973206973207468650d01206162736f6c757465206c6561736520706572696f6420696e6465782076616c75652c206e6f7420616e2061756374696f6e2d7370656369666963206f66667365742e4d01202d2060616d6f756e74602069732074686520616d6f756e7420746f2062696420746f2062652068656c64206173206465706f73697420666f72207468652070617261636861696e2073686f756c6420746865cc206269642077696e2e205468697320616d6f756e742069732068656c64207468726f7567686f7574207468652072616e67652e3c7365745f6f6666626f617264696e670410646573748c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636514c82053657420746865206f66662d626f617264696e6720696e666f726d6174696f6e20666f7220612070617261636861696e2e00a820546865206f726967696e202a6d7573742a20626520612070617261636861696e206163636f756e742e002101202d20606465737460206973207468652064657374696e6174696f6e206163636f756e7420746f2072656365697665207468652070617261636861696e2773206465706f7369742e3c6669785f6465706c6f795f64617461100c73756238436f6d706163743c53756249643e1c706172615f696450436f6d706163743c5061726149644f663c543e3e24636f64655f686173681c543a3a4861736844696e697469616c5f686561645f646174611c5665633c75383e1c2d012053657420746865206465706c6f7920696e666f726d6174696f6e20666f722061207375636365737366756c2062696420746f206465706c6f792061206e65772070617261636861696e2e00c8202d20606f726967696e60206d75737420626520746865207375636365737366756c20626964646572206163636f756e742eb0202d20607375626020697320746865207375622d626964646572204944206f6620746865206269646465722e0101202d2060706172615f696460206973207468652070617261636861696e20494420616c6c6f7474656420746f207468652077696e6e696e67206269646465722e1d01202d2060636f64655f6861736860206973207468652068617368206f66207468652070617261636861696e2773205761736d2076616c69646174696f6e2066756e6374696f6e2ef0202d2060696e697469616c5f686561645f6461746160206973207468652070617261636861696e277320696e697469616c206865616420646174612e54656c61626f726174655f6465706c6f795f64617461081c706172615f696450436f6d706163743c5061726149644f663c543e3e10636f64651c5665633c75383e3074204e6f74652061206e65772070617261636861696e277320636f64652e004d012054686973206d7573742062652063616c6c656420616674657220606669785f6465706c6f795f646174616020616e642060636f646560206d7573742062652074686520707265696d616765206f6620746865c42060636f64655f68617368602070617373656420746865726520666f72207468652073616d652060706172615f6964602e0061012054686973206d61792062652063616c6c6564206265666f7265206f722061667465722074686520626567696e6e696e67206f66207468652070617261636861696e2773206669727374206c6561736520706572696f642e45012049662063616c6c6564206265666f7265207468656e207468652070617261636861696e2077696c6c206265636f6d65206163746976652061742074686520666972737420626c6f636b206f66206974736501207374617274696e67206c6561736520706572696f642e2049662061667465722c207468656e2069742077696c6c206265636f6d652061637469766520696d6d6564696174656c7920616674657220746869732063616c6c2e006c202d20605f6f726967696e6020697320697272656c6576616e742efc202d2060706172615f696460206973207468652070617261636861696e2049442077686f736520636f64652077696c6c20626520656c61626f72617465642e1501202d2060636f6465602069732074686520707265696d616765206f662074686520726567697374657265642060636f64655f6861736860206f662060706172615f6964602e011c384e65774c65617365506572696f64042c4c65617365506572696f6404842041206e6577206c6561736520706572696f6420697320626567696e6e696e672e3841756374696f6e537461727465640c3041756374696f6e496e6465782c4c65617365506572696f642c426c6f636b4e756d626572084d0120416e2061756374696f6e20737461727465642e2050726f76696465732069747320696e64657820616e642074686520626c6f636b206e756d6265722077686572652069742077696c6c20626567696e20746f190120636c6f736520616e6420746865206669727374206c6561736520706572696f64206f662074686520717561647275706c657420746861742069732061756374696f6e65642e3441756374696f6e436c6f736564043041756374696f6e496e64657804bc20416e2061756374696f6e20656e6465642e20416c6c2066756e6473206265636f6d6520756e72657365727665642e24576f6e4465706c6f7910504e65774269646465723c4163636f756e7449643e24536c6f7452616e6765185061726149641c42616c616e636504550120536f6d656f6e6520776f6e2074686520726967687420746f206465706c6f7920612070617261636861696e2e2042616c616e636520616d6f756e7420697320646564756374656420666f72206465706f7369742e28576f6e52656e6577616c101850617261496424536c6f7452616e67651c42616c616e63651c42616c616e636504c420416e206578697374696e672070617261636861696e20776f6e2074686520726967687420746f20636f6e74696e75652e2052657365727665640c244163636f756e7449641c42616c616e63651c42616c616e6365084d012046756e6473207765726520726573657276656420666f7220612077696e6e696e67206269642e2046697273742062616c616e63652069732074686520657874726120616d6f756e742072657365727665642e54205365636f6e642069732074686520746f74616c2e28556e726573657276656408244163636f756e7449641c42616c616e636504e02046756e6473207765726520756e72657365727665642073696e636520626964646572206973206e6f206c6f6e676572206163746976652e00107375646f105375646f01040c4b6579010030543a3a4163636f756e74496480000000000000000000000000000000000000000000000000000000000000000004842054686520604163636f756e74496460206f6620746865207375646f206b65792e0108107375646f042070726f706f73616c40426f783c543a3a50726f706f73616c3e2439012041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c2023203c7765696768743e20202d204f2831292e64202d204c696d697465642073746f726167652072656164732e40202d204e6f204442207772697465732e302023203c2f7765696768743e1c7365745f6b6579040c6e65778c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263652475012041757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f206b65792e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c2023203c7765696768743e20202d204f2831292e64202d204c696d697465642073746f726167652072656164732e44202d204f6e65204442206368616e67652e302023203c2f7765696768743e01081453756469640410626f6f6c04602041207375646f206a75737420746f6f6b20706c6163652e284b65794368616e67656404244163636f756e74496404f020546865207375646f6572206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c6965642e00'; + +export default meta;