From ca76dc170cc7e0f915a3b5673bb897b7bb4676fa Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Wed, 26 Feb 2020 12:38:19 +0100 Subject: [PATCH] Add typegen sample (#1950) * Add typegen sample * Link to example from types getting started * cc skip --- .codeclimate.yml | 1 + CHANGELOG.md | 2 +- docs/.vuepress/config.js | 3 +- .../promise/10_upgrade_chain/README.md | 2 +- docs/examples/promise/90_typegen/README.md | 248 +++ .../examples/promise/90_typegen/edgeware.json | 1 + docs/examples/promise/90_typegen/package.json | 24 + docs/examples/promise/90_typegen/src/index.ts | 54 + .../src/interfaces/augment-api-consts.ts | 253 +++ .../src/interfaces/augment-api-query.ts | 706 ++++++++ .../src/interfaces/augment-api-tx.ts | 1147 ++++++++++++ .../90_typegen/src/interfaces/augment-api.ts | 7 + .../src/interfaces/augment-types.ts | 1588 +++++++++++++++++ .../90_typegen/src/interfaces/definitions.ts | 7 + .../90_typegen/src/interfaces/index.ts | 4 + .../src/interfaces/signaling/definitions.ts | 17 + .../src/interfaces/signaling/index.ts | 4 + .../src/interfaces/signaling/types.ts | 24 + .../interfaces/treasuryRewards/definitions.ts | 7 + .../src/interfaces/treasuryRewards/index.ts | 4 + .../src/interfaces/treasuryRewards/types.ts | 7 + .../90_typegen/src/interfaces/types.ts | 6 + .../src/interfaces/voting/definitions.ts | 33 + .../90_typegen/src/interfaces/voting/index.ts | 4 + .../90_typegen/src/interfaces/voting/types.ts | 58 + .../examples/promise/90_typegen/tsconfig.json | 34 + docs/start/typescript.user.md | 14 +- tsconfig.json | 3 +- 28 files changed, 4253 insertions(+), 9 deletions(-) create mode 100644 docs/examples/promise/90_typegen/README.md create mode 100644 docs/examples/promise/90_typegen/edgeware.json create mode 100644 docs/examples/promise/90_typegen/package.json create mode 100644 docs/examples/promise/90_typegen/src/index.ts create mode 100644 docs/examples/promise/90_typegen/src/interfaces/augment-api-consts.ts create mode 100644 docs/examples/promise/90_typegen/src/interfaces/augment-api-query.ts create mode 100644 docs/examples/promise/90_typegen/src/interfaces/augment-api-tx.ts create mode 100644 docs/examples/promise/90_typegen/src/interfaces/augment-api.ts create mode 100644 docs/examples/promise/90_typegen/src/interfaces/augment-types.ts create mode 100644 docs/examples/promise/90_typegen/src/interfaces/definitions.ts create mode 100644 docs/examples/promise/90_typegen/src/interfaces/index.ts create mode 100644 docs/examples/promise/90_typegen/src/interfaces/signaling/definitions.ts create mode 100644 docs/examples/promise/90_typegen/src/interfaces/signaling/index.ts create mode 100644 docs/examples/promise/90_typegen/src/interfaces/signaling/types.ts create mode 100644 docs/examples/promise/90_typegen/src/interfaces/treasuryRewards/definitions.ts create mode 100644 docs/examples/promise/90_typegen/src/interfaces/treasuryRewards/index.ts create mode 100644 docs/examples/promise/90_typegen/src/interfaces/treasuryRewards/types.ts create mode 100644 docs/examples/promise/90_typegen/src/interfaces/types.ts create mode 100644 docs/examples/promise/90_typegen/src/interfaces/voting/definitions.ts create mode 100644 docs/examples/promise/90_typegen/src/interfaces/voting/index.ts create mode 100644 docs/examples/promise/90_typegen/src/interfaces/voting/types.ts create mode 100644 docs/examples/promise/90_typegen/tsconfig.json diff --git a/.codeclimate.yml b/.codeclimate.yml index b8d5192048..c21527cbe7 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -4,6 +4,7 @@ exclude_patterns: - "**/*.test.js" - "**/*.test.ts" - "docs/**/*.js" +- "docs/**/*.ts" - "packages/api/src/augment/" - "packages/typegen/scripts" - "packages/typegen/src" diff --git a/CHANGELOG.md b/CHANGELOG.md index a33b50cf32..d15544b3de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,7 +16,7 @@ - Expand `.toHuman` on `ExtrinsicEra`, `SubmittableResult` & `Vote` - Move `DigestItem`, `Fixed64`, `H160`, `H256` & `H512` to interfaces in `@polkadot/types/interfaces` - Align construction of unknown types in `registry.get` consistently warn on detection, throw on use -- Support for arbitrary UInt types via `UInt` type definitions +- Support for arbitrary `u*`` types via `UInt` type definitions - Expose static `.with` on `UInt`, `Int` & `U8aFixed` classes with optional type name override - Remove [11 Jan 2019](https://github.com/polkadot-js/api/issues/574) extrinsic length hack - Use ES `#field` on private class fields as applicable diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index 597e15ef97..278a714782 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -64,7 +64,8 @@ module.exports = { ['examples/promise/06_make_transfer/', 'Make a transfer'], ['examples/promise/08_system_events/', 'Display system events'], ['examples/promise/09_transfer_events/', 'Transaction with events'], - ['examples/promise/10_upgrade_chain/', 'Upgrade via sudo'] + ['examples/promise/10_upgrade_chain/', 'Upgrade via sudo'], + ['examples/promise/90_typegen/', 'TypeScript augmentation'] ] }, { diff --git a/docs/examples/promise/10_upgrade_chain/README.md b/docs/examples/promise/10_upgrade_chain/README.md index a298ec35c1..861938048a 100644 --- a/docs/examples/promise/10_upgrade_chain/README.md +++ b/docs/examples/promise/10_upgrade_chain/README.md @@ -1,5 +1,5 @@ # Chain upgrade -Performs a chain upgrade using the `sudo` module. This may brick your chain, so us it as an educational sample. (use `substrate --dev purge-chain` to remove DB and recover). +Performs a chain upgrade using the `sudo` module. This may brick your chain, so use it as an educational sample. (use `substrate purge-chain --dev` to remove DB and recover). <<< @/docs/examples/promise/10_upgrade_chain/index.js diff --git a/docs/examples/promise/90_typegen/README.md b/docs/examples/promise/90_typegen/README.md new file mode 100644 index 0000000000..c11319d5b4 --- /dev/null +++ b/docs/examples/promise/90_typegen/README.md @@ -0,0 +1,248 @@ +# typegen + +This is a sample TypeScript project, found at [https://github.com/polkadot-js/api/tree/master/docs/examples/promise/10_upgrade_chain](https://github.com/polkadot-js/api/tree/master/docs/examples/promise/10_upgrade_chain), that uses `@polkadot/typegen` to generate type definitions that can be used to decorate the `@polkadot/api`. It uses both types defined for the specific chain as well as the chain metadata to generate TypeScript interfaces. This means that interfaces such as `api.query.*`, `api.tx.*` and `api.consts.*` will be decorated based on chain-specific information, instead of an un-augmented catch-all definition. + +**NOTE** This is built using the updates in the `1.4.0` api track and as such it uses the latest (at the time of writing) `@polkadot/api 1.4.0`. If you want to play on your own, it is also suggested that you use the `1.4+` series since some generation types have moved around internally, making it easier to augment. + +## Packages + +For the packages we need from the `@polkadot/*` we have added `@polkadot/api` (we want to do API stuff) and `@polkadot/typegen` (to generate the actual interfaces). So our scripts and dependencies inside `package.json` contain the following - + +```json +{ + "scripts": { + "build": "yarn generate:defs && yarn generate:meta", + "generate:defs": "ts-node --skip-project node_modules/.bin/polkadot-types-from-defs --package sample-polkadotjs-typegen/interfaces --input ./src/interfaces", + "generate:meta": "ts-node --skip-project node_modules/.bin/polkadot-types-from-chain --package sample-polkadotjs-typegen/interfaces --endpoint ./edgeware.json --output ./src/interfaces", + "lint": "tsc --noEmit --pretty" + }, + "dependencies": { + "@polkadot/api": "^1.4.0" + }, + "devDependencies": { + "@polkadot/typegen": "^1.4.0", + "ts-node": "^8.6.2", + "typescript": "^3.8.2" + } +} +``` + +We will delve into the setup and running the scripts and what they do in a short bit, but as of now just notice that we are running the scripts via `ts-node`. Since we supply our definitions as `*.ts` files, this is important otherwise they will not be parsable. `build` will just run both the types and meta generators (in that order, so metadata can use the types) and we have a `lint` that can just check that everything is as it is meant to be. + +## Metadata setup + +The idea here is to use the actual chain metadata to generate the actual api augmented endpoints. The metadata we are adding here (in addition to the user types), is from the Edgeware Berlin testnet. So this is a real-world example of configuring the API for a specific substrate chain. For the metadata retrieval, we just ran a simple curl command to get it from the node - + +`curl -H "Content-Type: application/json" -d '{"id":"1", "jsonrpc":"2.0", "method": "state_getMetadata", "params":[]}' http://localhost:9933` + +And then add the full JSONPC output as received to the `edgeware.json` file as specified by the generation command. A trimmed version would look like - + +```json +{"jsonrpc":"2.0","result":"0x6d6574610b6c185379737....","id":29} +``` + +The generator can also use a `wss://` as an `--endpoint` param as part of the generation, but in most cases you would want a static metadata to work from in development, hence we are actually adding it here. + +## Types setup + +The types are defined in the `src/interfaces` folder. While this repo contains a number of generated files in there as well, you basically only need to manually add the following - + +- `src/interfaces/definitions.ts` - this just exports all the sub-folder definitions in one go +- `src/interfaces//definitions.ts` - type definitions for a specific module + +This structure fully matches what is available in the `@polkadot/type/interfaces` folder, so the structure is setup based on the convention used in the `@polkadot/types` library. The generating scripts will expect something matching this since the same underlying code is actually used inside `@polkadot/types` as well. The top-level `interfaces/` folder can be name anything, however the internal content structure need to match what is defined above. + +For the top-level the definition file has the following contents - + +```js +export { default as signaling } from './signaling/definitions'; +export { default as treasuryRewards } from './treasuryRewards/definitions'; +export { default as voting } from './voting/definitions'; +``` + +As explained above, it really is just a re-export of the definitions, so they are all easily accessible to the outside, i.e. we will use this import inside our own code to use the definitions in API initialization. The generation scripts will load this file to determine which types it needs to import. By the `@polkadot/types` convention, match the export names with the folders (preferably your runtime module names), the generation scripts will use these names to find the correct folders to output the generated `types.ts` to. + +For each of the folders, `signaling`, `treasuryRewards` and `voting` another `definitions.ts` file is contained within. Looking at the one from `signaling`, it contains this - + +```js +export default { + types: { + ProposalRecord: { + index: 'u32', + author: 'AccountId', + stage: 'VoteStage', + transition_time: 'u32', + title: 'Text', + contents: 'Text', + vote_id: 'u64' + }, + ProposalContents: 'Vec', + ProposalTitle: 'Vec' + } +} +``` + +Just the type definitions (the structure of which you should be familiar with), nested inside a `types: {...}` container. This allows us future extension points, i.e. there is some work to expose the custom RPC types alongside, so that would become another key on a per-module basis. + +In the above, you will note that the `ProposalRecord` references a type for `voting`, i.e. `VoteStage`. The type generation and resolution will determine where the type comes from, and provide the required imports on generation. + +Looking at the example in this repo, it also has `augment*`, `index.ts` and `types.ts` files in the interfaces folder. These are all generated, and will be re-generated when the generator is run - so all edits to these files will be lost. The only requirement for user-edits are the `definitions.ts` files. + +## Generating + +Now that both the metadata nd types setup is completed, we just run the build command via `yarn build` and magically (assuming you didn't have the `augment*` and other generated files), these files will be added. When running this command, the console should display something like - + +``` +> yarn build +$ yarn generate:defs && yarn generate:meta +$ ts-node --skip-project \ + node_modules/.bin/polkadot-types-from-defs \ + --package sample-polkadotjs-typegen/interfaces \ + --input ./src/interfaces + +sample-polkadotjs-typegen/src/interfaces/types.ts + Generating + Extracting interfaces for signaling + ... + Writing + +sample-polkadotjs-typegen/src/interfaces/augment-types.ts + Generating + Writing + +$ ts-node --skip-project \ + node_modules/.bin/polkadot-types-from-chain \ + --package sample-polkadotjs-typegen/interfaces \ + --endpoint ./edgeware.json \ + --output ./src/interfaces + +Generating from metadata, 81,267 bytes + ... + +sample-polkadotjs-typegen/src/interfaces/augment-api.ts + Generating + Writing + +✨ Done in 4.04s. +``` + +Now if we check the actual output against the source via `yarn lint`, we would see that valid output has been generated - + +``` +> yarn lint +$ tsc --noEmit --pretty +✨ Done in 2.28s. +``` + +## Peering at the output + +We are ready to use all these generated types this after some TS config. If you take a look at the generated `src/signaling/types.ts`, you would see generated TS interfaces, such as - + +```js +import { Struct } from '@polkadot/types/codec'; +import { Bytes, Text, u32, u64 } from '@polkadot/types/primitive'; +import { AccountId } from '@polkadot/types/interfaces/runtime'; +import { VoteStage } from 'sample-polkadotjs-typegen/interfaces/voting'; + +/** @name ProposalContents */ +export interface ProposalContents extends Bytes {} + +/** @name ProposalRecord */ +export interface ProposalRecord extends Struct { + readonly index: u32; + readonly author: AccountId; + readonly stage: VoteStage; + readonly transition_time: u32; + readonly title: Text; + readonly contents: Text; + readonly vote_id: u64; +} + +/** @name ProposalTitle */ +export interface ProposalTitle extends Bytes {} +``` + +As mentioned earlier, here you will notice the `import { VoteStage }`, the generator has determined that `voting` exports that interface and has added the required imports. + +## TypeScript config + +Now that we have files generated, it is time to make TypeScript aware of the types and add an explicit override into out `tsconfig.json`. After some changes, the paths in the config looks as follow (comments are in teh actual config file here) - + +```json +{ + "compilerOptions": { + "paths": { + "sample-polkadotjs-typegen/*": ["src/*"], + "@polkadot/api/augment": ["src/interfaces/augment-api.ts"], + "@polkadot/types/augment": ["src/interfaces/augment-types.ts"] + } + } +} +``` + +Effectively what we do above is tell the TypeScript compiler to not use the built-in API augmentation, but rather to replace it with our version. This means that all types from these are injected not by the substrate-latest-master version, but rather with what we have defined above. + +## Usage + +For simple usage, we have added the `src/index.ts` file that show how the metadata and types actually decorate the API. In addition, we also have setup instructions included here. + +```js +// We need to import the augmented definitions "somewhere" in our project, however since we have +// it in tsconfig as an override and the api/types has imports, it is not strictly required here. +// Because of the tsconfig override, we could import from '@polkadot/{api, types}/augment' +import './interfaces/augment-api'; +import './interfaces/augment-types'; + +// all type stuff, the only one we are using here +import type { VoteRecord } from './interfaces'; + +// external imports +import { ApiPromise } from '@polkadot/api'; +import { createType } from '@polkadot/types'; + +// our local stuff +import * as definitions from './interfaces/definitions'; + +async function main (): Promise { + // extract all types from definitions - fast and dirty approach, flatted on 'types' + const types = Object.values(definitions).reduce((res, { types }): object => ({ ...res, ...types }), {}); + + const api = await ApiPromise.create({ + types: { + ...types, + // aliases that don't do well as part of interfaces + 'voting::VoteType': 'VoteType', + 'voting::TallyType': 'TallyType', + // chain-specific overrides + Keys: 'SessionKeys4' + } + }); + + // get a query + const recordOpt = await api.query.voting.voteRecords(123); + + // the types match with what we expect here + let firstRecord: VoteRecord | null = recordOpt.unwrapOr(null); + console.log(firstRecord?.toHuman()); + + // it even does work for arrays & subscriptions + api.query.signaling.activeProposals((results): void => { + results.forEach(([hash, blockNumber]): void => { + console.log(hash.toHex(), ':', blockNumber.toNumber()); + }); + }); + + // even createType works, allowing for our types to be used + console.log(`Balance2 bitLength:`, [ + api.createType('Balance2').bitLength(), + api.registry.createType('Balance2').bitLength(), + createType(api.registry, 'Balance2').bitLength() + ]); +} + +await main(); +``` + +## And that is a ... + +... wrap. Just a really simple walk-through to customizing the API TypeScript definitions for your chain. diff --git a/docs/examples/promise/90_typegen/edgeware.json b/docs/examples/promise/90_typegen/edgeware.json new file mode 100644 index 0000000000..f0fa3a76cd --- /dev/null +++ b/docs/examples/promise/90_typegen/edgeware.json @@ -0,0 +1 @@ +{"jsonrpc":"2.0","result":"0x6d6574610b6c1853797374656d011853797374656d34304163636f756e744e6f6e636501010130543a3a4163636f756e74496420543a3a496e646578001000000000047c2045787472696e73696373206e6f6e636520666f72206163636f756e74732e3845787472696e736963436f756e7400000c753332040004b820546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e4c416c6c45787472696e73696373576569676874000018576569676874040004150120546f74616c2077656967687420666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e40416c6c45787472696e736963734c656e00000c753332040004410120546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e24426c6f636b4861736801010138543a3a426c6f636b4e756d6265721c543a3a48617368008000000000000000000000000000000000000000000000000000000000000000000498204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e3445787472696e736963446174610101010c7533321c5665633c75383e000400043d012045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e184e756d626572010038543a3a426c6f636b4e756d6265721000000000040901205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e28506172656e744861736801001c543a3a4861736880000000000000000000000000000000000000000000000000000000000000000004702048617368206f66207468652070726576696f757320626c6f636b2e3845787472696e73696373526f6f7401001c543a3a486173688000000000000000000000000000000000000000000000000000000000000000000415012045787472696e7369637320726f6f74206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e1844696765737401002c4469676573744f663c543e040004f020446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e184576656e747301008c5665633c4576656e745265636f72643c543a3a4576656e742c20543a3a486173683e3e040004a0204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e284576656e74436f756e740100284576656e74496e646578100000000004b820546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e2c4576656e74546f706963730101011c543a3a48617368845665633c28543a3a426c6f636b4e756d6265722c204576656e74496e646578293e000400282501204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e646578657394206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e00510120416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e2054686973450120616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e64e420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e004d01205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573744d012074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b0101206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e01242866696c6c5f626c6f636b0004210120412062696720646973706174636820746861742077696c6c20646973616c6c6f7720616e79206f74686572207472616e73616374696f6e20746f20626520696e636c756465642e1872656d61726b041c5f72656d61726b1c5665633c75383e046c204d616b6520736f6d65206f6e2d636861696e2072656d61726b2e387365745f686561705f7061676573041470616765730c75363404fc2053657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e207365745f636f64650410636f64651c5665633c75383e04682053657420746865206e65772072756e74696d6520636f64652e5c7365745f636f64655f776974686f75745f636865636b730410636f64651c5665633c75383e041d012053657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e5c7365745f6368616e6765735f747269655f636f6e666967044c6368616e6765735f747269655f636f6e666967804f7074696f6e3c4368616e67657354726965436f6e66696775726174696f6e3e04a02053657420746865206e6577206368616e676573207472696520636f6e66696775726174696f6e2e2c7365745f73746f7261676504146974656d73345665633c4b657956616c75653e046c2053657420736f6d65206974656d73206f662073746f726167652e306b696c6c5f73746f7261676504106b657973205665633c4b65793e0478204b696c6c20736f6d65206974656d732066726f6d2073746f726167652e2c6b696c6c5f70726566697804187072656669780c4b6579041501204b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e010c4045787472696e7369635375636365737304304469737061746368496e666f049420416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e3c45787472696e7369634661696c6564083444697370617463684572726f72304469737061746368496e666f045420416e2065787472696e736963206661696c65642e2c436f64655570646174656400045420603a636f6465602077617320757064617465642e00143c496e76616c6964537065634e616d6508150120546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d655420616e6420746865206e65772072756e74696d652e7c5370656356657273696f6e4e6f74416c6c6f776564546f4465637265617365084501205468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d655420616e6420746865206e65772072756e74696d652e7c496d706c56657273696f6e4e6f74416c6c6f776564546f44656372656173650849012054686520696d706c656d656e746174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d655420616e6420746865206e65772072756e74696d652e7c537065634f72496d706c56657273696f6e4e656564546f496e637265617365083501205468652073706563696669636174696f6e206f722074686520696d706c656d656e746174696f6e2076657273696f6e206e65656420746f20696e637265617365206265747765656e20746865942063757272656e742072756e74696d6520616e6420746865206e65772072756e74696d652e744661696c6564546f4578747261637452756e74696d6556657273696f6e0cf0204661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e000d01204569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e1c5574696c697479011c5574696c69747904244d756c74697369677300020530543a3a4163636f756e744964205b75383b2033325dd04d756c74697369673c543a3a426c6f636b4e756d6265722c2042616c616e63654f663c543e2c20543a3a4163636f756e7449643e02040004942054686520736574206f66206f70656e206d756c7469736967206f7065726174696f6e732e0114146261746368041463616c6c735c5665633c3c542061732054726169743e3a3a43616c6c3e48802053656e642061206261746368206f662064697370617463682063616c6c732e00ec20546869732077696c6c206578656375746520756e74696c20746865206669727374206f6e65206661696c7320616e64207468656e2073746f702e007c204d61792062652063616c6c65642066726f6d20616e79206f726967696e2e00f0202d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e002c2023203c7765696768743ea4202d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e34202d204f6e65206576656e742e302023203c2f7765696768743e00590120546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e3501206576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e20746865590120604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d616465510120616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c657465646050206576656e74206973206465706f73697465642e1861735f7375620814696e6465780c7531361063616c6c5c426f783c3c542061732054726169743e3a3a43616c6c3e1ce02053656e6420612063616c6c207468726f75676820616e20696e64657865642070736575646f6e796d206f66207468652073656e6465722e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c2023203c7765696768743e70202d2054686520776569676874206f6620746865206063616c6c602e302023203c2f7765696768743e2061735f6d756c746910247468726573686f6c640c753136446f746865725f7369676e61746f72696573445665633c543a3a4163636f756e7449643e3c6d617962655f74696d65706f696e74844f7074696f6e3c54696d65706f696e743c543a3a426c6f636b4e756d6265723e3e1063616c6c5c426f783c3c542061732054726169743e3a3a43616c6c3ea4590120526567697374657220617070726f76616c20666f72206120646973706174636820746f206265206d6164652066726f6d20612064657465726d696e697374696320636f6d706f73697465206163636f756e74206966fc20617070726f766564206279206120746f74616c206f6620607468726573686f6c64202d203160206f6620606f746865725f7369676e61746f72696573602e00b42049662074686572652061726520656e6f7567682c207468656e206469737061746368207468652063616c6c2e005101205061796d656e743a20604d756c74697369674465706f73697442617365602077696c6c20626520726573657276656420696620746869732069732074686520666972737420617070726f76616c2c20706c7573610120607468726573686f6c64602074696d657320604d756c74697369674465706f736974466163746f72602e2049742069732072657475726e6564206f6e636520746869732064697370617463682068617070656e73206f72382069732063616e63656c6c65642e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e005901202d20607468726573686f6c64603a2054686520746f74616c206e756d626572206f6620617070726f76616c7320666f722074686973206469737061746368206265666f72652069742069732065786563757465642e4501202d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f2063616e20617070726f76652074686973702064697370617463682e204d6179206e6f7420626520656d7074792e5d01202d20606d617962655f74696d65706f696e74603a20496620746869732069732074686520666972737420617070726f76616c2c207468656e2074686973206d75737420626520604e6f6e65602e2049662069742069735501206e6f742074686520666972737420617070726f76616c2c207468656e206974206d7573742062652060536f6d65602c2077697468207468652074696d65706f696e742028626c6f636b206e756d62657220616e64d8207472616e73616374696f6e20696e64657829206f662074686520666972737420617070726f76616c207472616e73616374696f6e2e8c202d206063616c6c603a205468652063616c6c20746f2062652065786563757465642e002101204e4f54453a20556e6c6573732074686973206973207468652066696e616c20617070726f76616c2c20796f752077696c6c2067656e6572616c6c792077616e7420746f207573651d012060617070726f76655f61735f6d756c74696020696e73746561642c2073696e6365206974206f6e6c7920726571756972657320612068617368206f66207468652063616c6c2e005d0120526573756c74206973206571756976616c656e7420746f20746865206469737061746368656420726573756c7420696620607468726573686f6c64602069732065786163746c79206031602e204f74686572776973655901206f6e20737563636573732c20726573756c7420697320604f6b6020616e642074686520726573756c742066726f6d2074686520696e746572696f722063616c6c2c206966206974207761732065786563757465642ce0206d617920626520666f756e6420696e20746865206465706f736974656420604d756c7469736967457865637574656460206576656e742e002c2023203c7765696768743e54202d20604f2853202b205a202b2043616c6c29602ed0202d20557020746f206f6e652062616c616e63652d72657365727665206f7220756e72657365727665206f7065726174696f6e2e4101202d204f6e6520706173737468726f756768206f7065726174696f6e2c206f6e6520696e736572742c20626f746820604f285329602077686572652060536020697320746865206e756d626572206f6649012020207369676e61746f726965732e206053602069732063617070656420627920604d61785369676e61746f72696573602c207769746820776569676874206265696e672070726f706f7274696f6e616c2e2501202d204f6e652063616c6c20656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285a296020776865726520605a602069732074782d6c656e2ec0202d204f6e6520656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285329602ed8202d20557020746f206f6e652062696e6172792073656172636820616e6420696e736572742028604f286c6f6753202b20532960292efc202d20492f4f3a2031207265616420604f285329602c20757020746f2031206d757461746520604f285329602e20557020746f206f6e652072656d6f76652e34202d204f6e65206576656e742e70202d2054686520776569676874206f6620746865206063616c6c602e3101202d2053746f726167653a20696e7365727473206f6e65206974656d2c2076616c75652073697a6520626f756e64656420627920604d61785369676e61746f72696573602c20776974682061902020206465706f7369742074616b656e20666f7220697473206c69666574696d65206f66f4202020604d756c74697369674465706f73697442617365202b207468726573686f6c64202a204d756c74697369674465706f736974466163746f72602e302023203c2f7765696768743e40617070726f76655f61735f6d756c746910247468726573686f6c640c753136446f746865725f7369676e61746f72696573445665633c543a3a4163636f756e7449643e3c6d617962655f74696d65706f696e74844f7074696f6e3c54696d65706f696e743c543a3a426c6f636b4e756d6265723e3e2463616c6c5f68617368205b75383b2033325d80590120526567697374657220617070726f76616c20666f72206120646973706174636820746f206265206d6164652066726f6d20612064657465726d696e697374696320636f6d706f73697465206163636f756e74206966fc20617070726f766564206279206120746f74616c206f6620607468726573686f6c64202d203160206f6620606f746865725f7369676e61746f72696573602e005101205061796d656e743a20604d756c74697369674465706f73697442617365602077696c6c20626520726573657276656420696620746869732069732074686520666972737420617070726f76616c2c20706c7573610120607468726573686f6c64602074696d657320604d756c74697369674465706f736974466163746f72602e2049742069732072657475726e6564206f6e636520746869732064697370617463682068617070656e73206f72382069732063616e63656c6c65642e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e005901202d20607468726573686f6c64603a2054686520746f74616c206e756d626572206f6620617070726f76616c7320666f722074686973206469737061746368206265666f72652069742069732065786563757465642e4501202d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f2063616e20617070726f76652074686973702064697370617463682e204d6179206e6f7420626520656d7074792e5d01202d20606d617962655f74696d65706f696e74603a20496620746869732069732074686520666972737420617070726f76616c2c207468656e2074686973206d75737420626520604e6f6e65602e2049662069742069735501206e6f742074686520666972737420617070726f76616c2c207468656e206974206d7573742062652060536f6d65602c2077697468207468652074696d65706f696e742028626c6f636b206e756d62657220616e64d8207472616e73616374696f6e20696e64657829206f662074686520666972737420617070726f76616c207472616e73616374696f6e2ed0202d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f2062652065786563757465642e003901204e4f54453a2049662074686973206973207468652066696e616c20617070726f76616c2c20796f752077696c6c2077616e7420746f20757365206061735f6d756c74696020696e73746561642e002c2023203c7765696768743e28202d20604f285329602ed0202d20557020746f206f6e652062616c616e63652d72657365727665206f7220756e72657365727665206f7065726174696f6e2e4101202d204f6e6520706173737468726f756768206f7065726174696f6e2c206f6e6520696e736572742c20626f746820604f285329602077686572652060536020697320746865206e756d626572206f6649012020207369676e61746f726965732e206053602069732063617070656420627920604d61785369676e61746f72696573602c207769746820776569676874206265696e672070726f706f7274696f6e616c2ec0202d204f6e6520656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285329602ed8202d20557020746f206f6e652062696e6172792073656172636820616e6420696e736572742028604f286c6f6753202b20532960292efc202d20492f4f3a2031207265616420604f285329602c20757020746f2031206d757461746520604f285329602e20557020746f206f6e652072656d6f76652e34202d204f6e65206576656e742e3101202d2053746f726167653a20696e7365727473206f6e65206974656d2c2076616c75652073697a6520626f756e64656420627920604d61785369676e61746f72696573602c20776974682061902020206465706f7369742074616b656e20666f7220697473206c69666574696d65206f66f4202020604d756c74697369674465706f73697442617365202b207468726573686f6c64202a204d756c74697369674465706f736974466163746f72602e302023203c2f7765696768743e3c63616e63656c5f61735f6d756c746910247468726573686f6c640c753136446f746865725f7369676e61746f72696573445665633c543a3a4163636f756e7449643e2474696d65706f696e746454696d65706f696e743c543a3a426c6f636b4e756d6265723e2463616c6c5f68617368205b75383b2033325d5859012043616e63656c2061207072652d6578697374696e672c206f6e2d676f696e67206d756c7469736967207472616e73616374696f6e2e20416e79206465706f7369742072657365727665642070726576696f75736c79c820666f722074686973206f7065726174696f6e2077696c6c20626520756e7265736572766564206f6e20737563636573732e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e005901202d20607468726573686f6c64603a2054686520746f74616c206e756d626572206f6620617070726f76616c7320666f722074686973206469737061746368206265666f72652069742069732065786563757465642e4501202d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f2063616e20617070726f76652074686973702064697370617463682e204d6179206e6f7420626520656d7074792e6101202d206074696d65706f696e74603a205468652074696d65706f696e742028626c6f636b206e756d62657220616e64207472616e73616374696f6e20696e64657829206f662074686520666972737420617070726f76616c7c207472616e73616374696f6e20666f7220746869732064697370617463682ed0202d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f2062652065786563757465642e002c2023203c7765696768743e28202d20604f285329602ed0202d20557020746f206f6e652062616c616e63652d72657365727665206f7220756e72657365727665206f7065726174696f6e2e4101202d204f6e6520706173737468726f756768206f7065726174696f6e2c206f6e6520696e736572742c20626f746820604f285329602077686572652060536020697320746865206e756d626572206f6649012020207369676e61746f726965732e206053602069732063617070656420627920604d61785369676e61746f72696573602c207769746820776569676874206265696e672070726f706f7274696f6e616c2ec0202d204f6e6520656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285329602e34202d204f6e65206576656e742e88202d20492f4f3a2031207265616420604f285329602c206f6e652072656d6f76652e74202d2053746f726167653a2072656d6f766573206f6e65206974656d2e302023203c2f7765696768743e0118404261746368496e746572727570746564080c7533323444697370617463684572726f72085901204261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792e20496e646578206f66206669727374206661696c696e6720646973706174636820676976656e2c2061734c2077656c6c20617320746865206572726f722e384261746368436f6d706c657465640004cc204261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722e2c4e65774d756c746973696708244163636f756e744964244163636f756e7449640849012041206e6577206d756c7469736967206f7065726174696f6e2068617320626567756e2e20466972737420706172616d20697320746865206163636f756e74207468617420697320617070726f76696e672c80207365636f6e6420697320746865206d756c7469736967206163636f756e742e404d756c7469736967417070726f76616c0c244163636f756e7449645854696d65706f696e743c426c6f636b4e756d6265723e244163636f756e7449640859012041206d756c7469736967206f7065726174696f6e20686173206265656e20617070726f76656420627920736f6d656f6e652e20466972737420706172616d20697320746865206163636f756e742074686174206973a820617070726f76696e672c20746869726420697320746865206d756c7469736967206163636f756e742e404d756c7469736967457865637574656410244163636f756e7449645854696d65706f696e743c426c6f636b4e756d6265723e244163636f756e744964384469737061746368526573756c74082d012041206d756c7469736967206f7065726174696f6e20686173206265656e2065786563757465642e20466972737420706172616d20697320746865206163636f756e742074686174206973a820617070726f76696e672c20746869726420697320746865206d756c7469736967206163636f756e742e444d756c746973696743616e63656c6c65640c244163636f756e7449645854696d65706f696e743c426c6f636b4e756d6265723e244163636f756e7449640831012041206d756c7469736967206f7065726174696f6e20686173206265656e2063616e63656c6c65642e20466972737420706172616d20697320746865206163636f756e742074686174206973ac2063616e63656c6c696e672c20746869726420697320746865206d756c7469736967206163636f756e742e0030345a65726f5468726573686f6c640474205468726573686f6c6420697320746f6f206c6f7720287a65726f292e3c416c7265616479417070726f76656404b02043616c6c20697320616c726561647920617070726f7665642062792074686973207369676e61746f72792e444e6f417070726f76616c734e656564656404a02043616c6c20646f65736e2774206e65656420616e7920286d6f72652920617070726f76616c732e44546f6f4665775369676e61746f7269657304ac2054686572652061726520746f6f20666577207369676e61746f7269657320696e20746865206c6973742e48546f6f4d616e795369676e61746f7269657304b02054686572652061726520746f6f206d616e79207369676e61746f7269657320696e20746865206c6973742e545369676e61746f726965734f75744f664f7264657204110120546865207369676e61746f7269657320776572652070726f7669646564206f7574206f66206f726465723b20746865792073686f756c64206265206f7264657265642e4c53656e646572496e5369676e61746f72696573041101205468652073656e6465722077617320636f6e7461696e656420696e20746865206f74686572207369676e61746f726965733b2069742073686f756c646e27742062652e204e6f74466f756e6404e0204d756c7469736967206f7065726174696f6e206e6f7420666f756e64207768656e20617474656d7074696e6720746f2063616e63656c2e204e6f744f776e6572043101204f6e6c7920746865206163636f756e742074686174206f726967696e616c6c79206372656174656420746865206d756c74697369672069732061626c6520746f2063616e63656c2069742e2c4e6f54696d65706f696e74042101204e6f2074696d65706f696e742077617320676976656e2c2079657420746865206d756c7469736967206f7065726174696f6e20697320616c726561647920756e6465727761792e3857726f6e6754696d65706f696e74043101204120646966666572656e742074696d65706f696e742077617320676976656e20746f20746865206d756c7469736967206f7065726174696f6e207468617420697320756e6465727761792e4c556e657870656374656454696d65706f696e7404f820412074696d65706f696e742077617320676976656e2c20796574206e6f206d756c7469736967206f7065726174696f6e20697320756e6465727761792e2454696d657374616d70012454696d657374616d70080c4e6f77010024543a3a4d6f6d656e7420000000000000000004902043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e24446964557064617465010010626f6f6c040004b420446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f01040c736574040c6e6f7748436f6d706163743c543a3a4d6f6d656e743e245820536574207468652063757272656e742074696d652e00590120546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6ed82070686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e004501205468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e74207370656369666965642062794420604d696e696d756d506572696f64602e00d820546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e0004344d696e696d756d506572696f6424543a3a4d6f6d656e7420b80b00000000000010690120546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a20706572696f64690120746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c2067656e6572616c6c79650120776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c20626520646f75626c6520746869737020706572696f64206f6e2064656661756c742073657474696e67732e001041757261000000000028417574686f72736869700128417574686f72736869700c18556e636c65730100e85665633c556e636c65456e7472794974656d3c543a3a426c6f636b4e756d6265722c20543a3a486173682c20543a3a4163636f756e7449643e3e0400041c20556e636c657318417574686f72000030543a3a4163636f756e7449640400046420417574686f72206f662063757272656e7420626c6f636b2e30446964536574556e636c6573010010626f6f6c040004bc205768657468657220756e636c6573207765726520616c72656164792073657420696e207468697320626c6f636b2e0104287365745f756e636c657304286e65775f756e636c6573385665633c543a3a4865616465723e04642050726f76696465206120736574206f6620756e636c65732e00001c48496e76616c6964556e636c65506172656e74048c2054686520756e636c6520706172656e74206e6f7420696e2074686520636861696e2e40556e636c6573416c7265616479536574048420556e636c657320616c72656164792073657420696e2074686520626c6f636b2e34546f6f4d616e79556e636c6573044420546f6f206d616e7920756e636c65732e3047656e65736973556e636c6504582054686520756e636c652069732067656e657369732e30546f6f48696768556e636c6504802054686520756e636c6520697320746f6f206869676820696e20636861696e2e50556e636c65416c7265616479496e636c75646564047c2054686520756e636c6520697320616c726561647920696e636c756465642e204f6c64556e636c6504b82054686520756e636c652069736e277420726563656e7420656e6f75676820746f20626520696e636c756465642e1c496e6469636573011c496e6469636573082c4e657874456e756d53657401003c543a3a4163636f756e74496e6465781000000000047c20546865206e657874206672656520656e756d65726174696f6e207365742e1c456e756d5365740101013c543a3a4163636f756e74496e646578445665633c543a3a4163636f756e7449643e00040004582054686520656e756d65726174696f6e20736574732e010001043c4e65774163636f756e74496e64657808244163636f756e744964304163636f756e74496e64657810882041206e6577206163636f756e7420696e646578207761732061737369676e65642e0005012054686973206576656e74206973206e6f7420747269676765726564207768656e20616e206578697374696e6720696e64657820697320726561737369676e65646020746f20616e6f7468657220604163636f756e744964602e00002042616c616e636573012042616c616e6365731434546f74616c49737375616e6365010028543a3a42616c616e6365400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e1c56657374696e6700010130543a3a4163636f756e744964ac56657374696e675363686564756c653c543a3a42616c616e63652c20543a3a426c6f636b4e756d6265723e00040004d820496e666f726d6174696f6e20726567617264696e67207468652076657374696e67206f66206120676976656e206163636f756e742e2c4672656542616c616e636501010130543a3a4163636f756e74496428543a3a42616c616e63650040000000000000000000000000000000002c9c20546865202766726565272062616c616e6365206f66206120676976656e206163636f756e742e004101205468697320697320746865206f6e6c792062616c616e63652074686174206d61747465727320696e207465726d73206f66206d6f7374206f7065726174696f6e73206f6e20746f6b656e732e204974750120616c6f6e65206973207573656420746f2064657465726d696e65207468652062616c616e6365207768656e20696e2074686520636f6e747261637420657865637574696f6e20656e7669726f6e6d656e742e205768656e207468697355012062616c616e63652066616c6c732062656c6f77207468652076616c7565206f6620604578697374656e7469616c4465706f736974602c207468656e20746865202763757272656e74206163636f756e74272069733d012064656c657465643a207370656369666963616c6c7920604672656542616c616e6365602e20467572746865722c2074686520604f6e4672656542616c616e63655a65726f602063616c6c6261636b450120697320696e766f6b65642c20676976696e672061206368616e636520746f2065787465726e616c206d6f64756c657320746f20636c65616e2075702064617461206173736f636961746564207769746854207468652064656c65746564206163636f756e742e00750120606672616d655f73797374656d3a3a4163636f756e744e6f6e63656020697320616c736f2064656c657465642069662060526573657276656442616c616e63656020697320616c736f207a65726f2028697420616c736f2067657473150120636f6c6c617073656420746f207a65726f2069662069742065766572206265636f6d6573206c657373207468616e20604578697374656e7469616c4465706f736974602e3c526573657276656442616c616e636501010130543a3a4163636f756e74496428543a3a42616c616e63650040000000000000000000000000000000002c75012054686520616d6f756e74206f66207468652062616c616e6365206f66206120676976656e206163636f756e7420746861742069732065787465726e616c6c792072657365727665643b20746869732063616e207374696c6c206765749c20736c61736865642c20627574206765747320736c6173686564206c617374206f6620616c6c2e006d0120546869732062616c616e63652069732061202772657365727665272062616c616e63652074686174206f746865722073756273797374656d732075736520696e206f7264657220746f2073657420617369646520746f6b656e732501207468617420617265207374696c6c20276f776e65642720627920746865206163636f756e7420686f6c6465722c20627574207768696368206172652073757370656e6461626c652e007501205768656e20746869732062616c616e63652066616c6c732062656c6f77207468652076616c7565206f6620604578697374656e7469616c4465706f736974602c207468656e2074686973202772657365727665206163636f756e7427b42069732064656c657465643a207370656369666963616c6c792c2060526573657276656442616c616e6365602e00650120606672616d655f73797374656d3a3a4163636f756e744e6f6e63656020697320616c736f2064656c6574656420696620604672656542616c616e63656020697320616c736f207a65726f2028697420616c736f2067657473190120636f6c6c617073656420746f207a65726f2069662069742065766572206265636f6d6573206c657373207468616e20604578697374656e7469616c4465706f736974602e29144c6f636b7301010130543a3a4163636f756e744964b05665633c42616c616e63654c6f636b3c543a3a42616c616e63652c20543a3a426c6f636b4e756d6265723e3e00040004b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e0110207472616e736665720810646573748c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263651476616c75654c436f6d706163743c543a3a42616c616e63653e64d8205472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e00090120607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e21012049742077696c6c2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d2062792074686520605472616e73666572466565602e1501204966207468652073656e6465722773206163636f756e742069732062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c74b4206f6620746865207472616e736665722c20746865206163636f756e742077696c6c206265207265617065642e00190120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e002c2023203c7765696768743e3101202d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f72cc202020696e70757420636f6e6669672074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e6901202d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c657820636f6d7075746174696f6e2e004c2052656c617465642066756e6374696f6e733a0051012020202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e2d012020202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c206361757365d420202020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642edc2020202d2052656d6f76696e6720656e6f7567682066756e64732066726f6d20616e206163636f756e742077696c6c20747269676765725901202020202060543a3a4475737452656d6f76616c3a3a6f6e5f756e62616c616e6365646020616e642060543a3a4f6e4672656542616c616e63655a65726f3a3a6f6e5f667265655f62616c616e63655f7a65726f602e49012020202d20607472616e736665725f6b6565705f616c6976656020776f726b73207468652073616d652077617920617320607472616e73666572602c206275742068617320616e206164646974696f6e616cf82020202020636865636b207468617420746865207472616e736665722077696c6c206e6f74206b696c6c20746865206f726967696e206163636f756e742e00302023203c2f7765696768743e2c7365745f62616c616e63650c0c77686f8c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365206e65775f667265654c436f6d706163743c543a3a42616c616e63653e306e65775f72657365727665644c436f6d706163743c543a3a42616c616e63653e349420536574207468652062616c616e636573206f66206120676976656e206163636f756e742e00210120546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c090120616c736f2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e636560292e190120496620746865206e65772066726565206f722072657365727665642062616c616e63652069732062656c6f7720746865206578697374656e7469616c206465706f7369742c01012069742077696c6c20726573657420746865206163636f756e74206e6f6e63652028606672616d655f73797374656d3a3a4163636f756e744e6f6e636560292e00b420546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e002c2023203c7765696768743e80202d20496e646570656e64656e74206f662074686520617267756d656e74732ec4202d20436f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e64207772697465732e302023203c2f7765696768743e38666f7263655f7472616e736665720c18736f757263658c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636510646573748c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263651476616c75654c436f6d706163743c543a3a42616c616e63653e0851012045786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d61792062652c207370656369666965642e4c7472616e736665725f6b6565705f616c6976650810646573748c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263651476616c75654c436f6d706163743c543a3a42616c616e63653e1851012053616d6520617320746865205b607472616e73666572605d2063616c6c2c206275742077697468206120636865636b207468617420746865207472616e736665722077696c6c206e6f74206b696c6c2074686540206f726967696e206163636f756e742e00bc20393925206f66207468652074696d6520796f752077616e74205b607472616e73666572605d20696e73746561642e00c4205b607472616e73666572605d3a207374727563742e4d6f64756c652e68746d6c236d6574686f642e7472616e736665720114284e65774163636f756e7408244163636f756e7449641c42616c616e6365046c2041206e6577206163636f756e742077617320637265617465642e345265617065644163636f756e7408244163636f756e7449641c42616c616e6365045c20416e206163636f756e7420776173207265617065642e205472616e7366657210244163636f756e744964244163636f756e7449641c42616c616e63651c42616c616e636504b0205472616e7366657220737563636565646564202866726f6d2c20746f2c2076616c75652c2066656573292e2842616c616e63655365740c244163636f756e7449641c42616c616e63651c42616c616e636504c420412062616c616e6365207761732073657420627920726f6f74202877686f2c20667265652c207265736572766564292e1c4465706f73697408244163636f756e7449641c42616c616e636504dc20536f6d6520616d6f756e7420776173206465706f73697465642028652e672e20666f72207472616e73616374696f6e2066656573292e0c484578697374656e7469616c4465706f73697428543a3a42616c616e63654000a0724e18090000000000000000000004d420546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e2c5472616e7366657246656528543a3a42616c616e63654000008a5d7845630100000000000000000494205468652066656520726571756972656420746f206d616b652061207472616e736665722e2c4372656174696f6e46656528543a3a42616c616e63654000008a5d784563010000000000000000049c205468652066656520726571756972656420746f2063726561746520616e206163636f756e742e203856657374696e6742616c616e6365049c2056657374696e672062616c616e636520746f6f206869676820746f2073656e642076616c7565544c69717569646974795265737472696374696f6e7304c8204163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c204f766572666c6f77047420476f7420616e206f766572666c6f7720616674657220616464696e674c496e73756666696369656e7442616c616e636504782042616c616e636520746f6f206c6f7720746f2073656e642076616c7565484578697374656e7469616c4465706f73697404ec2056616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f736974244b656570416c6976650490205472616e736665722f7061796d656e7420776f756c64206b696c6c206163636f756e745c4578697374696e6756657374696e675363686564756c6504cc20412076657374696e67207363686564756c6520616c72656164792065786973747320666f722074686973206163636f756e742c446561644163636f756e74048c2042656e6566696369617279206163636f756e74206d757374207072652d6578697374485472616e73616374696f6e5061796d656e74012042616c616e63657304444e6578744665654d756c7469706c6965720100284d756c7469706c69657220000000000000000000000008485472616e73616374696f6e426173654665653042616c616e63654f663c543e4000008a5d78456301000000000000000004dc205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b2074686520626173652e485472616e73616374696f6e427974654665653042616c616e63654f663c543e400080c6a47e8d03000000000000000000040d01205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e001c5374616b696e67011c5374616b696e67683856616c696461746f72436f756e7401000c753332100000000004a82054686520696465616c206e756d626572206f66207374616b696e67207061727469636970616e74732e544d696e696d756d56616c696461746f72436f756e7401000c7533321004000000044101204d696e696d756d206e756d626572206f66207374616b696e67207061727469636970616e7473206265666f726520656d657267656e637920636f6e646974696f6e732061726520696d706f7365642e34496e76756c6e657261626c65730100445665633c543a3a4163636f756e7449643e04000c590120416e792076616c696461746f72732074686174206d6179206e6576657220626520736c6173686564206f7220666f726369626c79206b69636b65642e20497427732061205665632073696e636520746865792772654d01206561737920746f20696e697469616c697a6520616e642074686520706572666f726d616e636520686974206973206d696e696d616c2028776520657870656374206e6f206d6f7265207468616e20666f7572ac20696e76756c6e657261626c65732920616e64207265737472696374656420746f20746573746e6574732e18426f6e64656400010130543a3a4163636f756e74496430543a3a4163636f756e744964000400040101204d61702066726f6d20616c6c206c6f636b65642022737461736822206163636f756e747320746f2074686520636f6e74726f6c6c6572206163636f756e742e184c656467657200010130543a3a4163636f756e744964a45374616b696e674c65646765723c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e000400044501204d61702066726f6d20616c6c2028756e6c6f636b6564292022636f6e74726f6c6c657222206163636f756e747320746f2074686520696e666f20726567617264696e6720746865207374616b696e672e14506179656501010130543a3a4163636f756e7449644452657761726444657374696e6174696f6e00040004e42057686572652074686520726577617264207061796d656e742073686f756c64206265206d6164652e204b657965642062792073746173682e2856616c696461746f727301010130543a3a4163636f756e7449643856616c696461746f72507265667301040004450120546865206d61702066726f6d202877616e6e616265292076616c696461746f72207374617368206b657920746f2074686520707265666572656e636573206f6620746861742076616c696461746f722e284e6f6d696e61746f727300010130543a3a4163636f756e744964644e6f6d696e6174696f6e733c543a3a4163636f756e7449643e01040010650120546865206d61702066726f6d206e6f6d696e61746f72207374617368206b657920746f2074686520736574206f66207374617368206b657973206f6620616c6c2076616c696461746f727320746f206e6f6d696e6174652e003501204e4f54453a206973207072697661746520736f20746861742077652063616e20656e73757265207570677261646564206265666f726520616c6c207479706963616c2061636365737365732ed8204469726563742073746f7261676520415049732063616e207374696c6c2062797061737320746869732070726f74656374696f6e2e1c5374616b65727301010130543a3a4163636f756e744964904578706f737572653c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e000c000000104d01204e6f6d696e61746f727320666f72206120706172746963756c6172206163636f756e74207468617420697320696e20616374696f6e207269676874206e6f772e20596f752063616e277420697465726174651901207468726f7567682076616c696461746f727320686572652c2062757420796f752063616e2066696e64207468656d20696e207468652053657373696f6e206d6f64756c652e00902054686973206973206b6579656420627920746865207374617368206163636f756e742e3843757272656e74456c65637465640100445665633c543a3a4163636f756e7449643e040004fc205468652063757272656e746c7920656c65637465642076616c696461746f7220736574206b65796564206279207374617368206163636f756e742049442e2843757272656e74457261010020457261496e6465781000000000045c205468652063757272656e742065726120696e6465782e3c43757272656e74457261537461727401002c4d6f6d656e744f663c543e200000000000000000047820546865207374617274206f66207468652063757272656e74206572612e6c43757272656e74457261537461727453657373696f6e496e64657801003053657373696f6e496e646578100000000004d0205468652073657373696f6e20696e646578206174207768696368207468652063757272656e742065726120737461727465642e5843757272656e74457261506f696e74734561726e6564010024457261506f696e7473140000000000040d01205265776172647320666f72207468652063757272656e74206572612e205573696e6720696e6469636573206f662063757272656e7420656c6563746564207365742e24536c6f745374616b6501003042616c616e63654f663c543e40000000000000000000000000000000000c31012054686520616d6f756e74206f662062616c616e6365206163746976656c79206174207374616b6520666f7220656163682076616c696461746f7220736c6f742c2063757272656e746c792e00c02054686973206973207573656420746f20646572697665207265776172647320616e642070756e6973686d656e74732e20466f72636545726101001c466f7263696e670400041d01205472756520696620746865206e6578742073657373696f6e206368616e67652077696c6c2062652061206e657720657261207265676172646c657373206f6620696e6465782e4c536c6173685265776172644672616374696f6e01001c50657262696c6c10000000000cf8205468652070657263656e74616765206f662074686520736c617368207468617420697320646973747269627574656420746f207265706f72746572732e00e4205468652072657374206f662074686520736c61736865642076616c75652069732068616e646c6564206279207468652060536c617368602e4c43616e63656c6564536c6173685061796f757401003042616c616e63654f663c543e40000000000000000000000000000000000815012054686520616d6f756e74206f662063757272656e637920676976656e20746f207265706f7274657273206f66206120736c617368206576656e7420776869636820776173ec2063616e63656c65642062792065787472616f7264696e6172792063697263756d7374616e6365732028652e672e20676f7665726e616e6365292e40556e6170706c696564536c617368657301010120457261496e646578bc5665633c556e6170706c696564536c6173683c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e3e00040004c420416c6c20756e6170706c69656420736c61736865732074686174206172652071756575656420666f72206c617465722e28426f6e646564457261730100745665633c28457261496e6465782c2053657373696f6e496e646578293e04000425012041206d617070696e672066726f6d207374696c6c2d626f6e646564206572617320746f207468652066697273742073657373696f6e20696e646578206f662074686174206572612e4c56616c696461746f72536c617368496e45726100020120457261496e64657830543a3a4163636f756e7449645c2850657262696c6c2c2042616c616e63654f663c543e2903040008450120416c6c20736c617368696e67206576656e7473206f6e2076616c696461746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682070726f706f7274696f6e7020616e6420736c6173682076616c7565206f6620746865206572612e4c4e6f6d696e61746f72536c617368496e45726100020120457261496e64657830543a3a4163636f756e7449643042616c616e63654f663c543e03040004610120416c6c20736c617368696e67206576656e7473206f6e206e6f6d696e61746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682076616c7565206f6620746865206572612e34536c617368696e675370616e7300010130543a3a4163636f756e7449645c736c617368696e673a3a536c617368696e675370616e73000400048c20536c617368696e67207370616e7320666f72207374617368206163636f756e74732e245370616e536c6173680101018c28543a3a4163636f756e7449642c20736c617368696e673a3a5370616e496e6465782988736c617368696e673a3a5370616e5265636f72643c42616c616e63654f663c543e3e00800000000000000000000000000000000000000000000000000000000000000000083d01205265636f72647320696e666f726d6174696f6e2061626f757420746865206d6178696d756d20736c617368206f6620612073746173682077697468696e206120736c617368696e67207370616e2cb82061732077656c6c20617320686f77206d7563682072657761726420686173206265656e2070616964206f75742e584561726c69657374556e6170706c696564536c617368000020457261496e646578040004fc20546865206561726c696573742065726120666f72207768696368207765206861766520612070656e64696e672c20756e6170706c69656420736c6173682e3853746f7261676556657273696f6e01000c75333210000000000490205468652076657273696f6e206f662073746f7261676520666f7220757067726164652e014410626f6e640c28636f6e74726f6c6c65728c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263651476616c756554436f6d706163743c42616c616e63654f663c543e3e1470617965654452657761726444657374696e6174696f6e3c65012054616b6520746865206f726967696e206163636f756e74206173206120737461736820616e64206c6f636b207570206076616c756560206f66206974732062616c616e63652e2060636f6e74726f6c6c6572602077696c6c8420626520746865206163636f756e74207468617420636f6e74726f6c732069742e003101206076616c756560206d757374206265206d6f7265207468616e2074686520606d696e696d756d5f62616c616e636560207370656369666965642062792060543a3a43757272656e6379602e00250120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20627920746865207374617368206163636f756e742e002c2023203c7765696768743ed4202d20496e646570656e64656e74206f662074686520617267756d656e74732e204d6f64657261746520636f6d706c65786974792e20202d204f2831292e68202d20546872656520657874726120444220656e74726965732e006d01204e4f54453a2054776f206f66207468652073746f726167652077726974657320286053656c663a3a626f6e646564602c206053656c663a3a7061796565602920617265205f6e657665725f20636c65616e656420756e6c65737325012074686520606f726967696e602066616c6c732062656c6f77205f6578697374656e7469616c206465706f7369745f20616e6420676574732072656d6f76656420617320647573742e302023203c2f7765696768743e28626f6e645f657874726104386d61785f6164646974696f6e616c54436f6d706163743c42616c616e63654f663c543e3e3865012041646420736f6d6520657874726120616d6f756e742074686174206861766520617070656172656420696e207468652073746173682060667265655f62616c616e63656020696e746f207468652062616c616e63652075703420666f72207374616b696e672e00510120557365207468697320696620746865726520617265206164646974696f6e616c2066756e647320696e20796f7572207374617368206163636f756e74207468617420796f75207769736820746f20626f6e642e650120556e6c696b65205b60626f6e64605d206f72205b60756e626f6e64605d20746869732066756e6374696f6e20646f6573206e6f7420696d706f736520616e79206c696d69746174696f6e206f6e2074686520616d6f756e744c20746861742063616e2062652061646465642e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e002c2023203c7765696768743ee8202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e20202d204f2831292e40202d204f6e6520444220656e7472792e302023203c2f7765696768743e18756e626f6e64041476616c756554436f6d706163743c42616c616e63654f663c543e3e5c5501205363686564756c65206120706f7274696f6e206f662074686520737461736820746f20626520756e6c6f636b656420726561647920666f72207472616e73666572206f75742061667465722074686520626f6e64010120706572696f6420656e64732e2049662074686973206c656176657320616e20616d6f756e74206163746976656c7920626f6e646564206c657373207468616e250120543a3a43757272656e63793a3a6d696e696d756d5f62616c616e636528292c207468656e20697420697320696e6372656173656420746f207468652066756c6c20616d6f756e742e004901204f6e63652074686520756e6c6f636b20706572696f6420697320646f6e652c20796f752063616e2063616c6c206077697468647261775f756e626f6e6465646020746f2061637475616c6c79206d6f7665c0207468652066756e6473206f7574206f66206d616e6167656d656e7420726561647920666f72207472616e736665722e003d01204e6f206d6f7265207468616e2061206c696d69746564206e756d626572206f6620756e6c6f636b696e67206368756e6b73202873656520604d41585f554e4c4f434b494e475f4348554e4b5360293d012063616e20636f2d657869737473206174207468652073616d652074696d652e20496e207468617420636173652c205b6043616c6c3a3a77697468647261775f756e626f6e646564605d206e656564fc20746f2062652063616c6c656420666972737420746f2072656d6f766520736f6d65206f6620746865206368756e6b732028696620706f737369626c65292e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e00982053656520616c736f205b6043616c6c3a3a77697468647261775f756e626f6e646564605d2e002c2023203c7765696768743e4101202d20496e646570656e64656e74206f662074686520617267756d656e74732e204c696d697465642062757420706f74656e7469616c6c79206578706c6f697461626c6520636f6d706c65786974792e98202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732e6501202d20456163682063616c6c20287265717569726573207468652072656d61696e646572206f662074686520626f6e6465642062616c616e636520746f2062652061626f766520606d696e696d756d5f62616c616e63656029710120202077696c6c2063617573652061206e657720656e74727920746f20626520696e73657274656420696e746f206120766563746f722028604c65646765722e756e6c6f636b696e676029206b65707420696e2073746f726167652ea501202020546865206f6e6c792077617920746f20636c65616e207468652061666f72656d656e74696f6e65642073746f72616765206974656d20697320616c736f20757365722d636f6e74726f6c6c656420766961206077697468647261775f756e626f6e646564602e40202d204f6e6520444220656e7472792e28203c2f7765696768743e4477697468647261775f756e626f6e64656400402d012052656d6f766520616e7920756e6c6f636b6564206368756e6b732066726f6d207468652060756e6c6f636b696e67602071756575652066726f6d206f7572206d616e6167656d656e742e003501205468697320657373656e7469616c6c7920667265657320757020746861742062616c616e636520746f206265207573656420627920746865207374617368206163636f756e7420746f20646f4c2077686174657665722069742077616e74732e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e006c2053656520616c736f205b6043616c6c3a3a756e626f6e64605d2e002c2023203c7765696768743e5501202d20436f756c6420626520646570656e64656e74206f6e2074686520606f726967696e6020617267756d656e7420616e6420686f77206d7563682060756e6c6f636b696e6760206368756e6b732065786973742e45012020497420696d706c6965732060636f6e736f6c69646174655f756e6c6f636b656460207768696368206c6f6f7073206f76657220604c65646765722e756e6c6f636b696e67602c207768696368206973f42020696e6469726563746c7920757365722d636f6e74726f6c6c65642e20536565205b60756e626f6e64605d20666f72206d6f72652064657461696c2e7901202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732c20796574207468652073697a65206f6620776869636820636f756c64206265206c61726765206261736564206f6e20606c6564676572602ec8202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e302023203c2f7765696768743e2076616c6964617465041470726566733856616c696461746f7250726566732ce8204465636c617265207468652064657369726520746f2076616c696461746520666f7220746865206f726967696e20636f6e74726f6c6c65722e00dc20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e002c2023203c7765696768743ee8202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e98202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec8202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e302023203c2f7765696768743e206e6f6d696e617465041c74617267657473a05665633c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263653e2c1101204465636c617265207468652064657369726520746f206e6f6d696e6174652060746172676574736020666f7220746865206f726967696e20636f6e74726f6c6c65722e00dc20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e002c2023203c7765696768743e2501202d20546865207472616e73616374696f6e277320636f6d706c65786974792069732070726f706f7274696f6e616c20746f207468652073697a65206f66206074617267657473602c982077686963682069732063617070656420617420604d41585f4e4f4d494e4154494f4e53602ed8202d20426f74682074686520726561647320616e642077726974657320666f6c6c6f7720612073696d696c6172207061747465726e2e302023203c2f7765696768743e146368696c6c002cc8204465636c617265206e6f2064657369726520746f206569746865722076616c6964617465206f72206e6f6d696e6174652e00dc20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e002c2023203c7765696768743ee8202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e54202d20436f6e7461696e73206f6e6520726561642ec8202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e302023203c2f7765696768743e247365745f7061796565041470617965654452657761726444657374696e6174696f6e2cb8202852652d2973657420746865207061796d656e742074617267657420666f72206120636f6e74726f6c6c65722e00dc20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e002c2023203c7765696768743ee8202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e98202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec8202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e302023203c2f7765696768743e387365745f636f6e74726f6c6c65720428636f6e74726f6c6c65728c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263652c90202852652d297365742074686520636f6e74726f6c6c6572206f6620612073746173682e00dc20456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e002c2023203c7765696768743ee8202d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e98202d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec8202d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e302023203c2f7765696768743e4c7365745f76616c696461746f725f636f756e74040c6e657730436f6d706163743c7533323e04802054686520696465616c206e756d626572206f662076616c696461746f72732e34666f7263655f6e6f5f657261730014b020466f72636520746865726520746f206265206e6f206e6577206572617320696e646566696e6974656c792e002c2023203c7765696768743e40202d204e6f20617267756d656e74732e302023203c2f7765696768743e34666f7263655f6e65775f65726100184d0120466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f6620746865206e6578742073657373696f6e2e20416674657220746869732c2069742077696c6c206265a020726573657420746f206e6f726d616c20286e6f6e2d666f7263656429206265686176696f75722e002c2023203c7765696768743e40202d204e6f20617267756d656e74732e302023203c2f7765696768743e447365745f696e76756c6e657261626c6573042876616c696461746f7273445665633c543a3a4163636f756e7449643e04cc20536574207468652076616c696461746f72732077686f2063616e6e6f7420626520736c61736865642028696620616e79292e34666f7263655f756e7374616b650414737461736830543a3a4163636f756e744964040d0120466f72636520612063757272656e74207374616b657220746f206265636f6d6520636f6d706c6574656c7920756e7374616b65642c20696d6d6564696174656c792e50666f7263655f6e65775f6572615f616c776179730014050120466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f662073657373696f6e7320696e646566696e6974656c792e002c2023203c7765696768743e50202d204f6e652073746f72616765207772697465302023203c2f7765696768743e5463616e63656c5f64656665727265645f736c617368080c65726120457261496e64657834736c6173685f696e6469636573205665633c7533323e1c45012043616e63656c20656e6163746d656e74206f66206120646566657272656420736c6173682e2043616e2062652063616c6c6564206279206569746865722074686520726f6f74206f726967696e206f7270207468652060543a3a536c61736843616e63656c4f726967696e602e05012070617373696e67207468652065726120616e6420696e6469636573206f662074686520736c617368657320666f7220746861742065726120746f206b696c6c2e002c2023203c7765696768743e54202d204f6e652073746f726167652077726974652e302023203c2f7765696768743e187265626f6e64041476616c756554436f6d706163743c42616c616e63654f663c543e3e18e0205265626f6e64206120706f7274696f6e206f6620746865207374617368207363686564756c656420746f20626520756e6c6f636b65642e002c2023203c7765696768743ef0202d2054696d6520636f6d706c65786974793a204f2831292e20426f756e64656420627920604d41585f554e4c4f434b494e475f4348554e4b53602ef4202d2053746f72616765206368616e6765733a2043616e277420696e6372656173652073746f726167652c206f6e6c792064656372656173652069742e302023203c2f7765696768743e010c18526577617264081c42616c616e63651c42616c616e636508510120416c6c2076616c696461746f72732068617665206265656e207265776172646564206279207468652066697273742062616c616e63653b20746865207365636f6e64206973207468652072656d61696e6465728c2066726f6d20746865206d6178696d756d20616d6f756e74206f66207265776172642e14536c61736808244163636f756e7449641c42616c616e6365042501204f6e652076616c696461746f722028616e6420697473206e6f6d696e61746f72732920686173206265656e20736c61736865642062792074686520676976656e20616d6f756e742e684f6c64536c617368696e675265706f7274446973636172646564043053657373696f6e496e646578081d0120416e206f6c6420736c617368696e67207265706f72742066726f6d2061207072696f72206572612077617320646973636172646564206265636175736520697420636f756c6448206e6f742062652070726f6365737365642e083853657373696f6e735065724572613053657373696f6e496e64657810060000000470204e756d626572206f662073657373696f6e7320706572206572612e3c426f6e64696e674475726174696f6e20457261496e646578101c00000004e4204e756d626572206f6620657261732074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e28344e6f74436f6e74726f6c6c65720468204e6f74206120636f6e74726f6c6c6572206163636f756e742e204e6f7453746173680454204e6f742061207374617368206163636f756e742e34416c7265616479426f6e646564046420537461736820697320616c726561647920626f6e6465642e34416c7265616479506169726564047820436f6e74726f6c6c657220697320616c7265616479207061697265642e30456d70747954617267657473046420546172676574732063616e6e6f7420626520656d7074792e384475706c6963617465496e6465780444204475706c696361746520696e6465782e44496e76616c6964536c617368496e646578048820536c617368207265636f726420696e646578206f7574206f6620626f756e64732e44496e73756666696369656e7456616c756504cc2043616e206e6f7420626f6e6420776974682076616c7565206c657373207468616e206d696e696d756d2062616c616e63652e304e6f4d6f72654368756e6b7304942043616e206e6f74207363686564756c65206d6f726520756e6c6f636b206368756e6b732e344e6f556e6c6f636b4368756e6b04a42043616e206e6f74207265626f6e6420776974686f757420756e6c6f636b696e67206368756e6b732e1c53657373696f6e011c53657373696f6e1c2856616c696461746f727301004c5665633c543a3a56616c696461746f7249643e0400047c205468652063757272656e7420736574206f662076616c696461746f72732e3043757272656e74496e64657801003053657373696f6e496e646578100000000004782043757272656e7420696e646578206f66207468652073657373696f6e2e345175657565644368616e676564010010626f6f6c040008390120547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f7273a420686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e285175657565644b6579730100785665633c28543a3a56616c696461746f7249642c20543a3a4b657973293e0400083d012054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b657973e02077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e4844697361626c656456616c696461746f72730100205665633c7533323e04000c8020496e6469636573206f662064697361626c65642076616c696461746f72732e003501205468652073657420697320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e732061206e657720736574206f66206964656e7469746965732e204e6578744b6579730002051c5665633c75383e38543a3a56616c696461746f7249641c543a3a4b657973010400109c20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e00590120546865206669727374206b657920697320616c77617973206044454455505f4b45595f5052454649586020746f206861766520616c6c20746865206461746120696e207468652073616d65206272616e6368206f6661012074686520747269652e20486176696e6720616c6c206461746120696e207468652073616d65206272616e63682073686f756c642070726576656e7420736c6f77696e6720646f776e206f7468657220717565726965732e204b65794f776e65720002051c5665633c75383e50284b65795479706549642c205665633c75383e2938543a3a56616c696461746f72496401040010250120546865206f776e6572206f662061206b65792e20546865207365636f6e64206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e00590120546865206669727374206b657920697320616c77617973206044454455505f4b45595f5052454649586020746f206861766520616c6c20746865206461746120696e207468652073616d65206272616e6368206f6661012074686520747269652e20486176696e6720616c6c206461746120696e207468652073616d65206272616e63682073686f756c642070726576656e7420736c6f77696e6720646f776e206f7468657220717565726965732e0104207365745f6b65797308106b6579731c543a3a4b6579731470726f6f661c5665633c75383e28e82053657473207468652073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c657220746f20606b657973602e210120416c6c6f777320616e206163636f756e7420746f20736574206974732073657373696f6e206b6579207072696f7220746f206265636f6d696e6720612076616c696461746f722ec4205468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e00d420546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e002c2023203c7765696768743e88202d204f286c6f67206e2920696e206e756d626572206f66206163636f756e74732e58202d204f6e6520657874726120444220656e7472792e302023203c2f7765696768743e0104284e657753657373696f6e043053657373696f6e496e646578085501204e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e74206973207468652073657373696f6e20696e6465782c206e6f742074686520626c6f636b88206e756d626572206173207468652074797065206d6967687420737567676573742e044044454455505f4b45595f50524546495814265b75385d38343a73657373696f6e3a6b6579730865012055736564206173206669727374206b657920666f7220604e6578744b6579736020616e6420604b65794f776e65726020746f2070757420616c6c20746865206461746120696e746f207468652073616d65206272616e636834206f662074686520747269652e0c30496e76616c696450726f6f66046420496e76616c6964206f776e6572736869702070726f6f662e5c4e6f4173736f63696174656456616c696461746f72496404a0204e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e344475706c6963617465644b657904682052656769737465726564206475706c6963617465206b65792e2444656d6f6372616379012444656d6f6372616379403c5075626c696350726f70436f756e7401002450726f70496e646578100000000004f420546865206e756d626572206f6620287075626c6963292070726f706f73616c7320746861742068617665206265656e206d61646520736f206661722e2c5075626c696350726f707301009c5665633c2850726f70496e6465782c20543a3a486173682c20543a3a4163636f756e744964293e040004210120546865207075626c69632070726f706f73616c732e20556e736f727465642e20546865207365636f6e64206974656d206973207468652070726f706f73616c277320686173682e24507265696d616765730001011c543a3a48617368d4285665633c75383e2c20543a3a4163636f756e7449642c2042616c616e63654f663c543e2c20543a3a426c6f636b4e756d62657229000400086101204d6170206f662068617368657320746f207468652070726f706f73616c20707265696d6167652c20616c6f6e6720776974682077686f207265676973746572656420697420616e64207468656972206465706f7369742ee42054686520626c6f636b206e756d6265722069732074686520626c6f636b20617420776869636820697420776173206465706f73697465642e244465706f7369744f660001012450726f70496e646578842842616c616e63654f663c543e2c205665633c543a3a4163636f756e7449643e2900040004842054686f73652077686f2068617665206c6f636b65642061206465706f7369742e3c5265666572656e64756d436f756e7401003c5265666572656e64756d496e646578100000000004310120546865206e6578742066726565207265666572656e64756d20696e6465782c20616b6120746865206e756d626572206f66207265666572656e6461207374617274656420736f206661722e344c6f77657374556e62616b656401003c5265666572656e64756d496e646578100000000008250120546865206c6f77657374207265666572656e64756d20696e64657820726570726573656e74696e6720616e20756e62616b6564207265666572656e64756d2e20457175616c20746fdc20605265666572656e64756d436f756e74602069662074686572652069736e2774206120756e62616b6564207265666572656e64756d2e405265666572656e64756d496e666f4f660001013c5265666572656e64756d496e6465789c5265666572656e64756d496e666f3c543a3a426c6f636b4e756d6265722c20543a3a486173683e00040004b420496e666f726d6174696f6e20636f6e6365726e696e6720616e7920676976656e207265666572656e64756d2e34446973706174636851756575650100bc5665633c28543a3a426c6f636b4e756d6265722c20543a3a486173682c205265666572656e64756d496e646578293e0400044101205175657565206f66207375636365737366756c207265666572656e646120746f20626520646973706174636865642e2053746f726564206f72646572656420627920626c6f636b206e756d6265722e24566f74657273466f720101013c5265666572656e64756d496e646578445665633c543a3a4163636f756e7449643e00040004a4204765742074686520766f7465727320666f72207468652063757272656e742070726f706f73616c2e18566f74654f660101017c285265666572656e64756d496e6465782c20543a3a4163636f756e7449642910566f7465000400106101204765742074686520766f746520696e206120676976656e207265666572656e64756d206f66206120706172746963756c617220766f7465722e2054686520726573756c74206973206d65616e696e6766756c206f6e6c794d012069662060766f746572735f666f726020696e636c756465732074686520766f746572207768656e2063616c6c6564207769746820746865207265666572656e64756d2028796f75276c6c20676574207468655d012064656661756c742060566f7465602076616c7565206f7468657277697365292e20496620796f7520646f6e27742077616e7420746f20636865636b2060766f746572735f666f72602c207468656e20796f752063616ef420616c736f20636865636b20666f722073696d706c65206578697374656e636520776974682060566f74654f663a3a657869737473602066697273742e1450726f787900010130543a3a4163636f756e74496430543a3a4163636f756e7449640004000831012057686f2069732061626c6520746f20766f746520666f722077686f6d2e2056616c7565206973207468652066756e642d686f6c64696e67206163636f756e742c206b6579206973207468658820766f74652d7472616e73616374696f6e2d73656e64696e67206163636f756e742e2c44656c65676174696f6e7301010130543a3a4163636f756e7449646828543a3a4163636f756e7449642c20436f6e76696374696f6e2901840000000000000000000000000000000000000000000000000000000000000000000441012047657420746865206163636f756e742028616e64206c6f636b20706572696f64732920746f20776869636820616e6f74686572206163636f756e742069732064656c65676174696e6720766f74652e544c6173745461626c656457617345787465726e616c010010626f6f6c0400085901205472756520696620746865206c617374207265666572656e64756d207461626c656420776173207375626d69747465642065787465726e616c6c792e2046616c7365206966206974207761732061207075626c6963282070726f706f73616c2e304e65787445787465726e616c00006028543a3a486173682c20566f74655468726573686f6c6429040010590120546865207265666572656e64756d20746f206265207461626c6564207768656e6576657220697420776f756c642062652076616c696420746f207461626c6520616e2065787465726e616c2070726f706f73616c2e550120546869732068617070656e73207768656e2061207265666572656e64756d206e6565647320746f206265207461626c656420616e64206f6e65206f662074776f20636f6e646974696f6e7320617265206d65743aa4202d20604c6173745461626c656457617345787465726e616c60206973206066616c7365603b206f7268202d20605075626c696350726f70736020697320656d7074792e24426c61636b6c6973740001011c543a3a486173688c28543a3a426c6f636b4e756d6265722c205665633c543a3a4163636f756e7449643e290004000851012041207265636f7264206f662077686f207665746f656420776861742e204d6170732070726f706f73616c206861736820746f206120706f737369626c65206578697374656e7420626c6f636b206e756d626572e82028756e74696c207768656e206974206d6179206e6f742062652072657375626d69747465642920616e642077686f207665746f65642069742e3443616e63656c6c6174696f6e730101011c543a3a4861736810626f6f6c000400042901205265636f7264206f6620616c6c2070726f706f73616c7320746861742068617665206265656e207375626a65637420746f20656d657267656e63792063616e63656c6c6174696f6e2e01541c70726f706f7365083470726f706f73616c5f686173681c543a3a486173681476616c756554436f6d706163743c42616c616e63654f663c543e3e18a02050726f706f736520612073656e73697469766520616374696f6e20746f2062652074616b656e2e002c2023203c7765696768743e20202d204f2831292e80202d2054776f204442206368616e6765732c206f6e6520444220656e7472792e302023203c2f7765696768743e187365636f6e64042070726f706f73616c48436f6d706163743c50726f70496e6465783e18a02050726f706f736520612073656e73697469766520616374696f6e20746f2062652074616b656e2e002c2023203c7765696768743e20202d204f2831292e40202d204f6e6520444220656e7472792e302023203c2f7765696768743e10766f746508247265665f696e64657860436f6d706163743c5265666572656e64756d496e6465783e10766f746510566f74651c350120566f746520696e2061207265666572656e64756d2e2049662060766f74652e69735f6179652829602c2074686520766f746520697320746f20656e616374207468652070726f706f73616c3bbc206f7468657277697365206974206973206120766f746520746f206b65657020746865207374617475732071756f2e002c2023203c7765696768743e20202d204f2831292e7c202d204f6e65204442206368616e67652c206f6e6520444220656e7472792e302023203c2f7765696768743e2870726f78795f766f746508247265665f696e64657860436f6d706163743c5265666572656e64756d496e6465783e10766f746510566f74651c510120566f746520696e2061207265666572656e64756d206f6e20626568616c66206f6620612073746173682e2049662060766f74652e69735f6179652829602c2074686520766f746520697320746f20656e616374f4207468652070726f706f73616c3b206f7468657277697365206974206973206120766f746520746f206b65657020746865207374617475732071756f2e002c2023203c7765696768743e20202d204f2831292e7c202d204f6e65204442206368616e67652c206f6e6520444220656e7472792e302023203c2f7765696768743e40656d657267656e63795f63616e63656c04247265665f696e6465783c5265666572656e64756d496e646578085101205363686564756c6520616e20656d657267656e63792063616e63656c6c6174696f6e206f662061207265666572656e64756d2e2043616e6e6f742068617070656e20747769636520746f207468652073616d6530207265666572656e64756d2e4065787465726e616c5f70726f706f7365043470726f706f73616c5f686173681c543a3a48617368083101205363686564756c652061207265666572656e64756d20746f206265207461626c6564206f6e6365206974206973206c6567616c20746f207363686564756c6520616e2065787465726e616c30207265666572656e64756d2e6465787465726e616c5f70726f706f73655f6d616a6f72697479043470726f706f73616c5f686173681c543a3a48617368145901205363686564756c652061206d616a6f726974792d63617272696573207265666572656e64756d20746f206265207461626c6564206e657874206f6e6365206974206973206c6567616c20746f207363686564756c656020616e2065787465726e616c207265666572656e64756d2e004d0120556e6c696b65206065787465726e616c5f70726f706f7365602c20626c61636b6c697374696e6720686173206e6f20656666656374206f6e207468697320616e64206974206d6179207265706c61636520619c207072652d7363686564756c6564206065787465726e616c5f70726f706f7365602063616c6c2e6065787465726e616c5f70726f706f73655f64656661756c74043470726f706f73616c5f686173681c543a3a48617368144901205363686564756c652061206e656761746976652d7475726e6f75742d62696173207265666572656e64756d20746f206265207461626c6564206e657874206f6e6365206974206973206c6567616c20746f84207363686564756c6520616e2065787465726e616c207265666572656e64756d2e004d0120556e6c696b65206065787465726e616c5f70726f706f7365602c20626c61636b6c697374696e6720686173206e6f20656666656374206f6e207468697320616e64206974206d6179207265706c61636520619c207072652d7363686564756c6564206065787465726e616c5f70726f706f7365602063616c6c2e28666173745f747261636b0c3470726f706f73616c5f686173681c543a3a4861736834766f74696e675f706572696f6438543a3a426c6f636b4e756d6265721464656c617938543a3a426c6f636b4e756d626572245101205363686564756c65207468652063757272656e746c792065787465726e616c6c792d70726f706f736564206d616a6f726974792d63617272696573207265666572656e64756d20746f206265207461626c6564650120696d6d6564696174656c792e204966207468657265206973206e6f2065787465726e616c6c792d70726f706f736564207265666572656e64756d2063757272656e746c792c206f72206966207468657265206973206f6e65ec20627574206974206973206e6f742061206d616a6f726974792d63617272696573207265666572656e64756d207468656e206974206661696c732e00f8202d206070726f706f73616c5f68617368603a205468652068617368206f66207468652063757272656e742065787465726e616c2070726f706f73616c2e6101202d2060766f74696e675f706572696f64603a2054686520706572696f64207468617420697320616c6c6f77656420666f7220766f74696e67206f6e20746869732070726f706f73616c2e20496e6372656173656420746f9820202060456d657267656e6379566f74696e67506572696f646020696620746f6f206c6f772e5501202d206064656c6179603a20546865206e756d626572206f6620626c6f636b20616674657220766f74696e672068617320656e64656420696e20617070726f76616c20616e6420746869732073686f756c64206265bc202020656e61637465642e205468697320646f65736e277420686176652061206d696e696d756d20616d6f756e742e347665746f5f65787465726e616c043470726f706f73616c5f686173681c543a3a4861736804bc205665746f20616e6420626c61636b6c697374207468652065787465726e616c2070726f706f73616c20686173682e4463616e63656c5f7265666572656e64756d04247265665f696e64657860436f6d706163743c5265666572656e64756d496e6465783e04542052656d6f76652061207265666572656e64756d2e3463616e63656c5f717565756564041477686963683c5265666572656e64756d496e64657804a02043616e63656c20612070726f706f73616c2071756575656420666f7220656e6163746d656e742e247365745f70726f7879041470726f787930543a3a4163636f756e7449641498205370656369667920612070726f78792e2043616c6c6564206279207468652073746173682e002c2023203c7765696768743e58202d204f6e6520657874726120444220656e7472792e302023203c2f7765696768743e3072657369676e5f70726f787900149820436c656172207468652070726f78792e2043616c6c6564206279207468652070726f78792e002c2023203c7765696768743e40202d204f6e6520444220636c6561722e302023203c2f7765696768743e3072656d6f76655f70726f7879041470726f787930543a3a4163636f756e744964149820436c656172207468652070726f78792e2043616c6c6564206279207468652073746173682e002c2023203c7765696768743e40202d204f6e6520444220636c6561722e302023203c2f7765696768743e2064656c65676174650808746f30543a3a4163636f756e74496428636f6e76696374696f6e28436f6e76696374696f6e143c2044656c656761746520766f74652e002c2023203c7765696768743e58202d204f6e6520657874726120444220656e7472792e302023203c2f7765696768743e28756e64656c656761746500144420556e64656c656761746520766f74652e002c2023203c7765696768743e20202d204f2831292e302023203c2f7765696768743e58636c6561725f7075626c69635f70726f706f73616c7300040101205665746f20616e6420626c61636b6c697374207468652070726f706f73616c20686173682e204d7573742062652066726f6d20526f6f74206f726967696e2e346e6f74655f707265696d6167650440656e636f6465645f70726f706f73616c1c5665633c75383e0861012052656769737465722074686520707265696d61676520666f7220616e207570636f6d696e672070726f706f73616c2e205468697320646f65736e27742072657175697265207468652070726f706f73616c20746f206265250120696e207468652064697370617463682071756575652062757420646f657320726571756972652061206465706f7369742c2072657475726e6564206f6e636520656e61637465642e586e6f74655f696d6d696e656e745f707265696d6167650440656e636f6465645f70726f706f73616c1c5665633c75383e0845012052656769737465722074686520707265696d61676520666f7220616e207570636f6d696e672070726f706f73616c2e2054686973207265717569726573207468652070726f706f73616c20746f206265b420696e207468652064697370617463682071756575652e204e6f206465706f736974206973206e65656465642e34726561705f707265696d616765043470726f706f73616c5f686173681c543a3a4861736814f42052656d6f766520616e20657870697265642070726f706f73616c20707265696d61676520616e6420636f6c6c65637420746865206465706f7369742e00510120546869732077696c6c206f6e6c7920776f726b2061667465722060566f74696e67506572696f646020626c6f636b732066726f6d207468652074696d6520746861742074686520707265696d616765207761735d01206e6f7465642c2069662069742773207468652073616d65206163636f756e7420646f696e672069742e2049662069742773206120646966666572656e74206163636f756e742c207468656e206974276c6c206f6e6c79b020776f726b20616e206164646974696f6e616c2060456e6163746d656e74506572696f6460206c617465722e01402050726f706f736564082450726f70496e6465781c42616c616e636504c02041206d6f74696f6e20686173206265656e2070726f706f7365642062792061207075626c6963206163636f756e742e185461626c65640c2450726f70496e6465781c42616c616e6365385665633c4163636f756e7449643e04dc2041207075626c69632070726f706f73616c20686173206265656e207461626c656420666f72207265666572656e64756d20766f74652e3845787465726e616c5461626c656400049820416e2065787465726e616c2070726f706f73616c20686173206265656e207461626c65642e1c53746172746564083c5265666572656e64756d496e64657834566f74655468726573686f6c6404602041207265666572656e64756d2068617320626567756e2e18506173736564043c5265666572656e64756d496e64657804b020412070726f706f73616c20686173206265656e20617070726f766564206279207265666572656e64756d2e244e6f74506173736564043c5265666572656e64756d496e64657804b020412070726f706f73616c20686173206265656e2072656a6563746564206279207265666572656e64756d2e2443616e63656c6c6564043c5265666572656e64756d496e64657804842041207265666572656e64756d20686173206265656e2063616e63656c6c65642e204578656375746564083c5265666572656e64756d496e64657810626f6f6c047420412070726f706f73616c20686173206265656e20656e61637465642e2444656c65676174656408244163636f756e744964244163636f756e74496404e020416e206163636f756e74206861732064656c65676174656420746865697220766f746520746f20616e6f74686572206163636f756e742e2c556e64656c65676174656404244163636f756e74496404e820416e206163636f756e74206861732063616e63656c6c656420612070726576696f75732064656c65676174696f6e206f7065726174696f6e2e185665746f65640c244163636f756e74496410486173682c426c6f636b4e756d626572049820416e2065787465726e616c2070726f706f73616c20686173206265656e207665746f65642e34507265696d6167654e6f7465640c1048617368244163636f756e7449641c42616c616e636504e020412070726f706f73616c277320707265696d61676520776173206e6f7465642c20616e6420746865206465706f7369742074616b656e2e30507265696d616765557365640c1048617368244163636f756e7449641c42616c616e636504150120412070726f706f73616c20707265696d616765207761732072656d6f76656420616e6420757365642028746865206465706f736974207761732072657475726e6564292e3c507265696d616765496e76616c69640810486173683c5265666572656e64756d496e646578040d0120412070726f706f73616c20636f756c64206e6f7420626520657865637574656420626563617573652069747320707265696d6167652077617320696e76616c69642e3c507265696d6167654d697373696e670810486173683c5265666572656e64756d496e646578040d0120412070726f706f73616c20636f756c64206e6f7420626520657865637574656420626563617573652069747320707265696d61676520776173206d697373696e672e38507265696d616765526561706564101048617368244163636f756e7449641c42616c616e6365244163636f756e744964045d012041207265676973746572656420707265696d616765207761732072656d6f76656420616e6420746865206465706f73697420636f6c6c6563746564206279207468652072656170657220286c617374206974656d292e1c3c456e6163746d656e74506572696f6438543a3a426c6f636b4e756d6265721000c2010014710120546865206d696e696d756d20706572696f64206f66206c6f636b696e6720616e642074686520706572696f64206265747765656e20612070726f706f73616c206265696e6720617070726f76656420616e6420656e61637465642e0031012049742073686f756c642067656e6572616c6c792062652061206c6974746c65206d6f7265207468616e2074686520756e7374616b6520706572696f6420746f20656e737572652074686174690120766f74696e67207374616b657273206861766520616e206f70706f7274756e69747920746f2072656d6f7665207468656d73656c7665732066726f6d207468652073797374656d20696e2074686520636173652077686572659c207468657920617265206f6e20746865206c6f73696e672073696465206f66206120766f74652e304c61756e6368506572696f6438543a3a426c6f636b4e756d62657210c089010004e420486f77206f6674656e2028696e20626c6f636b7329206e6577207075626c6963207265666572656e646120617265206c61756e636865642e30566f74696e67506572696f6438543a3a426c6f636b4e756d62657210c089010004b820486f77206f6674656e2028696e20626c6f636b732920746f20636865636b20666f72206e657720766f7465732e384d696e696d756d4465706f7369743042616c616e63654f663c543e40000010632d5ec76b050000000000000004350120546865206d696e696d756d20616d6f756e7420746f20626520757365642061732061206465706f73697420666f722061207075626c6963207265666572656e64756d2070726f706f73616c2e54456d657267656e6379566f74696e67506572696f6438543a3a426c6f636b4e756d626572104038000004ec204d696e696d756d20766f74696e6720706572696f6420616c6c6f77656420666f7220616e20656d657267656e6379207265666572656e64756d2e34436f6f6c6f6666506572696f6438543a3a426c6f636b4e756d62657210c089010004610120506572696f6420696e20626c6f636b7320776865726520616e2065787465726e616c2070726f706f73616c206d6179206e6f742062652072652d7375626d6974746564206166746572206265696e67207665746f65642e4c507265696d616765427974654465706f7369743042616c616e63654f663c543e400000c16ff286230000000000000000000429012054686520616d6f756e74206f662062616c616e63652074686174206d757374206265206465706f7369746564207065722062797465206f6620707265696d6167652073746f7265642e582056616c75654c6f7704382056616c756520746f6f206c6f773c50726f706f73616c4d697373696e6704602050726f706f73616c20646f6573206e6f74206578697374204e6f7450726f78790430204e6f7420612070726f787920426164496e646578043820556e6b6e6f776e20696e6465783c416c726561647943616e63656c656404982043616e6e6f742063616e63656c207468652073616d652070726f706f73616c207477696365444475706c696361746550726f706f73616c04582050726f706f73616c20616c7265616479206d6164654c50726f706f73616c426c61636b6c6973746564046c2050726f706f73616c207374696c6c20626c61636b6c6973746564444e6f7453696d706c654d616a6f7269747904ac204e6578742065787465726e616c2070726f706f73616c206e6f742073696d706c65206d616a6f726974792c496e76616c696448617368043420496e76616c69642068617368284e6f50726f706f73616c0454204e6f2065787465726e616c2070726f706f73616c34416c72656164795665746f6564049c204964656e74697479206d6179206e6f74207665746f20612070726f706f73616c20747769636530416c726561647950726f7879044020416c726561647920612070726f78792857726f6e6750726f787904302057726f6e672070726f7879304e6f7444656c6567617465640438204e6f742064656c656761746564444475706c6963617465507265696d616765045c20507265696d61676520616c7265616479206e6f7465642c4e6f74496d6d696e656e740434204e6f7420696d6d696e656e74144561726c79042820546f6f206561726c7920496d6d696e656e74042420496d6d696e656e743c507265696d6167654d697373696e67044c20507265696d616765206e6f7420666f756e64445265666572656e64756d496e76616c6964048820566f746520676976656e20666f7220696e76616c6964207265666572656e64756d3c507265696d616765496e76616c6964044420496e76616c696420707265696d6167652c4e6f6e6557616974696e670454204e6f2070726f706f73616c732077616974696e671c436f756e63696c014c496e7374616e636531436f6c6c656374697665142450726f706f73616c730100305665633c543a3a486173683e040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f660001011c543a3a48617368643c542061732054726169743c493e3e3a3a50726f706f73616c00040004cc2041637475616c2070726f706f73616c20666f72206120676976656e20686173682c20696620697427732063757272656e742e18566f74696e670001011c543a3a486173684c566f7465733c543a3a4163636f756e7449643e00040004b420566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e7401000c753332100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100445665633c543a3a4163636f756e7449643e0400043901205468652063757272656e74206d656d62657273206f662074686520636f6c6c6563746976652e20546869732069732073746f72656420736f7274656420286a7573742062792076616c7565292e01102c7365745f6d656d62657273042c6e65775f6d656d62657273445665633c543a3a4163636f756e7449643e105101205365742074686520636f6c6c6563746976652773206d656d62657273686970206d616e75616c6c7920746f20606e65775f6d656d62657273602e204265206e69636520746f2074686520636861696e20616e645c2070726f76696465206974207072652d736f727465642e005820526571756972657320726f6f74206f726967696e2e1c65786563757465042070726f706f73616c78426f783c3c542061732054726169743c493e3e3a3a50726f706f73616c3e0cf420446973706174636820612070726f706f73616c2066726f6d2061206d656d626572207573696e672074686520604d656d62657260206f726967696e2e00ac204f726967696e206d7573742062652061206d656d626572206f662074686520636f6c6c6563746976652e1c70726f706f736508247468726573686f6c6450436f6d706163743c4d656d626572436f756e743e2070726f706f73616c78426f783c3c542061732054726169743c493e3e3a3a50726f706f73616c3e102c2023203c7765696768743e90202d20426f756e6465642073746f7261676520726561647320616e64207772697465732eb8202d20417267756d656e7420607468726573686f6c6460206861732062656172696e67206f6e207765696768742e302023203c2f7765696768743e10766f74650c2070726f706f73616c1c543a3a4861736814696e64657858436f6d706163743c50726f706f73616c496e6465783e1c617070726f766510626f6f6c102c2023203c7765696768743e8c202d20426f756e6465642073746f72616765207265616420616e64207772697465732e5501202d2057696c6c20626520736c696768746c792068656176696572206966207468652070726f706f73616c20697320617070726f766564202f20646973617070726f7665642061667465722074686520766f74652e302023203c2f7765696768743e01182050726f706f73656410244163636f756e7449643450726f706f73616c496e64657810486173682c4d656d626572436f756e74084d012041206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e4020604d656d626572436f756e7460292e14566f74656414244163636f756e744964104861736810626f6f6c2c4d656d626572436f756e742c4d656d626572436f756e740809012041206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e67190120612074616c6c79202879657320766f74657320616e64206e6f20766f74657320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e20417070726f76656404104861736804c42041206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c642e2c446973617070726f76656404104861736804d42041206d6f74696f6e20776173206e6f7420617070726f76656420627920746865207265717569726564207468726573686f6c642e20457865637574656408104861736810626f6f6c0405012041206d6f74696f6e207761732065786563757465643b2060626f6f6c6020697320747275652069662072657475726e656420776974686f7574206572726f722e384d656d626572457865637574656408104861736810626f6f6c042d0120412073696e676c65206d656d6265722064696420736f6d6520616374696f6e3b2060626f6f6c6020697320747275652069662072657475726e656420776974686f7574206572726f722e0018244e6f744d656d6265720460204163636f756e74206973206e6f742061206d656d626572444475706c696361746550726f706f73616c0480204475706c69636174652070726f706f73616c73206e6f7420616c6c6f7765643c50726f706f73616c4d697373696e6704502050726f706f73616c206d7573742065786973742857726f6e67496e6465780444204d69736d61746368656420696e646578344475706c6963617465566f7465045c204475706c696361746520766f74652069676e6f72656448416c7265616479496e697469616c697a65640484204d656d626572732061726520616c726561647920696e697469616c697a65642124456c656374696f6e73014050687261676d656e456c656374696f6e181c4d656d626572730100845665633c28543a3a4163636f756e7449642c2042616c616e63654f663c543e293e040004f0205468652063757272656e7420656c6563746564206d656d626572736869702e20536f72746564206261736564206f6e206163636f756e742069642e2452756e6e65727355700100845665633c28543a3a4163636f756e7449642c2042616c616e63654f663c543e293e0400044901205468652063757272656e742072756e6e6572735f75702e20536f72746564206261736564206f6e206c6f7720746f2068696768206d657269742028776f72736520746f20626573742072756e6e6572292e38456c656374696f6e526f756e647301000c75333210000000000441012054686520746f74616c206e756d626572206f6620766f746520726f756e6473207468617420686176652068617070656e65642c206578636c7564696e6720746865207570636f6d696e67206f6e652e1c566f7465734f6601010130543a3a4163636f756e744964445665633c543a3a4163636f756e7449643e01040004010120566f746573206f66206120706172746963756c617220766f7465722c20776974682074686520726f756e6420696e646578206f662074686520766f7465732e1c5374616b654f6601010130543a3a4163636f756e7449643042616c616e63654f663c543e0040000000000000000000000000000000000464204c6f636b6564207374616b65206f66206120766f7465722e2843616e646964617465730100445665633c543a3a4163636f756e7449643e0400086501205468652070726573656e742063616e646964617465206c6973742e20536f72746564206261736564206f6e206163636f756e742d69642e20412063757272656e74206d656d626572206f7220612072756e6e65722063616e3101206e6576657220656e746572207468697320766563746f7220616e6420697320616c7761797320696d706c696369746c7920617373756d656420746f20626520612063616e6469646174652e011810766f74650814766f746573445665633c543a3a4163636f756e7449643e1476616c756554436f6d706163743c42616c616e63654f663c543e3e3c050120566f746520666f72206120736574206f662063616e6469646174657320666f7220746865207570636f6d696e6720726f756e64206f6620656c656374696f6e2e0050205468652060766f746573602073686f756c643a482020202d206e6f7420626520656d7074792eac2020202d206265206c657373207468616e20746865206e756d626572206f662063616e646964617465732e005d012055706f6e20766f74696e672c206076616c75656020756e697473206f66206077686f6027732062616c616e6365206973206c6f636b656420616e64206120626f6e6420616d6f756e742069732072657365727665642e5d012049742069732074686520726573706f6e736962696c697479206f66207468652063616c6c657220746f206e6f7420706c61636520616c6c206f662074686569722062616c616e636520696e746f20746865206c6f636ba020616e64206b65657020736f6d6520666f722066757274686572207472616e73616374696f6e732e002c2023203c7765696768743e2c2023232323205374617465302052656164733a204f283129c8205772697465733a204f28562920676976656e2060566020766f7465732e205620697320626f756e6465642062792031362e302023203c2f7765696768743e3072656d6f76655f766f746572001c21012052656d6f766520606f726967696e60206173206120766f7465722e20546869732072656d6f76657320746865206c6f636b20616e642072657475726e732074686520626f6e642e002c2023203c7765696768743e2c2023232323205374617465302052656164733a204f28312934205772697465733a204f283129302023203c2f7765696768743e507265706f72745f646566756e63745f766f74657204187461726765748c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365345d01205265706f727420607461726765746020666f72206265696e6720616e20646566756e637420766f7465722e20496e2063617365206f6620612076616c6964207265706f72742c20746865207265706f727465722069735d012072657761726465642062792074686520626f6e6420616d6f756e74206f662060746172676574602e204f74686572776973652c20746865207265706f7274657220697473656c662069732072656d6f76656420616e645c20746865697220626f6e6420697320736c61736865642e0088204120646566756e637420766f74657220697320646566696e656420746f2062653a4d012020202d206120766f7465722077686f73652063757272656e74207375626d697474656420766f7465732061726520616c6c20696e76616c69642e20692e652e20616c6c206f66207468656d20617265206e6fb420202020206c6f6e67657220612063616e646964617465206e6f7220616e20616374697665206d656d6265722e002c2023203c7765696768743e2c202323232320537461746515012052656164733a204f284e4c6f674d2920676976656e204d2063757272656e742063616e6469646174657320616e64204e20766f74657320666f722060746172676574602e34205772697465733a204f283129302023203c2f7765696768743e407375626d69745f63616e646964616379003478205375626d6974206f6e6573656c6620666f722063616e6469646163792e006420412063616e6469646174652077696c6c206569746865723aec2020202d204c6f73652061742074686520656e64206f6620746865207465726d20616e6420666f7266656974207468656972206465706f7369742e2d012020202d2057696e20616e64206265636f6d652061206d656d6265722e204d656d626572732077696c6c206576656e7475616c6c7920676574207468656972207374617368206261636b2e55012020202d204265636f6d6520612072756e6e65722d75702e2052756e6e6572732d75707320617265207265736572766564206d656d6265727320696e2063617365206f6e65206765747320666f72636566756c6c7934202020202072656d6f7665642e002c2023203c7765696768743e2c20232323232053746174658c2052656164733a204f284c6f674e2920476976656e204e2063616e646964617465732e34205772697465733a204f283129302023203c2f7765696768743e4872656e6f756e63655f63616e646964616379002451012052656e6f756e6365206f6e65277320696e74656e74696f6e20746f20626520612063616e64696461746520666f7220746865206e65787420656c656374696f6e20726f756e642e203320706f74656e7469616c40206f7574636f6d65732065786973743a4101202d20606f726967696e6020697320612063616e64696461746520616e64206e6f7420656c656374656420696e20616e79207365742e20496e207468697320636173652c2074686520626f6e64206973f4202020756e72657365727665642c2072657475726e656420616e64206f726967696e2069732072656d6f76656420617320612063616e6469646174652e5901202d20606f726967696e6020697320612063757272656e742072756e6e65722075702e20496e207468697320636173652c2074686520626f6e6420697320756e72657365727665642c2072657475726e656420616e64842020206f726967696e2069732072656d6f76656420617320612072756e6e65722e4d01202d20606f726967696e6020697320612063757272656e74206d656d6265722e20496e207468697320636173652c2074686520626f6e6420697320756e726573657276656420616e64206f726967696e206973590120202072656d6f7665642061732061206d656d6265722c20636f6e73657175656e746c79206e6f74206265696e6720612063616e64696461746520666f7220746865206e65787420726f756e6420616e796d6f72652e650120202053696d696c617220746f205b6072656d6f76655f766f746572605d2c206966207265706c6163656d656e742072756e6e657273206578697374732c20746865792061726520696d6d6564696174656c7920757365642e3472656d6f76655f6d656d626572040c77686f8c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365345d012052656d6f7665206120706172746963756c6172206d656d6265722066726f6d20746865207365742e20546869732069732065666665637469766520696d6d6564696174656c7920616e642074686520626f6e64206f668020746865206f7574676f696e67206d656d62657220697320736c61736865642e00590120496620612072756e6e65722d757020697320617661696c61626c652c207468656e2074686520626573742072756e6e65722d75702077696c6c2062652072656d6f76656420616e64207265706c6163657320746865f4206f7574676f696e67206d656d6265722e204f74686572776973652c2061206e65772070687261676d656e20726f756e6420697320737461727465642e004501204e6f74652074686174207468697320646f6573206e6f7420616666656374207468652064657369676e6174656420626c6f636b206e756d626572206f6620746865206e65787420656c656374696f6e2e002c2023203c7765696768743e2c2023232323205374617465582052656164733a204f28646f5f70687261676d656e295c205772697465733a204f28646f5f70687261676d656e29302023203c2f7765696768743e01141c4e65775465726d04645665633c284163636f756e7449642c2042616c616e6365293e0855012041206e6577207465726d2077697468206e6577206d656d626572732e205468697320696e64696361746573207468617420656e6f7567682063616e6469646174657320657869737465642c206e6f742074686174450120656e6f756768206861766520686173206265656e20656c65637465642e2054686520696e6e65722076616c7565206d757374206265206578616d696e656420666f72207468697320707572706f73652e24456d7074795465726d0004d8204e6f20286f72206e6f7420656e6f756768292063616e64696461746573206578697374656420666f72207468697320726f756e642e304d656d6265724b69636b656404244163636f756e7449640845012041206d656d62657220686173206265656e2072656d6f7665642e20546869732073686f756c6420616c7761797320626520666f6c6c6f7765642062792065697468657220604e65775465726d60206f74342060456d7074795465726d602e3c4d656d62657252656e6f756e63656404244163636f756e74496404a02041206d656d626572206861732072656e6f756e6365642074686569722063616e6469646163792e34566f7465725265706f727465640c244163636f756e744964244163636f756e74496410626f6f6c086101204120766f7465722028666972737420656c656d656e742920776173207265706f72746564202862797420746865207365636f6e6420656c656d656e742920776974682074686520746865207265706f7274206265696e678c207375636365737366756c206f72206e6f742028746869726420656c656d656e74292e143443616e646964616379426f6e643042616c616e63654f663c543e400000a0dec5adc93536000000000000000028566f74696e67426f6e643042616c616e63654f663c543e400000e8890423c78a00000000000000000038446573697265644d656d626572730c753332100d00000000404465736972656452756e6e65727355700c753332100700000000305465726d4475726174696f6e38543a3a426c6f636b4e756d6265721000270600003830556e61626c65546f566f746504c42043616e6e6f7420766f7465207768656e206e6f2063616e64696461746573206f72206d656d626572732065786973742e1c4e6f566f7465730498204d75737420766f746520666f72206174206c65617374206f6e652063616e6469646174652e30546f6f4d616e79566f74657304882043616e6e6f7420766f7465206d6f7265207468616e2063616e646964617465732e504d6178696d756d566f7465734578636565646564049c2043616e6e6f7420766f7465206d6f7265207468616e206d6178696d756d20616c6c6f7765642e284c6f7742616c616e636504c82043616e6e6f7420766f74652077697468207374616b65206c657373207468616e206d696e696d756d2062616c616e63652e3c556e61626c65546f506179426f6e64047c20566f7465722063616e206e6f742070617920766f74696e6720626f6e642e2c4d7573744265566f7465720444204d757374206265206120766f7465722e285265706f727453656c6604502043616e6e6f74207265706f72742073656c662e4c4475706c69636174656443616e6469646174650484204475706c6963617465642063616e646964617465207375626d697373696f6e2e304d656d6265725375626d6974048c204d656d6265722063616e6e6f742072652d7375626d69742063616e6469646163792e3052756e6e65725375626d6974048c2052756e6e65722063616e6e6f742072652d7375626d69742063616e6469646163792e68496e73756666696369656e7443616e64696461746546756e647304982043616e64696461746520646f6573206e6f74206861766520656e6f7567682066756e64732e34496e76616c69644f726967696e04c8204f726967696e206973206e6f7420612063616e6469646174652c206d656d626572206f7220612072756e6e65722075702e244e6f744d656d6265720438204e6f742061206d656d6265722e3c46696e616c697479547261636b65720001042866696e616c5f68696e74041068696e745c436f6d706163743c543a3a426c6f636b4e756d6265723e08f42048696e7420746861742074686520617574686f72206f66207468697320626c6f636b207468696e6b732074686520626573742066696e616c697a65646c20626c6f636b2069732074686520676976656e206e756d6265722e00082857696e646f7753697a6538543a3a426c6f636b4e756d626572106500000004190120546865206e756d626572206f6620726563656e742073616d706c657320746f206b6565702066726f6d207468697320636861696e2e2044656661756c74206973203130312e345265706f72744c6174656e637938543a3a426c6f636b4e756d62657210e8030000041d01205468652064656c617920616674657220776869636820706f696e74207468696e6773206265636f6d6520737573706963696f75732e2044656661756c7420697320313030302e0838416c72656164795570646174656404c82046696e616c2068696e74206d7573742062652075706461746564206f6e6c79206f6e636520696e2074686520626c6f636b1c42616448696e7404902046696e616c697a6564206865696768742061626f766520626c6f636b206e756d6265721c4772616e647061013c4772616e64706146696e616c6974791c2c417574686f726974696573010034417574686f726974794c6973740400102c20444550524543415445440061012054686973207573656420746f2073746f7265207468652063757272656e7420617574686f72697479207365742c20776869636820686173206265656e206d6967726174656420746f207468652077656c6c2d6b6e6f776e94204752414e4450415f415554484f52495445535f4b455920756e686173686564206b65792e14537461746501006c53746f72656453746174653c543a3a426c6f636b4e756d6265723e04000490205374617465206f66207468652063757272656e7420617574686f72697479207365742e3450656e64696e674368616e676500008c53746f72656450656e64696e674368616e67653c543a3a426c6f636b4e756d6265723e040004c42050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e284e657874466f72636564000038543a3a426c6f636b4e756d626572040004bc206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e1c5374616c6c656400008028543a3a426c6f636b4e756d6265722c20543a3a426c6f636b4e756d626572290400049020607472756560206966207765206172652063757272656e746c79207374616c6c65642e3043757272656e7453657449640100145365744964200000000000000000085d0120546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c697469657329c420696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e30536574496453657373696f6e0001011453657449643053657373696f6e496e64657800040004c1012041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f7220776869636820697473206d656d62657273207765726520726573706f6e7369626c652e0104487265706f72745f6d69736265686176696f72041c5f7265706f72741c5665633c75383e0464205265706f727420736f6d65206d69736265686176696f722e010c384e6577417574686f7269746965730434417574686f726974794c6973740490204e657720617574686f726974792073657420686173206265656e206170706c6965642e1850617573656400049c2043757272656e7420617574686f726974792073657420686173206265656e207061757365642e1c526573756d65640004a02043757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e00102c50617573654661696c656408090120417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665a8202865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e30526573756d654661696c656408150120417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e277420706175736564a42028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e344368616e676550656e64696e6704ec20417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e1c546f6f536f6f6e04c02043616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e20547265617375727901205472656173757279143450726f706f73616c436f756e7401003450726f706f73616c496e646578100000000004a4204e756d626572206f662070726f706f73616c7320746861742068617665206265656e206d6164652e2450726f706f73616c730001013450726f706f73616c496e6465789050726f706f73616c3c543a3a4163636f756e7449642c2042616c616e63654f663c543e3e000400047c2050726f706f73616c7320746861742068617665206265656e206d6164652e24417070726f76616c730100485665633c50726f706f73616c496e6465783e040004f82050726f706f73616c20696e646963657320746861742068617665206265656e20617070726f76656420627574206e6f742079657420617761726465642e10546970730001051c543a3a48617368f04f70656e5469703c543a3a4163636f756e7449642c2042616c616e63654f663c543e2c20543a3a426c6f636b4e756d6265722c20543a3a486173683e0004000c59012054697073207468617420617265206e6f742079657420636f6d706c657465642e204b65796564206279207468652068617368206f66206028726561736f6e2c2077686f29602066726f6d207468652076616c75652e3d012054686973206861732074686520696e73656375726520656e756d657261626c6520686173682066756e6374696f6e2073696e636520746865206b657920697473656c6620697320616c7265616479802067756172616e7465656420746f20626520612073656375726520686173682e1c526561736f6e730001051c543a3a486173681c5665633c75383e0004000849012053696d706c6520707265696d616765206c6f6f6b75702066726f6d2074686520726561736f6e2773206861736820746f20746865206f726967696e616c20646174612e20416761696e2c2068617320616e610120696e73656375726520656e756d657261626c6520686173682073696e636520746865206b65792069732067756172616e7465656420746f2062652074686520726573756c74206f6620612073656375726520686173682e01203470726f706f73655f7370656e64081476616c756554436f6d706163743c42616c616e63654f663c543e3e2c62656e65666963696172798c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365242d012050757420666f727761726420612073756767657374696f6e20666f72207370656e64696e672e2041206465706f7369742070726f706f7274696f6e616c20746f207468652076616c7565350120697320726573657276656420616e6420736c6173686564206966207468652070726f706f73616c2069732072656a65637465642e2049742069732072657475726e6564206f6e636520746865542070726f706f73616c20697320617761726465642e002c2023203c7765696768743e20202d204f2831292e64202d204c696d697465642073746f726167652072656164732e94202d204f6e65204442206368616e67652c206f6e6520657874726120444220656e7472792e302023203c2f7765696768743e3c72656a6563745f70726f706f73616c042c70726f706f73616c5f696458436f6d706163743c50726f706f73616c496e6465783e1cfc2052656a65637420612070726f706f736564207370656e642e20546865206f726967696e616c206465706f7369742077696c6c20626520736c61736865642e002c2023203c7765696768743e20202d204f2831292e64202d204c696d697465642073746f726167652072656164732e40202d204f6e6520444220636c6561722e302023203c2f7765696768743e40617070726f76655f70726f706f73616c042c70726f706f73616c5f696458436f6d706163743c50726f706f73616c496e6465783e205d0120417070726f766520612070726f706f73616c2e2041742061206c617465722074696d652c207468652070726f706f73616c2077696c6c20626520616c6c6f636174656420746f207468652062656e6566696369617279ac20616e6420746865206f726967696e616c206465706f7369742077696c6c2062652072657475726e65642e002c2023203c7765696768743e20202d204f2831292e64202d204c696d697465642073746f726167652072656164732e44202d204f6e65204442206368616e67652e302023203c2f7765696768743e387265706f72745f617765736f6d650818726561736f6e1c5665633c75383e0c77686f30543a3a4163636f756e7449644c5d01205265706f727420736f6d657468696e672060726561736f6e60207468617420646573657276657320612074697020616e6420636c61696d20616e79206576656e7475616c207468652066696e6465722773206665652e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e005501205061796d656e743a20605469705265706f72744465706f73697442617365602077696c6c2062652072657365727665642066726f6d20746865206f726967696e206163636f756e742c2061732077656c6c206173d420605469705265706f72744465706f736974506572427974656020666f722065616368206279746520696e2060726561736f6e602e006101202d2060726561736f6e603a2054686520726561736f6e20666f722c206f7220746865207468696e6720746861742064657365727665732c20746865207469703b2067656e6572616c6c7920746869732077696c6c2062655c20202061205554462d382d656e636f6465642055524c2eec202d206077686f603a20546865206163636f756e742077686963682073686f756c6420626520637265646974656420666f7220746865207469702e007820456d69747320604e657754697060206966207375636365737366756c2e002c2023203c7765696768743e9c202d20604f2852296020776865726520605260206c656e677468206f662060726561736f6e602e64202d204f6e652062616c616e6365206f7065726174696f6e2e9c202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28522960292e34202d204f6e65206576656e742e302023203c2f7765696768743e2c726574726163745f7469700410686173681c543a3a486173684c550120526574726163742061207072696f72207469702d7265706f72742066726f6d20607265706f72745f617765736f6d65602c20616e642063616e63656c207468652070726f63657373206f662074697070696e672e00e0204966207375636365737366756c2c20746865206f726967696e616c206465706f7369742077696c6c20626520756e72657365727665642e00510120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e642074686520746970206964656e746966696564206279206068617368604501206d7573742068617665206265656e207265706f7274656420627920746865207369676e696e67206163636f756e74207468726f75676820607265706f72745f617765736f6d65602028616e64206e6f7450207468726f75676820607469705f6e657760292e006501202d206068617368603a20546865206964656e74697479206f6620746865206f70656e2074697020666f722077686963682061207469702076616c7565206973206465636c617265642e205468697320697320666f726d656461012020206173207468652068617368206f6620746865207475706c65206f6620746865206f726967696e616c207469702060726561736f6e6020616e64207468652062656e6566696369617279206163636f756e742049442e009020456d697473206054697052657472616374656460206966207375636365737366756c2e002c2023203c7765696768743e24202d20604f2854296064202d204f6e652062616c616e6365206f7065726174696f6e2ec4202d2054776f2073746f726167652072656d6f76616c7320286f6e6520726561642c20636f64656320604f28542960292e34202d204f6e65206576656e742e302023203c2f7765696768743e1c7469705f6e65770c18726561736f6e1c5665633c75383e0c77686f30543a3a4163636f756e744964247469705f76616c75653042616c616e63654f663c543e4cf4204769766520612074697020666f7220736f6d657468696e67206e65773b206e6f2066696e6465722773206665652077696c6c2062652074616b656e2e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420746865207369676e696e67206163636f756e74206d757374206265206174206d656d626572206f662074686520605469707065727360207365742e006101202d2060726561736f6e603a2054686520726561736f6e20666f722c206f7220746865207468696e6720746861742064657365727665732c20746865207469703b2067656e6572616c6c7920746869732077696c6c2062655c20202061205554462d382d656e636f6465642055524c2eec202d206077686f603a20546865206163636f756e742077686963682073686f756c6420626520637265646974656420666f7220746865207469702e5101202d20607469705f76616c7565603a2054686520616d6f756e74206f66207469702074686174207468652073656e64657220776f756c64206c696b6520746f20676976652e20546865206d656469616e20746970d820202076616c7565206f662061637469766520746970706572732077696c6c20626520676976656e20746f20746865206077686f602e007820456d69747320604e657754697060206966207375636365737366756c2e002c2023203c7765696768743e4101202d20604f2852202b2054296020776865726520605260206c656e677468206f662060726561736f6e602c2060546020697320746865206e756d626572206f6620746970706572732e2060546020697345012020206e61747572616c6c79206361707065642061732061206d656d62657273686970207365742c20605260206973206c696d69746564207468726f756768207472616e73616374696f6e2d73697a652e0d01202d2054776f2073746f7261676520696e73657274696f6e732028636f6465637320604f285229602c20604f28542960292c206f6e65207265616420604f283129602e34202d204f6e65206576656e742e302023203c2f7765696768743e0c7469700810686173681c543a3a48617368247469705f76616c75653042616c616e63654f663c543e4cb4204465636c6172652061207469702076616c756520666f7220616e20616c72656164792d6f70656e207469702e00550120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420746865207369676e696e67206163636f756e74206d757374206265206174206d656d626572206f662074686520605469707065727360207365742e006501202d206068617368603a20546865206964656e74697479206f6620746865206f70656e2074697020666f722077686963682061207469702076616c7565206973206465636c617265642e205468697320697320666f726d656461012020206173207468652068617368206f6620746865207475706c65206f66207468652068617368206f6620746865206f726967696e616c207469702060726561736f6e6020616e64207468652062656e6566696369617279382020206163636f756e742049442e5101202d20607469705f76616c7565603a2054686520616d6f756e74206f66207469702074686174207468652073656e64657220776f756c64206c696b6520746f20676976652e20546865206d656469616e20746970d820202076616c7565206f662061637469766520746970706572732077696c6c20626520676976656e20746f20746865206077686f602e00650120456d6974732060546970436c6f73696e676020696620746865207468726573686f6c64206f66207469707065727320686173206265656e207265616368656420616e642074686520636f756e74646f776e20706572696f64342068617320737461727465642e002c2023203c7765696768743e24202d20604f285429600101202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28542960292c206f6e652073746f72616765207265616420604f283129602e4c202d20557020746f206f6e65206576656e742e302023203c2f7765696768743e24636c6f73655f7469700410686173681c543a3a48617368386020436c6f736520616e64207061796f75742061207469702e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e0019012054686520746970206964656e74696669656420627920606861736860206d75737420686176652066696e69736865642069747320636f756e74646f776e20706572696f642e006501202d206068617368603a20546865206964656e74697479206f6620746865206f70656e2074697020666f722077686963682061207469702076616c7565206973206465636c617265642e205468697320697320666f726d656461012020206173207468652068617368206f6620746865207475706c65206f6620746865206f726967696e616c207469702060726561736f6e6020616e64207468652062656e6566696369617279206163636f756e742049442e002c2023203c7765696768743e24202d20604f28542960e4202d204f6e652073746f726167652072657472696576616c2028636f64656320604f285429602920616e642074776f2072656d6f76616c732e88202d20557020746f2074687265652062616c616e6365206f7065726174696f6e732e302023203c2f7765696768743e012c2050726f706f736564043450726f706f73616c496e6465780438204e65772070726f706f73616c2e205370656e64696e67041c42616c616e636504e8205765206861766520656e6465642061207370656e6420706572696f6420616e642077696c6c206e6f7720616c6c6f636174652066756e64732e1c417761726465640c3450726f706f73616c496e6465781c42616c616e6365244163636f756e744964048020536f6d652066756e64732068617665206265656e20616c6c6f63617465642e2052656a6563746564083450726f706f73616c496e6465781c42616c616e636504b420412070726f706f73616c207761732072656a65637465643b2066756e6473207765726520736c61736865642e144275726e74041c42616c616e6365048c20536f6d65206f66206f75722066756e64732068617665206265656e206275726e742e20526f6c6c6f766572041c42616c616e6365043101205370656e64696e67206861732066696e69736865643b20746869732069732074686520616d6f756e74207468617420726f6c6c73206f76657220756e74696c206e657874207370656e642e1c4465706f736974041c42616c616e6365048020536f6d652066756e64732068617665206265656e206465706f73697465642e184e657754697004104861736804982041206e6577207469702073756767657374696f6e20686173206265656e206f70656e65642e28546970436c6f73696e6704104861736804dc2041207469702073756767657374696f6e206861732072656163686564207468726573686f6c6420616e6420697320636c6f73696e672e24546970436c6f7365640c1048617368244163636f756e7449641c42616c616e636504882041207469702073756767657374696f6e20686173206265656e20636c6f7365642e3054697052657472616374656404104861736804942041207469702073756767657374696f6e20686173206265656e207265747261637465642e203050726f706f73616c426f6e641c5065726d696c6c1050c30000085501204672616374696f6e206f6620612070726f706f73616c27732076616c756520746861742073686f756c6420626520626f6e64656420696e206f7264657220746f20706c616365207468652070726f706f73616c2e110120416e2061636365707465642070726f706f73616c2067657473207468657365206261636b2e20412072656a65637465642070726f706f73616c20646f6573206e6f742e4c50726f706f73616c426f6e644d696e696d756d3042616c616e63654f663c543e400000a0dec5adc9353600000000000000044901204d696e696d756d20616d6f756e74206f662066756e647320746861742073686f756c6420626520706c6163656420696e2061206465706f73697420666f72206d616b696e6720612070726f706f73616c2e2c5370656e64506572696f6438543a3a426c6f636b4e756d62657210c0890100048820506572696f64206265747765656e2073756363657373697665207370656e64732e104275726e1c5065726d696c6c10000000000411012050657263656e74616765206f662073706172652066756e64732028696620616e7929207468617420617265206275726e7420706572207370656e6420706572696f642e30546970436f756e74646f776e38543a3a426c6f636b4e756d62657210403800000445012054686520706572696f6420666f722077686963682061207469702072656d61696e73206f70656e20616674657220697320686173206163686965766564207468726573686f6c6420746970706572732e3454697046696e646572734665651c50657263656e7404140431012054686520616d6f756e74206f66207468652066696e616c2074697020776869636820676f657320746f20746865206f726967696e616c207265706f72746572206f6620746865207469702e505469705265706f72744465706f736974426173653042616c616e63654f663c543e40000064a7b3b6e00d000000000000000004d42054686520616d6f756e742068656c64206f6e206465706f73697420666f7220706c6163696e67206120746970207265706f72742e5c5469705265706f72744465706f736974506572427974653042616c616e63654f663c543e400000c16ff286230000000000000000000409012054686520616d6f756e742068656c64206f6e206465706f7369742070657220627974652077697468696e2074686520746970207265706f727420726561736f6e2e2070496e73756666696369656e7450726f706f7365727342616c616e6365047c2050726f706f73657227732062616c616e636520697320746f6f206c6f772e50496e76616c696450726f706f73616c496e646578046c204e6f2070726f706f73616c206174207468617420696e6465782e30526561736f6e546f6f42696704882054686520726561736f6e20676976656e206973206a75737420746f6f206269672e30416c72656164794b6e6f776e048c20546865207469702077617320616c726561647920666f756e642f737461727465642e28556e6b6e6f776e54697004642054686520746970206861736820697320756e6b6e6f776e2e244e6f7446696e64657204210120546865206163636f756e7420617474656d7074696e6720746f20726574726163742074686520746970206973206e6f74207468652066696e646572206f6620746865207469702e245374696c6c4f70656e042d0120546865207469702063616e6e6f7420626520636c61696d65642f636c6f736564206265636175736520746865726520617265206e6f7420656e6f7567682074697070657273207965742e245072656d617475726504350120546865207469702063616e6e6f7420626520636c61696d65642f636c6f73656420626563617573652069742773207374696c6c20696e2074686520636f756e74646f776e20706572696f642e24436f6e7472616374730120436f6e74726163741c204761735370656e7401000c476173200000000000000000048020476173207370656e7420736f2066617220696e207468697320626c6f636b2e3c43757272656e745363686564756c650100205363686564756c65c5010000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000008700000000000000af000000000000000100000000000000010000000000000004000000000001001000000000400000002000000004942043757272656e7420636f7374207363686564756c6520666f7220636f6e7472616374732e305072697374696e65436f64650001012c436f6465486173683c543e1c5665633c75383e0004000465012041206d617070696e672066726f6d20616e206f726967696e616c20636f6465206861736820746f20746865206f726967696e616c20636f64652c20756e746f756368656420627920696e737472756d656e746174696f6e2e2c436f646553746f726167650001012c436f6465486173683c543e587761736d3a3a5072656661625761736d4d6f64756c650004000465012041206d617070696e67206265747765656e20616e206f726967696e616c20636f6465206861736820616e6420696e737472756d656e746564207761736d20636f64652c20726561647920666f7220657865637574696f6e2e384163636f756e74436f756e74657201000c753634200000000000000000045420546865207375627472696520636f756e7465722e38436f6e7472616374496e666f4f6600010130543a3a4163636f756e7449643c436f6e7472616374496e666f3c543e00040004a82054686520636f6465206173736f6369617465642077697468206120676976656e206163636f756e742e20476173507269636501003042616c616e63654f663c543e4001000000000000000000000000000000047820546865207072696365206f66206f6e6520756e6974206f66206761732e01143c7570646174655f7363686564756c6504207363686564756c65205363686564756c650cb4205570646174657320746865207363686564756c6520666f72206d65746572696e6720636f6e7472616374732e000d0120546865207363686564756c65206d7573742068617665206120677265617465722076657273696f6e207468616e207468652073746f726564207363686564756c652e207075745f636f646508246761735f6c696d697430436f6d706163743c4761733e10636f64651c5665633c75383e085d012053746f7265732074686520676976656e2062696e617279205761736d20636f646520696e746f2074686520636861696e27732073746f7261676520616e642072657475726e73206974732060636f646568617368602ed420596f752063616e20696e7374616e746961746520636f6e747261637473206f6e6c7920776974682073746f72656420636f64652e1063616c6c1010646573748c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263651476616c756554436f6d706163743c42616c616e63654f663c543e3e246761735f6c696d697430436f6d706163743c4761733e10646174611c5665633c75383e1c0901204d616b657320612063616c6c20746f20616e206163636f756e742c206f7074696f6e616c6c79207472616e7366657272696e6720736f6d652062616c616e63652e002901202a20496620746865206163636f756e74206973206120736d6172742d636f6e7472616374206163636f756e742c20746865206173736f63696174656420636f64652077696c6c206265b020657865637574656420616e6420616e792076616c75652077696c6c206265207472616e736665727265642e1901202a20496620746865206163636f756e74206973206120726567756c6172206163636f756e742c20616e792076616c75652077696c6c206265207472616e736665727265642e4901202a204966206e6f206163636f756e742065786973747320616e64207468652063616c6c2076616c7565206973206e6f74206c657373207468616e20606578697374656e7469616c5f6465706f736974602c1501206120726567756c6172206163636f756e742077696c6c206265206372656174656420616e6420616e792076616c75652077696c6c206265207472616e736665727265642e2c696e7374616e74696174651024656e646f776d656e7454436f6d706163743c42616c616e63654f663c543e3e246761735f6c696d697430436f6d706163743c4761733e24636f64655f686173682c436f6465486173683c543e10646174611c5665633c75383e28bd0120496e7374616e7469617465732061206e657720636f6e74726163742066726f6d207468652060636f646568617368602067656e65726174656420627920607075745f636f6465602c206f7074696f6e616c6c79207472616e7366657272696e6720736f6d652062616c616e63652e009820496e7374616e74696174696f6e20697320657865637574656420617320666f6c6c6f77733a004101202d205468652064657374696e6174696f6e206164647265737320697320636f6d7075746564206261736564206f6e207468652073656e64657220616e642068617368206f662074686520636f64652e0501202d2054686520736d6172742d636f6e7472616374206163636f756e7420697320637265617465642061742074686520636f6d707574656420616464726573732e6d01202d20546865206063746f725f636f64656020697320657865637574656420696e2074686520636f6e74657874206f6620746865206e65776c792d63726561746564206163636f756e742e204275666665722072657475726e65645d0120202061667465722074686520657865637574696f6e206973207361766564206173207468652060636f646560206f6620746865206163636f756e742e205468617420636f64652077696c6c20626520696e766f6b6564a820202075706f6e20616e792063616c6c2072656365697665642062792074686973206163636f756e742e7c202d2054686520636f6e747261637420697320696e697469616c697a65642e3c636c61696d5f73757263686172676508106465737430543a3a4163636f756e744964286175785f73656e646572504f7074696f6e3c543a3a4163636f756e7449643e14710120416c6c6f777320626c6f636b2070726f64756365727320746f20636c61696d206120736d616c6c2072657761726420666f72206576696374696e67206120636f6e74726163742e204966206120626c6f636b2070726f64756365721501206661696c7320746f20646f20736f2c206120726567756c61722075736572732077696c6c20626520616c6c6f77656420746f20636c61696d20746865207265776172642e00390120496620636f6e7472616374206973206e6f742065766963746564206173206120726573756c74206f6620746869732063616c6c2c206e6f20616374696f6e73206172652074616b656e20616e64ac207468652073656e646572206973206e6f7420656c696769626c6520666f7220746865207265776172642e0120205472616e736665720c244163636f756e744964244163636f756e7449641c42616c616e6365046901205472616e736665722068617070656e6564206066726f6d6020746f2060746f60207769746820676976656e206076616c7565602061732070617274206f662061206063616c6c60206f722060696e7374616e7469617465602e30496e7374616e74696174656408244163636f756e744964244163636f756e74496404dc20436f6e7472616374206465706c6f7965642062792061646472657373206174207468652073706563696669656420616464726573732e1c4576696374656408244163636f756e74496410626f6f6c18e420436f6e747261637420686173206265656e206576696374656420616e64206973206e6f7720696e20746f6d6273746f6e652073746174652e0024202320506172616d73000d01202d2060636f6e7472616374603a20604163636f756e744964603a20546865206163636f756e74204944206f6620746865206576696374656420636f6e74726163742e3501202d2060746f6d6273746f6e65603a2060626f6f6c603a205472756520696620746865206576696374656420636f6e7472616374206c65667420626568696e64206120746f6d6273746f6e652e20526573746f72656414244163636f756e744964244163636f756e74496410486173681c42616c616e636510626f6f6c24bc20526573746f726174696f6e20666f72206120636f6e747261637420686173206265656e20696e697469617465642e0024202320506172616d7300f4202d2060646f6e6f72603a20604163636f756e744964603a204163636f756e74204944206f662074686520726573746f72696e6720636f6e7472616374ec202d206064657374603a20604163636f756e744964603a204163636f756e74204944206f662074686520726573746f72656420636f6e7472616374e8202d2060636f64655f68617368603a206048617368603a20436f64652068617368206f662074686520726573746f72656420636f6e74726163741901202d206072656e745f616c6c6f77616e63653a206042616c616e6365603a2052656e7420616c6c6f77616e6365206f662074686520726573746f72656420636f6e7472616374f0202d206073756363657373603a2060626f6f6c603a20547275652069662074686520726573746f726174696f6e20776173207375636365737366756c28436f646553746f72656404104861736804b820436f646520776974682074686520737065636966696564206861736820686173206265656e2073746f7265642e3c5363686564756c6555706461746564040c75333204c020547269676765726564207768656e207468652063757272656e74207363686564756c6520697320757064617465642e284469737061746368656408244163636f756e74496410626f6f6c08390120412063616c6c2077617320646973706174636865642066726f6d2074686520676976656e206163636f756e742e2054686520626f6f6c207369676e616c7320776865746865722069742077617374207375636365737366756c20657865637574696f6e206f72206e6f742e44436f6e7472616374457865637574696f6e08244163636f756e7449641c5665633c75383e04090120416e206576656e74206465706f73697465642075706f6e20657865637574696f6e206f66206120636f6e74726163742066726f6d20746865206163636f756e742e404c5369676e6564436c61696d48616e646963617038543a3a426c6f636b4e756d626572100200000010e0204e756d626572206f6620626c6f636b2064656c617920616e2065787472696e73696320636c61696d20737572636861726765206861732e000d01205768656e20636c61696d207375726368617267652069732063616c6c656420627920616e2065787472696e736963207468652072656e7420697320636865636b65646820666f722063757272656e745f626c6f636b202d2064656c617940546f6d6273746f6e654465706f7369743042616c616e63654f663c543e40000064a7b3b6e00d000000000000000004d420546865206d696e696d756d20616d6f756e7420726571756972656420746f2067656e6572617465206120746f6d6273746f6e652e4453746f7261676553697a654f66667365740c75333210080000000851012053697a65206f66206120636f6e7472616374206174207468652074696d65206f6620696e7374616e746961696f6e2e205468697320697320612073696d706c652077617920746f20656e737572652074686174a420656d70747920636f6e747261637473206576656e7475616c6c7920676574732064656c657465642e2c52656e74427974654665653042616c616e63654f663c543e40000064a7b3b6e00d0000000000000000043501205072696365206f6620612062797465206f662073746f7261676520706572206f6e6520626c6f636b20696e74657276616c2e2053686f756c642062652067726561746572207468616e20302e4452656e744465706f7369744f66667365743042616c616e63654f663c543e400000a0dec5adc93536000000000000001c05012054686520616d6f756e74206f662066756e6473206120636f6e74726163742073686f756c64206465706f73697420696e206f7264657220746f206f6666736574582074686520636f7374206f66206f6e6520627974652e006901204c6574277320737570706f736520746865206465706f73697420697320312c303030204255202862616c616e636520756e697473292f6279746520616e64207468652072656e7420697320312042552f627974652f6461792c5901207468656e206120636f6e7472616374207769746820312c3030302c3030302042552074686174207573657320312c303030206279746573206f662073746f7261676520776f756c6420706179206e6f2072656e742e4d0120427574206966207468652062616c616e6365207265647563656420746f203530302c30303020425520616e64207468652073746f7261676520737461796564207468652073616d6520617420312c3030302c78207468656e20697420776f756c6420706179203530302042552f6461792e3c5375726368617267655265776172643042616c616e63654f663c543e4000009814440dab21080000000000000008e4205265776172642074686174206973207265636569766564206279207468652070617274792077686f736520746f75636820686173206c65646820746f2072656d6f76616c206f66206120636f6e74726163742e2c5472616e736665724665653042616c616e63654f663c543e4000008a5d7845630100000000000000000494205468652066656520726571756972656420746f206d616b652061207472616e736665722e2c4372656174696f6e4665653042616c616e63654f663c543e4000008a5d784563010000000000000000049c205468652066656520726571756972656420746f2063726561746520616e206163636f756e742e485472616e73616374696f6e426173654665653042616c616e63654f663c543e4000008a5d78456301000000000000000004dc205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b2074686520626173652e485472616e73616374696f6e427974654665653042616c616e63654f663c543e400080c6a47e8d03000000000000000000040d01205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e2c436f6e74726163744665653042616c616e63654f663c543e4000008a5d784563010000000000000000084101205468652066656520726571756972656420746f20696e7374616e7469617465206120636f6e747261637420696e7374616e63652e204120726561736f6e61626c652064656661756c742076616c75651c2069732032312e2c43616c6c426173654665650c47617320e803000000000000081d0120546865206261736520666565206368617267656420666f722063616c6c696e6720696e746f206120636f6e74726163742e204120726561736f6e61626c652064656661756c74382076616c7565206973203133352e48496e7374616e7469617465426173654665650c47617320e80300000000000008390120546865206261736520666565206368617267656420666f7220696e7374616e74696174696e67206120636f6e74726163742e204120726561736f6e61626c652064656661756c742076616c756520206973203137352e204d617844657074680c753332102000000008310120546865206d6178696d756d206e657374696e67206c6576656c206f6620612063616c6c2f696e7374616e746961746520737461636b2e204120726561736f6e61626c652064656661756c74382076616c7565206973203130302e304d617856616c756553697a650c753332100040000004390120546865206d6178696d756d2073697a65206f6620612073746f726167652076616c756520696e2062797465732e204120726561736f6e61626c652064656661756c74206973203136204b69422e34426c6f636b4761734c696d69740c47617320809698000000000008250120546865206d6178696d756d20616d6f756e74206f6620676173207468617420636f756c6420626520657870656e6465642070657220626c6f636b2e204120726561736f6e61626c65742064656661756c742076616c75652069732031305f3030305f3030302e1858496e76616c69645363686564756c6556657273696f6e0405012041206e6577207363686564756c65206d7573742068617665206120677265617465722076657273696f6e207468616e207468652063757272656e74206f6e652e54496e76616c6964537572636861726765436c61696d04550120416e206f726967696e206d757374206265207369676e6564206f7220696e686572656e7420616e6420617578696c696172792073656e646572206f6e6c792070726f7669646564206f6e20696e686572656e742e54496e76616c6964536f75726365436f6e747261637404dc2043616e6e6f7420726573746f72652066726f6d206e6f6e6578697374696e67206f7220746f6d6273746f6e6520636f6e74726163742e68496e76616c696444657374696e6174696f6e436f6e747261637404c42043616e6e6f7420726573746f726520746f206e6f6e6578697374696e67206f7220616c69766520636f6e74726163742e40496e76616c6964546f6d6273746f6e65046020546f6d6273746f6e657320646f6e2774206d617463682e54496e76616c6964436f6e74726163744f726967696e04bc20416e206f726967696e20547269654964207772697474656e20696e207468652063757272656e7420626c6f636b2e204964656e7469747901105375646f10284964656e746974794f6600010130543a3a4163636f756e74496468526567697374726174696f6e3c42616c616e63654f663c543e3e00040004210120496e666f726d6174696f6e20746861742069732070657274696e656e7420746f206964656e746966792074686520656e7469747920626568696e6420616e206163636f756e742e1c53757065724f6600010130543a3a4163636f756e7449645028543a3a4163636f756e7449642c204461746129000400086101205468652073757065722d6964656e74697479206f6620616e20616c7465726e6174697665202273756222206964656e7469747920746f676574686572207769746820697473206e616d652c2077697468696e2074686174510120636f6e746578742e20496620746865206163636f756e74206973206e6f7420736f6d65206f74686572206163636f756e742773207375622d6964656e746974792c207468656e206a75737420604e6f6e65602e18537562734f6601010130543a3a4163636f756e744964842842616c616e63654f663c543e2c205665633c543a3a4163636f756e7449643e29004400000000000000000000000000000000000cb820416c7465726e6174697665202273756222206964656e746974696573206f662074686973206163636f756e742e001d0120546865206669727374206974656d20697320746865206465706f7369742c20746865207365636f6e64206973206120766563746f72206f6620746865206163636f756e74732e28526567697374726172730100d85665633c4f7074696f6e3c526567697374726172496e666f3c42616c616e63654f663c543e2c20543a3a4163636f756e7449643e3e3e0400104d012054686520736574206f6620726567697374726172732e204e6f7420657870656374656420746f206765742076657279206269672061732063616e206f6e6c79206265206164646564207468726f7567682061a8207370656369616c206f726967696e20286c696b656c79206120636f756e63696c206d6f74696f6e292e0029012054686520696e64657820696e746f20746869732063616e206265206361737420746f2060526567697374726172496e6465786020746f2067657420612076616c69642076616c75652e012c346164645f726567697374726172041c6163636f756e7430543a3a4163636f756e744964347c2041646420612072656769737472617220746f207468652073797374656d2e001d0120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605265676973747261724f726967696e60206f722060526f6f74602e00ac202d20606163636f756e74603a20746865206163636f756e74206f6620746865207265676973747261722e009820456d6974732060526567697374726172416464656460206966207375636365737366756c2e002c2023203c7765696768743ee4202d20604f2852296020776865726520605260207265676973747261722d636f756e742028676f7665726e616e63652d626f756e646564292e9c202d204f6e652073746f72616765206d75746174696f6e2028636f64656320604f28522960292e34202d204f6e65206576656e742e302023203c2f7765696768743e307365745f6964656e746974790410696e666f304964656e74697479496e666f482d012053657420616e206163636f756e742773206964656e7469747920696e666f726d6174696f6e20616e6420726573657276652074686520617070726f707269617465206465706f7369742e00590120496620746865206163636f756e7420616c726561647920686173206964656e7469747920696e666f726d6174696f6e2c20746865206465706f7369742069732074616b656e2061732070617274207061796d656e745420666f7220746865206e6577206465706f7369742e00650120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d75737420686176652061207265676973746572656428206964656e746974792e0090202d2060696e666f603a20546865206964656e7469747920696e666f726d6174696f6e2e008c20456d69747320604964656e7469747953657460206966207375636365737366756c2e002c2023203c7765696768743e5d01202d20604f2858202b205827202b2052296020776865726520605860206164646974696f6e616c2d6669656c642d636f756e7420286465706f7369742d626f756e64656420616e6420636f64652d626f756e646564292e88202d204174206d6f73742074776f2062616c616e6365206f7065726174696f6e732e2501202d204f6e652073746f72616765206d75746174696f6e2028636f6465632d7265616420604f285827202b205229602c20636f6465632d777269746520604f2858202b20522960292e34202d204f6e65206576656e742e302023203c2f7765696768743e207365745f73756273041073756273645665633c28543a3a4163636f756e7449642c2044617461293e40902053657420746865207375622d6163636f756e7473206f66207468652073656e6465722e005901205061796d656e743a20416e79206167677265676174652062616c616e63652072657365727665642062792070726576696f757320607365745f73756273602063616c6c732077696c6c2062652072657475726e6564310120616e6420616e20616d6f756e7420605375624163636f756e744465706f736974602077696c6c20626520726573657276656420666f722065616368206974656d20696e206073756273602e00650120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d75737420686176652061207265676973746572656428206964656e746974792e009c202d206073756273603a20546865206964656e746974792773207375622d6163636f756e74732e002c2023203c7765696768743eec202d20604f285329602077686572652060536020737562732d636f756e742028686172642d20616e64206465706f7369742d626f756e646564292e88202d204174206d6f73742074776f2062616c616e6365206f7065726174696f6e732e4101202d204174206d6f7374204f2832202a2053202b2031292073746f72616765206d75746174696f6e733b20636f64656320636f6d706c657869747920604f2831202a2053202b2053202a20312960293b582020206f6e652073746f726167652d6578697374732e302023203c2f7765696768743e38636c6561725f6964656e74697479003c390120436c65617220616e206163636f756e742773206964656e7469747920696e666f20616e6420616c6c207375622d6163636f756e7420616e642072657475726e20616c6c206465706f736974732e00f0205061796d656e743a20416c6c2072657365727665642062616c616e636573206f6e20746865206163636f756e74206172652072657475726e65642e00650120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d75737420686176652061207265676973746572656428206964656e746974792e009c20456d69747320604964656e74697479436c656172656460206966207375636365737366756c2e002c2023203c7765696768743e48202d20604f2852202b2053202b205829602e84202d204f6e652062616c616e63652d72657365727665206f7065726174696f6e2e74202d206053202b2032602073746f726167652064656c6574696f6e732e34202d204f6e65206576656e742e302023203c2f7765696768743e44726571756573745f6a756467656d656e7408247265675f696e6465785c436f6d706163743c526567697374726172496e6465783e1c6d61785f66656554436f6d706163743c42616c616e63654f663c543e3e5c9820526571756573742061206a756467656d656e742066726f6d2061207265676973747261722e005901205061796d656e743a204174206d6f737420606d61785f666565602077696c6c20626520726573657276656420666f72207061796d656e7420746f2074686520726567697374726172206966206a756467656d656e741c20676976656e2e00390120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d75737420686176652061542072656769737465726564206964656e746974792e002101202d20607265675f696e646578603a2054686520696e646578206f6620746865207265676973747261722077686f7365206a756467656d656e74206973207265717565737465642e5901202d20606d61785f666565603a20546865206d6178696d756d206665652074686174206d617920626520706169642e20546869732073686f756c64206a757374206265206175746f2d706f70756c617465642061733a0034206060606e6f636f6d70696c65a42053656c663a3a72656769737472617273287265675f696e646578292e75776e72617028292e666565102060606000a820456d69747320604a756467656d656e7452657175657374656460206966207375636365737366756c2e002c2023203c7765696768743e38202d20604f2852202b205829602e84202d204f6e652062616c616e63652d72657365727665206f7065726174696f6e2ebc202d2053746f726167653a2031207265616420604f285229602c2031206d757461746520604f2858202b205229602e34202d204f6e65206576656e742e302023203c2f7765696768743e3863616e63656c5f7265717565737404247265675f696e64657838526567697374726172496e646578446c2043616e63656c20612070726576696f757320726571756573742e00fc205061796d656e743a20412070726576696f75736c79207265736572766564206465706f7369742069732072657475726e6564206f6e20737563636573732e00390120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d75737420686176652061542072656769737465726564206964656e746974792e004901202d20607265675f696e646578603a2054686520696e646578206f6620746865207265676973747261722077686f7365206a756467656d656e74206973206e6f206c6f6e676572207265717565737465642e00b020456d69747320604a756467656d656e74556e72657175657374656460206966207375636365737366756c2e002c2023203c7765696768743e38202d20604f2852202b205829602e84202d204f6e652062616c616e63652d72657365727665206f7065726174696f6e2e8c202d204f6e652073746f72616765206d75746174696f6e20604f2852202b205829602e34202d204f6e65206576656e742e302023203c2f7765696768743e1c7365745f6665650814696e6465785c436f6d706163743c526567697374726172496e6465783e0c66656554436f6d706163743c42616c616e63654f663c543e3e301d0120536574207468652066656520726571756972656420666f722061206a756467656d656e7420746f206265207265717565737465642066726f6d2061207265676973747261722e00590120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d75737420626520746865206163636f756e74a4206f6620746865207265676973747261722077686f736520696e6465782069732060696e646578602e00f8202d2060696e646578603a2074686520696e646578206f6620746865207265676973747261722077686f73652066656520697320746f206265207365742e58202d2060666565603a20746865206e6577206665652e002c2023203c7765696768743e28202d20604f285229602e7c202d204f6e652073746f72616765206d75746174696f6e20604f285229602e302023203c2f7765696768743e387365745f6163636f756e745f69640814696e6465785c436f6d706163743c526567697374726172496e6465783e0c6e657730543a3a4163636f756e74496430c0204368616e676520746865206163636f756e74206173736f63696174656420776974682061207265676973747261722e00590120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d75737420626520746865206163636f756e74a4206f6620746865207265676973747261722077686f736520696e6465782069732060696e646578602e00f8202d2060696e646578603a2074686520696e646578206f6620746865207265676973747261722077686f73652066656520697320746f206265207365742e74202d20606e6577603a20746865206e6577206163636f756e742049442e002c2023203c7765696768743e28202d20604f285229602e7c202d204f6e652073746f72616765206d75746174696f6e20604f285229602e302023203c2f7765696768743e287365745f6669656c64730814696e6465785c436f6d706163743c526567697374726172496e6465783e186669656c6473384964656e746974794669656c647330ac2053657420746865206669656c6420696e666f726d6174696f6e20666f722061207265676973747261722e00590120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d75737420626520746865206163636f756e74a4206f6620746865207265676973747261722077686f736520696e6465782069732060696e646578602e00f8202d2060696e646578603a2074686520696e646578206f6620746865207265676973747261722077686f73652066656520697320746f206265207365742e1101202d20606669656c6473603a20746865206669656c64732074686174207468652072656769737472617220636f6e6365726e73207468656d73656c76657320776974682e002c2023203c7765696768743e28202d20604f285229602e7c202d204f6e652073746f72616765206d75746174696f6e20604f285229602e302023203c2f7765696768743e4470726f766964655f6a756467656d656e740c247265675f696e6465785c436f6d706163743c526567697374726172496e6465783e187461726765748c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365246a756467656d656e745c4a756467656d656e743c42616c616e63654f663c543e3e4cbc2050726f766964652061206a756467656d656e7420666f7220616e206163636f756e742773206964656e746974792e00590120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d75737420626520746865206163636f756e74b4206f6620746865207265676973747261722077686f736520696e64657820697320607265675f696e646578602e002501202d20607265675f696e646578603a2074686520696e646578206f6620746865207265676973747261722077686f7365206a756467656d656e74206973206265696e67206d6164652e5901202d2060746172676574603a20746865206163636f756e742077686f7365206964656e7469747920746865206a756467656d656e742069732075706f6e2e2054686973206d75737420626520616e206163636f756e74782020207769746820612072656769737465726564206964656e746974792e4d01202d20606a756467656d656e74603a20746865206a756467656d656e74206f662074686520726567697374726172206f6620696e64657820607265675f696e646578602061626f75742060746172676574602e009820456d69747320604a756467656d656e74476976656e60206966207375636365737366756c2e002c2023203c7765696768743e38202d20604f2852202b205829602e88202d204f6e652062616c616e63652d7472616e73666572206f7065726174696f6e2e98202d20557020746f206f6e65206163636f756e742d6c6f6f6b7570206f7065726174696f6e2ebc202d2053746f726167653a2031207265616420604f285229602c2031206d757461746520604f2852202b205829602e34202d204f6e65206576656e742e302023203c2f7765696768743e346b696c6c5f6964656e7469747904187461726765748c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263654c45012052656d6f766520616e206163636f756e742773206964656e7469747920616e64207375622d6163636f756e7420696e666f726d6174696f6e20616e6420736c61736820746865206465706f736974732e006501205061796d656e743a2052657365727665642062616c616e6365732066726f6d20607365745f737562736020616e6420607365745f6964656e74697479602061726520736c617368656420616e642068616e646c656420627949012060536c617368602e20566572696669636174696f6e2072657175657374206465706f7369747320617265206e6f742072657475726e65643b20746865792073686f756c642062652063616e63656c6c656484206d616e75616c6c79207573696e67206063616e63656c5f72657175657374602e00310120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f206f72206d617463682060543a3a466f7263654f726967696e602e005901202d2060746172676574603a20746865206163636f756e742077686f7365206964656e7469747920746865206a756467656d656e742069732075706f6e2e2054686973206d75737420626520616e206163636f756e74782020207769746820612072656769737465726564206964656e746974792e009820456d69747320604964656e746974794b696c6c656460206966207375636365737366756c2e002c2023203c7765696768743e48202d20604f2852202b2053202b205829602e84202d204f6e652062616c616e63652d72657365727665206f7065726174696f6e2e74202d206053202b2032602073746f72616765206d75746174696f6e732e34202d204f6e65206576656e742e302023203c2f7765696768743e011c2c4964656e7469747953657404244163636f756e74496404f02041206e616d652077617320736574206f72207265736574202877686963682077696c6c2072656d6f766520616c6c206a756467656d656e7473292e3c4964656e74697479436c656172656408244163636f756e7449641c42616c616e636504d02041206e616d652077617320636c65617265642c20616e642074686520676976656e2062616c616e63652072657475726e65642e384964656e746974794b696c6c656408244163636f756e7449641c42616c616e636504c82041206e616d65207761732072656d6f76656420616e642074686520676976656e2062616c616e636520736c61736865642e484a756467656d656e7452657175657374656408244163636f756e74496438526567697374726172496e64657804a02041206a756467656d656e74207761732061736b65642066726f6d2061207265676973747261722e504a756467656d656e74556e72657175657374656408244163636f756e74496438526567697374726172496e646578048c2041206a756467656d656e74207265717565737420776173207265747261637465642e384a756467656d656e74476976656e08244163636f756e74496438526567697374726172496e64657804982041206a756467656d656e742077617320676976656e2062792061207265676973747261722e3852656769737472617241646465640438526567697374726172496e646578045c204120726567697374726172207761732061646465642e003048546f6f4d616e795375624163636f756e7473046020546f6f206d616e7920737562732d6163636f756e74732e204e6f74466f756e640454204163636f756e742069736e277420666f756e642e204e6f744e616d65640454204163636f756e742069736e2774206e616d65642e28456d707479496e646578043420456d70747920696e6465782e284665654368616e676564044020466565206973206368616e6765642e284e6f4964656e74697479044c204e6f206964656e7469747920666f756e642e3c537469636b794a756467656d656e74044820537469636b79206a756467656d656e742e384a756467656d656e74476976656e0444204a756467656d656e7420676976656e2e40496e76616c69644a756467656d656e74044c20496e76616c6964206a756467656d656e742e30496e76616c6964496e64657804582054686520696e64657820697320696e76616c69642e34496e76616c6964546172676574045c205468652074617267657420697320696e76616c69642e34546f6f4d616e794669656c6473047020546f6f206d616e79206164646974696f6e616c206669656c64732e20496d4f6e6c696e650120496d4f6e6c696e6510384865617274626561744166746572010038543a3a426c6f636b4e756d62657210000000001831012054686520626c6f636b206e756d6265722061667465722077686963682069742773206f6b20746f2073656e64206865617274626561747320696e2063757272656e742073657373696f6e2e0011012041742074686520626567696e6e696e67206f6620656163682073657373696f6e20776520736574207468697320746f20612076616c756520746861742073686f756c64d02066616c6c20726f7567686c7920696e20746865206d6964646c65206f66207468652073657373696f6e206475726174696f6e2e010120546865206964656120697320746f206669727374207761697420666f72207468652076616c696461746f727320746f2070726f64756365206120626c6f636b390120696e207468652063757272656e742073657373696f6e2c20736f20746861742074686520686561727462656174206c61746572206f6e2077696c6c206e6f74206265206e65636573736172792e104b65797301004c5665633c543a3a417574686f7269747949643e040004d0205468652063757272656e7420736574206f66206b6579732074686174206d61792069737375652061206865617274626561742e485265636569766564486561727462656174730002013053657373696f6e496e6465782441757468496e6465781c5665633c75383e01040008e420466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206041757468496e646578608c20746f20606f6666636861696e3a3a4f70617175654e6574776f726b5374617465602e38417574686f726564426c6f636b730102013053657373696f6e496e64657838543a3a56616c696461746f7249640c75333201100000000008150120466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f662060543a3a56616c696461746f7249646020746f20746865c8206e756d626572206f6620626c6f636b7320617574686f7265642062792074686520676976656e20617574686f726974792e0104246865617274626561740824686561727462656174644865617274626561743c543a3a426c6f636b4e756d6265723e285f7369676e6174757265bc3c543a3a417574686f7269747949642061732052756e74696d654170705075626c69633e3a3a5369676e617475726500010c444865617274626561745265636569766564042c417574686f72697479496404c02041206e657720686561727462656174207761732072656365697665642066726f6d2060417574686f726974794964601c416c6c476f6f640004d42041742074686520656e64206f66207468652073657373696f6e2c206e6f206f6666656e63652077617320636f6d6d69747465642e2c536f6d654f66666c696e6504605665633c4964656e74696669636174696f6e5475706c653e0431012041742074686520656e64206f66207468652073657373696f6e2c206174206c65617374206f6e63652076616c696461746f722077617320666f756e6420746f206265206f66666c696e652e000828496e76616c69644b65790464204e6f6e206578697374656e74207075626c6963206b65792e4c4475706c6963617465644865617274626561740458204475706c696361746564206865617274626561742e48417574686f72697479446973636f76657279000100000000204f6666656e63657301204f6666656e6365730c1c5265706f727473000101345265706f727449644f663c543ed04f6666656e636544657461696c733c543a3a4163636f756e7449642c20543a3a4964656e74696669636174696f6e5475706c653e00040004490120546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e58436f6e63757272656e745265706f727473496e646578010201104b696e64384f706171756554696d65536c6f74485665633c5265706f727449644f663c543e3e010400042901204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e485265706f72747342794b696e64496e646578010101104b696e641c5665633c75383e00040018110120456e756d65726174657320616c6c207265706f727473206f662061206b696e6420616c6f6e672077697468207468652074696d6520746865792068617070656e65642e00bc20416c6c207265706f7274732061726520736f72746564206279207468652074696d65206f66206f6666656e63652e004901204e6f74652074686174207468652061637475616c2074797065206f662074686973206d617070696e6720697320605665633c75383e602c207468697320697320626563617573652076616c756573206f66690120646966666572656e7420747970657320617265206e6f7420737570706f7274656420617420746865206d6f6d656e7420736f2077652061726520646f696e6720746865206d616e75616c2073657269616c697a6174696f6e2e010001041c4f6666656e636508104b696e64384f706171756554696d65536c6f7408550120546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e64390120286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e00006052616e646f6d6e657373436f6c6c656374697665466c6970016052616e646f6d6e657373436f6c6c656374697665466c6970043852616e646f6d4d6174657269616c0100305665633c543a3a486173683e04000c610120536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e2054686973610120697320617272616e67656420617320612072696e672062756666657220776974682060626c6f636b5f6e756d626572202520383160206265696e672074686520696e64657820696e746f20746865206056656360206f664420746865206f6c6465737420686173682e0100000000144e69636b7301105375646f04184e616d654f6600010130543a3a4163636f756e7449645c285665633c75383e2c2042616c616e63654f663c543e29000400047020546865206c6f6f6b7570207461626c6520666f72206e616d65732e0110207365745f6e616d6504106e616d651c5665633c75383e405d012053657420616e206163636f756e742773206e616d652e20546865206e616d652073686f756c642062652061205554462d382d656e636f64656420737472696e6720627920636f6e76656e74696f6e2c2074686f7567684c20776520646f6e277420636865636b2069742e00610120546865206e616d65206d6179206e6f74206265206d6f7265207468616e2060543a3a4d61784c656e677468602062797465732c206e6f72206c657373207468616e2060543a3a4d696e4c656e677468602062797465732e005d0120496620746865206163636f756e7420646f65736e277420616c726561647920686176652061206e616d652c207468656e206120666565206f6620605265736572766174696f6e466565602069732072657365727665644020696e20746865206163636f756e742e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c2023203c7765696768743e20202d204f2831292e84202d204174206d6f7374206f6e652062616c616e6365206f7065726174696f6e2e68202d204f6e652073746f7261676520726561642f77726974652e34202d204f6e65206576656e742e302023203c2f7765696768743e28636c6561725f6e616d650028510120436c65617220616e206163636f756e742773206e616d6520616e642072657475726e20746865206465706f7369742e204661696c7320696620746865206163636f756e7420776173206e6f74206e616d65642e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c2023203c7765696768743e20202d204f2831292e64202d204f6e652062616c616e6365206f7065726174696f6e2e68202d204f6e652073746f7261676520726561642f77726974652e34202d204f6e65206576656e742e302023203c2f7765696768743e246b696c6c5f6e616d6504187461726765748c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636534e42052656d6f766520616e206163636f756e742773206e616d6520616e642074616b6520636861726765206f6620746865206465706f7369742e004901204661696c73206966206077686f6020686173206e6f74206265656e206e616d65642e20546865206465706f736974206973206465616c742077697468207468726f7567682060543a3a536c6173686564604c20696d62616c616e63652068616e646c65722e00310120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f206f72206d617463682060543a3a466f7263654f726967696e602e002c2023203c7765696768743e20202d204f2831292edc202d204f6e6520756e62616c616e6365642068616e646c6572202870726f6261626c7920612062616c616e6365207472616e736665722968202d204f6e652073746f7261676520726561642f77726974652e34202d204f6e65206576656e742e302023203c2f7765696768743e28666f7263655f6e616d6508187461726765748c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365106e616d651c5665633c75383e30c82053657420612074686972642d7061727479206163636f756e742773206e616d652077697468206e6f206465706f7369742e00a0204e6f206c656e67746820636865636b696e6720697320646f6e65206f6e20746865206e616d652e00310120546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f206f72206d617463682060543a3a466f7263654f726967696e602e002c2023203c7765696768743e20202d204f2831292e84202d204174206d6f7374206f6e652062616c616e6365206f7065726174696f6e2e68202d204f6e652073746f7261676520726561642f77726974652e34202d204f6e65206576656e742e302023203c2f7765696768743e01141c4e616d6553657404244163636f756e74496404402041206e616d6520776173207365742e284e616d65466f7263656404244163636f756e74496404642041206e616d652077617320666f726369626c79207365742e2c4e616d654368616e67656404244163636f756e74496404502041206e616d6520776173206368616e6765642e2c4e616d65436c656172656408244163636f756e7449641c42616c616e636504d02041206e616d652077617320636c65617265642c20616e642074686520676976656e2062616c616e63652072657475726e65642e284e616d654b696c6c656408244163636f756e7449641c42616c616e636504c82041206e616d65207761732072656d6f76656420616e642074686520676976656e2062616c616e636520736c61736865642e0c385265736572766174696f6e4665653042616c616e63654f663c543e40000064a7b3b6e00d00000000000000000444205265736572766174696f6e206665652e244d696e4c656e6774680c7533321003000000048820546865206d696e696d756d206c656e6774682061206e616d65206d61792062652e244d61784c656e6774680c7533321010000000048820546865206d6178696d756d206c656e6774682061206e616d65206d61792062652e0c20546f6f53686f727404542041206e616d6520697320746f6f2073686f72742e1c546f6f4c6f6e6704502041206e616d6520697320746f6f206c6f6e672e1c556e6e616d6564045c20416e206163636f756e7420696e2774206e616d65642e105375646f01105375646f040c4b6579010030543a3a4163636f756e74496480000000000000000000000000000000000000000000000000000000000000000004842054686520604163636f756e74496460206f6620746865207375646f206b65792e010c107375646f042070726f706f73616c40426f783c543a3a50726f706f73616c3e2839012041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c2023203c7765696768743e20202d204f2831292e64202d204c696d697465642073746f726167652072656164732e60202d204f6e6520444220777269746520286576656e74292ed4202d20556e6b6e6f776e20776569676874206f662064657269766174697665206070726f706f73616c6020657865637574696f6e2e302023203c2f7765696768743e1c7365745f6b6579040c6e65778c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263652475012041757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f206b65792e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c2023203c7765696768743e20202d204f2831292e64202d204c696d697465642073746f726167652072656164732e44202d204f6e65204442206368616e67652e302023203c2f7765696768743e1c7375646f5f6173080c77686f8c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263652070726f706f73616c40426f783c543a3a50726f706f73616c3e2c51012041757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d44206120676976656e206163636f756e742e00d020546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c2023203c7765696768743e20202d204f2831292e64202d204c696d697465642073746f726167652072656164732e60202d204f6e6520444220777269746520286576656e74292ed4202d20556e6b6e6f776e20776569676874206f662064657269766174697665206070726f706f73616c6020657865637574696f6e2e302023203c2f7765696768743e010c1453756469640410626f6f6c04602041207375646f206a75737420746f6f6b20706c6163652e284b65794368616e67656404244163636f756e74496404f020546865207375646f6572206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c6965642e285375646f4173446f6e650410626f6f6c04602041207375646f206a75737420746f6f6b20706c6163652e00042c526571756972655375646f04802053656e646572206d75737420626520746865205375646f206163636f756e74245369676e616c696e6701245369676e616c696e671c3450726f706f73616c436f756e7401000c753332100000000004c02054686520746f74616c206e756d626572206f662070726f706f73616c7320637265617465642074687573206661722e44496e61637469766550726f706f73616c730100785665633c28543a3a486173682c20543a3a426c6f636b4e756d626572293e040004802041206c697374206f6620616c6c20657874616e742070726f706f73616c732e3c41637469766550726f706f73616c730100785665633c28543a3a486173682c20543a3a426c6f636b4e756d626572293e0400041d012041206c697374206f66206163746976652070726f706f73616c7320616c6f6e672077697468207468652074696d65206174207768696368207468657920636f6d706c6574652e48436f6d706c6574656450726f706f73616c730100785665633c28543a3a486173682c20543a3a426c6f636b4e756d626572293e040004c02041206c697374206f6620636f6d706c657465642070726f706f73616c732c2070656e64696e672064656c6574696f6e30566f74696e674c656e677468010038543a3a426c6f636b4e756d626572100000000004d420416d6f756e74206f662074696d6520612070726f706f73616c2072656d61696e7320696e2022566f74696e67222073746167652e2850726f706f73616c4f660001011c543a3a48617368b050726f706f73616c5265636f72643c543a3a4163636f756e7449642c20543a3a426c6f636b4e756d6265723e000400041501204d617020666f722072657472696576696e672074686520696e666f726d6174696f6e2061626f757420616e792070726f706f73616c2066726f6d2069747320686173682e5050726f706f73616c4372656174696f6e426f6e6401003042616c616e63654f663c543e4000000000000000000000000000000000044820526567697374726174696f6e20626f6e6401083c6372656174655f70726f706f73616c14147469746c653450726f706f73616c5469746c6520636f6e74656e74734050726f706f73616c436f6e74656e7473206f7574636f6d6573405665633c566f74654f7574636f6d653e24766f74655f7479706540766f74696e673a3a566f7465547970652874616c6c795f7479706544766f74696e673a3a54616c6c7954797065048820437265617465732061206e6577207369676e616c696e672070726f706f73616c2e40616476616e63655f70726f706f73616c043470726f706f73616c5f686173681c543a3a4861736808090120416476616e63652061207369676e616c696e672070726f706f73616c20696e746f207468652022766f74696e6722206f722022636f6d6d6974222073746167652ef82043616e206f6e6c7920626520706572666f726d656420627920746865206f726967696e616c20617574686f72206f66207468652070726f706f73616c2e01102c4e657750726f706f73616c08244163636f756e744964104861736804d820456d69747465642061742070726f706f73616c206372656174696f6e3a202843726561746f722c2050726f706f73616c486173682934436f6d6d6974537461727465640c10486173680c7536342c426c6f636b4e756d62657204210120456d6974746564207768656e20636f6d6d697420737461676520626567696e733a202850726f706f73616c486173682c20566f746549642c20436f6d6d6974456e6454696d652934566f74696e67537461727465640c10486173680c7536342c426c6f636b4e756d62657204090120456d6974746564207768656e20766f74696e6720626567696e733a202850726f706f73616c486173682c20566f746549642c20566f74696e67456e6454696d65293c566f74696e67436f6d706c657465640810486173680c75363404190120456d6974746564207768656e20766f74696e6720697320636f6d706c657465643a202850726f706f73616c486173682c20566f746549642c20566f7465526573756c747329000454566f74655265636f7264446f65736e7445786973740018566f74696e670118566f74696e67082c566f74655265636f7264730001010c75363460566f74655265636f72643c543a3a4163636f756e7449643e00040004a820546865206d6170206f6620616c6c20766f7465207265636f72647320696e64657865642062792069643c566f74655265636f7264436f756e7401000c75363420000000000000000004c820546865206e756d626572206f6620766f7465207265636f72647320746861742068617665206265656e2063726561746564010818636f6d6d6974081c766f74655f69640c75363418636f6d6d69742c566f74654f7574636f6d6514250120412066756e6374696f6e20666f7220636f6d6d69742d72657665616c20766f74696e6720736368656d657320746861742061646473206120766f746520636f6d6d69746d656e742e001501204120766f746520636f6d6d69746d656e7420697320666f726d6174746564207573696e6720746865206e617469766520686173682066756e6374696f6e2e2054686572651901206172652063757272656e746c79206e6f2063727970746f65636f6e6f6d69632070756e6973686d656e747320616761696e7374206e6f742072657665616c696e67207468653020636f6d6d69746d656e742e1872657665616c0c1c766f74655f69640c75363410766f7465405665633c566f74654f7574636f6d653e187365637265744c4f7074696f6e3c566f74654f7574636f6d653e0c490120412066756e6374696f6e20746861742072657665616c73206120766f746520636f6d6d69746d656e74206f7220736572766573206173207468652067656e6572616c20766f74652066756e6374696f6e2e003d01205468657265206172652063757272656e746c79206e6f2063727970746f65636f6e6f6d696320696e63656e746976657320666f722072657665616c696e6720636f6d6d6974656420766f7465732e01102c566f7465437265617465640c0c753634244163636f756e74496420566f7465547970650494206e657720766f7465202869642c2063726561746f722c2074797065206f6620766f74652930566f7465416476616e6365640c0c75363424566f7465537461676524566f7465537461676504c420766f7465207374616765207472616e736974696f6e202869642c206f6c642073746167652c206e65772073746167652934566f7465436f6d6d6974746564080c753634244163636f756e7449640434207573657220636f6d6d69747330566f746552657665616c65640c0c753634244163636f756e744964405665633c566f74654f7574636f6d653e045020757365722072657665616c73206120766f7465000434566f7465436f6d706c6574656400385472656173757279526577617264013854726561737572795265776172640c3c4d696e74696e67496e74657276616c010038543a3a426c6f636b4e756d626572100000000004c020496e74657276616c20696e206e756d626572206f6620626c6f636b7320746f207265776172642074726561737572793443757272656e745061796f757401003042616c616e63654f663c543e400000000000000000000000000000000004642043757272656e74207061796f7574206f66206d6f64756c650c506f74010028543a3a42616c616e6365400000000000000000000000000000000004302043757272656e7420706f74010001043c54726561737572794d696e74696e670c1c42616c616e63652042616c616e6365322c426c6f636b4e756d626572000000041c30436865636b56657273696f6e30436865636b47656e6573697320436865636b45726128436865636b4e6f6e63652c436865636b576569676874604368617267655472616e73616374696f6e5061796d656e7448436865636b426c6f636b4761734c696d6974","id":29} diff --git a/docs/examples/promise/90_typegen/package.json b/docs/examples/promise/90_typegen/package.json new file mode 100644 index 0000000000..42223529c3 --- /dev/null +++ b/docs/examples/promise/90_typegen/package.json @@ -0,0 +1,24 @@ +{ + "name": "sample-polkadotjs-typegen", + "version": "0.0.1", + "description": "A sample using @polkadot/typegen to generate type definitions", + "main": "index.js", + "repository": "https://github.com/jacogr/sample-polkadotjs-typegen", + "author": "Jaco Greeff ", + "license": "The Unlicense", + "private": true, + "scripts": { + "build": "yarn generate:defs && yarn generate:meta", + "generate:defs": "ts-node --skip-project node_modules/.bin/polkadot-types-from-defs --package sample-polkadotjs-typegen/interfaces --input ./src/interfaces", + "generate:meta": "ts-node --skip-project node_modules/.bin/polkadot-types-from-chain --package sample-polkadotjs-typegen/interfaces --endpoint ./edgeware.json --output ./src/interfaces --strict", + "lint": "tsc --noEmit --pretty" + }, + "dependencies": { + "@polkadot/api": "^1.4.0" + }, + "devDependencies": { + "@polkadot/typegen": "^1.4.0", + "ts-node": "^8.6.2", + "typescript": "^3.8.2" + } +} diff --git a/docs/examples/promise/90_typegen/src/index.ts b/docs/examples/promise/90_typegen/src/index.ts new file mode 100644 index 0000000000..41446abebc --- /dev/null +++ b/docs/examples/promise/90_typegen/src/index.ts @@ -0,0 +1,54 @@ +// We need to import the augmented definitions "somewhere" in our project, however since we have +// it in tsconfig as an override and the api/types has imports, it is not strictly required here. +// Because of the tsconfig override, we could import from '@polkadot/{api, types}/augment' +import './interfaces/augment-api'; +import './interfaces/augment-types'; + +// all type stuff, the only one we are using here +import type { VoteRecord } from './interfaces'; + +// external imports +import { ApiPromise } from '@polkadot/api'; +import { createType } from '@polkadot/types'; + +// our local stuff +import * as definitions from './interfaces/definitions'; + +async function main (): Promise { + // extract all types from definitions - fast and dirty approach, flatted on 'types' + const types = Object.values(definitions).reduce((res, { types }): object => ({ ...res, ...types }), {}); + + const api = await ApiPromise.create({ + types: { + ...types, + // aliasses that don't do well as part of interfaces + 'voting::VoteType': 'VoteType', + 'voting::TallyType': 'TallyType', + // chain-specific overrides + Keys: 'SessionKeys4' + } + }); + + // get a query + const recordOpt = await api.query.voting.voteRecords(123); + + // the types match with what we expect here + let firstRecord: VoteRecord | null = recordOpt.unwrapOr(null); + console.log(firstRecord?.toHuman()); + + // it even does work for arrays & subscriptions + api.query.signaling.activeProposals((results): void => { + results.forEach(([hash, blockNumber]): void => { + console.log(hash.toHex(), ':', blockNumber.toNumber()); + }); + }); + + // even createType works, allowing for our types to be used + console.log(`Balance2 bitLength:`, [ + api.createType('Balance2').bitLength(), + api.registry.createType('Balance2').bitLength(), + createType(api.registry, 'Balance2').bitLength() + ]); +} + +await main(); diff --git a/docs/examples/promise/90_typegen/src/interfaces/augment-api-consts.ts b/docs/examples/promise/90_typegen/src/interfaces/augment-api-consts.ts new file mode 100644 index 0000000000..8878438cb8 --- /dev/null +++ b/docs/examples/promise/90_typegen/src/interfaces/augment-api-consts.ts @@ -0,0 +1,253 @@ +// Auto-generated via `yarn polkadot-types-from-chain`, do not edit +/* eslint-disable @typescript-eslint/no-empty-interface */ + +import { Bytes, u32 } from '@polkadot/types/primitive'; +import { Gas } from '@polkadot/types/interfaces/contracts'; +import { Balance, BalanceOf, BlockNumber, Moment, Percent, Permill } from '@polkadot/types/interfaces/runtime'; +import { SessionIndex } from '@polkadot/types/interfaces/session'; +import { EraIndex } from '@polkadot/types/interfaces/staking'; + +declare module '@polkadot/metadata/Decorated/consts/types' { + export interface Constants { + timestamp: { + + /** + * 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. + **/ + minimumPeriod: AugmentedConst; + }; + balances: { + + /** + * The minimum amount required to keep an account open. + **/ + existentialDeposit: AugmentedConst; + /** + * The fee required to make a transfer. + **/ + transferFee: AugmentedConst; + /** + * The fee required to create an account. + **/ + creationFee: AugmentedConst; + }; + transactionPayment: { + + /** + * The fee to be paid for making a transaction; the base. + **/ + transactionBaseFee: AugmentedConst; + /** + * The fee to be paid for making a transaction; the per-byte portion. + **/ + transactionByteFee: AugmentedConst; + }; + staking: { + + /** + * Number of sessions per era. + **/ + sessionsPerEra: AugmentedConst; + /** + * Number of eras that staked funds must remain bonded for. + **/ + bondingDuration: AugmentedConst; + }; + session: { + + /** + * Used as first key for `NextKeys` and `KeyOwner` to put all the data into the same branch + * of the trie. + **/ + dedupKeyPrefix: AugmentedConst; + }; + democracy: { + + /** + * 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. + **/ + enactmentPeriod: AugmentedConst; + /** + * How often (in blocks) new public referenda are launched. + **/ + launchPeriod: AugmentedConst; + /** + * How often (in blocks) to check for new votes. + **/ + votingPeriod: AugmentedConst; + /** + * The minimum amount to be used as a deposit for a public referendum proposal. + **/ + minimumDeposit: AugmentedConst; + /** + * Minimum voting period allowed for an emergency referendum. + **/ + emergencyVotingPeriod: AugmentedConst; + /** + * Period in blocks where an external proposal may not be re-submitted after being vetoed. + **/ + cooloffPeriod: AugmentedConst; + /** + * The amount of balance that must be deposited per byte of preimage stored. + **/ + preimageByteDeposit: AugmentedConst; + }; + elections: { + + candidacyBond: AugmentedConst; + votingBond: AugmentedConst; + desiredMembers: AugmentedConst; + desiredRunnersUp: AugmentedConst; + termDuration: AugmentedConst; + }; + finalityTracker: { + + /** + * The number of recent samples to keep from this chain. Default is 101. + **/ + windowSize: AugmentedConst; + /** + * The delay after which point things become suspicious. Default is 1000. + **/ + reportLatency: AugmentedConst; + }; + treasury: { + + /** + * 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. + **/ + proposalBond: AugmentedConst; + /** + * Minimum amount of funds that should be placed in a deposit for making a proposal. + **/ + proposalBondMinimum: AugmentedConst; + /** + * Period between successive spends. + **/ + spendPeriod: AugmentedConst; + /** + * Percentage of spare funds (if any) that are burnt per spend period. + **/ + burn: AugmentedConst; + /** + * The period for which a tip remains open after is has achieved threshold tippers. + **/ + tipCountdown: AugmentedConst; + /** + * The amount of the final tip which goes to the original reporter of the tip. + **/ + tipFindersFee: AugmentedConst; + /** + * The amount held on deposit for placing a tip report. + **/ + tipReportDepositBase: AugmentedConst; + /** + * The amount held on deposit per byte within the tip report reason. + **/ + tipReportDepositPerByte: AugmentedConst; + }; + contracts: { + + /** + * Number of block delay an extrinsic claim surcharge has. + * When claim surcharge is called by an extrinsic the rent is checked + * for current_block - delay + **/ + signedClaimHandicap: AugmentedConst; + /** + * The minimum amount required to generate a tombstone. + **/ + tombstoneDeposit: AugmentedConst; + /** + * Size of a contract at the time of instantiaion. This is a simple way to ensure that + * empty contracts eventually gets deleted. + **/ + storageSizeOffset: AugmentedConst; + /** + * Price of a byte of storage per one block interval. Should be greater than 0. + **/ + rentByteFee: AugmentedConst; + /** + * The amount of funds a contract should deposit in order to offset + * the cost of one byte. + * Let's suppose the deposit is 1,000 BU (balance units)/byte and the rent is 1 BU/byte/day, + * then a contract with 1,000,000 BU that uses 1,000 bytes of storage would pay no rent. + * But if the balance reduced to 500,000 BU and the storage stayed the same at 1,000, + * then it would pay 500 BU/day. + **/ + rentDepositOffset: AugmentedConst; + /** + * Reward that is received by the party whose touch has led + * to removal of a contract. + **/ + surchargeReward: AugmentedConst; + /** + * The fee required to make a transfer. + **/ + transferFee: AugmentedConst; + /** + * The fee required to create an account. + **/ + creationFee: AugmentedConst; + /** + * The fee to be paid for making a transaction; the base. + **/ + transactionBaseFee: AugmentedConst; + /** + * The fee to be paid for making a transaction; the per-byte portion. + **/ + transactionByteFee: AugmentedConst; + /** + * The fee required to instantiate a contract instance. A reasonable default value + * is 21. + **/ + contractFee: AugmentedConst; + /** + * The base fee charged for calling into a contract. A reasonable default + * value is 135. + **/ + callBaseFee: AugmentedConst; + /** + * The base fee charged for instantiating a contract. A reasonable default value + * is 175. + **/ + instantiateBaseFee: AugmentedConst; + /** + * The maximum nesting level of a call/instantiate stack. A reasonable default + * value is 100. + **/ + maxDepth: AugmentedConst; + /** + * The maximum size of a storage value in bytes. A reasonable default is 16 KiB. + **/ + maxValueSize: AugmentedConst; + /** + * The maximum amount of gas that could be expended per block. A reasonable + * default value is 10_000_000. + **/ + blockGasLimit: AugmentedConst; + }; + nicks: { + + /** + * Reservation fee. + **/ + reservationFee: AugmentedConst; + /** + * The minimum length a name may be. + **/ + minLength: AugmentedConst; + /** + * The maximum length a name may be. + **/ + maxLength: AugmentedConst; + }; + } +} diff --git a/docs/examples/promise/90_typegen/src/interfaces/augment-api-query.ts b/docs/examples/promise/90_typegen/src/interfaces/augment-api-query.ts new file mode 100644 index 0000000000..cfe6b2aea4 --- /dev/null +++ b/docs/examples/promise/90_typegen/src/interfaces/augment-api-query.ts @@ -0,0 +1,706 @@ +// Auto-generated via `yarn polkadot-types-from-chain`, do not edit +/* eslint-disable @typescript-eslint/no-empty-interface */ + +import { AnyNumber, ITuple } from '@polkadot/types/types'; +import { Option, U8aFixed, Vec } from '@polkadot/types/codec'; +import { Bytes, Data, bool, u32, u64 } from '@polkadot/types/primitive'; +import { UncleEntryItem } from '@polkadot/types/interfaces/authorship'; +import { BalanceLock, VestingSchedule } from '@polkadot/types/interfaces/balances'; +import { ProposalIndex, Votes } from '@polkadot/types/interfaces/collective'; +import { AuthorityId } from '@polkadot/types/interfaces/consensus'; +import { CodeHash, ContractInfo, Gas, PrefabWasmModule, Schedule } from '@polkadot/types/interfaces/contracts'; +import { Conviction, PropIndex, Proposal, ReferendumIndex, ReferendumInfo } from '@polkadot/types/interfaces/democracy'; +import { Vote, VoteThreshold } from '@polkadot/types/interfaces/elections'; +import { AuthorityList, SetId, StoredPendingChange, StoredState } from '@polkadot/types/interfaces/grandpa'; +import { RegistrarInfo, Registration } from '@polkadot/types/interfaces/identity'; +import { AuthIndex } from '@polkadot/types/interfaces/imOnline'; +import { Kind, OffenceDetails, OpaqueTimeSlot, ReportIdOf } from '@polkadot/types/interfaces/offences'; +import { AccountId, AccountIndex, Balance, BalanceOf, BlockNumber, Hash, Index, KeyTypeId, Moment, Perbill, ValidatorId, Weight } from '@polkadot/types/interfaces/runtime'; +import { Keys, SessionIndex } from '@polkadot/types/interfaces/session'; +import { ProposalRecord } from 'sample-polkadotjs-typegen/interfaces/signaling'; +import { EraIndex, EraPoints, Exposure, Forcing, MomentOf, Nominations, RewardDestination, SlashingSpans, SpanIndex, SpanRecord, StakingLedger, UnappliedSlash, ValidatorPrefs } from '@polkadot/types/interfaces/staking'; +import { DigestOf, EventIndex, EventRecord } from '@polkadot/types/interfaces/system'; +import { OpenTip, TreasuryProposal } from '@polkadot/types/interfaces/treasury'; +import { Multiplier } from '@polkadot/types/interfaces/txpayment'; +import { Multisig } from '@polkadot/types/interfaces/utility'; +import { VoteRecord } from 'sample-polkadotjs-typegen/interfaces/voting'; +import { Observable } from 'rxjs'; +import { ApiTypes } from '@polkadot/api/types'; + +declare module '@polkadot/api/types/storage' { + export interface AugmentedQueries { + system: { + + /** + * Extrinsics nonce for accounts. + **/ + accountNonce: AugmentedQuery Observable>; + /** + * Total extrinsics count for the current block. + **/ + extrinsicCount: AugmentedQuery Observable>>; + /** + * Total weight for all extrinsics put together, for the current block. + **/ + allExtrinsicsWeight: AugmentedQuery Observable>>; + /** + * Total length (in bytes) for all extrinsics put together, for the current block. + **/ + allExtrinsicsLen: AugmentedQuery Observable>>; + /** + * Map of block numbers to block hashes. + **/ + blockHash: AugmentedQuery Observable>; + /** + * Extrinsics data for the current block (maps an extrinsic's index to its data). + **/ + extrinsicData: AugmentedQuery Observable>; + /** + * The current block number being processed. Set by `execute_block`. + **/ + number: AugmentedQuery Observable>; + /** + * Hash of the previous block. + **/ + parentHash: AugmentedQuery Observable>; + /** + * Extrinsics root of the current block, also part of the block header. + **/ + extrinsicsRoot: AugmentedQuery Observable>; + /** + * Digest of the current block, also part of the block header. + **/ + digest: AugmentedQuery Observable>; + /** + * Events deposited for the current block. + **/ + events: AugmentedQuery Observable>>; + /** + * The number of events in the `Events` list. + **/ + eventCount: AugmentedQuery Observable>; + /** + * Mapping between a topic (represented by T::Hash) and a vector of indexes + * of events in the `>` list. + * 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. + **/ + eventTopics: AugmentedQuery Observable>>>; + }; + utility: { + + /** + * The set of open multisig operations. + **/ + multisigs: AugmentedQueryDoubleMap Observable>>; + }; + timestamp: { + + /** + * Current time for the current block. + **/ + now: AugmentedQuery Observable>; + /** + * Did the timestamp get updated in this block? + **/ + didUpdate: AugmentedQuery Observable>; + }; + authorship: { + + /** + * Uncles + **/ + uncles: AugmentedQuery Observable>>; + /** + * Author of current block. + **/ + author: AugmentedQuery Observable>>; + /** + * Whether uncles were already set in this block. + **/ + didSetUncles: AugmentedQuery Observable>; + }; + indices: { + + /** + * The next free enumeration set. + **/ + nextEnumSet: AugmentedQuery Observable>; + /** + * The enumeration sets. + **/ + enumSet: AugmentedQuery Observable>>; + }; + balances: { + + /** + * The total units issued in the system. + **/ + totalIssuance: AugmentedQuery Observable>; + /** + * Information regarding the vesting of a given account. + **/ + vesting: AugmentedQuery Observable>>; + /** + * 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. + * `frame_system::AccountNonce` is also deleted if `ReservedBalance` is also zero (it also gets + * collapsed to zero if it ever becomes less than `ExistentialDeposit`. + **/ + freeBalance: AugmentedQuery Observable>; + /** + * 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`. + * `frame_system::AccountNonce` is also deleted if `FreeBalance` is also zero (it also gets + * collapsed to zero if it ever becomes less than `ExistentialDeposit`.) + **/ + reservedBalance: AugmentedQuery Observable>; + /** + * Any liquidity locks on some account balances. + **/ + locks: AugmentedQuery Observable>>; + }; + transactionPayment: { + + nextFeeMultiplier: AugmentedQuery Observable>; + }; + staking: { + + /** + * The ideal number of staking participants. + **/ + validatorCount: AugmentedQuery Observable>; + /** + * Minimum number of staking participants before emergency conditions are imposed. + **/ + minimumValidatorCount: AugmentedQuery Observable>; + /** + * 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. + **/ + invulnerables: AugmentedQuery Observable>>; + /** + * Map from all locked "stash" accounts to the controller account. + **/ + bonded: AugmentedQuery Observable>>; + /** + * Map from all (unlocked) "controller" accounts to the info regarding the staking. + **/ + ledger: AugmentedQuery Observable>>; + /** + * Where the reward payment should be made. Keyed by stash. + **/ + payee: AugmentedQuery Observable>; + /** + * The map from (wannabe) validator stash key to the preferences of that validator. + **/ + validators: AugmentedQuery Observable>; + /** + * The map from nominator stash key to the set of stash keys of all validators to nominate. + * NOTE: is private so that we can ensure upgraded before all typical accesses. + * Direct storage APIs can still bypass this protection. + **/ + nominators: AugmentedQuery Observable>>; + /** + * 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. + **/ + stakers: AugmentedQuery Observable>; + /** + * The currently elected validator set keyed by stash account ID. + **/ + currentElected: AugmentedQuery Observable>>; + /** + * The current era index. + **/ + currentEra: AugmentedQuery Observable>; + /** + * The start of the current era. + **/ + currentEraStart: AugmentedQuery Observable>; + /** + * The session index at which the current era started. + **/ + currentEraStartSessionIndex: AugmentedQuery Observable>; + /** + * Rewards for the current era. Using indices of current elected set. + **/ + currentEraPointsEarned: AugmentedQuery Observable>; + /** + * The amount of balance actively at stake for each validator slot, currently. + * This is used to derive rewards and punishments. + **/ + slotStake: AugmentedQuery Observable>; + /** + * True if the next session change will be a new era regardless of index. + **/ + forceEra: AugmentedQuery Observable>; + /** + * The percentage of the slash that is distributed to reporters. + * The rest of the slashed value is handled by the `Slash`. + **/ + slashRewardFraction: AugmentedQuery Observable>; + /** + * The amount of currency given to reporters of a slash event which was + * canceled by extraordinary circumstances (e.g. governance). + **/ + canceledSlashPayout: AugmentedQuery Observable>; + /** + * All unapplied slashes that are queued for later. + **/ + unappliedSlashes: AugmentedQuery Observable>>; + /** + * A mapping from still-bonded eras to the first session index of that era. + **/ + bondedEras: AugmentedQuery Observable>>>; + /** + * All slashing events on validators, mapped by era to the highest slash proportion + * and slash value of the era. + **/ + validatorSlashInEra: AugmentedQueryDoubleMap Observable>>>; + /** + * All slashing events on nominators, mapped by era to the highest slash value of the era. + **/ + nominatorSlashInEra: AugmentedQueryDoubleMap Observable>>; + /** + * Slashing spans for stash accounts. + **/ + slashingSpans: AugmentedQuery Observable>>; + /** + * Records information about the maximum slash of a stash within a slashing span, + * as well as how much reward has been paid out. + **/ + spanSlash: AugmentedQuery | [AccountId | string | Uint8Array, SpanIndex | AnyNumber | Uint8Array]) => Observable>; + /** + * The earliest era for which we have a pending, unapplied slash. + **/ + earliestUnappliedSlash: AugmentedQuery Observable>>; + /** + * The version of storage for upgrade. + **/ + storageVersion: AugmentedQuery Observable>; + }; + session: { + + /** + * The current set of validators. + **/ + validators: AugmentedQuery Observable>>; + /** + * Current index of the session. + **/ + currentIndex: AugmentedQuery Observable>; + /** + * True if the underlying economic identities or weighting behind the validators + * has changed in the queued validator set. + **/ + queuedChanged: AugmentedQuery Observable>; + /** + * The queued keys for the next session. When the next session begins, these keys + * will be used to determine the validator's session keys. + **/ + queuedKeys: AugmentedQuery Observable>>>; + /** + * Indices of disabled validators. + * The set is cleared when `on_session_ending` returns a new set of identities. + **/ + disabledValidators: AugmentedQuery Observable>>; + /** + * The next session keys for a validator. + * The first key is always `DEDUP_KEY_PREFIX` to have all the data in the same branch of + * the trie. Having all data in the same branch should prevent slowing down other queries. + **/ + nextKeys: AugmentedQueryDoubleMap Observable>>; + /** + * The owner of a key. The second key is the `KeyTypeId` + the encoded key. + * The first key is always `DEDUP_KEY_PREFIX` to have all the data in the same branch of + * the trie. Having all data in the same branch should prevent slowing down other queries. + **/ + keyOwner: AugmentedQueryDoubleMap | [KeyTypeId | AnyNumber | Uint8Array, Bytes | string | Uint8Array]) => Observable>>; + }; + democracy: { + + /** + * The number of (public) proposals that have been made so far. + **/ + publicPropCount: AugmentedQuery Observable>; + /** + * The public proposals. Unsorted. The second item is the proposal's hash. + **/ + publicProps: AugmentedQuery Observable>>>; + /** + * Map of hashes to the proposal preimage, along with who registered it and their deposit. + * The block number is the block at which it was deposited. + **/ + preimages: AugmentedQuery Observable>>>; + /** + * Those who have locked a deposit. + **/ + depositOf: AugmentedQuery Observable]>>>>; + /** + * The next free referendum index, aka the number of referenda started so far. + **/ + referendumCount: AugmentedQuery Observable>; + /** + * The lowest referendum index representing an unbaked referendum. Equal to + * `ReferendumCount` if there isn't a unbaked referendum. + **/ + lowestUnbaked: AugmentedQuery Observable>; + /** + * Information concerning any given referendum. + **/ + referendumInfoOf: AugmentedQuery Observable>>; + /** + * Queue of successful referenda to be dispatched. Stored ordered by block number. + **/ + dispatchQueue: AugmentedQuery Observable>>>; + /** + * Get the voters for the current proposal. + **/ + votersFor: AugmentedQuery Observable>>; + /** + * 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. + **/ + voteOf: AugmentedQuery | [ReferendumIndex | AnyNumber | Uint8Array, AccountId | string | Uint8Array]) => Observable>; + /** + * Who is able to vote for whom. Value is the fund-holding account, key is the + * vote-transaction-sending account. + **/ + proxy: AugmentedQuery Observable>>; + /** + * Get the account (and lock periods) to which another account is delegating vote. + **/ + delegations: AugmentedQuery Observable>>; + /** + * True if the last referendum tabled was submitted externally. False if it was a public + * proposal. + **/ + lastTabledWasExternal: AugmentedQuery Observable>; + /** + * 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. + **/ + nextExternal: AugmentedQuery Observable>>>; + /** + * 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. + **/ + blacklist: AugmentedQuery Observable]>>>>; + /** + * Record of all proposals that have been subject to emergency cancellation. + **/ + cancellations: AugmentedQuery Observable>; + }; + council: { + + /** + * The hashes of the active proposals. + **/ + proposals: AugmentedQuery Observable>>; + /** + * Actual proposal for a given hash, if it's current. + **/ + proposalOf: AugmentedQuery Observable>>; + /** + * Votes on a given proposal, if it is ongoing. + **/ + voting: AugmentedQuery Observable>>; + /** + * Proposals so far. + **/ + proposalCount: AugmentedQuery Observable>; + /** + * The current members of the collective. This is stored sorted (just by value). + **/ + members: AugmentedQuery Observable>>; + }; + elections: { + + /** + * The current elected membership. Sorted based on account id. + **/ + members: AugmentedQuery Observable>>>; + /** + * The current runners_up. Sorted based on low to high merit (worse to best runner). + **/ + runnersUp: AugmentedQuery Observable>>>; + /** + * The total number of vote rounds that have happened, excluding the upcoming one. + **/ + electionRounds: AugmentedQuery Observable>; + /** + * Votes of a particular voter, with the round index of the votes. + **/ + votesOf: AugmentedQuery Observable>>; + /** + * Locked stake of a voter. + **/ + stakeOf: AugmentedQuery Observable>; + /** + * The present candidate list. Sorted based on account-id. A current member or a runner can + * never enter this vector and is always implicitly assumed to be a candidate. + **/ + candidates: AugmentedQuery Observable>>; + }; + grandpa: { + + /** + * DEPRECATED + * This used to store the current authority set, which has been migrated to the well-known + * GRANDPA_AUTHORITES_KEY unhashed key. + **/ + authorities: AugmentedQuery Observable>; + /** + * State of the current authority set. + **/ + state: AugmentedQuery Observable>; + /** + * Pending change: (signaled at, scheduled change). + **/ + pendingChange: AugmentedQuery Observable>>; + /** + * next block number where we can force a change. + **/ + nextForced: AugmentedQuery Observable>>; + /** + * `true` if we are currently stalled. + **/ + stalled: AugmentedQuery Observable>>>; + /** + * The number of changes (both in terms of keys and underlying economic responsibilities) + * in the "set" of Grandpa validators from genesis. + **/ + currentSetId: AugmentedQuery Observable>; + /** + * A mapping from grandpa set ID to the index of the *most recent* session for which its members were responsible. + **/ + setIdSession: AugmentedQuery Observable>>; + }; + treasury: { + + /** + * Number of proposals that have been made. + **/ + proposalCount: AugmentedQuery Observable>; + /** + * Proposals that have been made. + **/ + proposals: AugmentedQuery Observable>>; + /** + * Proposal indices that have been approved but not yet awarded. + **/ + approvals: AugmentedQuery Observable>>; + /** + * Tips that are not yet completed. Keyed by the hash of `(reason, who)` from the value. + * This has the insecure enumerable hash function since the key itself is already + * guaranteed to be a secure hash. + **/ + tips: AugmentedQuery Observable>>; + /** + * Simple preimage lookup from the reason's hash to the original data. Again, has an + * insecure enumerable hash since the key is guaranteed to be the result of a secure hash. + **/ + reasons: AugmentedQuery Observable>>; + }; + contracts: { + + /** + * Gas spent so far in this block. + **/ + gasSpent: AugmentedQuery Observable>; + /** + * Current cost schedule for contracts. + **/ + currentSchedule: AugmentedQuery Observable>; + /** + * A mapping from an original code hash to the original code, untouched by instrumentation. + **/ + pristineCode: AugmentedQuery Observable>>; + /** + * A mapping between an original code hash and instrumented wasm code, ready for execution. + **/ + codeStorage: AugmentedQuery Observable>>; + /** + * The subtrie counter. + **/ + accountCounter: AugmentedQuery Observable>; + /** + * The code associated with a given account. + **/ + contractInfoOf: AugmentedQuery Observable>>; + /** + * The price of one unit of gas. + **/ + gasPrice: AugmentedQuery Observable>; + }; + identity: { + + /** + * Information that is pertinent to identify the entity behind an account. + **/ + identityOf: AugmentedQuery Observable>>; + /** + * The super-identity of an alternative "sub" identity together with its name, within that + * context. If the account is not some other account's sub-identity, then just `None`. + **/ + superOf: AugmentedQuery Observable>>>; + /** + * Alternative "sub" identities of this account. + * The first item is the deposit, the second is a vector of the accounts. + **/ + subsOf: AugmentedQuery Observable]>>>; + /** + * The set of registrars. Not expected to get very big as can only be added through a + * special origin (likely a council motion). + * The index into this can be cast to `RegistrarIndex` to get a valid value. + **/ + registrars: AugmentedQuery Observable>>>; + }; + imOnline: { + + /** + * The block number after which it's ok to send heartbeats in current session. + * At the beginning of each session we set this to a value that should + * fall roughly in the middle of the session duration. + * The idea is to first wait for the validators to produce a block + * in the current session, so that the heartbeat later on will not be necessary. + **/ + heartbeatAfter: AugmentedQuery Observable>; + /** + * The current set of keys that may issue a heartbeat. + **/ + keys: AugmentedQuery Observable>>; + /** + * For each session index, we keep a mapping of `AuthIndex` + * to `offchain::OpaqueNetworkState`. + **/ + receivedHeartbeats: AugmentedQueryDoubleMap Observable>>; + /** + * For each session index, we keep a mapping of `T::ValidatorId` to the + * number of blocks authored by the given authority. + **/ + authoredBlocks: AugmentedQueryDoubleMap Observable>; + }; + offences: { + + /** + * The primary structure that holds all offence records keyed by report identifiers. + **/ + reports: AugmentedQuery Observable>>; + /** + * A vector of reports of the same kind that happened at the same time slot. + **/ + concurrentReportsIndex: AugmentedQueryDoubleMap Observable>>; + /** + * Enumerates all reports of a kind along with the time they happened. + * All reports are sorted by the time of offence. + * Note that the actual type of this mapping is `Vec`, this is because values of + * different types are not supported at the moment so we are doing the manual serialization. + **/ + reportsByKindIndex: AugmentedQuery Observable>; + }; + randomnessCollectiveFlip: { + + /** + * Series of block headers from the last 81 blocks that acts as random seed material. This + * is arranged as a ring buffer with `block_number % 81` being the index into the `Vec` of + * the oldest hash. + **/ + randomMaterial: AugmentedQuery Observable>>; + }; + nicks: { + + /** + * The lookup table for names. + **/ + nameOf: AugmentedQuery Observable>>>; + }; + sudo: { + + /** + * The `AccountId` of the sudo key. + **/ + key: AugmentedQuery Observable>; + }; + signaling: { + + /** + * The total number of proposals created thus far. + **/ + proposalCount: AugmentedQuery Observable>; + /** + * A list of all extant proposals. + **/ + inactiveProposals: AugmentedQuery Observable>>>; + /** + * A list of active proposals along with the time at which they complete. + **/ + activeProposals: AugmentedQuery Observable>>>; + /** + * A list of completed proposals, pending deletion + **/ + completedProposals: AugmentedQuery Observable>>>; + /** + * Amount of time a proposal remains in "Voting" stage. + **/ + votingLength: AugmentedQuery Observable>; + /** + * Map for retrieving the information about any proposal from its hash. + **/ + proposalOf: AugmentedQuery Observable>>; + /** + * Registration bond + **/ + proposalCreationBond: AugmentedQuery Observable>; + }; + voting: { + + /** + * The map of all vote records indexed by id + **/ + voteRecords: AugmentedQuery Observable>>; + /** + * The number of vote records that have been created + **/ + voteRecordCount: AugmentedQuery Observable>; + }; + treasuryReward: { + + /** + * Interval in number of blocks to reward treasury + **/ + mintingInterval: AugmentedQuery Observable>; + /** + * Current payout of module + **/ + currentPayout: AugmentedQuery Observable>; + /** + * Current pot + **/ + pot: AugmentedQuery Observable>; + }; + } + + export interface QueryableStorage extends AugmentedQueries { + } +} diff --git a/docs/examples/promise/90_typegen/src/interfaces/augment-api-tx.ts b/docs/examples/promise/90_typegen/src/interfaces/augment-api-tx.ts new file mode 100644 index 0000000000..a25f8db3a6 --- /dev/null +++ b/docs/examples/promise/90_typegen/src/interfaces/augment-api-tx.ts @@ -0,0 +1,1147 @@ +// Auto-generated via `yarn polkadot-types-from-chain`, do not edit +/* eslint-disable @typescript-eslint/no-empty-interface */ + +import { AnyNumber, ITuple } from '@polkadot/types/types'; +import { Compact, Option, U8aFixed, Vec } from '@polkadot/types/codec'; +import { Bytes, Data, bool, u16, u32, u64 } from '@polkadot/types/primitive'; +import { MemberCount, ProposalIndex } from '@polkadot/types/interfaces/collective'; +import { CodeHash, Gas, Schedule } from '@polkadot/types/interfaces/contracts'; +import { Conviction, PropIndex, Proposal, ReferendumIndex } from '@polkadot/types/interfaces/democracy'; +import { Vote } from '@polkadot/types/interfaces/elections'; +import { Signature } from '@polkadot/types/interfaces/extrinsics'; +import { IdentityFields, IdentityInfo, IdentityJudgement, RegistrarIndex } from '@polkadot/types/interfaces/identity'; +import { Heartbeat } from '@polkadot/types/interfaces/imOnline'; +import { AccountId, AccountIndex, Address, Balance, BalanceOf, BlockNumber, Call, ChangesTrieConfiguration, Hash, Header, KeyValue, LookupSource, Moment } from '@polkadot/types/interfaces/runtime'; +import { Keys } from '@polkadot/types/interfaces/session'; +import { ProposalContents, ProposalTitle } from 'sample-polkadotjs-typegen/interfaces/signaling'; +import { EraIndex, RewardDestination, ValidatorPrefs } from '@polkadot/types/interfaces/staking'; +import { Key } from '@polkadot/types/interfaces/system'; +import { Timepoint } from '@polkadot/types/interfaces/utility'; +import { TallyType, VoteOutcome, VoteType } from 'sample-polkadotjs-typegen/interfaces/voting'; +import { ApiTypes, SubmittableExtrinsic } from '@polkadot/api/types'; + +declare module '@polkadot/api/types/submittable' { + export interface AugmentedSubmittables { + system: { + + /** + * A big dispatch that will disallow any other transaction to be included. + **/ + fillBlock: AugmentedSubmittable<() => SubmittableExtrinsic>; + /** + * Make some on-chain remark. + **/ + remark: AugmentedSubmittable<(remark: Bytes | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Set the number of pages in the WebAssembly environment's heap. + **/ + setHeapPages: AugmentedSubmittable<(pages: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic>; + /** + * Set the new runtime code. + **/ + setCode: AugmentedSubmittable<(code: Bytes | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Set the new runtime code without doing any checks of the given `code`. + **/ + setCodeWithoutChecks: AugmentedSubmittable<(code: Bytes | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Set the new changes trie configuration. + **/ + setChangesTrieConfig: AugmentedSubmittable<(changesTrieConfig: Option | null | object | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Set some items of storage. + **/ + setStorage: AugmentedSubmittable<(items: Vec | (KeyValue)[]) => SubmittableExtrinsic>; + /** + * Kill some items from storage. + **/ + killStorage: AugmentedSubmittable<(keys: Vec | (Key | string | Uint8Array)[]) => SubmittableExtrinsic>; + /** + * Kill all storage items with a key that starts with the given prefix. + **/ + killPrefix: AugmentedSubmittable<(prefix: Key | string | Uint8Array) => SubmittableExtrinsic>; + }; + utility: { + + /** + * Send a batch of dispatch calls. + * This will execute until the first one fails and then stop. + * May be called from any origin. + * - `calls`: The calls to be dispatched from the same origin. + * # + * - The sum of the weights of the `calls`. + * - One event. + * # + * This will return `Ok` in all circumstances. To determine the success of the batch, an + * event is deposited. If a call failed and the batch was interrupted, then the + * `BatchInterrupted` event is deposited, along with the number of successful calls made + * and the error of the failed call. If all were successful, then the `BatchCompleted` + * event is deposited. + **/ + batch: AugmentedSubmittable<(calls: Vec | (Call | { callIndex?: any; args?: any } | string | Uint8Array)[]) => SubmittableExtrinsic>; + /** + * Send a call through an indexed pseudonym of the sender. + * The dispatch origin for this call must be _Signed_. + * # + * - The weight of the `call`. + * # + **/ + asSub: AugmentedSubmittable<(index: u16 | AnyNumber | Uint8Array, call: Call | { callIndex?: any; args?: any } | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Register approval for a dispatch to be made from a deterministic composite account if + * approved by a total of `threshold - 1` of `other_signatories`. + * If there are enough, then dispatch the call. + * Payment: `MultisigDepositBase` will be reserved if this is the first approval, plus + * `threshold` times `MultisigDepositFactor`. It is returned once this dispatch happens or + * is cancelled. + * The dispatch origin for this call must be _Signed_. + * - `threshold`: The total number of approvals for this dispatch before it is executed. + * - `other_signatories`: The accounts (other than the sender) who can approve this + * dispatch. May not be empty. + * - `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is + * not the first approval, then it must be `Some`, with the timepoint (block number and + * transaction index) of the first approval transaction. + * - `call`: The call to be executed. + * NOTE: Unless this is the final approval, you will generally want to use + * `approve_as_multi` instead, since it only requires a hash of the call. + * Result is equivalent to the dispatched result if `threshold` is exactly `1`. Otherwise + * on success, result is `Ok` and the result from the interior call, if it was executed, + * may be found in the deposited `MultisigExecuted` event. + * # + * - `O(S + Z + Call)`. + * - Up to one balance-reserve or unreserve operation. + * - One passthrough operation, one insert, both `O(S)` where `S` is the number of + * signatories. `S` is capped by `MaxSignatories`, with weight being proportional. + * - One call encode & hash, both of complexity `O(Z)` where `Z` is tx-len. + * - One encode & hash, both of complexity `O(S)`. + * - Up to one binary search and insert (`O(logS + S)`). + * - I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove. + * - One event. + * - The weight of the `call`. + * - Storage: inserts one item, value size bounded by `MaxSignatories`, with a + * deposit taken for its lifetime of + * `MultisigDepositBase + threshold * MultisigDepositFactor`. + * # + **/ + asMulti: AugmentedSubmittable<(threshold: u16 | AnyNumber | Uint8Array, otherSignatories: Vec | (AccountId | string | Uint8Array)[], maybeTimepoint: Option | null | object | string | Uint8Array, call: Call | { callIndex?: any; args?: any } | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Register approval for a dispatch to be made from a deterministic composite account if + * approved by a total of `threshold - 1` of `other_signatories`. + * Payment: `MultisigDepositBase` will be reserved if this is the first approval, plus + * `threshold` times `MultisigDepositFactor`. It is returned once this dispatch happens or + * is cancelled. + * The dispatch origin for this call must be _Signed_. + * - `threshold`: The total number of approvals for this dispatch before it is executed. + * - `other_signatories`: The accounts (other than the sender) who can approve this + * dispatch. May not be empty. + * - `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is + * not the first approval, then it must be `Some`, with the timepoint (block number and + * transaction index) of the first approval transaction. + * - `call_hash`: The hash of the call to be executed. + * NOTE: If this is the final approval, you will want to use `as_multi` instead. + * # + * - `O(S)`. + * - Up to one balance-reserve or unreserve operation. + * - One passthrough operation, one insert, both `O(S)` where `S` is the number of + * signatories. `S` is capped by `MaxSignatories`, with weight being proportional. + * - One encode & hash, both of complexity `O(S)`. + * - Up to one binary search and insert (`O(logS + S)`). + * - I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove. + * - One event. + * - Storage: inserts one item, value size bounded by `MaxSignatories`, with a + * deposit taken for its lifetime of + * `MultisigDepositBase + threshold * MultisigDepositFactor`. + * # + **/ + approveAsMulti: AugmentedSubmittable<(threshold: u16 | AnyNumber | Uint8Array, otherSignatories: Vec | (AccountId | string | Uint8Array)[], maybeTimepoint: Option | null | object | string | Uint8Array, callHash: U8aFixed | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Cancel a pre-existing, on-going multisig transaction. Any deposit reserved previously + * for this operation will be unreserved on success. + * The dispatch origin for this call must be _Signed_. + * - `threshold`: The total number of approvals for this dispatch before it is executed. + * - `other_signatories`: The accounts (other than the sender) who can approve this + * dispatch. May not be empty. + * - `timepoint`: The timepoint (block number and transaction index) of the first approval + * transaction for this dispatch. + * - `call_hash`: The hash of the call to be executed. + * # + * - `O(S)`. + * - Up to one balance-reserve or unreserve operation. + * - One passthrough operation, one insert, both `O(S)` where `S` is the number of + * signatories. `S` is capped by `MaxSignatories`, with weight being proportional. + * - One encode & hash, both of complexity `O(S)`. + * - One event. + * - I/O: 1 read `O(S)`, one remove. + * - Storage: removes one item. + * # + **/ + cancelAsMulti: AugmentedSubmittable<(threshold: u16 | AnyNumber | Uint8Array, otherSignatories: Vec | (AccountId | string | Uint8Array)[], timepoint: Timepoint | { height?: any; index?: any } | string | Uint8Array, callHash: U8aFixed | string | Uint8Array) => SubmittableExtrinsic>; + }; + timestamp: { + + /** + * 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`. + **/ + set: AugmentedSubmittable<(now: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic>; + }; + authorship: { + + /** + * Provide a set of uncles. + **/ + setUncles: AugmentedSubmittable<(newUncles: Vec
| (Header | { parentHash?: any; number?: any; stateRoot?: any; extrinsicsRoot?: any; digest?: any } | string | Uint8Array)[]) => SubmittableExtrinsic>; + }; + balances: { + + /** + * 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`. + * - `transfer_keep_alive` works the same way as `transfer`, but has an additional + * check that the transfer will not kill the origin account. + * # + **/ + transfer: AugmentedSubmittable<(dest: LookupSource | Address | AccountId | AccountIndex | string | Uint8Array, value: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic>; + /** + * 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 (`frame_system::AccountNonce`). + * The dispatch origin for this call is `root`. + * # + * - Independent of the arguments. + * - Contains a limited number of reads and writes. + * # + **/ + setBalance: AugmentedSubmittable<(who: LookupSource | Address | AccountId | AccountIndex | string | Uint8Array, newFree: Compact | AnyNumber | Uint8Array, newReserved: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic>; + /** + * Exactly as `transfer`, except the origin must be root and the source account may be + * specified. + **/ + forceTransfer: AugmentedSubmittable<(source: LookupSource | Address | AccountId | AccountIndex | string | Uint8Array, dest: LookupSource | Address | AccountId | AccountIndex | string | Uint8Array, value: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic>; + /** + * Same as the [`transfer`] call, but with a check that the transfer will not kill the + * origin account. + * 99% of the time you want [`transfer`] instead. + * [`transfer`]: struct.Module.html#method.transfer + **/ + transferKeepAlive: AugmentedSubmittable<(dest: LookupSource | Address | AccountId | AccountIndex | string | Uint8Array, value: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic>; + }; + staking: { + + /** + * 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 `minimum_balance` specified by `T::Currency`. + * 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. + * # + **/ + bond: AugmentedSubmittable<(controller: LookupSource | Address | AccountId | AccountIndex | string | Uint8Array, value: Compact | AnyNumber | Uint8Array, payee: RewardDestination | ('Staked' | 'Stash' | 'Controller') | number | Uint8Array) => SubmittableExtrinsic>; + /** + * 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. + * # + **/ + bondExtra: AugmentedSubmittable<(maxAdditional: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic>; + /** + * 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::minimum_balance(), 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. + * + **/ + unbond: AugmentedSubmittable<(value: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic>; + /** + * 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. + * # + **/ + withdrawUnbonded: AugmentedSubmittable<() => SubmittableExtrinsic>; + /** + * 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. + * # + **/ + validate: AugmentedSubmittable<(prefs: ValidatorPrefs | { commission?: any } | string | Uint8Array) => SubmittableExtrinsic>; + /** + * 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. + * # + **/ + nominate: AugmentedSubmittable<(targets: Vec | (LookupSource | Address | AccountId | AccountIndex | string | Uint8Array)[]) => SubmittableExtrinsic>; + /** + * 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. + * # + **/ + chill: AugmentedSubmittable<() => SubmittableExtrinsic>; + /** + * (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. + * # + **/ + setPayee: AugmentedSubmittable<(payee: RewardDestination | ('Staked' | 'Stash' | 'Controller') | number | Uint8Array) => SubmittableExtrinsic>; + /** + * (Re-)set the controller of a stash. + * 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. + * # + **/ + setController: AugmentedSubmittable<(controller: LookupSource | Address | AccountId | AccountIndex | string | Uint8Array) => SubmittableExtrinsic>; + /** + * The ideal number of validators. + **/ + setValidatorCount: AugmentedSubmittable<(updated: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic>; + /** + * Force there to be no new eras indefinitely. + * # + * - No arguments. + * # + **/ + forceNoEras: AugmentedSubmittable<() => SubmittableExtrinsic>; + /** + * Force there to be a new era at the end of the next session. After this, it will be + * reset to normal (non-forced) behaviour. + * # + * - No arguments. + * # + **/ + forceNewEra: AugmentedSubmittable<() => SubmittableExtrinsic>; + /** + * Set the validators who cannot be slashed (if any). + **/ + setInvulnerables: AugmentedSubmittable<(validators: Vec | (AccountId | string | Uint8Array)[]) => SubmittableExtrinsic>; + /** + * Force a current staker to become completely unstaked, immediately. + **/ + forceUnstake: AugmentedSubmittable<(stash: AccountId | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Force there to be a new era at the end of sessions indefinitely. + * # + * - One storage write + * # + **/ + forceNewEraAlways: AugmentedSubmittable<() => SubmittableExtrinsic>; + /** + * Cancel enactment of a deferred slash. Can be called by either the root origin or + * the `T::SlashCancelOrigin`. + * passing the era and indices of the slashes for that era to kill. + * # + * - One storage write. + * # + **/ + cancelDeferredSlash: AugmentedSubmittable<(era: EraIndex | AnyNumber | Uint8Array, slashIndices: Vec | (u32 | AnyNumber | Uint8Array)[]) => SubmittableExtrinsic>; + /** + * Rebond a portion of the stash scheduled to be unlocked. + * # + * - Time complexity: O(1). Bounded by `MAX_UNLOCKING_CHUNKS`. + * - Storage changes: Can't increase storage, only decrease it. + * # + **/ + rebond: AugmentedSubmittable<(value: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic>; + }; + session: { + + /** + * Sets the session key(s) of the function caller to `keys`. + * 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. + * # + **/ + setKeys: AugmentedSubmittable<(keys: Keys, proof: Bytes | string | Uint8Array) => SubmittableExtrinsic>; + }; + democracy: { + + /** + * Propose a sensitive action to be taken. + * # + * - O(1). + * - Two DB changes, one DB entry. + * # + **/ + propose: AugmentedSubmittable<(proposalHash: Hash | string | Uint8Array, value: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic>; + /** + * Propose a sensitive action to be taken. + * # + * - O(1). + * - One DB entry. + * # + **/ + second: AugmentedSubmittable<(proposal: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic>; + /** + * 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. + * # + **/ + vote: AugmentedSubmittable<(refIndex: Compact | AnyNumber | Uint8Array, vote: Vote | { aye: boolean; conviction?: ('None' | 'Locked1x' | 'Locked2x' | 'Locked3x' | 'Locked4x' | 'Locked5x' | 'Locked6x') | number } | boolean | string | Uint8Array) => SubmittableExtrinsic>; + /** + * 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. + * # + **/ + proxyVote: AugmentedSubmittable<(refIndex: Compact | AnyNumber | Uint8Array, vote: Vote | { aye: boolean; conviction?: ('None' | 'Locked1x' | 'Locked2x' | 'Locked3x' | 'Locked4x' | 'Locked5x' | 'Locked6x') | number } | boolean | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Schedule an emergency cancellation of a referendum. Cannot happen twice to the same + * referendum. + **/ + emergencyCancel: AugmentedSubmittable<(refIndex: ReferendumIndex | AnyNumber | Uint8Array) => SubmittableExtrinsic>; + /** + * Schedule a referendum to be tabled once it is legal to schedule an external + * referendum. + **/ + externalPropose: AugmentedSubmittable<(proposalHash: Hash | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Schedule a majority-carries referendum to be tabled next once it is legal to schedule + * an external referendum. + * Unlike `external_propose`, blacklisting has no effect on this and it may replace a + * pre-scheduled `external_propose` call. + **/ + externalProposeMajority: AugmentedSubmittable<(proposalHash: Hash | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Schedule a negative-turnout-bias referendum to be tabled next once it is legal to + * schedule an external referendum. + * Unlike `external_propose`, blacklisting has no effect on this and it may replace a + * pre-scheduled `external_propose` call. + **/ + externalProposeDefault: AugmentedSubmittable<(proposalHash: Hash | string | Uint8Array) => SubmittableExtrinsic>; + /** + * 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. Increased to + * `EmergencyVotingPeriod` if too low. + * - `delay`: The number of block after voting has ended in approval and this should be + * enacted. This doesn't have a minimum amount. + **/ + fastTrack: AugmentedSubmittable<(proposalHash: Hash | string | Uint8Array, votingPeriod: BlockNumber | AnyNumber | Uint8Array, delay: BlockNumber | AnyNumber | Uint8Array) => SubmittableExtrinsic>; + /** + * Veto and blacklist the external proposal hash. + **/ + vetoExternal: AugmentedSubmittable<(proposalHash: Hash | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Remove a referendum. + **/ + cancelReferendum: AugmentedSubmittable<(refIndex: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic>; + /** + * Cancel a proposal queued for enactment. + **/ + cancelQueued: AugmentedSubmittable<(which: ReferendumIndex | AnyNumber | Uint8Array) => SubmittableExtrinsic>; + /** + * Specify a proxy. Called by the stash. + * # + * - One extra DB entry. + * # + **/ + setProxy: AugmentedSubmittable<(proxy: AccountId | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Clear the proxy. Called by the proxy. + * # + * - One DB clear. + * # + **/ + resignProxy: AugmentedSubmittable<() => SubmittableExtrinsic>; + /** + * Clear the proxy. Called by the stash. + * # + * - One DB clear. + * # + **/ + removeProxy: AugmentedSubmittable<(proxy: AccountId | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Delegate vote. + * # + * - One extra DB entry. + * # + **/ + delegate: AugmentedSubmittable<(to: AccountId | string | Uint8Array, conviction: Conviction | ('None' | 'Locked1x' | 'Locked2x' | 'Locked3x' | 'Locked4x' | 'Locked5x' | 'Locked6x') | number | Uint8Array) => SubmittableExtrinsic>; + /** + * Undelegate vote. + * # + * - O(1). + * # + **/ + undelegate: AugmentedSubmittable<() => SubmittableExtrinsic>; + /** + * Veto and blacklist the proposal hash. Must be from Root origin. + **/ + clearPublicProposals: AugmentedSubmittable<() => SubmittableExtrinsic>; + /** + * Register the preimage for an upcoming proposal. This doesn't require the proposal to be + * in the dispatch queue but does require a deposit, returned once enacted. + **/ + notePreimage: AugmentedSubmittable<(encodedProposal: Bytes | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Register the preimage for an upcoming proposal. This requires the proposal to be + * in the dispatch queue. No deposit is needed. + **/ + noteImminentPreimage: AugmentedSubmittable<(encodedProposal: Bytes | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Remove an expired proposal preimage and collect the deposit. + * This will only work after `VotingPeriod` blocks from the time that the preimage was + * noted, if it's the same account doing it. If it's a different account, then it'll only + * work an additional `EnactmentPeriod` later. + **/ + reapPreimage: AugmentedSubmittable<(proposalHash: Hash | string | Uint8Array) => SubmittableExtrinsic>; + }; + council: { + + /** + * Set the collective's membership manually to `new_members`. Be nice to the chain and + * provide it pre-sorted. + * Requires root origin. + **/ + setMembers: AugmentedSubmittable<(newMembers: Vec | (AccountId | string | Uint8Array)[]) => SubmittableExtrinsic>; + /** + * Dispatch a proposal from a member using the `Member` origin. + * Origin must be a member of the collective. + **/ + execute: AugmentedSubmittable<(proposal: Proposal | { callIndex?: any; args?: any } | string | Uint8Array) => SubmittableExtrinsic>; + /** + * # + * - Bounded storage reads and writes. + * - Argument `threshold` has bearing on weight. + * # + **/ + propose: AugmentedSubmittable<(threshold: Compact | AnyNumber | Uint8Array, proposal: Proposal | { callIndex?: any; args?: any } | string | Uint8Array) => SubmittableExtrinsic>; + /** + * # + * - Bounded storage read and writes. + * - Will be slightly heavier if the proposal is approved / disapproved after the vote. + * # + **/ + vote: AugmentedSubmittable<(proposal: Hash | string | Uint8Array, index: Compact | AnyNumber | Uint8Array, approve: bool | boolean | Uint8Array) => SubmittableExtrinsic>; + }; + elections: { + + /** + * Vote for a set of candidates for the upcoming round of election. + * The `votes` should: + * - not be empty. + * - be less than the number of candidates. + * Upon voting, `value` units of `who`'s balance is locked and a bond amount is reserved. + * It is the responsibility of the caller to not place all of their balance into the lock + * and keep some for further transactions. + * # + * #### State + * Reads: O(1) + * Writes: O(V) given `V` votes. V is bounded by 16. + * # + **/ + vote: AugmentedSubmittable<(votes: Vec | (AccountId | string | Uint8Array)[], value: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic>; + /** + * Remove `origin` as a voter. This removes the lock and returns the bond. + * # + * #### State + * Reads: O(1) + * Writes: O(1) + * # + **/ + removeVoter: AugmentedSubmittable<() => SubmittableExtrinsic>; + /** + * Report `target` for being an defunct voter. In case of a valid report, the reporter is + * rewarded by the bond amount of `target`. Otherwise, the reporter itself is removed and + * their bond is slashed. + * A defunct voter is defined to be: + * - a voter whose current submitted votes are all invalid. i.e. all of them are no + * longer a candidate nor an active member. + * # + * #### State + * Reads: O(NLogM) given M current candidates and N votes for `target`. + * Writes: O(1) + * # + **/ + reportDefunctVoter: AugmentedSubmittable<(target: LookupSource | Address | AccountId | AccountIndex | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Submit oneself for candidacy. + * A candidate will either: + * - Lose at the end of the term and forfeit their deposit. + * - Win and become a member. Members will eventually get their stash back. + * - Become a runner-up. Runners-ups are reserved members in case one gets forcefully + * removed. + * # + * #### State + * Reads: O(LogN) Given N candidates. + * Writes: O(1) + * # + **/ + submitCandidacy: AugmentedSubmittable<() => SubmittableExtrinsic>; + /** + * Renounce one's intention to be a candidate for the next election round. 3 potential + * outcomes exist: + * - `origin` is a candidate and not elected in any set. In this case, the bond is + * unreserved, returned and origin is removed as a candidate. + * - `origin` is a current runner up. In this case, the bond is unreserved, returned and + * origin is removed as a runner. + * - `origin` is a current member. In this case, the bond is unreserved and origin is + * removed as a member, consequently not being a candidate for the next round anymore. + * Similar to [`remove_voter`], if replacement runners exists, they are immediately used. + **/ + renounceCandidacy: AugmentedSubmittable<() => SubmittableExtrinsic>; + /** + * Remove a particular member from the set. This is effective immediately and the bond of + * the outgoing member is slashed. + * If a runner-up is available, then the best runner-up will be removed and replaces the + * outgoing member. Otherwise, a new phragmen round is started. + * Note that this does not affect the designated block number of the next election. + * # + * #### State + * Reads: O(do_phragmen) + * Writes: O(do_phragmen) + * # + **/ + removeMember: AugmentedSubmittable<(who: LookupSource | Address | AccountId | AccountIndex | string | Uint8Array) => SubmittableExtrinsic>; + }; + finalityTracker: { + + /** + * Hint that the author of this block thinks the best finalized + * block is the given number. + **/ + finalHint: AugmentedSubmittable<(hint: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic>; + }; + grandpa: { + + /** + * Report some misbehavior. + **/ + reportMisbehavior: AugmentedSubmittable<(report: Bytes | string | Uint8Array) => SubmittableExtrinsic>; + }; + treasury: { + + /** + * 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. + * # + **/ + proposeSpend: AugmentedSubmittable<(value: Compact | AnyNumber | Uint8Array, beneficiary: LookupSource | Address | AccountId | AccountIndex | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Reject a proposed spend. The original deposit will be slashed. + * # + * - O(1). + * - Limited storage reads. + * - One DB clear. + * # + **/ + rejectProposal: AugmentedSubmittable<(proposalId: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic>; + /** + * 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. + * # + **/ + approveProposal: AugmentedSubmittable<(proposalId: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic>; + /** + * Report something `reason` that deserves a tip and claim any eventual the finder's fee. + * The dispatch origin for this call must be _Signed_. + * Payment: `TipReportDepositBase` will be reserved from the origin account, as well as + * `TipReportDepositPerByte` for each byte in `reason`. + * - `reason`: The reason for, or the thing that deserves, the tip; generally this will be + * a UTF-8-encoded URL. + * - `who`: The account which should be credited for the tip. + * Emits `NewTip` if successful. + * # + * - `O(R)` where `R` length of `reason`. + * - One balance operation. + * - One storage mutation (codec `O(R)`). + * - One event. + * # + **/ + reportAwesome: AugmentedSubmittable<(reason: Bytes | string | Uint8Array, who: AccountId | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Retract a prior tip-report from `report_awesome`, and cancel the process of tipping. + * If successful, the original deposit will be unreserved. + * The dispatch origin for this call must be _Signed_ and the tip identified by `hash` + * must have been reported by the signing account through `report_awesome` (and not + * through `tip_new`). + * - `hash`: The identity of the open tip for which a tip value is declared. This is formed + * as the hash of the tuple of the original tip `reason` and the beneficiary account ID. + * Emits `TipRetracted` if successful. + * # + * - `O(T)` + * - One balance operation. + * - Two storage removals (one read, codec `O(T)`). + * - One event. + * # + **/ + retractTip: AugmentedSubmittable<(hash: Hash | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Give a tip for something new; no finder's fee will be taken. + * The dispatch origin for this call must be _Signed_ and the signing account must be a + * member of the `Tippers` set. + * - `reason`: The reason for, or the thing that deserves, the tip; generally this will be + * a UTF-8-encoded URL. + * - `who`: The account which should be credited for the tip. + * - `tip_value`: The amount of tip that the sender would like to give. The median tip + * value of active tippers will be given to the `who`. + * Emits `NewTip` if successful. + * # + * - `O(R + T)` where `R` length of `reason`, `T` is the number of tippers. `T` is + * naturally capped as a membership set, `R` is limited through transaction-size. + * - Two storage insertions (codecs `O(R)`, `O(T)`), one read `O(1)`. + * - One event. + * # + **/ + tipNew: AugmentedSubmittable<(reason: Bytes | string | Uint8Array, who: AccountId | string | Uint8Array, tipValue: BalanceOf | AnyNumber | Uint8Array) => SubmittableExtrinsic>; + /** + * Declare a tip value for an already-open tip. + * The dispatch origin for this call must be _Signed_ and the signing account must be a + * member of the `Tippers` set. + * - `hash`: The identity of the open tip for which a tip value is declared. This is formed + * as the hash of the tuple of the hash of the original tip `reason` and the beneficiary + * account ID. + * - `tip_value`: The amount of tip that the sender would like to give. The median tip + * value of active tippers will be given to the `who`. + * Emits `TipClosing` if the threshold of tippers has been reached and the countdown period + * has started. + * # + * - `O(T)` + * - One storage mutation (codec `O(T)`), one storage read `O(1)`. + * - Up to one event. + * # + **/ + tip: AugmentedSubmittable<(hash: Hash | string | Uint8Array, tipValue: BalanceOf | AnyNumber | Uint8Array) => SubmittableExtrinsic>; + /** + * Close and payout a tip. + * The dispatch origin for this call must be _Signed_. + * The tip identified by `hash` must have finished its countdown period. + * - `hash`: The identity of the open tip for which a tip value is declared. This is formed + * as the hash of the tuple of the original tip `reason` and the beneficiary account ID. + * # + * - `O(T)` + * - One storage retrieval (codec `O(T)`) and two removals. + * - Up to three balance operations. + * # + **/ + closeTip: AugmentedSubmittable<(hash: Hash | string | Uint8Array) => SubmittableExtrinsic>; + }; + contracts: { + + /** + * Updates the schedule for metering contracts. + * The schedule must have a greater version than the stored schedule. + **/ + updateSchedule: AugmentedSubmittable<(schedule: Schedule | { version?: any; putCodePerByteCost?: any; growMemCost?: any; regularOpCost?: any; returnDataPerByteCost?: any; eventDataPerByteCost?: any; eventPerTopicCost?: any; eventBaseCost?: any; sandboxDataReadCost?: any; sandboxDataWriteCost?: any; transferCost?: any; maxEventTopics?: any; maxStackHeight?: any; maxMemoryPages?: any; enablePrintln?: any; maxSubjectLen?: any } | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Stores the given binary Wasm code into the chain's storage and returns its `codehash`. + * You can instantiate contracts only with stored code. + **/ + putCode: AugmentedSubmittable<(gasLimit: Compact | AnyNumber | Uint8Array, code: Bytes | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Makes a call to an account, optionally transferring some balance. + * * If the account is a smart-contract account, the associated code will be + * executed and any value will be transferred. + * * If the account is a regular account, any value will be transferred. + * * If no account exists and the call value is not less than `existential_deposit`, + * a regular account will be created and any value will be transferred. + **/ + call: AugmentedSubmittable<(dest: LookupSource | Address | AccountId | AccountIndex | string | Uint8Array, value: Compact | AnyNumber | Uint8Array, gasLimit: Compact | AnyNumber | Uint8Array, data: Bytes | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Instantiates a new contract from the `codehash` generated by `put_code`, optionally transferring some balance. + * Instantiation is executed as follows: + * - The destination address is computed based on the sender and hash of the code. + * - The smart-contract account is created at the computed address. + * - The `ctor_code` is executed in the context of the newly-created account. Buffer returned + * after the execution is saved as the `code` of the account. That code will be invoked + * upon any call received by this account. + * - The contract is initialized. + **/ + instantiate: AugmentedSubmittable<(endowment: Compact | AnyNumber | Uint8Array, gasLimit: Compact | AnyNumber | Uint8Array, codeHash: CodeHash | string | Uint8Array, data: Bytes | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Allows block producers to claim a small reward for evicting a contract. If a block producer + * fails to do so, a regular users will be allowed to claim the reward. + * If contract is not evicted as a result of this call, no actions are taken and + * the sender is not eligible for the reward. + **/ + claimSurcharge: AugmentedSubmittable<(dest: AccountId | string | Uint8Array, auxSender: Option | null | object | string | Uint8Array) => SubmittableExtrinsic>; + }; + identity: { + + /** + * Add a registrar to the system. + * The dispatch origin for this call must be `RegistrarOrigin` or `Root`. + * - `account`: the account of the registrar. + * Emits `RegistrarAdded` if successful. + * # + * - `O(R)` where `R` registrar-count (governance-bounded). + * - One storage mutation (codec `O(R)`). + * - One event. + * # + **/ + addRegistrar: AugmentedSubmittable<(account: AccountId | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Set an account's identity information and reserve the appropriate deposit. + * If the account already has identity information, the deposit is taken as part payment + * for the new deposit. + * The dispatch origin for this call must be _Signed_ and the sender must have a registered + * identity. + * - `info`: The identity information. + * Emits `IdentitySet` if successful. + * # + * - `O(X + X' + R)` where `X` additional-field-count (deposit-bounded and code-bounded). + * - At most two balance operations. + * - One storage mutation (codec-read `O(X' + R)`, codec-write `O(X + R)`). + * - One event. + * # + **/ + setIdentity: AugmentedSubmittable<(info: IdentityInfo | { additional?: any; display?: any; legal?: any; web?: any; riot?: any; email?: any; pgpFingerprint?: any; image?: any; twitter?: any } | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Set the sub-accounts of the sender. + * Payment: Any aggregate balance reserved by previous `set_subs` calls will be returned + * and an amount `SubAccountDeposit` will be reserved for each item in `subs`. + * The dispatch origin for this call must be _Signed_ and the sender must have a registered + * identity. + * - `subs`: The identity's sub-accounts. + * # + * - `O(S)` where `S` subs-count (hard- and deposit-bounded). + * - At most two balance operations. + * - At most O(2 * S + 1) storage mutations; codec complexity `O(1 * S + S * 1)`); + * one storage-exists. + * # + **/ + setSubs: AugmentedSubmittable<(subs: Vec> | ([AccountId | string | Uint8Array, Data | { none: any } | { raw: any } | { blakeTwo256: any } | { sha256: any } | { keccak256: any } | { shaThree256: any } | string | Uint8Array])[]) => SubmittableExtrinsic>; + /** + * Clear an account's identity info and all sub-account and return all deposits. + * Payment: All reserved balances on the account are returned. + * The dispatch origin for this call must be _Signed_ and the sender must have a registered + * identity. + * Emits `IdentityCleared` if successful. + * # + * - `O(R + S + X)`. + * - One balance-reserve operation. + * - `S + 2` storage deletions. + * - One event. + * # + **/ + clearIdentity: AugmentedSubmittable<() => SubmittableExtrinsic>; + /** + * Request a judgement from a registrar. + * Payment: At most `max_fee` will be reserved for payment to the registrar if judgement + * given. + * The dispatch origin for this call must be _Signed_ and the sender must have a + * registered identity. + * - `reg_index`: The index of the registrar whose judgement is requested. + * - `max_fee`: The maximum fee that may be paid. This should just be auto-populated as: + * ```nocompile + * Self::registrars(reg_index).uwnrap().fee + * ``` + * Emits `JudgementRequested` if successful. + * # + * - `O(R + X)`. + * - One balance-reserve operation. + * - Storage: 1 read `O(R)`, 1 mutate `O(X + R)`. + * - One event. + * # + **/ + requestJudgement: AugmentedSubmittable<(regIndex: Compact | AnyNumber | Uint8Array, maxFee: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic>; + /** + * Cancel a previous request. + * Payment: A previously reserved deposit is returned on success. + * The dispatch origin for this call must be _Signed_ and the sender must have a + * registered identity. + * - `reg_index`: The index of the registrar whose judgement is no longer requested. + * Emits `JudgementUnrequested` if successful. + * # + * - `O(R + X)`. + * - One balance-reserve operation. + * - One storage mutation `O(R + X)`. + * - One event. + * # + **/ + cancelRequest: AugmentedSubmittable<(regIndex: RegistrarIndex | AnyNumber | Uint8Array) => SubmittableExtrinsic>; + /** + * Set the fee required for a judgement to be requested from a registrar. + * The dispatch origin for this call must be _Signed_ and the sender must be the account + * of the registrar whose index is `index`. + * - `index`: the index of the registrar whose fee is to be set. + * - `fee`: the new fee. + * # + * - `O(R)`. + * - One storage mutation `O(R)`. + * # + **/ + setFee: AugmentedSubmittable<(index: Compact | AnyNumber | Uint8Array, fee: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic>; + /** + * Change the account associated with a registrar. + * The dispatch origin for this call must be _Signed_ and the sender must be the account + * of the registrar whose index is `index`. + * - `index`: the index of the registrar whose fee is to be set. + * - `new`: the new account ID. + * # + * - `O(R)`. + * - One storage mutation `O(R)`. + * # + **/ + setAccountId: AugmentedSubmittable<(index: Compact | AnyNumber | Uint8Array, updated: AccountId | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Set the field information for a registrar. + * The dispatch origin for this call must be _Signed_ and the sender must be the account + * of the registrar whose index is `index`. + * - `index`: the index of the registrar whose fee is to be set. + * - `fields`: the fields that the registrar concerns themselves with. + * # + * - `O(R)`. + * - One storage mutation `O(R)`. + * # + **/ + setFields: AugmentedSubmittable<(index: Compact | AnyNumber | Uint8Array, fields: IdentityFields) => SubmittableExtrinsic>; + /** + * Provide a judgement for an account's identity. + * The dispatch origin for this call must be _Signed_ and the sender must be the account + * of the registrar whose index is `reg_index`. + * - `reg_index`: the index of the registrar whose judgement is being made. + * - `target`: the account whose identity the judgement is upon. This must be an account + * with a registered identity. + * - `judgement`: the judgement of the registrar of index `reg_index` about `target`. + * Emits `JudgementGiven` if successful. + * # + * - `O(R + X)`. + * - One balance-transfer operation. + * - Up to one account-lookup operation. + * - Storage: 1 read `O(R)`, 1 mutate `O(R + X)`. + * - One event. + * # + **/ + provideJudgement: AugmentedSubmittable<(regIndex: Compact | AnyNumber | Uint8Array, target: LookupSource | Address | AccountId | AccountIndex | string | Uint8Array, judgement: IdentityJudgement | { unknown: any } | { feePaid: any } | { reasonable: any } | { knownGood: any } | { outOfDate: any } | { lowQuality: any } | { erroneous: any } | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Remove an account's identity and sub-account information and slash the deposits. + * Payment: Reserved balances from `set_subs` and `set_identity` are slashed and handled by + * `Slash`. Verification request deposits are not returned; they should be cancelled + * manually using `cancel_request`. + * The dispatch origin for this call must be _Root_ or match `T::ForceOrigin`. + * - `target`: the account whose identity the judgement is upon. This must be an account + * with a registered identity. + * Emits `IdentityKilled` if successful. + * # + * - `O(R + S + X)`. + * - One balance-reserve operation. + * - `S + 2` storage mutations. + * - One event. + * # + **/ + killIdentity: AugmentedSubmittable<(target: LookupSource | Address | AccountId | AccountIndex | string | Uint8Array) => SubmittableExtrinsic>; + }; + imOnline: { + + heartbeat: AugmentedSubmittable<(heartbeat: Heartbeat | { blockNumber?: any; networkState?: any; sessionIndex?: any; authorityIndex?: any } | string | Uint8Array, signature: Signature | string | Uint8Array) => SubmittableExtrinsic>; + }; + nicks: { + + /** + * Set an account's name. The name should be a UTF-8-encoded string by convention, though + * we don't check it. + * The name may not be more than `T::MaxLength` bytes, nor less than `T::MinLength` bytes. + * If the account doesn't already have a name, then a fee of `ReservationFee` is reserved + * in the account. + * The dispatch origin for this call must be _Signed_. + * # + * - O(1). + * - At most one balance operation. + * - One storage read/write. + * - One event. + * # + **/ + setName: AugmentedSubmittable<(name: Bytes | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Clear an account's name and return the deposit. Fails if the account was not named. + * The dispatch origin for this call must be _Signed_. + * # + * - O(1). + * - One balance operation. + * - One storage read/write. + * - One event. + * # + **/ + clearName: AugmentedSubmittable<() => SubmittableExtrinsic>; + /** + * Remove an account's name and take charge of the deposit. + * Fails if `who` has not been named. The deposit is dealt with through `T::Slashed` + * imbalance handler. + * The dispatch origin for this call must be _Root_ or match `T::ForceOrigin`. + * # + * - O(1). + * - One unbalanced handler (probably a balance transfer) + * - One storage read/write. + * - One event. + * # + **/ + killName: AugmentedSubmittable<(target: LookupSource | Address | AccountId | AccountIndex | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Set a third-party account's name with no deposit. + * No length checking is done on the name. + * The dispatch origin for this call must be _Root_ or match `T::ForceOrigin`. + * # + * - O(1). + * - At most one balance operation. + * - One storage read/write. + * - One event. + * # + **/ + forceName: AugmentedSubmittable<(target: LookupSource | Address | AccountId | AccountIndex | string | Uint8Array, name: Bytes | string | Uint8Array) => SubmittableExtrinsic>; + }; + sudo: { + + /** + * 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. + * - One DB write (event). + * - Unknown weight of derivative `proposal` execution. + * # + **/ + sudo: AugmentedSubmittable<(proposal: Proposal | { callIndex?: any; args?: any } | string | Uint8Array) => SubmittableExtrinsic>; + /** + * 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. + * # + **/ + setKey: AugmentedSubmittable<(updated: LookupSource | Address | AccountId | AccountIndex | string | Uint8Array) => SubmittableExtrinsic>; + /** + * Authenticates the sudo key and dispatches a function call with `Signed` origin from + * a given account. + * The dispatch origin for this call must be _Signed_. + * # + * - O(1). + * - Limited storage reads. + * - One DB write (event). + * - Unknown weight of derivative `proposal` execution. + * # + **/ + sudoAs: AugmentedSubmittable<(who: LookupSource | Address | AccountId | AccountIndex | string | Uint8Array, proposal: Proposal | { callIndex?: any; args?: any } | string | Uint8Array) => SubmittableExtrinsic>; + }; + signaling: { + + /** + * Creates a new signaling proposal. + **/ + createProposal: AugmentedSubmittable<(title: ProposalTitle | string | Uint8Array, contents: ProposalContents | string | Uint8Array, outcomes: Vec | (VoteOutcome | string | Uint8Array)[], voteType: VoteType | ('Binary' | 'MultiOption' | 'RankedChoice') | number | Uint8Array, tallyType: TallyType | ('OnePerson' | 'OneCoin') | number | Uint8Array) => SubmittableExtrinsic>; + /** + * Advance a signaling proposal into the "voting" or "commit" stage. + * Can only be performed by the original author of the proposal. + **/ + advanceProposal: AugmentedSubmittable<(proposalHash: Hash | string | Uint8Array) => SubmittableExtrinsic>; + }; + voting: { + + /** + * A function for commit-reveal voting schemes that adds a vote commitment. + * A vote commitment is formatted using the native hash function. There + * are currently no cryptoeconomic punishments against not revealing the + * commitment. + **/ + commit: AugmentedSubmittable<(voteId: u64 | AnyNumber | Uint8Array, commit: VoteOutcome | string | Uint8Array) => SubmittableExtrinsic>; + /** + * A function that reveals a vote commitment or serves as the general vote function. + * There are currently no cryptoeconomic incentives for revealing commited votes. + **/ + reveal: AugmentedSubmittable<(voteId: u64 | AnyNumber | Uint8Array, vote: Vec | (VoteOutcome | string | Uint8Array)[], secret: Option | null | object | string | Uint8Array) => SubmittableExtrinsic>; + }; + } + + export interface SubmittableExtrinsics extends AugmentedSubmittables { + (extrinsic: Uint8Array | string): SubmittableExtrinsic; + } +} diff --git a/docs/examples/promise/90_typegen/src/interfaces/augment-api.ts b/docs/examples/promise/90_typegen/src/interfaces/augment-api.ts new file mode 100644 index 0000000000..163fc8be8c --- /dev/null +++ b/docs/examples/promise/90_typegen/src/interfaces/augment-api.ts @@ -0,0 +1,7 @@ +// Auto-generated via `yarn polkadot-types-from-chain`, do not edit +/* eslint-disable @typescript-eslint/no-empty-interface */ + +import '@polkadot/api/augment/rpc'; +import './augment-api-consts'; +import './augment-api-query'; +import './augment-api-tx'; diff --git a/docs/examples/promise/90_typegen/src/interfaces/augment-types.ts b/docs/examples/promise/90_typegen/src/interfaces/augment-types.ts new file mode 100644 index 0000000000..e4d30df549 --- /dev/null +++ b/docs/examples/promise/90_typegen/src/interfaces/augment-types.ts @@ -0,0 +1,1588 @@ +// Auto-generated via `yarn polkadot-types-from-defs`, do not edit +/* eslint-disable @typescript-eslint/no-empty-interface */ + +import { Compact, Option, Raw, Vec } from '@polkadot/types/codec'; +import { BitVec, Bytes, Data, Null, StorageKey, Text, Type, U256, Unconstructable, bool, i128, i16, i256, i32, i64, i8, u128, u16, u256, u32, u64, u8, usize } from '@polkadot/types/primitive'; +import { BlockAttestations, IncludedBlocks, MoreAttestations } from '@polkadot/types/interfaces/attestations'; +import { RawAuraPreDigest } from '@polkadot/types/interfaces/aura'; +import { InclusionHeight, Uncle, UncleEntryItem } from '@polkadot/types/interfaces/authorship'; +import { BabeAuthorityWeight, BabeBlockWeight, BabeWeight, MaybeVrf, RawBabePreDigest, RawBabePreDigestCompat, RawBabePreDigestPrimary, RawBabePreDigestPrimaryTo159, RawBabePreDigestSecondary, RawBabePreDigestSecondaryTo159, RawBabePreDigestTo159, SlotNumber, VrfData, VrfProof } from '@polkadot/types/interfaces/babe'; +import { AccountData, BalanceLock, BalanceLockTo212, Reasons, VestingSchedule, WithdrawReasons } from '@polkadot/types/interfaces/balances'; +import { EthereumAddress } from '@polkadot/types/interfaces/claims'; +import { MemberCount, ProposalIndex, Votes } from '@polkadot/types/interfaces/collective'; +import { AuthorityId } from '@polkadot/types/interfaces/consensus'; +import { AliveContractInfo, CodeHash, ContractCallRequest, ContractExecResult, ContractExecResultSuccess, ContractInfo, ContractStorageKey, Gas, PrefabWasmModule, PrefabWasmModuleReserved, Schedule, ScheduleTo212, SeedOf, TombstoneContractInfo, TrieId } from '@polkadot/types/interfaces/contracts'; +import { Conviction, PropIndex, Proposal, ProxyState, ReferendumIndex, ReferendumInfo } from '@polkadot/types/interfaces/democracy'; +import { ApprovalFlag, SetIndex, Vote, VoteIndex, VoteThreshold, VoterInfo } from '@polkadot/types/interfaces/elections'; +import { CreatedBlock, ImportedAux } from '@polkadot/types/interfaces/engine'; +import { Account, Log } from '@polkadot/types/interfaces/evm'; +import { EcdsaSignature, Ed25519Signature, Extrinsic, ExtrinsicEra, ExtrinsicPayload, ExtrinsicPayloadUnknown, ExtrinsicPayloadV1, ExtrinsicPayloadV2, ExtrinsicPayloadV3, ExtrinsicPayloadV4, ExtrinsicSignatureV1, ExtrinsicSignatureV2, ExtrinsicSignatureV3, ExtrinsicSignatureV4, ExtrinsicUnknown, ExtrinsicV1, ExtrinsicV2, ExtrinsicV3, ExtrinsicV4, ImmortalEra, MortalEra, MultiSignature, Signature, SignerPayload, Sr25519Signature } from '@polkadot/types/interfaces/extrinsics'; +import { AssetOptions, Owner, PermissionLatest, PermissionVersions, PermissionsV1 } from '@polkadot/types/interfaces/genericAsset'; +import { AuthorityIndex, AuthorityList, AuthorityWeight, NextAuthority, PendingPause, PendingResume, SetId, StoredPendingChange, StoredState } from '@polkadot/types/interfaces/grandpa'; +import { IdentityFields, IdentityInfo, IdentityInfoAdditional, IdentityJudgement, RegistrarIndex, RegistrarInfo, Registration, RegistrationJudgement } from '@polkadot/types/interfaces/identity'; +import { AuthIndex, AuthoritySignature, Heartbeat, OpaqueMultiaddr, OpaqueNetworkState, OpaquePeerId } from '@polkadot/types/interfaces/imOnline'; +import { CallMetadataV0, DoubleMapTypeLatest, DoubleMapTypeV10, DoubleMapTypeV11, DoubleMapTypeV3, DoubleMapTypeV4, DoubleMapTypeV5, DoubleMapTypeV6, DoubleMapTypeV7, DoubleMapTypeV8, DoubleMapTypeV9, ErrorMetadataV10, ErrorMetadataV11, ErrorMetadataV8, ErrorMetadataV9, EventMetadataLatest, EventMetadataV0, EventMetadataV1, EventMetadataV10, EventMetadataV11, EventMetadataV2, EventMetadataV3, EventMetadataV4, EventMetadataV5, EventMetadataV6, EventMetadataV7, EventMetadataV8, EventMetadataV9, ExtrinsicMetadataLatest, ExtrinsicMetadataV11, FunctionArgumentMetadataLatest, FunctionArgumentMetadataV0, FunctionArgumentMetadataV1, FunctionArgumentMetadataV10, FunctionArgumentMetadataV11, FunctionArgumentMetadataV2, FunctionArgumentMetadataV3, FunctionArgumentMetadataV4, FunctionArgumentMetadataV5, FunctionArgumentMetadataV6, FunctionArgumentMetadataV7, FunctionArgumentMetadataV8, FunctionArgumentMetadataV9, FunctionMetadataLatest, FunctionMetadataV0, FunctionMetadataV1, FunctionMetadataV10, FunctionMetadataV11, FunctionMetadataV2, FunctionMetadataV3, FunctionMetadataV4, FunctionMetadataV5, FunctionMetadataV6, FunctionMetadataV7, FunctionMetadataV8, FunctionMetadataV9, MapTypeLatest, MapTypeV0, MapTypeV10, MapTypeV11, MapTypeV2, MapTypeV3, MapTypeV4, MapTypeV5, MapTypeV6, MapTypeV7, MapTypeV8, MapTypeV9, MetadataAll, MetadataLatest, MetadataV0, MetadataV1, MetadataV10, MetadataV11, MetadataV2, MetadataV3, MetadataV4, MetadataV5, MetadataV6, MetadataV7, MetadataV8, MetadataV9, ModuleConstantMetadataLatest, ModuleConstantMetadataV10, ModuleConstantMetadataV11, ModuleConstantMetadataV6, ModuleConstantMetadataV7, ModuleConstantMetadataV8, ModuleConstantMetadataV9, ModuleMetadataLatest, ModuleMetadataV0, ModuleMetadataV1, ModuleMetadataV10, ModuleMetadataV11, ModuleMetadataV2, ModuleMetadataV3, ModuleMetadataV4, ModuleMetadataV5, ModuleMetadataV6, ModuleMetadataV7, ModuleMetadataV8, ModuleMetadataV9, OuterDispatchCallV0, OuterDispatchMetadataV0, OuterEventEventMetadataEventsV0, OuterEventEventMetadataV0, OuterEventMetadataV0, PlainTypeLatest, PlainTypeV0, PlainTypeV10, PlainTypeV11, PlainTypeV2, PlainTypeV3, PlainTypeV4, PlainTypeV5, PlainTypeV6, PlainTypeV7, PlainTypeV8, PlainTypeV9, RuntimeModuleMetadataV0, StorageEntryMetadataLatest, StorageEntryMetadataV10, StorageEntryMetadataV11, StorageEntryMetadataV6, StorageEntryMetadataV7, StorageEntryMetadataV8, StorageEntryMetadataV9, StorageEntryModifierLatest, StorageEntryModifierV10, StorageEntryModifierV11, StorageEntryModifierV6, StorageEntryModifierV7, StorageEntryModifierV8, StorageEntryModifierV9, StorageEntryTypeLatest, StorageEntryTypeV10, StorageEntryTypeV11, StorageEntryTypeV6, StorageEntryTypeV7, StorageEntryTypeV8, StorageEntryTypeV9, StorageFunctionMetadataV0, StorageFunctionMetadataV1, StorageFunctionMetadataV2, StorageFunctionMetadataV3, StorageFunctionMetadataV4, StorageFunctionMetadataV5, StorageFunctionModifierV0, StorageFunctionModifierV1, StorageFunctionModifierV2, StorageFunctionModifierV3, StorageFunctionModifierV4, StorageFunctionModifierV5, StorageFunctionTypeV0, StorageFunctionTypeV1, StorageFunctionTypeV2, StorageFunctionTypeV3, StorageFunctionTypeV4, StorageFunctionTypeV5, StorageHasher, StorageHasherV10, StorageHasherV11, StorageHasherV4, StorageHasherV5, StorageHasherV6, StorageHasherV7, StorageHasherV8, StorageHasherV9, StorageMetadataLatest, StorageMetadataV0, StorageMetadataV10, StorageMetadataV11, StorageMetadataV7, StorageMetadataV8, StorageMetadataV9 } from '@polkadot/types/interfaces/metadata'; +import { Kind, OffenceDetails, Offender, OpaqueTimeSlot, ReportIdOf, Reporter } from '@polkadot/types/interfaces/offences'; +import { AttestedCandidate, AuctionIndex, Bidder, CandidateReceipt, CollatorId, CollatorSignature, EgressQueueRoot, HeadData, IncomingParachain, IncomingParachainDeploy, IncomingParachainFixed, LeasePeriod, LeasePeriodOf, NewBidder, ParaId, ParaIdOf, ParaInfo, ParaScheduling, ParachainDispatchOrigin, Retriable, SlotRange, SubId, UpwardMessage, ValidityAttestation, WinningData, WinningDataEntry } from '@polkadot/types/interfaces/parachains'; +import { ActiveRecovery, RecoveryConfig } from '@polkadot/types/interfaces/recovery'; +import { ApiId, BlockHash, ChainProperties, ExtrinsicOrHash, ExtrinsicStatus, Health, KeyValueOption, NetworkState, PeerInfo, RpcMethods, RuntimeDispatchInfo, RuntimeVersion, RuntimeVersionApi, StorageChangeSet } from '@polkadot/types/interfaces/rpc'; +import { AccountId, AccountIdOf, AccountIndex, Address, AssetId, Balance, BalanceOf, Block, BlockNumber, Call, ChangesTrieConfiguration, Consensus, ConsensusEngineId, Digest, DigestItem, DispatchClass, DispatchInfo, DispatchInfoTo190, Fixed64, H160, H256, H512, Hash, Header, Index, Justification, KeyTypeId, KeyValue, LockIdentifier, LookupSource, LookupTarget, Moment, Origin, Perbill, Percent, Permill, Perquintill, Phantom, PhantomData, PreRuntime, Seal, SealV0, SignedBlock, StorageData, ValidatorId, Weight, WeightMultiplier } from '@polkadot/types/interfaces/runtime'; +import { FullIdentification, IdentificationTuple, Keys, SessionIndex, SessionKeys1, SessionKeys2, SessionKeys3, SessionKeys4, SessionKeys5, SessionKeys6 } from '@polkadot/types/interfaces/session'; +import { ProposalContents, ProposalRecord, ProposalTitle } from 'sample-polkadotjs-typegen/interfaces/signaling'; +import { Bid, BidKind, BidKindVouch, SocietyJudgement, SocietyVote, StrikeCount, VouchingStatus } from '@polkadot/types/interfaces/society'; +import { CompactAssignments, CompactScore, ElectionCompute, ElectionResult, ElectionStatus, EraIndex, EraPoints, EraRewardPoints, EraRewards, Exposure, Forcing, IndividualExposure, KeyType, MomentOf, Nominations, PhragmenScore, Points, RewardDestination, RewardPoint, SlashJournalEntry, SlashingSpans, SlashingSpansTo204, SpanIndex, SpanRecord, StakingLedger, StakingLedgerNew, StakingLedgerTo223, UnappliedSlash, UnappliedSlashOther, UnlockChunk, ValidatorIndex, ValidatorPrefs, ValidatorPrefsTo145, ValidatorPrefsTo196 } from '@polkadot/types/interfaces/staking'; +import { AccountInfo, DigestOf, DispatchError, DispatchErrorModule, DispatchErrorTo198, DispatchResult, DispatchResultOf, DispatchResultTo198, Event, EventId, EventIndex, EventRecord, EventRecordTo76, Key, Phase, RefCount } from '@polkadot/types/interfaces/system'; +import { OpenTip, OpenTipFinder, OpenTipTip, TreasuryProposal } from '@polkadot/types/interfaces/treasury'; +import { Balance2 } from 'sample-polkadotjs-typegen/interfaces/treasuryRewards'; +import { Multiplier } from '@polkadot/types/interfaces/txpayment'; +import { Multisig, Timepoint } from '@polkadot/types/interfaces/utility'; +import { VestingInfo } from '@polkadot/types/interfaces/vesting'; +import { Commitments, Reveals, Tally, TallyType, VoteData, VoteOutcome, VoteRecord, VoteStage, VoteType } from 'sample-polkadotjs-typegen/interfaces/voting'; + +declare module '@polkadot/types/types/registry' { + export interface InterfaceTypes { + BitVec: BitVec; + 'Option': Option; + 'Vec': Vec; + bool: bool; + 'Option': Option; + 'Vec': Vec; + Bytes: Bytes; + 'Option': Option; + 'Vec': Vec; + Data: Data; + 'Option': Option; + 'Vec': Vec; + i8: i8; + 'Option': Option; + 'Vec': Vec; + i16: i16; + 'Option': Option; + 'Vec': Vec; + i32: i32; + 'Option': Option; + 'Vec': Vec; + i64: i64; + 'Option': Option; + 'Vec': Vec; + i128: i128; + 'Option': Option; + 'Vec': Vec; + i256: i256; + 'Option': Option; + 'Vec': Vec; + Null: Null; + 'Option': Option; + 'Vec': Vec; + StorageKey: StorageKey; + 'Option': Option; + 'Vec': Vec; + Text: Text; + 'Option': Option; + 'Vec': Vec; + Type: Type; + 'Option': Option; + 'Vec': Vec; + u8: u8; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + u16: u16; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + u32: u32; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + u64: u64; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + u128: u128; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + u256: u256; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + U256: U256; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + Unconstructable: Unconstructable; + 'Option': Option; + 'Vec': Vec; + usize: usize; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + Raw: Raw; + 'Option': Option; + 'Vec': Vec; + AccountId: AccountId; + 'Option': Option; + 'Vec': Vec; + AccountIdOf: AccountIdOf; + 'Option': Option; + 'Vec': Vec; + AccountIndex: AccountIndex; + 'Option': Option; + 'Vec': Vec; + Address: Address; + 'Option
': Option
; + 'Vec
': Vec
; + AssetId: AssetId; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + Balance: Balance; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + BalanceOf: BalanceOf; + 'Option': Option; + 'Vec': Vec; + Block: Block; + 'Option': Option; + 'Vec': Vec; + BlockNumber: BlockNumber; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + Call: Call; + 'Option': Option; + 'Vec': Vec; + ChangesTrieConfiguration: ChangesTrieConfiguration; + 'Option': Option; + 'Vec': Vec; + ConsensusEngineId: ConsensusEngineId; + 'Option': Option; + 'Vec': Vec; + Digest: Digest; + 'Option': Option; + 'Vec': Vec; + DigestItem: DigestItem; + 'Option': Option; + 'Vec': Vec; + DispatchClass: DispatchClass; + 'Option': Option; + 'Vec': Vec; + DispatchInfo: DispatchInfo; + 'Option': Option; + 'Vec': Vec; + DispatchInfoTo190: DispatchInfoTo190; + 'Option': Option; + 'Vec': Vec; + Fixed64: Fixed64; + 'Option': Option; + 'Vec': Vec; + H160: H160; + 'Option': Option; + 'Vec': Vec; + H256: H256; + 'Option': Option; + 'Vec': Vec; + H512: H512; + 'Option': Option; + 'Vec': Vec; + Hash: Hash; + 'Option': Option; + 'Vec': Vec; + Header: Header; + 'Option
': Option
; + 'Vec
': Vec
; + Index: Index; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + Justification: Justification; + 'Option': Option; + 'Vec': Vec; + KeyValue: KeyValue; + 'Option': Option; + 'Vec': Vec; + KeyTypeId: KeyTypeId; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + LockIdentifier: LockIdentifier; + 'Option': Option; + 'Vec': Vec; + LookupSource: LookupSource; + 'Option': Option; + 'Vec': Vec; + LookupTarget: LookupTarget; + 'Option': Option; + 'Vec': Vec; + Moment: Moment; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + Origin: Origin; + 'Option': Option; + 'Vec': Vec; + Perbill: Perbill; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + Percent: Percent; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + Permill: Permill; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + Perquintill: Perquintill; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + Phantom: Phantom; + 'Option': Option; + 'Vec': Vec; + PhantomData: PhantomData; + 'Option': Option; + 'Vec': Vec; + SignedBlock: SignedBlock; + 'Option': Option; + 'Vec': Vec; + StorageData: StorageData; + 'Option': Option; + 'Vec': Vec; + ValidatorId: ValidatorId; + 'Option': Option; + 'Vec': Vec; + Weight: Weight; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + WeightMultiplier: WeightMultiplier; + 'Option': Option; + 'Vec': Vec; + PreRuntime: PreRuntime; + 'Option': Option; + 'Vec': Vec; + SealV0: SealV0; + 'Option': Option; + 'Vec': Vec; + Seal: Seal; + 'Option': Option; + 'Vec': Vec; + Consensus: Consensus; + 'Option': Option; + 'Vec': Vec; + InclusionHeight: InclusionHeight; + 'Option': Option; + 'Vec': Vec; + Uncle: Uncle; + 'Option': Option; + 'Vec': Vec; + UncleEntryItem: UncleEntryItem; + 'Option': Option; + 'Vec': Vec; + RawAuraPreDigest: RawAuraPreDigest; + 'Option': Option; + 'Vec': Vec; + BabeAuthorityWeight: BabeAuthorityWeight; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + BabeBlockWeight: BabeBlockWeight; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + MaybeVrf: MaybeVrf; + 'Option': Option; + 'Vec': Vec; + BabeWeight: BabeWeight; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + RawBabePreDigest: RawBabePreDigest; + 'Option': Option; + 'Vec': Vec; + RawBabePreDigestPrimary: RawBabePreDigestPrimary; + 'Option': Option; + 'Vec': Vec; + RawBabePreDigestSecondary: RawBabePreDigestSecondary; + 'Option': Option; + 'Vec': Vec; + RawBabePreDigestTo159: RawBabePreDigestTo159; + 'Option': Option; + 'Vec': Vec; + RawBabePreDigestPrimaryTo159: RawBabePreDigestPrimaryTo159; + 'Option': Option; + 'Vec': Vec; + RawBabePreDigestSecondaryTo159: RawBabePreDigestSecondaryTo159; + 'Option': Option; + 'Vec': Vec; + RawBabePreDigestCompat: RawBabePreDigestCompat; + 'Option': Option; + 'Vec': Vec; + SlotNumber: SlotNumber; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + VrfData: VrfData; + 'Option': Option; + 'Vec': Vec; + VrfProof: VrfProof; + 'Option': Option; + 'Vec': Vec; + AccountData: AccountData; + 'Option': Option; + 'Vec': Vec; + BalanceLockTo212: BalanceLockTo212; + 'Option': Option; + 'Vec': Vec; + BalanceLock: BalanceLock; + 'Option': Option; + 'Vec': Vec; + Reasons: Reasons; + 'Option': Option; + 'Vec': Vec; + VestingSchedule: VestingSchedule; + 'Option': Option; + 'Vec': Vec; + WithdrawReasons: WithdrawReasons; + 'Option': Option; + 'Vec': Vec; + MemberCount: MemberCount; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + ProposalIndex: ProposalIndex; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + Votes: Votes; + 'Option': Option; + 'Vec': Vec; + AuthorityId: AuthorityId; + 'Option': Option; + 'Vec': Vec; + AliveContractInfo: AliveContractInfo; + 'Option': Option; + 'Vec': Vec; + CodeHash: CodeHash; + 'Option': Option; + 'Vec': Vec; + ContractCallRequest: ContractCallRequest; + 'Option': Option; + 'Vec': Vec; + ContractExecResultSuccess: ContractExecResultSuccess; + 'Option': Option; + 'Vec': Vec; + ContractExecResult: ContractExecResult; + 'Option': Option; + 'Vec': Vec; + ContractInfo: ContractInfo; + 'Option': Option; + 'Vec': Vec; + ContractStorageKey: ContractStorageKey; + 'Option': Option; + 'Vec': Vec; + Gas: Gas; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + PrefabWasmModule: PrefabWasmModule; + 'Option': Option; + 'Vec': Vec; + PrefabWasmModuleReserved: PrefabWasmModuleReserved; + 'Option': Option; + 'Vec': Vec; + ScheduleTo212: ScheduleTo212; + 'Option': Option; + 'Vec': Vec; + Schedule: Schedule; + 'Option': Option; + 'Vec': Vec; + SeedOf: SeedOf; + 'Option': Option; + 'Vec': Vec; + TombstoneContractInfo: TombstoneContractInfo; + 'Option': Option; + 'Vec': Vec; + TrieId: TrieId; + 'Option': Option; + 'Vec': Vec; + Conviction: Conviction; + 'Option': Option; + 'Vec': Vec; + PropIndex: PropIndex; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + Proposal: Proposal; + 'Option': Option; + 'Vec': Vec; + ProxyState: ProxyState; + 'Option': Option; + 'Vec': Vec; + ReferendumIndex: ReferendumIndex; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + ReferendumInfo: ReferendumInfo; + 'Option': Option; + 'Vec': Vec; + ApprovalFlag: ApprovalFlag; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + SetIndex: SetIndex; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + Vote: Vote; + 'Option': Option; + 'Vec': Vec; + VoteIndex: VoteIndex; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + VoterInfo: VoterInfo; + 'Option': Option; + 'Vec': Vec; + VoteThreshold: VoteThreshold; + 'Option': Option; + 'Vec': Vec; + CreatedBlock: CreatedBlock; + 'Option': Option; + 'Vec': Vec; + ImportedAux: ImportedAux; + 'Option': Option; + 'Vec': Vec; + Account: Account; + 'Option': Option; + 'Vec': Vec; + Log: Log; + 'Option': Option; + 'Vec': Vec; + Extrinsic: Extrinsic; + 'Option': Option; + 'Vec': Vec; + ExtrinsicEra: ExtrinsicEra; + 'Option': Option; + 'Vec': Vec; + ExtrinsicPayload: ExtrinsicPayload; + 'Option': Option; + 'Vec': Vec; + ExtrinsicV1: ExtrinsicV1; + 'Option': Option; + 'Vec': Vec; + ExtrinsicPayloadV1: ExtrinsicPayloadV1; + 'Option': Option; + 'Vec': Vec; + ExtrinsicSignatureV1: ExtrinsicSignatureV1; + 'Option': Option; + 'Vec': Vec; + ExtrinsicV2: ExtrinsicV2; + 'Option': Option; + 'Vec': Vec; + ExtrinsicPayloadV2: ExtrinsicPayloadV2; + 'Option': Option; + 'Vec': Vec; + ExtrinsicSignatureV2: ExtrinsicSignatureV2; + 'Option': Option; + 'Vec': Vec; + ExtrinsicV3: ExtrinsicV3; + 'Option': Option; + 'Vec': Vec; + ExtrinsicPayloadV3: ExtrinsicPayloadV3; + 'Option': Option; + 'Vec': Vec; + ExtrinsicSignatureV3: ExtrinsicSignatureV3; + 'Option': Option; + 'Vec': Vec; + ExtrinsicV4: ExtrinsicV4; + 'Option': Option; + 'Vec': Vec; + ExtrinsicPayloadV4: ExtrinsicPayloadV4; + 'Option': Option; + 'Vec': Vec; + ExtrinsicSignatureV4: ExtrinsicSignatureV4; + 'Option': Option; + 'Vec': Vec; + ExtrinsicUnknown: ExtrinsicUnknown; + 'Option': Option; + 'Vec': Vec; + ExtrinsicPayloadUnknown: ExtrinsicPayloadUnknown; + 'Option': Option; + 'Vec': Vec; + ImmortalEra: ImmortalEra; + 'Option': Option; + 'Vec': Vec; + MortalEra: MortalEra; + 'Option': Option; + 'Vec': Vec; + MultiSignature: MultiSignature; + 'Option': Option; + 'Vec': Vec; + Signature: Signature; + 'Option': Option; + 'Vec': Vec; + SignerPayload: SignerPayload; + 'Option': Option; + 'Vec': Vec; + EcdsaSignature: EcdsaSignature; + 'Option': Option; + 'Vec': Vec; + Ed25519Signature: Ed25519Signature; + 'Option': Option; + 'Vec': Vec; + Sr25519Signature: Sr25519Signature; + 'Option': Option; + 'Vec': Vec; + AssetOptions: AssetOptions; + 'Option': Option; + 'Vec': Vec; + Owner: Owner; + 'Option': Option; + 'Vec': Vec; + PermissionsV1: PermissionsV1; + 'Option': Option; + 'Vec': Vec; + PermissionVersions: PermissionVersions; + 'Option': Option; + 'Vec': Vec; + PermissionLatest: PermissionLatest; + 'Option': Option; + 'Vec': Vec; + AuthorityIndex: AuthorityIndex; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + AuthorityList: AuthorityList; + 'Option': Option; + 'Vec': Vec; + AuthorityWeight: AuthorityWeight; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + NextAuthority: NextAuthority; + 'Option': Option; + 'Vec': Vec; + PendingPause: PendingPause; + 'Option': Option; + 'Vec': Vec; + PendingResume: PendingResume; + 'Option': Option; + 'Vec': Vec; + SetId: SetId; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + StoredPendingChange: StoredPendingChange; + 'Option': Option; + 'Vec': Vec; + StoredState: StoredState; + 'Option': Option; + 'Vec': Vec; + IdentityFields: IdentityFields; + 'Option': Option; + 'Vec': Vec; + IdentityInfoAdditional: IdentityInfoAdditional; + 'Option': Option; + 'Vec': Vec; + IdentityInfo: IdentityInfo; + 'Option': Option; + 'Vec': Vec; + IdentityJudgement: IdentityJudgement; + 'Option': Option; + 'Vec': Vec; + RegistrationJudgement: RegistrationJudgement; + 'Option': Option; + 'Vec': Vec; + Registration: Registration; + 'Option': Option; + 'Vec': Vec; + RegistrarIndex: RegistrarIndex; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + RegistrarInfo: RegistrarInfo; + 'Option': Option; + 'Vec': Vec; + AuthIndex: AuthIndex; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + AuthoritySignature: AuthoritySignature; + 'Option': Option; + 'Vec': Vec; + Heartbeat: Heartbeat; + 'Option': Option; + 'Vec': Vec; + OpaqueMultiaddr: OpaqueMultiaddr; + 'Option': Option; + 'Vec': Vec; + OpaquePeerId: OpaquePeerId; + 'Option': Option; + 'Vec': Vec; + OpaqueNetworkState: OpaqueNetworkState; + 'Option': Option; + 'Vec': Vec; + Kind: Kind; + 'Option': Option; + 'Vec': Vec; + OffenceDetails: OffenceDetails; + 'Option': Option; + 'Vec': Vec; + Offender: Offender; + 'Option': Option; + 'Vec': Vec; + OpaqueTimeSlot: OpaqueTimeSlot; + 'Option': Option; + 'Vec': Vec; + ReportIdOf: ReportIdOf; + 'Option': Option; + 'Vec': Vec; + Reporter: Reporter; + 'Option': Option; + 'Vec': Vec; + ActiveRecovery: ActiveRecovery; + 'Option': Option; + 'Vec': Vec; + RecoveryConfig: RecoveryConfig; + 'Option': Option; + 'Vec': Vec; + Keys: Keys; + 'Option': Option; + 'Vec': Vec; + SessionKeys1: SessionKeys1; + 'Option': Option; + 'Vec': Vec; + SessionKeys2: SessionKeys2; + 'Option': Option; + 'Vec': Vec; + SessionKeys3: SessionKeys3; + 'Option': Option; + 'Vec': Vec; + SessionKeys4: SessionKeys4; + 'Option': Option; + 'Vec': Vec; + SessionKeys5: SessionKeys5; + 'Option': Option; + 'Vec': Vec; + SessionKeys6: SessionKeys6; + 'Option': Option; + 'Vec': Vec; + FullIdentification: FullIdentification; + 'Option': Option; + 'Vec': Vec; + IdentificationTuple: IdentificationTuple; + 'Option': Option; + 'Vec': Vec; + SessionIndex: SessionIndex; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + Bid: Bid; + 'Option': Option; + 'Vec': Vec; + BidKindVouch: BidKindVouch; + 'Option': Option; + 'Vec': Vec; + BidKind: BidKind; + 'Option': Option; + 'Vec': Vec; + SocietyJudgement: SocietyJudgement; + 'Option': Option; + 'Vec': Vec; + SocietyVote: SocietyVote; + 'Option': Option; + 'Vec': Vec; + StrikeCount: StrikeCount; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + VouchingStatus: VouchingStatus; + 'Option': Option; + 'Vec': Vec; + Points: Points; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + EraPoints: EraPoints; + 'Option': Option; + 'Vec': Vec; + CompactAssignments: CompactAssignments; + 'Option': Option; + 'Vec': Vec; + CompactScore: CompactScore; + 'Option': Option; + 'Vec': Vec; + ElectionCompute: ElectionCompute; + 'Option': Option; + 'Vec': Vec; + ElectionResult: ElectionResult; + 'Option': Option; + 'Vec': Vec; + ElectionStatus: ElectionStatus; + 'Option': Option; + 'Vec': Vec; + EraIndex: EraIndex; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + EraRewardPoints: EraRewardPoints; + 'Option': Option; + 'Vec': Vec; + EraRewards: EraRewards; + 'Option': Option; + 'Vec': Vec; + Exposure: Exposure; + 'Option': Option; + 'Vec': Vec; + Forcing: Forcing; + 'Option': Option; + 'Vec': Vec; + IndividualExposure: IndividualExposure; + 'Option': Option; + 'Vec': Vec; + KeyType: KeyType; + 'Option': Option; + 'Vec': Vec; + MomentOf: MomentOf; + 'Option': Option; + 'Vec': Vec; + Nominations: Nominations; + 'Option': Option; + 'Vec': Vec; + PhragmenScore: PhragmenScore; + 'Option': Option; + 'Vec': Vec; + RewardDestination: RewardDestination; + 'Option': Option; + 'Vec': Vec; + RewardPoint: RewardPoint; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + SlashJournalEntry: SlashJournalEntry; + 'Option': Option; + 'Vec': Vec; + SlashingSpansTo204: SlashingSpansTo204; + 'Option': Option; + 'Vec': Vec; + SlashingSpans: SlashingSpans; + 'Option': Option; + 'Vec': Vec; + SpanIndex: SpanIndex; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + SpanRecord: SpanRecord; + 'Option': Option; + 'Vec': Vec; + StakingLedgerTo223: StakingLedgerTo223; + 'Option': Option; + 'Vec': Vec; + StakingLedgerNew: StakingLedgerNew; + 'Option': Option; + 'Vec': Vec; + StakingLedger: StakingLedger; + 'Option': Option; + 'Vec': Vec; + UnappliedSlashOther: UnappliedSlashOther; + 'Option': Option; + 'Vec': Vec; + UnappliedSlash: UnappliedSlash; + 'Option': Option; + 'Vec': Vec; + UnlockChunk: UnlockChunk; + 'Option': Option; + 'Vec': Vec; + ValidatorIndex: ValidatorIndex; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + ValidatorPrefs: ValidatorPrefs; + 'Option': Option; + 'Vec': Vec; + ValidatorPrefsTo196: ValidatorPrefsTo196; + 'Option': Option; + 'Vec': Vec; + ValidatorPrefsTo145: ValidatorPrefsTo145; + 'Option': Option; + 'Vec': Vec; + AccountInfo: AccountInfo; + 'Option': Option; + 'Vec': Vec; + DigestOf: DigestOf; + 'Option': Option; + 'Vec': Vec; + DispatchError: DispatchError; + 'Option': Option; + 'Vec': Vec; + DispatchErrorModule: DispatchErrorModule; + 'Option': Option; + 'Vec': Vec; + DispatchErrorTo198: DispatchErrorTo198; + 'Option': Option; + 'Vec': Vec; + DispatchResult: DispatchResult; + 'Option': Option; + 'Vec': Vec; + DispatchResultOf: DispatchResultOf; + 'Option': Option; + 'Vec': Vec; + DispatchResultTo198: DispatchResultTo198; + 'Option': Option; + 'Vec': Vec; + Event: Event; + 'Option': Option; + 'Vec': Vec; + EventId: EventId; + 'Option': Option; + 'Vec': Vec; + EventIndex: EventIndex; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + EventRecord: EventRecord; + 'Option': Option; + 'Vec': Vec; + EventRecordTo76: EventRecordTo76; + 'Option': Option; + 'Vec': Vec; + Key: Key; + 'Option': Option; + 'Vec': Vec; + Phase: Phase; + 'Option': Option; + 'Vec': Vec; + RefCount: RefCount; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + OpenTipFinder: OpenTipFinder; + 'Option': Option; + 'Vec': Vec; + OpenTipTip: OpenTipTip; + 'Option': Option; + 'Vec': Vec; + OpenTip: OpenTip; + 'Option': Option; + 'Vec': Vec; + TreasuryProposal: TreasuryProposal; + 'Option': Option; + 'Vec': Vec; + Multiplier: Multiplier; + 'Option': Option; + 'Vec': Vec; + Timepoint: Timepoint; + 'Option': Option; + 'Vec': Vec; + Multisig: Multisig; + 'Option': Option; + 'Vec': Vec; + VestingInfo: VestingInfo; + 'Option': Option; + 'Vec': Vec; + BlockAttestations: BlockAttestations; + 'Option': Option; + 'Vec': Vec; + IncludedBlocks: IncludedBlocks; + 'Option': Option; + 'Vec': Vec; + MoreAttestations: MoreAttestations; + 'Option': Option; + 'Vec': Vec; + EthereumAddress: EthereumAddress; + 'Option': Option; + 'Vec': Vec; + AttestedCandidate: AttestedCandidate; + 'Option': Option; + 'Vec': Vec; + AuctionIndex: AuctionIndex; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + Bidder: Bidder; + 'Option': Option; + 'Vec': Vec; + CandidateReceipt: CandidateReceipt; + 'Option': Option; + 'Vec': Vec; + CollatorId: CollatorId; + 'Option': Option; + 'Vec': Vec; + CollatorSignature: CollatorSignature; + 'Option': Option; + 'Vec': Vec; + EgressQueueRoot: EgressQueueRoot; + 'Option': Option; + 'Vec': Vec; + HeadData: HeadData; + 'Option': Option; + 'Vec': Vec; + IncomingParachainDeploy: IncomingParachainDeploy; + 'Option': Option; + 'Vec': Vec; + IncomingParachainFixed: IncomingParachainFixed; + 'Option': Option; + 'Vec': Vec; + IncomingParachain: IncomingParachain; + 'Option': Option; + 'Vec': Vec; + LeasePeriod: LeasePeriod; + 'Option': Option; + 'Vec': Vec; + LeasePeriodOf: LeasePeriodOf; + 'Option': Option; + 'Vec': Vec; + NewBidder: NewBidder; + 'Option': Option; + 'Vec': Vec; + ParaId: ParaId; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + ParaIdOf: ParaIdOf; + 'Option': Option; + 'Vec': Vec; + ParaInfo: ParaInfo; + 'Option': Option; + 'Vec': Vec; + ParachainDispatchOrigin: ParachainDispatchOrigin; + 'Option': Option; + 'Vec': Vec; + ParaScheduling: ParaScheduling; + 'Option': Option; + 'Vec': Vec; + Retriable: Retriable; + 'Option': Option; + 'Vec': Vec; + SlotRange: SlotRange; + 'Option': Option; + 'Vec': Vec; + SubId: SubId; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + UpwardMessage: UpwardMessage; + 'Option': Option; + 'Vec': Vec; + ValidityAttestation: ValidityAttestation; + 'Option': Option; + 'Vec': Vec; + WinningDataEntry: WinningDataEntry; + 'Option': Option; + 'Vec': Vec; + WinningData: WinningData; + 'Option': Option; + 'Vec': Vec; + CallMetadataV0: CallMetadataV0; + 'Option': Option; + 'Vec': Vec; + EventMetadataV0: EventMetadataV0; + 'Option': Option; + 'Vec': Vec; + FunctionArgumentMetadataV0: FunctionArgumentMetadataV0; + 'Option': Option; + 'Vec': Vec; + FunctionMetadataV0: FunctionMetadataV0; + 'Option': Option; + 'Vec': Vec; + MapTypeV0: MapTypeV0; + 'Option': Option; + 'Vec': Vec; + MetadataV0: MetadataV0; + 'Option': Option; + 'Vec': Vec; + ModuleMetadataV0: ModuleMetadataV0; + 'Option': Option; + 'Vec': Vec; + OuterDispatchCallV0: OuterDispatchCallV0; + 'Option': Option; + 'Vec': Vec; + OuterDispatchMetadataV0: OuterDispatchMetadataV0; + 'Option': Option; + 'Vec': Vec; + OuterEventEventMetadataEventsV0: OuterEventEventMetadataEventsV0; + 'Option': Option; + 'Vec': Vec; + OuterEventEventMetadataV0: OuterEventEventMetadataV0; + 'Option': Option; + 'Vec': Vec; + OuterEventMetadataV0: OuterEventMetadataV0; + 'Option': Option; + 'Vec': Vec; + PlainTypeV0: PlainTypeV0; + 'Option': Option; + 'Vec': Vec; + RuntimeModuleMetadataV0: RuntimeModuleMetadataV0; + 'Option': Option; + 'Vec': Vec; + StorageFunctionMetadataV0: StorageFunctionMetadataV0; + 'Option': Option; + 'Vec': Vec; + StorageFunctionModifierV0: StorageFunctionModifierV0; + 'Option': Option; + 'Vec': Vec; + StorageFunctionTypeV0: StorageFunctionTypeV0; + 'Option': Option; + 'Vec': Vec; + StorageMetadataV0: StorageMetadataV0; + 'Option': Option; + 'Vec': Vec; + EventMetadataV1: EventMetadataV1; + 'Option': Option; + 'Vec': Vec; + FunctionArgumentMetadataV1: FunctionArgumentMetadataV1; + 'Option': Option; + 'Vec': Vec; + FunctionMetadataV1: FunctionMetadataV1; + 'Option': Option; + 'Vec': Vec; + MetadataV1: MetadataV1; + 'Option': Option; + 'Vec': Vec; + ModuleMetadataV1: ModuleMetadataV1; + 'Option': Option; + 'Vec': Vec; + StorageFunctionMetadataV1: StorageFunctionMetadataV1; + 'Option': Option; + 'Vec': Vec; + StorageFunctionModifierV1: StorageFunctionModifierV1; + 'Option': Option; + 'Vec': Vec; + StorageFunctionTypeV1: StorageFunctionTypeV1; + 'Option': Option; + 'Vec': Vec; + EventMetadataV2: EventMetadataV2; + 'Option': Option; + 'Vec': Vec; + FunctionArgumentMetadataV2: FunctionArgumentMetadataV2; + 'Option': Option; + 'Vec': Vec; + FunctionMetadataV2: FunctionMetadataV2; + 'Option': Option; + 'Vec': Vec; + MapTypeV2: MapTypeV2; + 'Option': Option; + 'Vec': Vec; + MetadataV2: MetadataV2; + 'Option': Option; + 'Vec': Vec; + ModuleMetadataV2: ModuleMetadataV2; + 'Option': Option; + 'Vec': Vec; + PlainTypeV2: PlainTypeV2; + 'Option': Option; + 'Vec': Vec; + StorageFunctionMetadataV2: StorageFunctionMetadataV2; + 'Option': Option; + 'Vec': Vec; + StorageFunctionModifierV2: StorageFunctionModifierV2; + 'Option': Option; + 'Vec': Vec; + StorageFunctionTypeV2: StorageFunctionTypeV2; + 'Option': Option; + 'Vec': Vec; + DoubleMapTypeV3: DoubleMapTypeV3; + 'Option': Option; + 'Vec': Vec; + EventMetadataV3: EventMetadataV3; + 'Option': Option; + 'Vec': Vec; + FunctionArgumentMetadataV3: FunctionArgumentMetadataV3; + 'Option': Option; + 'Vec': Vec; + FunctionMetadataV3: FunctionMetadataV3; + 'Option': Option; + 'Vec': Vec; + MapTypeV3: MapTypeV3; + 'Option': Option; + 'Vec': Vec; + MetadataV3: MetadataV3; + 'Option': Option; + 'Vec': Vec; + ModuleMetadataV3: ModuleMetadataV3; + 'Option': Option; + 'Vec': Vec; + PlainTypeV3: PlainTypeV3; + 'Option': Option; + 'Vec': Vec; + StorageFunctionMetadataV3: StorageFunctionMetadataV3; + 'Option': Option; + 'Vec': Vec; + StorageFunctionModifierV3: StorageFunctionModifierV3; + 'Option': Option; + 'Vec': Vec; + StorageFunctionTypeV3: StorageFunctionTypeV3; + 'Option': Option; + 'Vec': Vec; + DoubleMapTypeV4: DoubleMapTypeV4; + 'Option': Option; + 'Vec': Vec; + EventMetadataV4: EventMetadataV4; + 'Option': Option; + 'Vec': Vec; + FunctionArgumentMetadataV4: FunctionArgumentMetadataV4; + 'Option': Option; + 'Vec': Vec; + FunctionMetadataV4: FunctionMetadataV4; + 'Option': Option; + 'Vec': Vec; + MapTypeV4: MapTypeV4; + 'Option': Option; + 'Vec': Vec; + MetadataV4: MetadataV4; + 'Option': Option; + 'Vec': Vec; + ModuleMetadataV4: ModuleMetadataV4; + 'Option': Option; + 'Vec': Vec; + PlainTypeV4: PlainTypeV4; + 'Option': Option; + 'Vec': Vec; + StorageFunctionMetadataV4: StorageFunctionMetadataV4; + 'Option': Option; + 'Vec': Vec; + StorageFunctionModifierV4: StorageFunctionModifierV4; + 'Option': Option; + 'Vec': Vec; + StorageFunctionTypeV4: StorageFunctionTypeV4; + 'Option': Option; + 'Vec': Vec; + StorageHasherV4: StorageHasherV4; + 'Option': Option; + 'Vec': Vec; + DoubleMapTypeV5: DoubleMapTypeV5; + 'Option': Option; + 'Vec': Vec; + EventMetadataV5: EventMetadataV5; + 'Option': Option; + 'Vec': Vec; + FunctionArgumentMetadataV5: FunctionArgumentMetadataV5; + 'Option': Option; + 'Vec': Vec; + FunctionMetadataV5: FunctionMetadataV5; + 'Option': Option; + 'Vec': Vec; + MapTypeV5: MapTypeV5; + 'Option': Option; + 'Vec': Vec; + MetadataV5: MetadataV5; + 'Option': Option; + 'Vec': Vec; + ModuleMetadataV5: ModuleMetadataV5; + 'Option': Option; + 'Vec': Vec; + PlainTypeV5: PlainTypeV5; + 'Option': Option; + 'Vec': Vec; + StorageFunctionMetadataV5: StorageFunctionMetadataV5; + 'Option': Option; + 'Vec': Vec; + StorageFunctionModifierV5: StorageFunctionModifierV5; + 'Option': Option; + 'Vec': Vec; + StorageFunctionTypeV5: StorageFunctionTypeV5; + 'Option': Option; + 'Vec': Vec; + StorageHasherV5: StorageHasherV5; + 'Option': Option; + 'Vec': Vec; + DoubleMapTypeV6: DoubleMapTypeV6; + 'Option': Option; + 'Vec': Vec; + EventMetadataV6: EventMetadataV6; + 'Option': Option; + 'Vec': Vec; + FunctionArgumentMetadataV6: FunctionArgumentMetadataV6; + 'Option': Option; + 'Vec': Vec; + FunctionMetadataV6: FunctionMetadataV6; + 'Option': Option; + 'Vec': Vec; + MapTypeV6: MapTypeV6; + 'Option': Option; + 'Vec': Vec; + MetadataV6: MetadataV6; + 'Option': Option; + 'Vec': Vec; + ModuleConstantMetadataV6: ModuleConstantMetadataV6; + 'Option': Option; + 'Vec': Vec; + ModuleMetadataV6: ModuleMetadataV6; + 'Option': Option; + 'Vec': Vec; + PlainTypeV6: PlainTypeV6; + 'Option': Option; + 'Vec': Vec; + StorageEntryModifierV6: StorageEntryModifierV6; + 'Option': Option; + 'Vec': Vec; + StorageEntryMetadataV6: StorageEntryMetadataV6; + 'Option': Option; + 'Vec': Vec; + StorageEntryTypeV6: StorageEntryTypeV6; + 'Option': Option; + 'Vec': Vec; + StorageHasherV6: StorageHasherV6; + 'Option': Option; + 'Vec': Vec; + DoubleMapTypeV7: DoubleMapTypeV7; + 'Option': Option; + 'Vec': Vec; + EventMetadataV7: EventMetadataV7; + 'Option': Option; + 'Vec': Vec; + FunctionArgumentMetadataV7: FunctionArgumentMetadataV7; + 'Option': Option; + 'Vec': Vec; + FunctionMetadataV7: FunctionMetadataV7; + 'Option': Option; + 'Vec': Vec; + MapTypeV7: MapTypeV7; + 'Option': Option; + 'Vec': Vec; + MetadataV7: MetadataV7; + 'Option': Option; + 'Vec': Vec; + ModuleConstantMetadataV7: ModuleConstantMetadataV7; + 'Option': Option; + 'Vec': Vec; + ModuleMetadataV7: ModuleMetadataV7; + 'Option': Option; + 'Vec': Vec; + PlainTypeV7: PlainTypeV7; + 'Option': Option; + 'Vec': Vec; + StorageEntryModifierV7: StorageEntryModifierV7; + 'Option': Option; + 'Vec': Vec; + StorageEntryMetadataV7: StorageEntryMetadataV7; + 'Option': Option; + 'Vec': Vec; + StorageEntryTypeV7: StorageEntryTypeV7; + 'Option': Option; + 'Vec': Vec; + StorageHasherV7: StorageHasherV7; + 'Option': Option; + 'Vec': Vec; + StorageMetadataV7: StorageMetadataV7; + 'Option': Option; + 'Vec': Vec; + DoubleMapTypeV8: DoubleMapTypeV8; + 'Option': Option; + 'Vec': Vec; + ErrorMetadataV8: ErrorMetadataV8; + 'Option': Option; + 'Vec': Vec; + EventMetadataV8: EventMetadataV8; + 'Option': Option; + 'Vec': Vec; + FunctionArgumentMetadataV8: FunctionArgumentMetadataV8; + 'Option': Option; + 'Vec': Vec; + FunctionMetadataV8: FunctionMetadataV8; + 'Option': Option; + 'Vec': Vec; + MapTypeV8: MapTypeV8; + 'Option': Option; + 'Vec': Vec; + MetadataV8: MetadataV8; + 'Option': Option; + 'Vec': Vec; + ModuleConstantMetadataV8: ModuleConstantMetadataV8; + 'Option': Option; + 'Vec': Vec; + ModuleMetadataV8: ModuleMetadataV8; + 'Option': Option; + 'Vec': Vec; + PlainTypeV8: PlainTypeV8; + 'Option': Option; + 'Vec': Vec; + StorageEntryModifierV8: StorageEntryModifierV8; + 'Option': Option; + 'Vec': Vec; + StorageEntryMetadataV8: StorageEntryMetadataV8; + 'Option': Option; + 'Vec': Vec; + StorageEntryTypeV8: StorageEntryTypeV8; + 'Option': Option; + 'Vec': Vec; + StorageHasherV8: StorageHasherV8; + 'Option': Option; + 'Vec': Vec; + StorageMetadataV8: StorageMetadataV8; + 'Option': Option; + 'Vec': Vec; + DoubleMapTypeV9: DoubleMapTypeV9; + 'Option': Option; + 'Vec': Vec; + ErrorMetadataV9: ErrorMetadataV9; + 'Option': Option; + 'Vec': Vec; + EventMetadataV9: EventMetadataV9; + 'Option': Option; + 'Vec': Vec; + FunctionArgumentMetadataV9: FunctionArgumentMetadataV9; + 'Option': Option; + 'Vec': Vec; + FunctionMetadataV9: FunctionMetadataV9; + 'Option': Option; + 'Vec': Vec; + MapTypeV9: MapTypeV9; + 'Option': Option; + 'Vec': Vec; + MetadataV9: MetadataV9; + 'Option': Option; + 'Vec': Vec; + ModuleConstantMetadataV9: ModuleConstantMetadataV9; + 'Option': Option; + 'Vec': Vec; + ModuleMetadataV9: ModuleMetadataV9; + 'Option': Option; + 'Vec': Vec; + PlainTypeV9: PlainTypeV9; + 'Option': Option; + 'Vec': Vec; + StorageEntryModifierV9: StorageEntryModifierV9; + 'Option': Option; + 'Vec': Vec; + StorageEntryMetadataV9: StorageEntryMetadataV9; + 'Option': Option; + 'Vec': Vec; + StorageEntryTypeV9: StorageEntryTypeV9; + 'Option': Option; + 'Vec': Vec; + StorageHasherV9: StorageHasherV9; + 'Option': Option; + 'Vec': Vec; + StorageMetadataV9: StorageMetadataV9; + 'Option': Option; + 'Vec': Vec; + DoubleMapTypeV10: DoubleMapTypeV10; + 'Option': Option; + 'Vec': Vec; + ErrorMetadataV10: ErrorMetadataV10; + 'Option': Option; + 'Vec': Vec; + EventMetadataV10: EventMetadataV10; + 'Option': Option; + 'Vec': Vec; + FunctionArgumentMetadataV10: FunctionArgumentMetadataV10; + 'Option': Option; + 'Vec': Vec; + FunctionMetadataV10: FunctionMetadataV10; + 'Option': Option; + 'Vec': Vec; + MapTypeV10: MapTypeV10; + 'Option': Option; + 'Vec': Vec; + MetadataV10: MetadataV10; + 'Option': Option; + 'Vec': Vec; + ModuleConstantMetadataV10: ModuleConstantMetadataV10; + 'Option': Option; + 'Vec': Vec; + ModuleMetadataV10: ModuleMetadataV10; + 'Option': Option; + 'Vec': Vec; + PlainTypeV10: PlainTypeV10; + 'Option': Option; + 'Vec': Vec; + StorageEntryModifierV10: StorageEntryModifierV10; + 'Option': Option; + 'Vec': Vec; + StorageEntryMetadataV10: StorageEntryMetadataV10; + 'Option': Option; + 'Vec': Vec; + StorageEntryTypeV10: StorageEntryTypeV10; + 'Option': Option; + 'Vec': Vec; + StorageMetadataV10: StorageMetadataV10; + 'Option': Option; + 'Vec': Vec; + StorageHasherV10: StorageHasherV10; + 'Option': Option; + 'Vec': Vec; + DoubleMapTypeV11: DoubleMapTypeV11; + 'Option': Option; + 'Vec': Vec; + ErrorMetadataV11: ErrorMetadataV11; + 'Option': Option; + 'Vec': Vec; + EventMetadataV11: EventMetadataV11; + 'Option': Option; + 'Vec': Vec; + ExtrinsicMetadataV11: ExtrinsicMetadataV11; + 'Option': Option; + 'Vec': Vec; + FunctionArgumentMetadataV11: FunctionArgumentMetadataV11; + 'Option': Option; + 'Vec': Vec; + FunctionMetadataV11: FunctionMetadataV11; + 'Option': Option; + 'Vec': Vec; + MapTypeV11: MapTypeV11; + 'Option': Option; + 'Vec': Vec; + MetadataV11: MetadataV11; + 'Option': Option; + 'Vec': Vec; + ModuleConstantMetadataV11: ModuleConstantMetadataV11; + 'Option': Option; + 'Vec': Vec; + ModuleMetadataV11: ModuleMetadataV11; + 'Option': Option; + 'Vec': Vec; + PlainTypeV11: PlainTypeV11; + 'Option': Option; + 'Vec': Vec; + StorageEntryModifierV11: StorageEntryModifierV11; + 'Option': Option; + 'Vec': Vec; + StorageEntryMetadataV11: StorageEntryMetadataV11; + 'Option': Option; + 'Vec': Vec; + StorageEntryTypeV11: StorageEntryTypeV11; + 'Option': Option; + 'Vec': Vec; + StorageMetadataV11: StorageMetadataV11; + 'Option': Option; + 'Vec': Vec; + StorageHasherV11: StorageHasherV11; + 'Option': Option; + 'Vec': Vec; + DoubleMapTypeLatest: DoubleMapTypeLatest; + 'Option': Option; + 'Vec': Vec; + EventMetadataLatest: EventMetadataLatest; + 'Option': Option; + 'Vec': Vec; + ExtrinsicMetadataLatest: ExtrinsicMetadataLatest; + 'Option': Option; + 'Vec': Vec; + FunctionArgumentMetadataLatest: FunctionArgumentMetadataLatest; + 'Option': Option; + 'Vec': Vec; + FunctionMetadataLatest: FunctionMetadataLatest; + 'Option': Option; + 'Vec': Vec; + MapTypeLatest: MapTypeLatest; + 'Option': Option; + 'Vec': Vec; + MetadataLatest: MetadataLatest; + 'Option': Option; + 'Vec': Vec; + ModuleConstantMetadataLatest: ModuleConstantMetadataLatest; + 'Option': Option; + 'Vec': Vec; + ModuleMetadataLatest: ModuleMetadataLatest; + 'Option': Option; + 'Vec': Vec; + PlainTypeLatest: PlainTypeLatest; + 'Option': Option; + 'Vec': Vec; + StorageEntryMetadataLatest: StorageEntryMetadataLatest; + 'Option': Option; + 'Vec': Vec; + StorageEntryModifierLatest: StorageEntryModifierLatest; + 'Option': Option; + 'Vec': Vec; + StorageEntryTypeLatest: StorageEntryTypeLatest; + 'Option': Option; + 'Vec': Vec; + StorageMetadataLatest: StorageMetadataLatest; + 'Option': Option; + 'Vec': Vec; + StorageHasher: StorageHasher; + 'Option': Option; + 'Vec': Vec; + MetadataAll: MetadataAll; + 'Option': Option; + 'Vec': Vec; + ApiId: ApiId; + 'Option': Option; + 'Vec': Vec; + BlockHash: BlockHash; + 'Option': Option; + 'Vec': Vec; + ChainProperties: ChainProperties; + 'Option': Option; + 'Vec': Vec; + ExtrinsicOrHash: ExtrinsicOrHash; + 'Option': Option; + 'Vec': Vec; + ExtrinsicStatus: ExtrinsicStatus; + 'Option': Option; + 'Vec': Vec; + Health: Health; + 'Option': Option; + 'Vec': Vec; + KeyValueOption: KeyValueOption; + 'Option': Option; + 'Vec': Vec; + NetworkState: NetworkState; + 'Option': Option; + 'Vec': Vec; + PeerInfo: PeerInfo; + 'Option': Option; + 'Vec': Vec; + RpcMethods: RpcMethods; + 'Option': Option; + 'Vec': Vec; + RuntimeDispatchInfo: RuntimeDispatchInfo; + 'Option': Option; + 'Vec': Vec; + RuntimeVersionApi: RuntimeVersionApi; + 'Option': Option; + 'Vec': Vec; + RuntimeVersion: RuntimeVersion; + 'Option': Option; + 'Vec': Vec; + StorageChangeSet: StorageChangeSet; + 'Option': Option; + 'Vec': Vec; + ProposalRecord: ProposalRecord; + 'Option': Option; + 'Vec': Vec; + ProposalContents: ProposalContents; + 'Option': Option; + 'Vec': Vec; + ProposalTitle: ProposalTitle; + 'Option': Option; + 'Vec': Vec; + Balance2: Balance2; + 'Compact': Compact; + 'Option': Option; + 'Vec': Vec; + VoteStage: VoteStage; + 'Option': Option; + 'Vec': Vec; + VoteType: VoteType; + 'Option': Option; + 'Vec': Vec; + TallyType: TallyType; + 'Option': Option; + 'Vec': Vec; + VoteOutcome: VoteOutcome; + 'Option': Option; + 'Vec': Vec; + Tally: Tally; + 'Option': Option; + 'Vec': Vec; + VoteData: VoteData; + 'Option': Option; + 'Vec': Vec; + Commitments: Commitments; + 'Option': Option; + 'Vec': Vec; + Reveals: Reveals; + 'Option': Option; + 'Vec': Vec; + VoteRecord: VoteRecord; + 'Option': Option; + 'Vec': Vec; + } +} diff --git a/docs/examples/promise/90_typegen/src/interfaces/definitions.ts b/docs/examples/promise/90_typegen/src/interfaces/definitions.ts new file mode 100644 index 0000000000..5b1ad0cdbc --- /dev/null +++ b/docs/examples/promise/90_typegen/src/interfaces/definitions.ts @@ -0,0 +1,7 @@ +// order here matches with what is found in (unused removed) +// https://www.npmjs.com/package/edgeware-node-types +// https://github.com/hicommonwealth/edgeware-node-types/tree/master/types + +export { default as signaling } from './signaling/definitions'; +export { default as treasuryRewards } from './treasuryRewards/definitions'; +export { default as voting } from './voting/definitions'; diff --git a/docs/examples/promise/90_typegen/src/interfaces/index.ts b/docs/examples/promise/90_typegen/src/interfaces/index.ts new file mode 100644 index 0000000000..25784af928 --- /dev/null +++ b/docs/examples/promise/90_typegen/src/interfaces/index.ts @@ -0,0 +1,4 @@ +// Auto-generated via `yarn polkadot-types-from-defs`, do not edit +/* eslint-disable @typescript-eslint/no-empty-interface */ + +export * from './types'; diff --git a/docs/examples/promise/90_typegen/src/interfaces/signaling/definitions.ts b/docs/examples/promise/90_typegen/src/interfaces/signaling/definitions.ts new file mode 100644 index 0000000000..59904425e4 --- /dev/null +++ b/docs/examples/promise/90_typegen/src/interfaces/signaling/definitions.ts @@ -0,0 +1,17 @@ +/* eslint-disable @typescript-eslint/camelcase */ + +export default { + types: { + ProposalRecord: { + index: 'u32', + author: 'AccountId', + stage: 'VoteStage', + transition_time: 'u32', + title: 'Text', + contents: 'Text', + vote_id: 'u64' + }, + ProposalContents: 'Vec', + ProposalTitle: 'Vec' + } +}; diff --git a/docs/examples/promise/90_typegen/src/interfaces/signaling/index.ts b/docs/examples/promise/90_typegen/src/interfaces/signaling/index.ts new file mode 100644 index 0000000000..25784af928 --- /dev/null +++ b/docs/examples/promise/90_typegen/src/interfaces/signaling/index.ts @@ -0,0 +1,4 @@ +// Auto-generated via `yarn polkadot-types-from-defs`, do not edit +/* eslint-disable @typescript-eslint/no-empty-interface */ + +export * from './types'; diff --git a/docs/examples/promise/90_typegen/src/interfaces/signaling/types.ts b/docs/examples/promise/90_typegen/src/interfaces/signaling/types.ts new file mode 100644 index 0000000000..1a66904588 --- /dev/null +++ b/docs/examples/promise/90_typegen/src/interfaces/signaling/types.ts @@ -0,0 +1,24 @@ +// Auto-generated via `yarn polkadot-types-from-defs`, do not edit +/* eslint-disable @typescript-eslint/no-empty-interface */ + +import { Struct } from '@polkadot/types/codec'; +import { Bytes, Text, u32, u64 } from '@polkadot/types/primitive'; +import { AccountId } from '@polkadot/types/interfaces/runtime'; +import { VoteStage } from 'sample-polkadotjs-typegen/interfaces/voting'; + +/** @name ProposalContents */ +export interface ProposalContents extends Bytes {} + +/** @name ProposalRecord */ +export interface ProposalRecord extends Struct { + readonly index: u32; + readonly author: AccountId; + readonly stage: VoteStage; + readonly transition_time: u32; + readonly title: Text; + readonly contents: Text; + readonly vote_id: u64; +} + +/** @name ProposalTitle */ +export interface ProposalTitle extends Bytes {} diff --git a/docs/examples/promise/90_typegen/src/interfaces/treasuryRewards/definitions.ts b/docs/examples/promise/90_typegen/src/interfaces/treasuryRewards/definitions.ts new file mode 100644 index 0000000000..63dbd93ba8 --- /dev/null +++ b/docs/examples/promise/90_typegen/src/interfaces/treasuryRewards/definitions.ts @@ -0,0 +1,7 @@ +/* eslint-disable @typescript-eslint/camelcase */ + +export default { + types: { + Balance2: 'u128' + } +}; diff --git a/docs/examples/promise/90_typegen/src/interfaces/treasuryRewards/index.ts b/docs/examples/promise/90_typegen/src/interfaces/treasuryRewards/index.ts new file mode 100644 index 0000000000..25784af928 --- /dev/null +++ b/docs/examples/promise/90_typegen/src/interfaces/treasuryRewards/index.ts @@ -0,0 +1,4 @@ +// Auto-generated via `yarn polkadot-types-from-defs`, do not edit +/* eslint-disable @typescript-eslint/no-empty-interface */ + +export * from './types'; diff --git a/docs/examples/promise/90_typegen/src/interfaces/treasuryRewards/types.ts b/docs/examples/promise/90_typegen/src/interfaces/treasuryRewards/types.ts new file mode 100644 index 0000000000..11286a69df --- /dev/null +++ b/docs/examples/promise/90_typegen/src/interfaces/treasuryRewards/types.ts @@ -0,0 +1,7 @@ +// Auto-generated via `yarn polkadot-types-from-defs`, do not edit +/* eslint-disable @typescript-eslint/no-empty-interface */ + +import { u128 } from '@polkadot/types/primitive'; + +/** @name Balance2 */ +export interface Balance2 extends u128 {} diff --git a/docs/examples/promise/90_typegen/src/interfaces/types.ts b/docs/examples/promise/90_typegen/src/interfaces/types.ts new file mode 100644 index 0000000000..ed1350ad37 --- /dev/null +++ b/docs/examples/promise/90_typegen/src/interfaces/types.ts @@ -0,0 +1,6 @@ +// Auto-generated via `yarn polkadot-types-from-defs`, do not edit +/* eslint-disable @typescript-eslint/no-empty-interface */ + +export * from './signaling/types'; +export * from './treasuryRewards/types'; +export * from './voting/types'; diff --git a/docs/examples/promise/90_typegen/src/interfaces/voting/definitions.ts b/docs/examples/promise/90_typegen/src/interfaces/voting/definitions.ts new file mode 100644 index 0000000000..c239ff6be2 --- /dev/null +++ b/docs/examples/promise/90_typegen/src/interfaces/voting/definitions.ts @@ -0,0 +1,33 @@ +/* eslint-disable @typescript-eslint/camelcase */ + +export default { + types: { + VoteStage: { + _enum: ['PreVoting', 'Commit', 'Voting', 'Completed'] + }, + VoteType: { + _enum: ['Binary', 'MultiOption', 'RankedChoice'] + }, + TallyType: { + _enum: ['OnePerson', 'OneCoin'] + }, + VoteOutcome: '[u8; 32]', + Tally: 'Option>', + VoteData: { + initiator: 'AccountId', + stage: 'VoteStage', + vote_type: 'VoteType', + tally_type: 'TallyType', + is_commit_reveal: 'bool' + }, + Commitments: 'Vec<(AccountId, VoteOutcome)>', + Reveals: 'Vec<(AccountId, Vec)>', + VoteRecord: { + id: 'u64', + commitments: 'Commitments', + reveals: 'Reveals', + data: 'VoteData', + outcomes: 'Vec' + } + } +}; diff --git a/docs/examples/promise/90_typegen/src/interfaces/voting/index.ts b/docs/examples/promise/90_typegen/src/interfaces/voting/index.ts new file mode 100644 index 0000000000..25784af928 --- /dev/null +++ b/docs/examples/promise/90_typegen/src/interfaces/voting/index.ts @@ -0,0 +1,4 @@ +// Auto-generated via `yarn polkadot-types-from-defs`, do not edit +/* eslint-disable @typescript-eslint/no-empty-interface */ + +export * from './types'; diff --git a/docs/examples/promise/90_typegen/src/interfaces/voting/types.ts b/docs/examples/promise/90_typegen/src/interfaces/voting/types.ts new file mode 100644 index 0000000000..7bd7ac622c --- /dev/null +++ b/docs/examples/promise/90_typegen/src/interfaces/voting/types.ts @@ -0,0 +1,58 @@ +// Auto-generated via `yarn polkadot-types-from-defs`, do not edit +/* eslint-disable @typescript-eslint/no-empty-interface */ + +import { ITuple } from '@polkadot/types/types'; +import { Enum, Option, Struct, U8aFixed, Vec } from '@polkadot/types/codec'; +import { bool, u128, u64 } from '@polkadot/types/primitive'; +import { AccountId } from '@polkadot/types/interfaces/runtime'; + +/** @name Commitments */ +export interface Commitments extends Vec> {} + +/** @name Reveals */ +export interface Reveals extends Vec]>> {} + +/** @name Tally */ +export interface Tally extends Option>> {} + +/** @name TallyType */ +export interface TallyType extends Enum { + readonly isOnePerson: boolean; + readonly isOneCoin: boolean; +} + +/** @name VoteData */ +export interface VoteData extends Struct { + readonly initiator: AccountId; + readonly stage: VoteStage; + readonly vote_type: VoteType; + readonly tally_type: TallyType; + readonly is_commit_reveal: bool; +} + +/** @name VoteOutcome */ +export interface VoteOutcome extends U8aFixed {} + +/** @name VoteRecord */ +export interface VoteRecord extends Struct { + readonly id: u64; + readonly commitments: Commitments; + readonly reveals: Reveals; + readonly data: VoteData; + readonly outcomes: Vec; +} + +/** @name VoteStage */ +export interface VoteStage extends Enum { + readonly isPreVoting: boolean; + readonly isCommit: boolean; + readonly isVoting: boolean; + readonly isCompleted: boolean; +} + +/** @name VoteType */ +export interface VoteType extends Enum { + readonly isBinary: boolean; + readonly isMultiOption: boolean; + readonly isRankedChoice: boolean; +} diff --git a/docs/examples/promise/90_typegen/tsconfig.json b/docs/examples/promise/90_typegen/tsconfig.json new file mode 100644 index 0000000000..df642e15f7 --- /dev/null +++ b/docs/examples/promise/90_typegen/tsconfig.json @@ -0,0 +1,34 @@ +{ + "compilerOptions": { + // this is specific with augmented overrides + "paths": { + // this is the package name we use (in the interface imports, --package for generators) + "sample-polkadotjs-typegen/*": ["src/*"], + // here we replace the @polkadot/api augmentation with our own, generated from chain + "@polkadot/api/augment": ["src/interfaces/augment-api.ts"], + // replace the augmented types with our own, as generated from definitions + "@polkadot/types/augment": ["src/interfaces/augment-types.ts"] + }, + // some other options, whatever you want for your environment + "target": "esnext", + "module": "esnext", + "jsx": "preserve", + "declaration": true, + "strict": true, + "noImplicitAny": true, + "noUnusedLocals": true, + "noImplicitReturns": true, + "moduleResolution": "node", + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "baseUrl": ".", + "skipLibCheck": true, + "typeRoots": [ + "./node_modules/@types" + ] + }, + "exclude": [ + "build/**/*", + "node_modules" + ] +} diff --git a/docs/start/typescript.user.md b/docs/start/typescript.user.md index df7489557d..a28a2f9038 100644 --- a/docs/start/typescript.user.md +++ b/docs/start/typescript.user.md @@ -1,6 +1,6 @@ # TypeScript user generated -In the previous section we looked at the TypeScript definitions that are available and is generated from both the chain and definitions. Here we will expand upon the use of the infrastructure created to define types as part of the `@polkadot/types` library and see how to use them to generate your onw defintions and chain types. +In the previous section we looked at the TypeScript definitions that are available and is generated from both the chain and definitions. Here we will expand upon the use of the infrastructure created to define types as part of the `@polkadot/types` library and see how to use them to generate your onw definitions and chain types. ## Definitions @@ -9,17 +9,21 @@ A large part of the type definitions are defined not as classes, but rather as s To create TypeScript-aware definitions and keep your files in a single place, you can follow the same approach. Assuming you have a package named `@MeInc/stuff` where you have the definitions in an `stuff/interfaces` folder. Each sub-folder would indicate a runtime module, e.g. - `stuff/interfaces//definitions.ts` for each module (`types.ts` & `index.ts` will be generated) -- `stuff/interfaces/defnitions.ts` importing all sub-definitions` +- `stuff/interfaces/definitions.ts` importing all sub-definitions` -With this structure setup, you can generate TypeScript defintions. +With this structure setup, you can generate TypeScript definitions. In the root of your project (with the `@polkadot/typegen` package installed), you can run `yarn polkadot-types-from-defs --input ./stuff/interfaces --package @MeInc/stuff/interfaces` which will create `types.ts` and `index.ts` files with the generated types. You can use these in exactly the same way as you would use your types from `@polkadot/types/interfaces`. ## Chain modules -In the same way as the type library provides defaults from a substrate-base chain, you can also, directly from chain from metadata, generate a complete `api.{consts,query}.*` defintion for your specific chain. The command will create 2 files, `{consts, query}.types.ts` which you can either use to augment the TypeScript defintions, or replace those in `@polkadot/api/*` with your versions (copy, TypeScript replacement or browser/node aliassing). +In the same way as the type library provides defaults from a substrate-base chain, you can also, directly from chain from metadata, generate a complete `api.{consts,query}.*` definition for your specific chain. The command will create 2 files, `{consts, query}.types.ts` which you can either use to augment the TypeScript definitions, or replace those in `@polkadot/api/*` with your versions (copy, TypeScript replacement or browser/node aliasing). -In the root of your project, you can run `yarn polkadot-types-from-chain --endpoint wss:// --output ./stuff` and it will create the required output. (Here you can specify an optional `--package @MeInc/stuff` to read definitions for the targetted output folder with the specified package name.) +In the root of your project, you can run `yarn polkadot-types-from-chain --endpoint wss:// --output ./stuff` and it will create the required output. (Here you can specify an optional `--package @MeInc/stuff` to read definitions for the targeted output folder with the specified package name.) + +## Example of actual use + +The [TypeScript augmentation example](../examples/promise/90_typegen/) example provides a full real-world example of these scripts in action. Additionally it shows all the configurations from a TypeScript as well as an in-use perspective, showing how the types and interfaces are fully augmented based on the provided metadata. ## And that's a wrap diff --git a/tsconfig.json b/tsconfig.json index acae8da649..afdf1b2f41 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,7 +2,8 @@ "extends": "./node_modules/@polkadot/dev/config/tsconfig", "exclude": [ "build/**/*", - "**/build/**/*" + "**/build/**/*", + "docs/examples/promise/90_typegen/*" ], "compilerOptions": { "baseUrl": ".",